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* コードに移行されます。

1  void 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 }

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

1  void 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  }