DPCT1005#

メッセージ#

SYCL* デバイスバージョンが CUDA コンピューティング互換性と異なります。このコードを書き換える必要があります。

詳細な説明#

インテル® DPC++ 互換性ツールは、オリジナルプログラムで CUDA* コンピューティング機能に依存するロジックの使用を検出しました。

DPC++ は CUDA* 固有の計算機能をサポートしていません。生成されるコードのロジックでは、cl::sycl::info::device::version から抽出されたバージョンが使用されていますが、これは CUDA* コンピューティング機能とは異なります。

修正方法の提案

ロジックを確認して、調整してください。

例えば、以下のオリジナル CUDA* コードについて考えてみます。

1  int main() { 
2   cudaDeviceProp deviceProp; 
3   int deviceID = 0; 
4   cudaGetDeviceProperties(&deviceProp, deviceID); 
5   if (deviceProp.major >= 3) { 
6   // Use functionality from Compute Capability 3.0+ 
7   } 
8   return 0; 
9  }

このコードは、以下の SYCL* コードに移行されます。

1  int main() { 
2   dpct::device_info deviceProp; 
3   dpct::dev_mgr::instance().get_device(0).get_device_info(deviceProp); 
4   /* 
5   DPCT1005:0: The SYCL device version is different from CUDA Compute 
6   Compatibility.You may need to rewrite this code.
7   */ 
8   if (deviceProp.get_major_version() >= 3) { 
9   // Invoke kernel using __shfl() which requires Compute Capability 3.0+ 
10  } 
11  return 0; 
12 }

このコードは次のように書き換えられます。

1   int main() { 
2   // sycl::select_from_group is supported in SYCL 2020. 
3   if (SYCL_LANGUAGE_VERSION >= 202000) { 
4   // Invoke kernel using sycl::select_from_group 
5      ... 
6   } 
7   return 0; 
8   }