Intel Threading Building Blocks
インテル スレッディング・ビルディング・ブロック(Intel® Threading Building Blocks,TBB)は、Intel社が公開しているC++テンプレートライブラリである。 マルチCPU・マルチコアCPUなどを搭載したコンピュータ上でアプリケーションを効率よく動作させることができる。現在の安定版のバージョンは2.1、開発版のバージョンは2.1 update4。
製品版とオープンソース版があり、オープンソース版は無償でダウンロードが可能である。
様々なプラットフォーム上で動作する。(クロスプラットフォーム)
概要
マルチCPU・マルチコアCPUを搭載したコンピュータ上でCPUリソースを効率よく利用することが目的であり、シングルCPU・シングルコアCPUでは性能向上は期待できない。(スレッド切り替えのオーバーヘッドで逆にパフォーマンスが低下する可能性もある。)
動作するOSはWindows,MacOS,SunOS,Linux,FreeBSDであり、それぞれのOSで実行させるために必要な外部ライブラリが別途提供される。
Intelがリリースノートで明記しているTBB2.0がサポートするOSは
- Microsoft Windows
- Microsoft Windows XP Professional
- Microsoft Windows Server 2003
- Microsoft Windows Vista
- Linux
- Red Hat Enterprise Linux
- Red Hat Fedora Core
- Asianux 2.0
- Red Flag DC Server 5.0
- Haansoft Linux Server 2006
- Miracle Linux v4.0
- SuSE Linux Enterprise Server
- SGI Propack
- Mandriva/Mandrake Linux 10.1.06
- Turbolinux GreatTurbo Enterprise Server 10
- MacOS
- MacOS X 10.4.4かそれ以上
基本的にIntelと互換性のあるプロセッサを搭載したコンピュータで効果的に利用できる。TBB2.0がサポートするプロセッサは
- Intel
- Intel以外
- 上記のプロセッサと互換性のあるプロセッサ
ただし、リリースノートで必要条件とされているシステムよりグレードの低いシステムでTBBを実行した結果については特に明示されておらず、Pentium III・Celeron Mなどでも正常動作が確認されている例がある。
ライブラリの構成は
この内、タスクスケジューラおよびアロケータはTBBをサポートするクラスなので一般に開発者が使うことは少ない。
並列処理アルゴリズムはタスクスケジューラによって処理を分割してリソースに割り当てる。その為、コンテナやミューテックスなどを利用するときはタスクスケジューラの初期化は不要である。
また細分化する際の目安となるグレインサイズをプログラマが指定することも、TBBのランタイムが自動的に設定するようにすることも可能である。
主なクラス
- タスクスケジューラ
- task_sheduler_initクラス
- 並列処理アルゴリズム(Generic Parallel Algorithms)
- コンテナクラス
- concurrent_hash_mapクラス STLのmapクラスをスレッドセーフにしたもの
- concurrent_queueクラス STLのqueueクラスをスレッドセーフにしたもの
- concurrent_vectorクラス STLのvectorクラスをスレッドセーフにしたもの
- アシスタントクラス
- blocked_rangeクラス 線形範囲を示すクラス アルゴリズムやコンテナ走査に使用される
- blocked_range2dクラス 2次元範囲を示すクラス blocked_rangeクラスと同様にアルゴリズムやコンテナ走査に使用される
- simple_partitionerクラス 範囲を限界まで再帰的に細分化するようグレインサイズを設定する blocked_range/blocked_range2dクラスと共に使用される
- auto_partitionerクラス タスクスケジューラの挙動を元に最適なグレインサイズを設定する blocked_range/blocked_range2dクラスと共に使用される
- 同期プリミティブ
- パフォーマンス測定
- tick_countクラス 時間取得
外部リンク
- TBB Home(公式HP,英語)