DPCT1005#
メッセージ#
SYCL* デバイスバージョンが CUDA* 計算の互換性と異なります。このコードを書き換える必要があります。
説明#
インテル® DPC++ 互換性ツールは、オリジナルプログラムで CUDA* コンピューティング機能に依存するロジックの使用を検出しました。
DPC++ は CUDA* 固有の計算機能をサポートしていません。生成されるコードのロジックでは、cl::sycl::info::device::version
から抽出されたバージョンが使用されていますが、これは CUDA* コンピューティング機能とは異なります。
修正方法の提案#
ロジックを確認して、調整してください。
例えば、以下のオリジナル CUDA* コードについて考えてみます。
1int 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* コードに移行されます。
1int 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 }