インテル® oneTBB

マルチスレッド・パフォーマンスを向上する C++ テンプレート・ライブラリーです。
インテル® oneAPI ベース・ツールキットに同梱されています。

関連情報
[お知らせ一覧]

スケーラブルな並列モデルで並列処理を簡素化

インテル® スレッディング・ビルディング・ブロック (インテル® oneTBB) は、幅広く使用されている移植性とスケーラビリティーに優れた並列アプリケーションの開発を支援する C++ ライブラリーです。

  • 生産性と信頼性を高める – スレッドの操作に代わりタスクを指定。インテル® oneTBB は、論理タスクをスレッドに割り当て、入れ子になった並列処理も完全にサポート。
  • パフォーマンス向上を実現 – インテル® oneTBB は、テスト済みの効率良い並列パターンを使用し、実行時間が不明なタスクの負荷バランスを取るためワークスチールを行います。
  • 移植性と互換性 – Linux*、Windows*、macOS*、そして Android* 向けのオープンソースと商用バージョンが利用できます。多くの C++ コンパイラーと互換性を持ち、インテル® Atom™ プロセッサー、インテル® Core™ プロセッサー、インテル® Xeon® プロセッサーおよびインテル® Xeon Phi™ コプロセッサーを含むインテル® プロセッサーおよび互換プロセッサーと互換性があります。
  • フローグラフ機能により、開発者は容易に依存性とデータのフローグラフを表現できるようになります。
詳細・新機能 技術情報

新しいフローグラフ・ツール (現在はアルファ版)

  • Flow Graph Designer

    開発者がフローグラフ・アプリケーションを作成およびチューニングするのを支援します。これは、次の 2 つの方法で行われます

  • 解析ツール

    インテル® oneTBB によるフローグラフ・アプリケーションの実行トレースを収集し、可視化する機能 Flow Graph Designer を提供します。Flow Graph Designer により、開発者はノードの実行時間のタイムラインと相互に作用するグラフのトポロジーを検索することができ、そのグラフのノードに関する重要な統計情報を得ることができます。

  • 設計ツール

    インテル® oneTBB のフローグラフのダイアグラムを可視化し、将来の開発における出発点となる C++ スタブを作成します。

Flow Graph Designer ツールの詳細とダウンロードについては、 Flow Graph Designer の記事 (英語) をご覧ください。

スイート製品に同梱

インテル® oneTBB は単体で販売されておりません。以下製品に同梱されます。

インテル® oneAPI ベース・ツールキット

1 つのプログラミング・モデルで複数のアーキテクチャー (CPU、GPU、FPGA) にわたって高いパフォーマンスを発揮できるコードの開発を支援します。

インテル® oneAPI ベース & HPC ツールキット

DPC++/C++、Fortran コンパイラーと MPI 開発ツールにより、CPU およびアクセラレーターまたはそれらのクラスターへ最適化された HPC アプリケーションの開発を支援します。

バージョン 2022 新機能

主に以下の変更・機能が追加されました。
詳細は、リリースノートおよび インテル社公開の情報を参照ください。

  • インテル® oneAPI スレッディング・ビルディング・ブロックの task_group、flow_graph、parallel_for_each のスケーラビリティーの向上により、マルチスレッド・アプリケーションを高速に実行
  • インテル® oneTBB のフローグラフを使用して共有グラフの重複メッセージを処理し、新しい try_put_and_wait 実験的 API を使用して特定のメッセージを待機することにより、迅速に結果を取得

将来性のあるスケーラビリティー

インテル® oneTBB は、ソフトウェア開発者がループとタスクベースのアプリケーションを記述する際に、容易に並列パフォーマンスとスケーラビリティーを達成することを可能にします。

開発者は、プラットフォームの詳細とスレッドのメカニズムを抽象化して、コア数の増加に応じてパフォーマンスがスケールする高度なアプリケーションをビルドすることができます。インテル® TBB は、各種サンプル・アプリケーションにおいて効果的なスケーリングを示します。

並列化のための豊富な機能セット

パフォーマンスと生産性のための豊富なコンポーネント群を提供します。

  • 並列アルゴリズムとデータ構造

    • 一般的な並列アルゴリズム
      ゼロから始めることなく、マルチコアのパワーを活用するための効率良いスケーラブルな手法。
    • フローグラフ
      計算の依存関係と (または) データフローのグラフとして並列処理を表現する一連のクラス。
    • コンカレント・コンテナー
      同時アクセス、およびスレッドセーフな外部ロックを伴うコンテナーのスケーラブルな代替コンテナー。
  • メモリー割り当てとタスク・スケジューリング

    • タスク・スケジューラー
      並列アルゴリズムとフローグラフを強化する、洗練されたワークのスケジュール・エンジン。
    • メモリー割り当て
      スケーラブルなメモリー・マネージャーと False sharing (フォルス・シェアリング) を回避するメモリー・アロケーター。
  • スレッドおよび同期プリミティブ

    • 同期プリミティブ
      アトミック操作、異なる特性による各種ミューテックス、条件変数。
    • タイマーと例外
      スレッドセーフなタイマーと例外クラス。
    • スレッド
      OS API のラッパー。
    • スレッド・ローカル・ストレージ
      無制限のスレッドローカル変数向けの効率良い実装。

