DPCT1093#
メッセージ#
<Device ID> のデバイスが意図するものではない可能性があります。必要に応じて、選択デバイスを調整します。
詳細な説明#
cudaSetDevice
関数は、コードを実行するデバイスを設定します。SYCL* 並行すると、デバイス選択のロジックを変更する必要が生じることがあります。
例えば、以下のオリジナル CUDA* コードについて考えてみます。
1 int main(int argc, char **argv) {
2 cudaSetDevice(1);// 元のコードではデバイス 1 が最適な選択
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); // デバイス 1 は SYCL では最適な選択ではない可能性があります
7 foo(argc, argv);
8 ...
9 return 0;
10 }
このコードを以下のように手動で調整します。
1 int main(int argc, char **argv) {
2 // ユーザーはコマンド `sycl-ls` でデバイス リストを確認し、環境変数
3 // `ONEAPI_DEVICE_SELECTOR` を使用してデバイスをフィルターできます
4 dpct::select_device(0);
5 foo(argc, argv);
6 ...
7 return 0;
8}
修正方法の提案#
必要に応じて、デバイスの選択ロジックを確認して調整します。