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}