インテル® C++ コンパイラー XE 13.1 ユーザー・リファレンス・ガイド

_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

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

-1

ターゲット上での実行を指定します。 ランタイムシステムは特定のターゲットを選択します。CPU で実行することはできません。 オフロードプログラムの実行に必要な正しいターゲット・ハードウェアがシステムで利用できない場合、プログラムは実行に失敗してエラーメッセージを出力します。

>=0

0 以上の値は、特定のターゲット上での実行を指定します。 特定のターゲットの番号は次のように指定します。

target=target-number % number_of_targets

オフロードプログラムの実行に必要な正しいターゲット・ハードウェアがシステムで利用できない場合、プログラムは実行に失敗してエラーメッセージを出力します。

<-1

この値は予約されています。

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

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

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

init-expr

_Cilk_for ループの初期化式。

test-expr

_Cilk_for ループのテスト式。

incr-expr

_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 ) {
...
}

関連情報


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