インテル® TBB バージョンをビルドするには、インテル® TBB を使用するようにサンプル・アプリケーションを変更してから、変更したコードをコンパイルします。次に、アプリケーションを実行して、実行時間とベースラインを比較します。
%make clean
#include "tbb/task_scheduler_init.h" #include "tbb/parallel_for.h" #include "tbb/blocked_range.h"
draw_task() 関数をコメントアウトします。この関数のタスクは draw_task クラスで定義されます。
インテル® TBB のスケジュールとスレッド数に関する行。環境変数 TACHYON_NUM_THREADS にスレッド数を手動で定義できるようになります。
粒度を変更する場合は、粒度に関する行。粒度は、複数のスレッドに分割できるループ反復の数の下限です。
インテル® TBB の parallel_for 関数。 この関数で並列呼び出しが行われます。この関数の最初の引数は、ループを実行する反復空間を (starty から stopy で) 定義します。 粒度を手動で指定する場合は、grain_size を 3 番目の引数として tbb::blocked_range constructor に渡します。 2 番目の引数は、draw_task() 関数オブジェクトです。 最後の引数は、インテル® TBB の auto_partitioner で、ループ反復のパーティショニングを自動的に制御します。
シリアル draw_task() 関数をコメントアウトします。この関数は parallel_for() に置換されます。
次のコマンドを実行してサンプルをビルドします。
%make tbb
イメージのレンダリングにかかった時間とパフォーマンスのベースラインを比較します。