インテル® Cilk™ Plus バージョンをビルドする

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

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

    %make clean

  2. ソースファイル src/build_with_cilk/build_with_cilk.cpp を開きます。
  3. インテル® Cilk™ Plus ヘッダーファイルのコメントを外して、インテル® Cilk™ Plus キーワードを使用するようにします。
  4. インテル® Cilk™ Plus の実装に関連する draw_task 関数のコメントを外します。 この関数とシリアルバージョンの draw_task() 関数の違いに注意してください。 for ループを並列化するため、for キーワードは cilk_for キーワードに置換されます。ループの残りの部分を変更する必要はありません。 cilk_for ループの外側に分岐できないため、スレッドが不要な操作を行わないように、return を Boolean フラグ flagExit に置換します。
  5. シリアル draw_task() 関数をコメントアウトします。この関数はインテル® Cilk™ Plus バージョンの draw_task() 関数に置換されます。
  6. 次のコマンドを実行してサンプルをビルドします。

    %make cilk

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

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

インテル® Cilk™ Plus で利用可能なスレッド数を変更する場合は、環境変数 CILK_NWORKERS にスレッド数を設定します。 または、ランタイム関数 __cilkrts_set_param("nworkers", "N") を使用します (N はスレッド数)。 このランタイム関数は、cilk_spawn または cilk_for 関数の最初の呼び出しの前に呼び出す必要があります。 この設定により、インテル® Cilk™ Plus コードを並列に実行する最大スレッド数が設定されますが、インテル® Cilk™ Plus ランタイムはスチールが発生するスレッドのみ使用するように設計されていることに注意しださい。ワークロードが非常に少ない場合、1 つのスレッドのみ使用されることもあります。

シリアルバージョンをビルドする


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