DPCT1024#
メッセージ#
オリジナルコードは、プログラムロジックで処理されるエラーコードを返しました。オリジナルコードは、0 に置き換えられました。エラーコードを使用するプログラムを書き直す必要が生じる場合があります。
説明#
この警告は、オリジナルコードで CUDA* API 呼び出しがエラーコードを返し、それをプログラムロジックが使用する場合に生成されます。
handleError(cudaEventRecord(e));
移行したコードで CUDA* API 呼び出しがエラーコードを返さないコードに置き換えられた場合、エラーコードを使用するプログラムロジックへの入力として 0 が使用されます。
e_ct1 = clock(), handleError(0);
その場合のエラー処理コードを検証し、例外処理コードに置き換えるか、完全に削除する必要があります。
修正方法の提案#
コードの正当性を検証してください。
例えば、以下のオリジナル CUDA* コードについて考えてみます。
1void foo() {
2 cudaEvent_t e;
3 ...
4 handleError(cudaEventRecord(e));
5 ...
6}
このコードは、以下の SYCL* コードに移行されます。
1void 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}