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}