条件付きの数値再現性

インテル® oneTBB の新しいテンプレート関数 ‘parallel_deterministic_reduce’ による浮動小数点演算の結果の決定論性を向上。

C++11 のラムダ関数をサポート

インテル® oneTBB は、C++11 コンパイラーで利用でき、ラムダ式をサポート。並列アルゴリズムを開発するプログラマーは、ラムダ式を使用することで異なるオブジェクトやクラスの必要性を排除することができ、時間とコードサイズを削減可能。

適切なインテル® oneTBBライセンスを選択

商用バイナリー配布は、商用サポートサービスが必要な場合があります。 魅力的な価格は、学生や教室での使用に適しています。

オープンソース・ディストリビューションは、Apache 2.0 ライセンスで使用できます。 追加の OS やハードウェア・プラットフォームをサポートします。 ソース形式とバイナリ形式の両方をダウンロードできます。

インテル® oneTBB の商用ソースコードを変更または頒布する必要がある場合は、カスタム・ライセンスを使用することができます。詳細については、 お問い合わせください。

本ページに、ドキュメント一覧が表示されない場合は、ご利用のブラウザの JavaScript を ON にしていただくか、 こちらのドキュメント・ページをご覧ください。

製品セミナーや関連イベントをご紹介。

米インテル社の製品情報を日本語に翻訳して公開中。

ハードウェア要件

サポートされるプロセッサー
  • インテル® Core™ プロセッサー・ファミリー (推奨)
  • インテル® Xeon® プロセッサー・ファミリー (推奨)
  • インテル® Celeron® プロセッサー・ファミリー
  • インテル® Atom® プロセッサー・ファミリー
  • 上記プロセッサーと互換性のあるインテル以外のプロセッサー

ソフトウェア要件

サポートされるオペレーティング・システム

Windows*

  • Microsoft* Windows* 10、11
  • Microsoft* Windows* Server 2019、2022

Linux*

  • Amazon* Linux 2023
  • Rocky Linux* 9
  • Debian* 12
  • Fedora* 39、40
  • Red Hat* Enterprise Linux* 8、9
  • SUSE* Linux* Enterprise Server 15
  • Ubuntu* 22.04、24.04

macOS*

  • macOS* 13.x、14.x
サポートされるコンパイラー
  • インテル® oneAPI DPC++/C++ コンパイラー
  • インテル® C++ コンパイラー・クラシック 2021.1 - 2021.10
  • Microsoft* Visual C++ 14.2 (Microsoft* Visual Studio* 2019、Windows* OS のみ)
  • Microsoft* Visual C++ 14.3 (Microsoft* Visual Studio* 2022、Windows* OS のみ)
  • GNU コンパイラー (gcc) 8.x - 14.x
  • GNU C ライブラリー (glibc) バージョン 2.28 - 2.39
  • Clang* 7.x - 18.x

既知の問題: インテル® oneAPI ツールキット 2022.1.3 およびそれ以前のバージョン、インテル® Parallel Studio XE 全バージョンでは、Microsoft* Visual Studio* 2022 はサポートされていません。Microsoft* Visual Studio* 2022 がインストールされたシステムを使用する場合、インストール、アップグレード、変更、またはアンインストールの際に、インテル® oneAPI ツールキットまたはインテル® Parallel Studio XE のインストーラーが動作しないことがあります。詳細は、こちらの記事をご確認ください。

  • 最新の情報は、製品または評価版に同梱されているリリースノートを参照ください。

お知らせ

2024年11月6日、インテル社よりリリースが発表されたインテル® oneTBB 2022 が同梱されるインテル® ソフトウェア開発ツールの最新バージョン 2025 に対応する有償サポートサービスの提供を開始します。

過去に製品をご購入いただき、現在有効なサポートサービスをお持ちのお客様は、すぐにバージョン 2022 を無料でダウンロードしてご利用いただけます。また、必要に応じて数世代前までの旧バージョンをダウンロードしてご利用いただけます。

2020年 12月 9日、インテル® oneTBB 2021 が同梱されるインテル® oneAPI 2021 の販売を開始しました。

過去に製品をご購入いただき、現在有効なサポートサービスをお持ちのお客様は、すぐにバージョン 2021 を無料でダウンロードしてご利用いただけます。

2019年 12月 18日、インテル® oneTBB 2020 が同梱されるインテル® Parallel Studio XE 2020 の販売を開始しました。

