指定したデバイスが利用可能な場合は条件付きでプロシージャー・オフロード・バリアントを呼び出し、そうでない場合はホストでプロシージャーを実行します。
#pragma omp target variant dispatch {device(integer-expression) | nowait | subdevice([integer-constant ,] integer-expression [ : integer-expression [ : integer-expression] ] ) | use_device_pointer (ptr-list)} |
device |
デバイス n が利用可能な場合のみバリアントを呼び出すようにコンパイラーに指示します。 |
subdevice |
指定したタイルまたは計算スライスが利用可能な場合のみバリアントを呼び出すようにコンパイラーに指示します。 |
nowait |
プロシージャーの呼び出しを非同期に実行できることをコンパイラーに伝えます。nowait を指定しない場合、呼び出しは同期実行されます。 |
use_device_ptr |
バリアント・プロシージャーを呼び出す際に、ホストポインターではなく、対応するデバイスポインターを使用するようにコンパイラーに指示します。 |
device と subdevice の両方を指定すると、指定したタイルまたは計算スライスがデバイス n で利用可能な場合のみバリアントが呼び出されます。そうでない場合は、ベース・プロシージャーがホストで呼び出されます。
omp target variant dispatch プラグマを指定すると、コンパイラーはプラグマに続くプロシージャー呼び出しの周囲で条件付きディスパッチ・コードを発行します。指定したデバイスが利用可能な場合、バリアントバージョンが呼び出されます。
omp target variant dispatch プラグマに関連するプロシージャー名は、呼び出しスコープの指定部分で omp declare variant プラグマに記述されていなければなりません。バリアント・プロシージャーのインターフェイスは、omp target variant dispatch が記述されたベース・プロシージャーからアクセス可能でなければなりません。
インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) を呼び出す際は、プラグマ omp target variant dispatch を使用します。
その他の場合は、OpenMP* プラグマ omp dispatch を使用することを推奨します。プラグマ omp dispatch に関する詳細は、OpenMP* のドキュメントを参照してください。