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

_Cilk_offload

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)

引数

lvalue

オブジェクトを指定する式。

rvalue

値を表す式。

func_name

関数名。

target-number

値が次のように解釈される式。

>=0

次の式に応じて、文を特定のターゲット上で実行します。

target = target-number % number_of_targets

例えば、4 つのターゲットを搭載したシステムの場合:

  • 2 または 6 を指定すると、ランタイムシステムはターゲット 2 でコードを実行します (2 % 4 と 6 % 4 はどちらも 2 になるため)。

  • 1000 を指定すると、ランタイムシステムはターゲット 0 でコードを実行します (1000 % 4 = 0 になるため)。

-1 または値なし

文をランタイムシステムによって選択されたターゲット上で実行します。

<-1

予約済み。

init-expr

_Cilk_for ループの初期化式。

test-expr

_Cilk_for ループのテスト式。

incr-expr

_Cilk_for ループのインクリメント式。

説明

インテル® Cilk™ Plus は古い機能 (非推奨) です。

関数呼び出しの前に _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 ) {
...
}

関連情報