インテル® スレッディング・ビルディング・ブロック (インテル® TBB) バージョンをビルドする

インテル® TBB バージョンをビルドするには、インテル® TBB を使用するようにサンプル・アプリケーションを変更してから、変更したコードをコンパイルします。次に、アプリケーションを実行して、実行時間とベースラインを比較します。

  1. 次のコマンドを実行して、シリアルバージョンのビルド時に作成されたファイルをすべて削除します。

    %make clean

  2. コードエディターでソースファイル src/build_with_tbb/build_with_tbb.cpp を開きます。
  3. インテル® TBB ヘッダーのコメントを外して、サンプル・アプリケーションで使用されるインテル® TBB 関数を宣言します。

    #include "tbb/task_scheduler_init.h"
    #include "tbb/parallel_for.h"
    #include "tbb/blocked_range.h"

  4. draw_task クラス定義のコメントを外します。 このクラスは、drawtask() 関数を、関数オブジェクトを定義するクラスに置換します。 draw_task クラスの operator() メンバー関数と draw_task() 関数のコードの類似性に注意してください。 operator() メンバー関数の引数は const tbb:blocked_range<int> &r です。 この引数は、この関数オブジェクトを実行するインテル® TBB スレッドに渡される反復範囲です。
  5. draw_task() 関数をコメントアウトします。この関数のタスクは draw_task クラスで定義されます。

  6. thread_trace 関数にある次のコメントを外します。
    • インテル® TBB のスケジュールとスレッド数に関する行。環境変数 TACHYON_NUM_THREADS にスレッド数を手動で定義できるようになります。

    • 粒度を変更する場合は、粒度に関する行。粒度は、複数のスレッドに分割できるループ反復の数の下限です。

    • インテル® TBB の parallel_for 関数。 この関数で並列呼び出しが行われます。この関数の最初の引数は、ループを実行する反復空間を (starty から stopy で) 定義します。 粒度を手動で指定する場合は、grain_size を 3 番目の引数として tbb::blocked_range constructor に渡します。 2 番目の引数は、draw_task() 関数オブジェクトです。 最後の引数は、インテル® TBB の auto_partitioner で、ループ反復のパーティショニングを自動的に制御します。

  7. シリアル draw_task() 関数をコメントアウトします。この関数は parallel_for() に置換されます。

  8. 次のコマンドを実行してサンプルをビルドします。

    %make tbb

  9. サンプル・アプリケーションを実行します。

イメージのレンダリングにかかった時間とパフォーマンスのベースラインを比較します。

シリアルバージョンをビルドする Open the Building the Building the Intel Cilk Plus Version topic


このヘルプトピックについてのフィードバックを送信