DPCT1024#

メッセージ#

オリジナルコードは、プログラムロジックで処理されるエラーコードを返しました。オリジナルコードは、0 に置き換えられました。エラーコードを使用するプログラムを書き直す必要が生じる場合があります。

詳細な説明#

この警告は、オリジナルコードで CUDA* API 呼び出しがエラーコードを返し、それをプログラムロジックが使用する場合に生成されます。

handleError(cudaEventRecord(e));

移行したコードで CUDA* API 呼び出しがエラーコードを返さないコードに置き換えられた場合、エラーコードを使用するプログラムロジックへの入力として 0 が使用されます。

e_ct1 = clock(), handleError(0);

その場合のエラー処理コードを検証し、例外処理コードに置き換えるか、完全に削除する必要があります。

修正方法の提案#

コードの正当性を検証してください。

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

1  void foo() { 
2   cudaEvent_t e; 
3    ...
4   handleError(cudaEventRecord(e)); 
5    ... 
6  }

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

1  void foo() { 
2   dpct::event_ptr e; 
3   std::chrono::time_point<std::chrono::steady_clock> e_ct1; 
4      ... 
5   /* 
6   DPCT1024:1: The original code returned the error code that was further 
7   consumed by the program logic. This original code was replaced with 0. You may 
8   need to rewrite the program logic consuming the error code.
9   */ 
10  e_ct1 = std::chrono::steady_clock::now(); 
11  handleError(0); 
12     ... 
13  }

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

1void foo() { 
2   dpct::event_ptr e; 
3   std::chrono::time_point<std::chrono::steady_clock> e_ct1; 
4      ... 
5   e_ct1 = std::chrono::steady_clock::now(); 
6      ... 
7  }