![]() |
並列化を支援し、パフォーマンスを向上する C++ テンプレート・ライブラリー
|
- このページでは、https://software.intel.com/en-us/intel-tbb の内容をもとに、製品に関連する記事や参考資料へのリンクをまとめています。
- 本製品は単体販売しておりません。インテル® oneAPI ツールキットに同梱されています。
- インテル® oneAPI ツールキットに同梱されるバージョンから製品の名称がインテル® oneAPI スレッディング・ビルディング・ブロック (インテル® oneTBB) に変わりました。
- 関連記事
- リソース
- FAQ
関連記事
関連記事一覧
- インテル® oneAPI スレッディング・ビルディング・ブロック (インテル® oneTBB) クックブック
- oneTBB 導入ガイド
- oneAPI でアーキテクチャーの壁を越える: ヘテロジニアス・コンピューティングを容易にするライブラリー
- 革新的なインテル® oneAPI HPC ツールキットを使用して並列安定ソートのパフォーマンスを最適化する方法
- マルチスレッド開発ガイド: 2.3 オーバーヘッドを最小限に抑える適切な同期プリミティブの選択
- マルチスレッド開発ガイド: 1.6 スレッドの代替としてのタスクの使用
- インテル® TBB 2020 の有用な機能: task_arena クラス
- インテル® TBB 2020 の有用な機能: task_arena NUMA サポート
- インテル® TBB 2020 の有用な機能: タスクの分離
- インテル® TBB 2020 の有用な機能: タスク・スケジューラー
- インテル® TBB 2020 の有用な機能: cache_aligned_allocator テンプレート・クラス
- インテル® TBB のコンカレント・コンテナー・クラスを利用して C++ アプリケーションを効率的にスケールする
- 入れ子構造の並列処理が手に負えなくなったときにどうするか? インテル® TBB 向け Python* モジュールを 30 分で導入する
- インテル Parallel Universe 34 号日本語版の公開
- 一般的な Linux* パッケージ・マネージャーを使用してインテル® パフォーマンス・ライブラリーとインテル® Distribution for Python* をインストールする
- ユニバーサル Windows* プラットフォーム・アプリケーションでインテル® TBB を使用する
- 「さよなら Cilk Plus」移行の手順 – 明日のためのその 3 (最終回)
- 「さよなら Cilk Plus」移行の手順 – 明日のためのその 2
- 「さよなら Cilk Plus」移行の手順 – 明日のためのその 1
- 「Cilk がやってきた」から「さよなら Cilk Plus」へ
- インテル® Cilk™ Plus アプリケーションを OpenMP* もしくはインテル® TBB へ移行する
- データとコードの並べ替え: 最適化とメモリー – パート 2
- インテル Parallel Universe 28 号日本語版の公開
- Parallel STL: C++ STL コードのパフォーマンスの向上
- ハイブリッド並列処理: 並列分散メモリーと共有メモリー・コンピューティング
- インテルが推進するディープラーニング・フレームワーク
- インテル® TBB による並列プログラミング 10 周年
- C++11 ラムダ式により並列化されたループの定型コードを軽減する
- インテル® Parallel Studio XE Composer Edition 製品にバンドルされているインテル® IPP、インテル® MKL、およびインテル® TBB のバージョン
- インテル® TBB を使用したインテル® IPP のイメージリサイズのスレッド化
- 順序付けの問題 – パート 5
- opencl_program と引数のバインド – パート 4
- デバイスの選択 – パート 3
- opencl_node の基本インターフェイスと opencl_buffer – パート 2
- opencl_node の概要 – パート 1
- インテル® TBB ライブラリーと C++11 における正確な例外伝播 (exception_ptr)
- インテル® TBB のデバッグ、例外機能を使用する
- インテル® VTune™ Amplifier XE によるマルチスレッド化とタスク解析
- C++11 とインテル® TBB スレッドの併用
- トランザクショナル・メモリー・サポート: speculative_spin_rw_mutex (プレビュー機能)
- combiner/aggregator 同期プリミティブ
- ゲームエンジンのタスク処理 (アニメーション) - サンプル・プロジェクトのダウンロード
- タスク・マネージャーにおけるゲームスレッド API のパフォーマンスの比較
- マルチコア・プロセッサーにおける 3 次元有限差分法の実装
- インテル® VTune™ Amplifier XE Linux* 版を使用するためのコンパイラー・オプション
- タスク処理によるゲーム・エンジン・システムのスケーリング
- インテル® コンパイラー 11.x プロフェッショナル・エディションでインストールされるインテル® IPP、インテル® MKL、およびインテル® TBB のバージョン
リソース
サポート
-
コミュニティーに問い合わせ
Forums (英語) からほかのユーザーやエキスパートに問い合わせできます。
-
インテル社の製品サポートに英語で問い合わせ
Online Service Center (英語) ではインテル社のサポートチームにお問い合わせいただけます。
-
エクセルソフト社の技術サポートに日本語で問い合わせ
ユーザー登録完了後、技術サポート受付フォームよりお問い合わせください。
ドキュメント
- 導入ガイド: インテル® oneTBB の基本的な使い方
- チュートリアル: インテル® oneTBB を使い始める方法。チュートリアルでは、アプリケーションに適用できる、エンドツーエンドのワークフローを説明します。
- インテル® oneTBB ドキュメント (英語)
- インテル® oneTBB リリースノート (英語)
サンプルコード
FAQ
よくある問い合わせ
-
例えば、コース料理を 1 口のレンジで調理する場合、1 度に調理できるのはコースのうち 1 品だけです。 4 口のレンジがあれば、4 品を一度に調理でき、すべて同時にテーブルに並べることができます。ソフトウェアにおける並列処理も同様です。並列処理を実装するにはいくつかの手法がありますが、スレッド化はその 1 つです。アイディアとしては、マルチコア構成の異なるプロセッサーコア上で、アプリケーションを同時に実行できるようにプログラムを分割することです。その結果、アプリケーションの結果を生成するため、アプリケーションの一部分がすべて同時に動作します。
タスクベースの並列処理は、複数のワークアイテム (タスク) を同時に実行するメカニズムです。
-
スレッド化は並列処理の王道です。これは、マルチプロセッサーまたはマルチコアを備えたコンピューター上で、同時に実行できるコード領域にアプリケーションを分割するため、ソフトウェア開発者によって利用される技術です。スレッド化されたアプリケーションは、オペレーティング・システムの管理下で、マルチコアとシングルコアのコンピューターの両方で実行できます。
-
30 日間利用可能な評価版は、こちらで入手できます。評価用ライセンスをリクエストした後、インテル® プレミアサポートのアカウントを作成すると、評価期間中にインテル® プレミアサポートの無料サポートを受けることができます。
-
C++ は、ほかの一般的な言語と同様に並列処理を表現するように設計されていません。幸いなことに、C++ はテンプレートにより拡張できます。開発者は、新しいコードをあまり追加することなくスケーラブルなパフォーマンスを得ることができる OpenMP* コンセプトを好んでいましたが、C++ のオブジェクト指向/テンプレートベースのプログラミング・スタイルにより連携したものを必要としていました。開発者は、私たちに並列コンテナーやアルゴリムのようなものを求めていました。それには、テンプレートが最も適していました。”ジェネリック・プログラミング” のスタイルは STL で導入され、パフォーマンスを犠牲にすることなくコンポーネントを容易に構成できます。これは私たちに多くのことを教えてくれました。私たちは、STL が C++ を拡張するのと同様の手法で C++ を拡張することにしました。
抽象化は、開発者にとって重要です。OS が提供するネイティブスレッドを使用して、明示的にスレッドをプログラミングするのは、並列化におけるアセンブリー言語のように複雑です。インテル® TBB は、多くの理由から抽象化を実装しています。ネイティブスレッドによる並列処理は、間違いを起こしやすく、退屈で、移植性がありません。また、高レベルのスケーラビリティーをプログラムすることは困難であるため、それほどスケーラブルではありません。
-
ランタイムのコストやライブラリーのロイヤルティーは必要ですか?
ランタイムのコストやロイヤルティーは必要ありません。
-
インテル® TBB のセマンティクスを解釈できる解析ツールはありますか?
はい。インテル® TBB によって並列化されたアプリケーションは、インテル® VTune™ Amplifier XE、インテル® Inspector XE、インテル® Advisor XE で解析できます。これらの製品は、インテル® Parallel Studio XE スイートに含まれており、並列性によるパフォーマンス向上の可能性があるコード領域を特定するのに役立ちます。
-
インテル® TBB の使い方を解説する開発者向けの書籍はありますか?
はい。『Multithreading for Visual Effects (ビジュアルエフェクト向けのマルチスレッド化)』は、ドリームワークス・アニメーション社、ピクサー社、サイドエフェクツ社、AMD 社のエンジニアとインテルのエンジニアが、2013 年の Siggraph 向けに作成した「ビジュアル・エフェクトにおけるマルチスレッド化」のコースに基づいて共著されました。本書の内容は充実し、コース資料もアップデートされています。
James Reinders 著『Intel Threading Building Blocks (インテル スレッディング・ビルディング・ブロック – マルチコア時代の C++ 並列プログラミング)』は、オライリー・メディア社から出版されました。ダウンロードで入手できるリソースは、チュートリアル、サンプルコード、などのドキュメントを含んでいます。この書籍は日本語版も出版されています。
-
現在オープンソース版と商用版で機能的な違いはありません。どちらも 1 つのソースベースで保守されており、同じソースベースからビルドされています。オープンソース版と商用版の違いは、サポートレベルだけです。
インテル® TBB の商用版は、追加のサポートが必要であるか、ランタイム時のライセンスを除くオープンソース GNU* 一般公衆利用許諾 v2.0 に従うことが困難な Windows*、Linux* および OS X* 向けの開発者に提供されています。製品を購入すると、インテル® レジストレーション・センターでの 1 年間の製品アップデートとインテル® プレミアサポートからの技術サポートを受けることができます。インテル® プレミアサポートでは、インテルの技術者へ問い合わせをすることができます。インテル® プレミアサポートに加え、ユーザーフォーラム、技術ノート、アプリケーション・ノート、およびドキュメントが提供されます。
オープンソース版のサポートは、threadingbuildingblocks.org (英語) でユーザーフォーラム、ドキュメント、追加のリソースが提供されます。
-
インテル® TBB オープンソース版に関する詳しい情報はどこで入手できますか?
インテル® TBB のソースコード、ドキュメント、ユーザーフォーラム、ブログ、記事、ホワイトペーパー、およびサポートについては、threadingbuildingblocks.org (英語) をご覧ください。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。