インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

ワーカー数の設定

インテル® Cilk™ Plus は古い機能 (非推奨) です。代わりに、OpenMP* またはインテル® TBB を使用してください。詳細は、「インテル® Cilk™ Plus の代わりに OpenMP* またはインテル® TBB を使用するためのアプリケーションの移行」を参照してください。

デフォルトでは、ワーカースレッドの数はホストシステム上のコア数に設定されます。ほとんどの場合、デフォルト値で適切に動作します。さらに、各コアで同時マルチスレッディングをサポートするシステムでは、インテル® Cilk™ Plus はすべての利用可能なハードウェア・スレッドを使用します。ただし、インテル® Xeon Phi™ プロセッサーおよびコプロセッサーは例外で、利用可能なハードウェア・スレッド数の半分を使用します。

環境変数を使用してワーカーの数を増減できます。テスト実行やほかのプログラムのリソースを確保するため、利用可能なコア数よりも少ない数のワーカーを使用することができます。場合によっては、オーバーサブスクライブ状態を再現するため、利用可能なコア数よりも多いワーカーを使用することもできます。これは、ワーカーがロックで待機している場合や、シングルコアのマシンで並列プログラムをテストする場合に便利です。

環境変数

環境変数 CILK_NWORKERS にワーカースレッドの数を指定します。

Windows*: set CILK_NWORKERS=4

Linux* および macOS*: export CILK_NWORKERS=4

プログラム制御

プログラムの中で最初のタスクスポーン (cilk_spawn または cilk_for) が実行される前に、__cilkrts_set_param("nworkers","N") を呼び出してワーカー数を指定できます。N は、10 進、16 進 (0x)、または 8 進 (0) で指定できます。この呼び出しは、CILK_NWORKERS 環境変数に設定されている値を上書きします。__cilkrts_set_param を使用する場合は、プログラムで #include <cilk/cilk_api.h> を指定する必要があります。

例:

 if (0!= __cilkrts_set_param("nworkers","4"))
 {
    printf("Failed to set worker count\n");
    return 1;
 }

関連情報