| 開発者 | インテル |
|---|---|
| 安定版リリース | 2021.8 / 2023年2月17日[1] |
| リポジトリ |
|
| 書かれた | C++ |
| オペレーティング·システム | FreeBSD、Linux、Solaris、macOS、Windows、Android |
| タイプ | ライブラリまたはフレームワーク |
| ライセンス | デュアル:商用/オープンソース(Apache 2.0)、プラスフリーウェア[2] |
| Webサイト | github.com/oneapi-src/oneTBB intel.com/oneTBB |
oneAPI Threading Building Blocks (oneTBB、旧称 Threading Building Blocks または TBB) は、マルチコア プロセッサでの並列プログラミング用にIntelが開発したC++ テンプレート ライブラリです。TBB を使用すると、計算は並列実行可能なタスクに分割されます。ライブラリは、これらのタスクを実行する スレッドを管理およびスケジュールします。
概要
oneTBB プログラムは、アルゴリズム、つまり高レベルの並列プログラミング パラダイム (別名、アルゴリズム スケルトン)に従って、依存タスクのグラフを作成、同期、破棄します。その後、タスクはグラフの依存関係を尊重して実行されます。このアプローチにより、TBB は、基礎となるマシンの詳細からプログラミングを切り離すことを目的とした並列プログラミングの手法の 1 つとして分類されます。
oneTBB は、利用可能な処理コア間で並列ワークロードのバランスをとるワーク スティーリングを実装し、コアの使用率を高めてスケーリングします。最初は、ワークロードは利用可能なプロセッサ コア間で均等に分割されます。1 つのコアが作業を完了しても、他のコアのキューに大量の作業が残っている場合、oneTBB はビジー コアの 1 つからアイドル コアに作業の一部を再割り当てします。この動的な機能により、プログラマーとマシンが切り離され、ライブラリを使用して記述されたアプリケーションは、ソース コードや実行可能プログラム ファイルに変更を加えることなく、利用可能な処理コアを利用するようにスケーリングできます。プリンストン大学の研究者は、TBB でのワーク スティーリング実装の 2008 年の評価で、多数のプロセッサ コアに対しては最適ではなく、32 コア システムで特定のベンチマークを実行すると、計算時間の最大 47% がスケジューリング オーバーヘッドに費やされることを発見しました。[3]
oneTBB は、STL (およびそれに基づく C++ 標準ライブラリの一部) と同様に、テンプレートを広範に使用します。テンプレートはコンパイル時の構成要素であり、最新の C++コンパイラーで大部分が最適化できる ため、オーバーヘッドの少ない多態性という利点があります。
oneTBBは、サポート付きのバイナリ配布物として市販されており、[4]ソースとバイナリの両方の形式で オープンソースソフトウェアとしても入手可能です。
oneTBBは決定論やデータ競合の回避を保証するものではない。[5]
ライブラリの内容
oneTBB は並列プログラミングのためのコンポーネントのコレクションです。
- 基本アルゴリズム:
parallel_for、、parallel_reduceparallel_scan - 高度なアルゴリズム:
parallel_pipeline、parallel_sort - コンテナ:
concurrent_queue、、、、、、、、、concurrent_priority_queueconcurrent_vectorconcurrent_hash_mapconcurrent_unordered_mapconcurrent_unordered_setconcurrent_mapconcurrent_set - メモリ割り当て:
scalable_malloc、、、、、、scalable_freescalable_reallocscalable_callocscalable_allocatorcache_aligned_allocator - 相互排除:
mutex、、、、、、spin_mutexqueuing_mutexspin_rw_mutexqueuing_rw_mutexrecursive_mutex - タイミング: ポータブルで細かいグローバルタイムスタンプ
- タスクスケジューラ: タスクの作成とアクティブ化を直接制御します
参照
- Intel oneAPI ベース ツールキット
- インテルインテグレーテッド パフォーマンス プリミティブ(IPP)
- Intel oneAPIデータ アナリティクス ライブラリ(oneDAL)
- Intel oneAPI数学カーネル ライブラリ(oneMKL)
- インテルアドバイザー
- インテル インスペクター
- インテル VTune プロファイラー
- インテル同時実行コレクション(CnC)
- アルゴリズムのスケルトン
- 並列コンピューティング
- C++ マルチスレッド ライブラリのリスト
- C++ テンプレートライブラリのリスト
- 並列パターンライブラリ
- グランドセントラルディスパッチ(GCD)
- ソフトウェアアーキテクチャの構成要素
注記
- ^ 「oneAPI スレッド ビルディング ブロック Github リリース」。GitHub。
- ^ 「Intel サポートの無償オプション、ロイヤリティフリー」。
- ^ Contreras, Gilberto; Martonosi, Margaret (2008). Intel スレッディング ビルディング ブロックの特性評価とパフォーマンスの向上(PDF)。IEEE 国際シンポジウム「ワークロード特性評価」
- ^ https://software.intel.com/en-us/intel-tbb Intel スレッディング ビルディング ブロック商用版ホームページ
- ^ Bocchino Jr., Robert L.; Adve, Vikram S.; Adve, Sarita V.; Snir, Marc (2009)。並列プログラミングはデフォルトで決定論的である必要があります。並列処理のホットトピックに関するUSENIXワークショップ。
参考文献
- ヴォス、マイケル。アセンホ、ラファエル。ジェームス、レインダース (2019)、Pro TBB、Apress、土井: 10.1007/978-1-4842-4398-5、ISBN 978-1-4842-4397-8、S2CID 195847637
- Reinders, James (2007 年 7 月)、Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism (ペーパーバック版)、セバストポル: O'Reilly Media、ISBN 978-0-596-51480-8
- Voss, M. (2006 年 10 月)、Intel Threading Building Blocks の汎用並列アルゴリズムによるスケーラブルな並列処理の解明、2012 年 2 月 5 日にオリジナルからアーカイブ、 2007 年 6 月 6 日に取得
- Voss, M. (2006 年 12 月)、Intel Threading Building Blocks の同時実行コンテナーによる安全でスケーラブルな並列処理の実現、2012 年 2 月 5 日にオリジナルからアーカイブ、 2007 年 6 月 6 日に取得
- Hudson, Richard L.; Saha, Bratin; Adl-Tabatabai, Ali-Reza; Hertzberg, Benjamin C. (2006)、「McRT-Malloc」、2006 年国際メモリ管理シンポジウム議事録 - ISMM '06、pp. 74–83、doi :10.1145/1133956.1133967、ISBN 978-1595932211、S2CID 9120368
外部リンク
- oneTBB 業界仕様
- GitHub上の oneTBB
- インテルの公式サイト
