fopenmp-target-buffers、Qopenmp-target-buffers

一部の OpenMP* オフロード SPIR-V* デバイスでターゲット・オブジェクトが 4GB より大きい場合に不正なコードを生成するという問題を解決する方法を有効にします。この機能は ifx でのみ利用できます。

構文

Linux*:

-fopenmp-target-buffers=keyword

macOS*:

なし

Windows*:

/Qopenmp-target-buffers:keyword

引数

keyword

設定可能な値は以下のとおりです。

default

デフォルトのヒューリスティックを使用するようにコンパイラーに指示します。ターゲット・オブジェクトが 4GB より大きい場合、一部の OpenMP* オフロード SPIR-V* デバイスでは不正なコードが生成されることがあります。

4GB

default の問題を回避するコードを生成するようにコンパイラーに指示します。ターゲットコードで 4GB を超えるサイズのターゲット・オブジェクトにアクセスする OpenMP* オフロードプログラムには、このオプションが必要です。

この設定は以下に適用されます。

  • OpenMP* ターゲット領域または OpenMP* DECLARE TARGET 関数内で宣言されたターゲット・オブジェクト

  • OpenMP* デバイスデータ環境に存在するターゲット・オブジェクト

  • OpenMP* API (omp_target_alloc など) でマップや割り当てを行うオブジェクト

デフォルト

default

このオプションを指定しないと、コンパイラーは、ターゲット・オブジェクトが 4GB より大きい場合、一部の OpenMP* オフロード SPIR-V* デバイスで不正なコードを生成することがあります。

説明

このオプションは、一部の OpenMP* オフロード SPIR-V* デバイスでターゲット・オブジェクトが 4GB (4294959104 バイト) より大きい場合に不正なコードが生成される問題を解決する方法を有効にします。

ただし、インテル® GPU で -fopenmp-target-buffers=4GB (または /Qopenmp-target-buffers:4GB) を指定すると、パフォーマンスが低下する可能性があります。

このオプションを使用するには、-fopenmp-targets (Linux*) または /Qopenmp-targets (Windows*) も指定する必要があります。

このオプションは、一部の OpenMP* オフロード SPIR-V* デバイスや、SPIR* ではない OpenMP* オフロードターゲットでは効果がない場合があります。

IDE オプション

Visual Studio*: [Code Generation] > [Specify buffer size for OpenMP offload kernel access limitations] (ifx のみ)

代替オプション

なし

関連情報