GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • メインページ
  • コミュニティ・ポータル
  • 最近の出来事
  • 新しいページ
  • 最近の更新
  • おまかせ表示
  • 練習用ページ
  • アップロード (ウィキメディア・コモンズ)
  • 特別ページ
  • ヘルプ
  • 利用案内
  • 井戸端
  • お知らせ
  • バグの報告

This view

  • Original page
  • New address

GeezerVison is showing ja.wikipedia.org — Intel Threading Building Blocks - Wikipedia

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

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

商用版とオープンソースソフトウェア版があり、オープンソース版は無償でダウンロードが可能である。バージョン4.4系列まではGPLv2[3]だったが、バージョン2017からはApache License 2.0となった[4]。

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

概要

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

公式に動作サポートされているハードウェアはIntel製のx86系プロセッサファミリーおよび互換プロセッサである。また公式に動作サポートされているオペレーティングシステム (OS) はWindows、Linux、macOS、Androidであり、それぞれのOSで実行させるために必要な外部ライブラリが別途提供される。Intelによらないコミュニティサポートのプラットフォームとしては、ARMアーキテクチャやFreeBSDなども含まれる[2]。

過去にはSolarisやXbox 360などへの対応も行われていた[5]。

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

  • ハードウェア(推奨)
    • Microsoft Windows
      • Intel Coreプロセッサーファミリー
      • Intel Xeonプロセッサーファミリー
      • Intel Xeon Phiプロセッサーファミリー
    • Linux
      • Intel Coreプロセッサーファミリー
      • Intel Xeonプロセッサーファミリー
      • Intel Xeon Phiプロセッサーファミリー
    • OS X
      • Intel Coreプロセッサーファミリー
    • Android
      • Intel Atomプロセッサーファミリー
  • ハードウェア(サポート)
    • Intel Pentium 4プロセッサーファミリー
    • Intel Xeon Phiコプロセッサー
    • Intel Atomプロセッサーファミリー
    • 非インテルの上記互換プロセッサー
  • サポートされるOS
    • Microsoft Windows
      • Microsoft Windows 10
      • Microsoft Windows 8.1
      • Microsoft Windows 7 SP1
      • Microsoft Windows Server 2012 R2
      • Microsoft Windows Server 2008 R2 SP1
      • Windows Embedded 8.1, 10
    • Linux
      • CentOS 7.1
      • Debian 8, 9
      • Fedora 24, 25, 26
      • Intel Cluster Ready
      • Red Hat Enterprise Linux 6, 7
      • SUSE Linux Enterprise Server 11, 12
      • Ubuntu 14.04 LTS, 16.04 LTS, 17.04
      • WindRiver Linux 8, 9
      • Yocto 2.2, 2.3
    • OS X* , macOS*
      • OS X 10.10, 10.11
      • macOS 10.12, 10.13
    • Android
      • Android 5.x, 6.x, 7.x, 8.x
  • サポートされるコンパイラー
    • Intel C++ Compiler 16, 17, 18
    • Microsoft Visual C++ 12.0 (Microsoft Visual Studio 2013、Windows専用)
    • Microsoft Visual C++ 14.0 (Microsoft Visual Studio 2015、Windows専用)
    • Microsoft Visual C++ 14.1 (Microsoft Visual Studio 2017、Windows専用)
    • Microsoft Windows SDK for Windows 8.1
    • Microsoft Windows SDK for Windows 10
    • サポートされるLinuxとともに提供・サポートされる標準のGCCバージョン
      • GNU Compilers (gcc) 4.1 - 7.1
        • GNU C Library (glibc) 2.4 - 2.19
    • Xcode 6.3 - 9.1
    • Android NDK r10e - r16
  • サポートされる解析ツール
    • 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などでも正常動作が確認されている例がある。


ライブラリの構成は

  • タスクスケジューラ (Task Scheduler)
  • 並列処理アルゴリズム
  • スレッドセーフなコンテナ
  • ミューテックスなどの同期プリミティブ
  • スレッドセーフなアロケータ
  • パフォーマンス測定用クラス

この内、タスクスケジューラおよびアロケータは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. 2025年2月2日閲覧。
  2. 1 2 oneTBB/SYSTEM_REQUIREMENTS.md at master · oneapi-src/oneTBB
  3. ↑ oneapi-src/oneTBB at 4.4.6
  4. ↑ oneapi-src/oneTBB at 2017
  5. ↑ インテル® Parallel Studio XE 評価ガイド - インテル® TBB による効率良いスレッド化
  6. ↑ Intel(R) Threading Building Blocks - Release Notes Version 2018

関連項目

  • Intel Math Kernel Library
  • Intel Integrated Performance Primitives

外部リンク

  • oneAPI Threading Building Blocks (oneTBB) — oneTBB documentation(公式HP、英語)
並列計算
総論
  • クラウドコンピューティング
  • グリッド・コンピューティング
  • 高性能計算
  • コンピュータ・クラスター
  • 分散コンピューティング
並列レベル
  • タスク
  • データ
  • ビット
  • 命令
スレッド
  • スーパースレッディング
  • ハードウェアマルチスレッディング
    • 同時マルチスレッディング
    • ハイパースレッディング
  • SIMT
理論
  • アムダールの法則
  • グスタフソンの法則
  • コスト効率性
  • Karp-Flatt metric
  • Parallel slowdown
  • Speedup
要素
  • スレッド
  • ファイバー
  • プロセス
  • PRAM
  • Instruction window
調整
  • キャッシュコヒーレンシ
  • 同期
  • バリア
  • マルチプロセッシング
  • メモリコヒーレンス
  • キャッシュ無効化
  • Application checkpointing
プログラミング
  • スレッド (コンピュータ)
  • 並列プログラミングモデル
    • Implicit
    • Explicit
    • 並行性
  • フリンの分類
    • SISD
    • SIMD
    • MISD
    • MIMD
      • SPMD
  • Lock-freeとWait-freeアルゴリズム
  • 累積和
ハードウェア
  • スーパーコンピュータ
  • スーパースカラー
  • ベクトル計算機
  • マルチプロセッシング
    • 対称型
    • 非対称型
    • マルチコア
  • メモリ
    • NUMA
    • COMA
    • 分散型
    • 共有型
    • 分散共有型
  • MPP
  • Beowulf
API
  • Ateji PX
  • Boostスレッド
  • C++ AMP
  • Charm++
  • Cilk
  • Coarray Fortran
  • CUDA
  • Dryad
  • Global Arrays
  • Intel Cilk Plus
  • Intel Threading Building Blocks
  • MPI
  • OpenACC
  • OpenCL
  • OpenHMPP
  • OpenMP
  • PVM
  • POSIXスレッド
  • UPC
問題
  • Embarrassingly parallel
  • Grand Challenge
  • Software lockout
  • 並行計算
  • カテゴリ:並行計算
  • カテゴリ:並列コンピューティング
「https://ja.wikipedia.org/w/index.php?title=Intel_Threading_Building_Blocks&oldid=103587687」から取得
カテゴリ:
  • 並列コンピューティング
  • API
  • C++
隠しカテゴリ:
  • 出典を必要とする記述のある記事/2015年1月
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.