インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス
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 ) |
オブジェクトを指定する式。
値を表す式。
関数名。
値が次のように解釈される式。
次の式に応じて、文を特定のターゲット上で実行します。
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 を指定すると、ランタイムシステムがその関数をコプロセッサーで実行するか、ホストで実行するかを選択します。複数のコプロセッサーが利用可能な場合は、特定のコプロセッサーを選択します。
_Cilk_spawn キーワードと呼び出しの間に _Cilk_offload キーワードを配置することにより、通常のインテル® Cilk™ Plus の規則を使用した CPU の非同期実行、およびインテル® Cilk™ Plus タスクによる関数の同期オフロードが行われ、非同期オフロードが効率的に実行されます。 通常のインテル® Cilk™ Plus の使用方法と同じように、CPU がオフロードした関数の結果を使用する前に _Cilk_sync キーワードが必要です。
_Cilk_for ループの前の _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 ) {
...
}