過去に製品をご購入いただき、現在有効なサポートサービスをお持ちのお客様は、すぐにバージョン 2020 を無料でダウンロードしてご利用いただけます。

2018年 9月 13日、インテル® oneTBB 2019 が同梱されるインテル® Parallel Studio XE 2019 の販売を開始しました。

過去に製品をご購入いただき、現在有効なサポートサービスをお持ちのお客様は、すぐにバージョン 2019 を無料でダウンロードしてご利用いただけます。

インテル社の方針により、2014年 8月 26日 (火) を以って、インテル® oneTBB 単体製品の新規ライセンスの販売を終息しました。
インテル ® TBB の SSR および、本製品を含むバンドル製品の新規ライセンス、SSR は継続して販売いたします。

FAQ

インテル® oneTBB は、共有メモリー並列プログラミングおよびヘテロジニアス・コンピューティング (ノード内分散メモリー・プログラミング) で広く使用されている C++ ライブラリーです。ライブラリーは、汎用並列アルゴリズム、コンカレント・コンテナー、スケラーブル・メモリー・アロケーター、ワークスチール・タスク・スケジューラー、低レベル同期プリミティブを含む、並列プログラミング向けの広範な機能を提供します。インテル® TBB は、タスクベースの並列処理向けライブラリー・ソリューションであり、特別なコンパイラー・サポートは必要ありません。インテル® アーキテクチャー、ARM*、POWER* を含む、複数のアーキテクチャーで利用できます。

例えば、コース料理を調理するときにコンロの口が 1 つしかなければ、一度に 1 つの料理しか調理できません。コンロの口が 4 つあれば、一度に 4 つの料理を調理して、同時にテーブルに出すことができます。ソフトウェアの並列処理も同様です。並列処理を行うために使用される手法はいくつかあり、スレッド化はその 1 つです。目的は、可能な場所でプログラムを分割して、異なる領域をマルチコア構成の異なるプロセッサーで同時に実行できるようにすることです。その後、分割されたプログラムがすべて集められ、アプリケーションの結果が生成されます。 タスクベースの並列処理は、いくつかのワーク項目 (タスク) を並列に実行するメカニズムです。

スレッド化は一種の並列処理で、マルチプロセッサーまたはマルチコアのコンピューターで同時に実行できる部分にアプリケーションを分解するため、ソフトウェア開発者により使用される手法です。スレッド化されたアプリケーションは、1 つのオペレーティング・システムの管理の下、1 台のコンピューターの複数のコアで実行されます。

C++ は、ほかの広く利用されている言語と同様に、並列処理を表現するために設計されていません。幸いにも、C++ はテンプレートを使用して拡張可能です。開発者は、多くのコードを追加することなくスケーラブルなパフォーマンスを得られる OpenMP* の概念を気に入っていましたが、C++ のオブジェクト指向/テンプレート・ベースのプログラミング・スタイルにより適したものを必要としていました。並列コンテナーとアルゴリズムに関する開発者からの要望に応えるには、テンプレートが最適でした。STL が使用する汎用プログラミング・スタイル (パフォーマンスを損なうことなくコンポーネントを容易に構成できる) は、非常に魅力的でした。そこで、我々は、STL が C++ を拡張したのと似た方法で C++ を拡張しました。 抽象化は開発者にとって重要です。ネイティブスレッドを使用して、独自の明示的なスレッド管理を行うことは、並列処理向けのアセンブリー言語と言えます。インテル® TBB は、多くの理由により必要な抽象化です。ネイティブスレッドを使用した並列処理向けのプログラミングは、面倒で、ミスを引き起こしやすく、可搬性がありません。また、高レベルのスケーラビリティーには高度なプログラミングが求められるため、容易に達成できるものではありません。

ランタイム料やロイヤルティーを支払う必要はありません。

はい。インテル® oneTBB を使用してスレッド化されたアプリケーションは、 インテル® VTune™ Amplifier XE および インテル® Inspector で解析できます。 インテル® Parallel Studio XE 製品に含まれている インテル® Advisor を利用すると、並列処理によりパフォーマンスが大幅に向上する可能性のある領域を特定できます。

インテル® oneTBB は、、 インテル® Parallel Studio XE および インテル® System Studio の一部として提供されています。さらに、Apache* 2.0 ライセンスの下で、オープンソースとして提供されています。

インテル® oneTBB のソースコード、ドキュメント、ユーザーフォーラム、ブログ、ポッドキャスト、記事、ホワイトペーパー、サポートは、 threadingbuildingblocks.org (英語) で提供されています。

インテル® レジストレーション・センターで操作します。
操作手順やよくあるご質問、トラブルシューティングは、インテル ® レジストレーション・センター操作マニュアルを参照ください。

» マニュアルはこちら

最新版、または旧バージョンのダウンロードは、インテル® レジストレーション・センターで行います。
詳細は以下ページを参照ください。

» 製品登録 & ダウンロード