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

_GFX_offload

インオーダーのオフロードキューにタスクを追加します。このトピックは、インテル® グラフィックス・テクノロジーをターゲットとする場合にのみ適用されます。この関数は、古い関数 _GFX_enqueue の後継です。

構文

C/C++ API

 GfxTaskId   _GFX_offload(const void *ptr, arg_list);

可変個引数テンプレートをサポートする C++ API

template <typename T, typename ...ArgType>
    GFX_RT_API GfxTaskId _GFX_offload(T ptr, ArgType ... arg_list);

可変個引数テンプレートをサポートしない C++ API

template <typename T, typename ArgT1>
    GFX_RT_API GfxTaskId _GFX_offload(T ptr, ArgT1 arg1);

template <typename T, typename ArgT1, typename ArgT2>
    GFX_RT_API GfxTaskId _GFX_offload(T ptr, ArgT1 arg1, ArgT2 arg2);

...

template <typename T, typename ArgT1, typename ArgT2, typename ArgT3,
    typename ArgT4, typename ArgT5, typename ArgT6, typename ArgT7,
    typename ArgT8>
    GFX_RT_API GfxTaskId _GFX_offload(T ptr, ArgT1 arg1, ArgT2 arg2,
    ArgT3 arg3, ArgT4 arg4, ArgT5 arg5, ArgT6 arg6, ArgT7 arg7, ArgT8 arg8);

パラメーター

*ptr

カーネル関数へのポインター。関数は、__declspec(target(gfx_kernel)) 属性で宣言されていなければなりません。

arg_list

カーネルの引数リスト (変数引数リスト)。カーネルの引数リストと一致していなければなりません。ランタイムは、カーネルの属性から引数を予測できます。

T

オフロードカーネルの型を示す関数ポインター型。

ArgType

カーネルの引数リスト (変数引数リスト)。カーネルの引数リストと一致していなければなりません。ランタイムは、カーネルの属性から引数を予測できます。

T1, ..., T8

カーネル引数の型。

説明

この関数は、オフロードタスクをキューに追加するのに必要なすべての処理を行います。カーネルエントリー関数ポインターを用いてカーネルを指定します。この関数は、2D イメージやポインターなどの特殊なデータ型に必要な前処理を行ってから、カーネルエントリー関数に引数を渡します。

可変個引数テンプレートをサポートするバージョンとしないバージョンにより、オフロード呼び出しと呼び出されるカーネル間の実引数と仮引数を一致させます。可変個引数テンプレートをサポートするバージョンのみの場合、コンパイラーは if (false) ptr(args...); 関数の実装の最初にある特殊なプロローグを使用して型チェックを行います。可変個引数テンプレートを使用しない場合を除き、このバージョンを使用します。

一般的なランタイムの初期化を行う必要はありません。この関数は、必要なすべての初期化処理がまだ行われていない場合、それらを実行します。

この関数は非ブロック関数です。タスクの完了を待機しません。

CPU とプロセッサー・グラフィックス間のディスパッチおよびタスク分割は、この関数では行われないため、明示的に行う必要があります。これらの処理を支援するため、コンパイラーは、カーネルエントリー関数を含むすべてのターゲット関数のホストバージョンとターゲットバージョンを生成し、カーネル・エントリー・ポイントで _Cilk_for ループの互換セマンティクスを提供します。インテル® Cilk™ Plus は、インテル® C++ コンパイラー 18.0 では非推奨の古い機能です。プロセッサー・グラフィックスへオフロードする代替手段は、将来のリリースで提供される予定です。詳細は、「インテル® Cilk™ Plus の代わりに OpenMP* またはインテル® TBB を使用するためのアプリケーションの移行」を参照してください。

インテル® グラフィックス・テクノロジー・ランタイムは、処理を容易にするため、1 つのデフォルトキューのみ保持します。

_GFX_offload で作成され、キューに追加されたタスクの完了を待機するには、_GFX_wait 関数を使用します。

この関数はスレッドセーフです。つまり、同期を追加することなく、異なるホストスレッドから利用できます。

戻り値

task id

キューに追加されているオフロードタスクのタスク ID。この値を _GFX_wait に渡してタスクの完了を待機できます。タスク ID は 64 ビットの整数値で、新しいタスクにインクリメンタルに割り当てられます。キューに追加されているタスクがユーザーによって明示的に終了および破棄されなくても、マルチスレッド環境でそれらを安全に使用できるようにします。

0

エラーが発生しました。_GFX_get_last_error() 関数を使用してエラーコードを取得してください。