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  }