DPCT1093#

メッセージ#

<Device ID> のデバイスが意図するものではない可能性があります。必要に応じて、選択デバイスを調整します。

詳細な説明#

cudaSetDevice 関数は、コードを実行するデバイスを設定します。SYCL* 並行すると、デバイス選択のロジックを変更する必要が生じることがあります。

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

1  int main(int argc, char **argv) { 
2   cudaSetDevice(1);// Device 1 is the best choice in the original code.3   foo(argc, argv); 
4    ... 
5   return 0; 
6  }

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

1  int main(int argc, char **argv) { 
2   /* 
3   DPCT1093:0: The "1" device may be not the one intended for use. Adjust the 
4   selected device if needed.
5   */ 
6   dpct::select_device(1); // Device 1 maybe not the best choice in SYCL. 
7   foo(argc, argv); 
8    ... 
9   return 0; 
10 }

このコードを以下のように手動で調整します。

1  int main(int argc, char **argv) { 
2   // User can check device list by command `sycl-ls` and filter the device by using 
3   // environment variable `ONEAPI_DEVICE_SELECTOR`. 
4   dpct::select_device(0); 
5   foo(argc, argv); 
6    ... 
7   return 0; 
8  }

修正方法の提案#

必要に応じて、デバイスの選択ロジックを確認して調整します。