DPCT1013

メッセージ

丸めモードを指定できなかったため、生成されたコードはオリジナルコードと異なる精度である可能性があります。正当性を検証してください。SYCL* 数学組込み関数の丸めモードは、OpenCL* C 1.2 標準と一致しています。

説明

丸めモードを指定できなかったため、生成されたコードはオリジナルコードと異なる精度である可能性があります。正当性を検証してください。SYCL* 数学組込み関数の丸めモードは、OpenCL* C 1.2 標準と一致しています。

修正方法の提案

ロジックを確認して、調整してください。

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


1__global__ void foo(double *res) { 
2 double a = 1.00001; 
3 double b = 100000000000000000; 
4 *res = __dadd_ru(a, b); 
5}

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


1void foo(double *res) { 
2 double a = 1.00001; 
3 double b = 100000000000000000; 
4 /* 
5 DPCT1013:0: The rounding mode could not be specified and the generated code 
6 may have different accuracy than the original code.Verify the correctness.
7 SYCL math built-in function rounding mode is aligned with OpenCL C 1.2 
8 standard.
9 */ 
10 *res = a + b; 
11}

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


1void foo(double *res) { 
2 double a = 1.00001; 
3 double b = 100000000000000000; 
4 *res = a + b; // For precision, use: *res = sycl::nextafter(a + b, (double)INFINITY); 
5 
6}