Intel Threading Building Blocks
開発元 | Intel |
---|---|
最新版 |
2017 Update 2
/ 2016年[1] |
リポジトリ | |
プログラミング 言語 | C++ |
対応OS | Windows, Linux, macOS, Android, FreeBSD, Solaris[要出典] |
種別 | ライブラリ、フレームワーク |
ライセンス | デュアルライセンス: 商用 / オープンソース (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、Linux、macOS、Android、SunOS、FreeBSD[要出典]であり、それぞれのOSで実行させるために必要な外部ライブラリが別途提供される。
TBBバージョン2017 Update 2のリリースノート[2]には、サポート環境に関して以下のように記載されている。
- ハードウェア(推奨)
- Microsoft Windows
- Intel Coreプロセッサーファミリー以上
- Intel Xeonプロセッサーファミリー以上
- Intel Xeon Phiプロセッサーファミリー以上
- Linux
- Intel Coreプロセッサーファミリー以上
- Intel Xeonプロセッサーファミリー以上
- Intel Xeon Phiプロセッサーファミリー以上
- OS X
- Intel Coreプロセッサーファミリー以上
- Android
- Intel Atomプロセッサーファミリー
- Microsoft Windows
- ハードウェア(サポート)
- Intel Pentium 4プロセッサーファミリー以上
- Intel Xeon Phiコプロセッサー
- Intel Atomプロセッサーファミリー
- 非インテルの上記互換プロセッサー
- サポートされるOS
- Microsoft Windows
- Linux
- CentOS 6.5, 7.1
- Debian 7, 8
- Fedora 20, 21, 22, 23
- Intel Cluster Ready
- Red Hat Enterprise Linux 6, 7
- SuSE Linux Enterprise Server 11, 12
- Ubuntu 12.04 LTS, 13.10, 14.04 LTS, 15.04, 16.04 LTS
- WindRiver Linux 7
- Yocto 1.7, 1.9 (2.0), 2.1
- OS X
- Android
- Android 5.x, 6.x
- サポートされるコンパイラー
- Intel C++ Compiler 15.0以上
- Microsoft Visual C++ 11.0 (Microsoft Visual Studio 2012、Windows専用) 以上
- Microsoft Windows SDK for Windows 8以上
- サポートされるLinuxとともに提供・サポートされる標準のGCCバージョン
- GNU Compilers (gcc) バージョン4.1以上
- GNU C Library (glibc) バージョン2.4以上
- GNU Compilers (gcc) バージョン4.1以上
- Xcode 6.3以上
- Android NDK r10e以上
ただし、リリースノートで必要条件とされているシステムよりグレードの低いシステムで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クラス 時間取得
脚注
- ^ “Intel Threading Building Blocks Release Notes”. 2017年1月9日閲覧。
- ^ Intel(R) Threading Building Blocks - Release Notes Version 2017
関連項目
外部リンク
- TBB Home(公式HP、英語)