はじめに
[intro]
このドキュメントでは、oneAPI スレッディング・ビルディング・ブロック (oneTBB) の実装要件を示します。
oneTBB は、標準 ISO C++ コードを使用してスケーラブルな並列プログラミングを可能にするプログラミング・モデルです。プログラムは、oneTBB を使用してアルゴリズムの論理的な並列処理を記述し、oneTBB の実装はその処理を実行スレッドにマップします。
oneTBB は、C++ テンプレートをベースとした汎用プログラミングを採用しており、インターフェイスの大部分は特定のタイプではなくタイプの要件によって定義されています。汎用プログラミングは、アプリケーションの特定のニーズに合わせて API をカスタマイズすることで、oneTBB を柔軟かつ効率的にします。
以下に oneTBB 実装の要件を示します:
実装では、標準 C++11 バージョンを使用する必要があり、明示的に指定される場合を除き新しいバージョンを要求してはなりません。また、非標準の言語拡張も要求してはなりません。
実装は、C++ 実行およびメモリーモデルと互換性を保持する場合、プラットフォーム固有の API を使用できます。例えば、プラットフォーム固有のスレッドの実装は、その実装が C++ スレッドと同じ動作が保証される場合にのみ使用できます。
実装は、同時マルチスレッド機能の提供を含め、シングルコアおよびマルチコア CPU での実行をサポートする必要があります。
CPU では、実装は入れ子になった並列処理をサポートし、小さなコンポーネントから大きな並列コンポーネントを作成できるようにする必要があります。