Intel Threading Building Blocks
開発元 | Intel |
---|---|
最新版 | |
リポジトリ | |
プログラミング 言語 | C++ |
対応OS | FreeBSD, Linux, Solaris, OS X, Windows |
種別 | ライブラリ、フレームワーク |
ライセンス | デュアルライセンス: 商用 / オープンソース (GPL v2 with the (libstdc++) runtime exception) |
公式サイト |
www software |
インテル スレッディング・ビルディング・ブロック(Intel® Threading Building Blocks,TBB)は、インテルが公開しているマルチスレッド対応のC++テンプレートライブラリである。マルチCPU・マルチコアCPUなどを搭載したコンピュータ上でアプリケーションを効率よく動作させることができる。
商用版とオープンソース版(GPL)があり、オープンソース版は無償でダウンロードが可能である。
様々なプラットフォーム上で動作する(クロスプラットフォーム)。
概要
マルチCPU・マルチコアCPUを搭載したコンピュータ上でCPUリソースを効率よく利用することが目的であり、シングルCPU・シングルコアCPUでは性能向上は期待できない(スレッド切り替えのオーバーヘッドで逆にパフォーマンスが低下する可能性もある)。
動作するオペレーティングシステム (OS) はWindows、Mac OS X、SunOS、Linux、FreeBSDであり、それぞれのOSで実行させるために必要な外部ライブラリが別途提供される。
インテルがリリースノートで明記しているTBB2.0がサポートするOSは
- Windows
- Windows XP Professional
- Windows Server 2003
- Windows Vista
- Linux
- Red Hat Enterprise Linux
- 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
- Mac OS X
- Mac OS X 10.4.4かそれ以上
基本的にインテルと互換性のあるプロセッサを搭載したコンピュータで効果的に利用できる。TBB2.0がサポートするプロセッサは
- インテル
- インテル以外
- 上記のプロセッサと互換性のあるプロセッサ
ただし、リリースノートで必要条件とされているシステムよりグレードの低いシステムで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クラス 時間取得
脚注
- ^ “What's New? Intel® Threading Building Blocks 4.3”. 2015年1月26日閲覧。
- ^ “Intel Threading Building Blocks Release Notes”. 2015年1月26日閲覧。
外部リンク
- TBB Home(公式HP,英語)