インテル® C++ コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
CPU およびコプロセッサーでの関数の同期/非同期実行を制御します。 このキーワードは、インテル® MIC アーキテクチャーにのみ適用されます。
lvalue = _Cilk_offloadfunc_name ( rvalue ) lvalue = _Cilk_offload_to ( target-number ) func_name ( rvalue ) lvalue = _Cilk_spawn _Cilk_offload func_name ( rvalue ) lvalue = _Cilk_spawn _Cilk_offload_to ( target-number ) func_name ( rvalue ) _Cilk_offload_Cilk_for ( init-expr; test-expr; incr-expr) _Cilk_offload_to ( target-number ) _Cilk_for ( init-expr; test-expr; incr-expr) |
オブジェクトを指定する式。
値を表す式。
関数名。
値が次のように解釈される式。
ターゲット上での実行を指定します。 ランタイムシステムは特定のターゲットを選択します。CPU で実行することはできません。 オフロードプログラムの実行に必要な正しいターゲット・ハードウェアがシステムで利用できない場合、プログラムは実行に失敗してエラーメッセージを出力します。
0 以上の値は、特定のターゲット上での実行を指定します。 特定のターゲットの番号は次のように指定します。
target=target-number % number_of_targets
オフロードプログラムの実行に必要な正しいターゲット・ハードウェアがシステムで利用できない場合、プログラムは実行に失敗してエラーメッセージを出力します。
例えば、4 つのターゲットを搭載したシステムの場合:
2 または 6 を指定すると、ランタイムシステムはターゲット 2 でコードを実行します (2 % 4 と 6 % 4 はどちらも 2 になるため)。
1000 を指定すると、ランタイムシステムはターゲット 0 でコードを実行します (1000 % 4 = 0 になるため)。
_Cilk_for ループの初期化式。
_Cilk_for ループのテスト式。
_Cilk_for ループのインクリメント式。
関数呼び出しの前に _Cilk_offload を指定すると、ランタイムシステムが呼び出している関数を実行するコプロセッサーまたは CPU を選択します。複数のコプロセッサーが利用可能な場合は、特定のコプロセッサーを選択します。
_Cilk_spawn キーワードと呼び出しの間に _Cilk_offload キーワードを配置することにより、通常のインテル® Cilk™ Plus の規則を使用した CPU の非同期実行、およびインテル® Cilk™ Plus タスクによる関数の同期オフロードが行われ、非同期オフロードが効率的に実行されます。 通常のインテル® Cilk™ Plus の使用方法と同じように、CPU がオフロードした関数の結果を使用する前に _Cilk_sync キーワードが必要です。
_Cilk_for loop ループの前の _Cilk_offload は、すべてのループをコプロセッサーで実行するように指定します。
_Cilk_offload_to (target-number) は、コプロセッサーに必ずオフロードするように指定します。 target-number は、特定のコプロセッサーを指定します。
オフロード関数呼び出し:
z = _Cilk_offload func(a); z = _Cilk_spawn _Cilk_offload func(a);
オフロード _Cilk_for ループ:
_Cilk_offload _Cilk_for ( init-expr; test-expr; incr-expr ) { ... }