DPCT1127
目次
DPCT1127#
メッセージ#
C++20 でコンパイルする場合、device_global 定数のコンパイル時初期化がサポートされます。コンパイルコマンドを調整する必要があるかもしれません。
詳細な説明#
device_global 拡張機能は、C++ グローバル変数に似た構文を使用してカーネル内でアクセスできる、SYCL* へのデバイス・スコープ・メモリー割り当てを可能にします。C++20 でコンパイルする場合、device_global 定数のコンパイル時初期化がサポートされます。次を参照してください: https://github.com/intel/llvm/blob/sycl/sycl/doc/extensions/experimental/sycl_ext_oneapi_device_global.asciidoc (英語)。
修正方法の提案#
例えば、以下のオリジナル CUDA* コードについて考えてみます。
1 // test.cu
2 __constant__ int var = 0;
3 __global__ void kernel(int* ptr) {
4 *ptr = var;
5 }
このコードは、以下の SYCL* コードに移行されます。
1 // test.dp.cpp
2 /*
3 DPCT1127:0: The constant compile-time initialization for device_global is
4 supported when compiling with C++20.You may need to adjust the compile
5 commands.
6 */
7 static sycl::ext::oneapi::experimental::device_global<const int> var{0};
8 void kernel(int* ptr) {
9 *ptr = var.get();
10 }
コンパイルコマンドを次のように変更する必要があります。
1 icpx -fsycl -std=c++20 test.dp.cpp # Linux*
2 icx-cl -fsycl -Qstd=c++20 test.dp.cpp # Windows*