DPCT1013
目次
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 }