DPCT1090
目次
DPCT1090#
メッセージ#
SYCL* は、<property name> と機能的に互換性のあるデバイス・プロパティーをサポートしていません。そのため移行されません。コードを書き換える必要があります。
詳細な説明#
SYCL* は現在、すべての CUDA* デバイス・プロパティーと機能的に互換性があるわけではありません。これらのデバイス・プロパティーは移行されません。
修正方法の提案#
コードを確認して手動で変更します。
例えば、以下のオリジナル CUDA* コードについて考えてみます。
1 void foo(int t) {
2 cudaDeviceProp properties;
3 cudaGetDeviceProperties(&properties, 0);
4 int a = properties.regsPerBlock;
5 if (a < t)
6 code path 1
7 else
8 code path 2
9 }
このコードは、以下の SYCL* コードに移行されます。
1 void foo() {
2 dpct::device_info properties;
3 dpct::get_device_info(properties, dpct::dev_mgr::instance().get_device(0));
4 /*
5 DPCT1090:0: SYCL does not support the device property that would be
6 functionally compatible with regsPerBlock. It was not migrated. You need to
7 rewrite the code.
8 */
9 int a = properties.regsPerBlock;
10 if (a < t)
11 code path 1
12 else
13 code path 2
14 }
このコードは次のように書き換えられます。
1 void foo() {
2 dpct::device_info properties;
3 dpct::get_device_info(properties, dpct::dev_mgr::instance().get_device(0));
4
5 // You need apply code path1 or path2 depending on the num of registers available on
6 // the target hardware.
7 code path 1/2
8 }