» www.Giftbox.Az - Bir birindən gözəl hədiyyə satışı
ウィキペディアランダム
毎日カテゴリ
共有: WhatsappFacebookTwitterVK

Intel Threading Building Blocks

インテル スレッディング・ビルディング・ブロック (Intel® Threading Building Blocks, TBB) は、インテルが公開しているマルチスレッド対応のテンプレートライブラリである。マルチCPUマルチコアCPUなどを搭載したコンピュータ上でアプリケーションを効率よく動作させることができる。

Threading Building Blocks
開発元 インテル
最新版
2021.2.0 / 2021年4月2日 (2年前) (2021-04-02)[1]
リポジトリ
  • github.com/oneapi-src/oneTBB
プログラミング
言語
対応OS Windows, Linux, macOS, Android
種別 ライブラリフレームワーク
ライセンス デュアルライセンス: 商用 / オープンソース (Apache License 2.0)
公式サイト www.threadingbuildingblocks.org
software.intel.com/en-us/intel-tbb
(テンプレートを表示)

商用版とオープンソースソフトウェア版(Apache License 2.0)があり、オープンソース版は無償でダウンロードが可能である。

様々なプラットフォーム上で動作する(クロスプラットフォーム)。

概要

マルチCPU・マルチコアCPUを搭載したコンピュータ上でCPUリソースを効率よく利用することが目的であり、シングルCPU・シングルコアCPUでは性能向上は期待できない(スレッド切り替えのオーバーヘッドで逆にパフォーマンスが低下する可能性もある)。

動作するオペレーティングシステム (OS) はWindowsLinuxmacOSAndroidであり、それぞれのOSで実行させるために必要な外部ライブラリが別途提供される。ただしFreeBSDに対してもコミュニティの有志によって対応が行われており、過去にはSolarisへの対応も行われていた。

TBBバージョン2018 Update 4のリリースノート[2]には、サポート環境に関して以下のように記載されている。

  • ハードウェア(サポート)
  • サポートされる解析ツール
    • Intel(R) VTune(TM) Amplifier XE 2017, 2018.
    • Intel(R) Inspector XE 2017, 2018.
    • Intel(R) Advisor XE 2017, 2018.

リリースノートで必要条件とされているシステムよりグレードの低いシステムでTBBを実行した結果については特に明示されていないが、Pentium III・(Celeron M)などでも正常動作が確認されている例がある[要出典]


ライブラリの構成は

この内、タスクスケジューラおよびアロケータはTBBをサポートするクラスなので一般に開発者が使うことは少ない。

並列処理アルゴリズムはタスクスケジューラによって処理を分割してリソースに割り当てる。その為、コンテナやミューテックスなどを利用するときはタスクスケジューラの初期化は不要である。
また細分化する際の目安となるグレインサイズをプログラマが指定することも、TBBのランタイムライブラリが自動的に設定するようにすることも可能である。

主なクラス

  • タスクスケジューラ
    • task_sheduler_initクラス
  • 並列処理アルゴリズム (Generic Parallel Algorithms)
    • parallel_forクラス ループ間で依存性がない単純なループの並列処理
    • parallel_reduceクラス 指定した範囲をより小さな範囲に再帰的に分割し並列処理
    • parallel_scanクラス 並列プリフィックスを計算
    • parallel_whileクラス 不明領域、動的領域変更を伴う独立したループ操作
    • parallel_sortクラス 並列処理でソートを行う
    • pipelineクラス パイプライン処理
  • コンテナクラス
    • 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クラスと共に使用される
  • 同期プリミティブ
    • atomicクラス アトミック操作を行う
    • spin_mutexクラス スピンロックを使うミューテックス
    • spin_rw_mutexクラス 複数のスレッドからアクセス可能なspin_mutex
    • queuing_mutexクラス スケーラブルなミューテックス
    • queuing_rw_mutexクラス 複数のスレッドからアクセス可能なqueuing_mutex
    • mutexクラス OSのミューテックスと同様なミューテックス
  • パフォーマンス測定
    • tick_countクラス 時間取得

脚注

[脚注の使い方]
  1. ^ “Releases · oneapi-src/oneTBB · GitHub”. 2021年4月27日閲覧。
  2. ^ Intel(R) Threading Building Blocks - Release Notes Version 2018

関連項目

外部リンク

  • oneAPI Threading Building Blocks (oneTBB) — oneTBB documentation(公式HP、英語)
ウィキペディア、ウィキ、本、library、論文、読んだ、ダウンロード、自由、無料ダウンロード、mp3、video、mp4、3gp、 jpg、jpeg、gif、png、画像、音楽、歌、映画、本、ゲーム、ゲーム。