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; // 精度には次を使用: *res = sycl::nextafter(a + b, (double)INFINITY); 
5 
6  }