DPCT1098
目次
DPCT1098#
メッセージ
<expression text> 式は、<function name> 呼び出しの代わりに使用されます。この 2 つの式は同じ機能を提供するものではありません。生成されたコードに精度やパフォーマンスの潜在的な問題がないか確認してください。
詳細な説明
関数と厳密に同等な機能が SYCL* で提供されていないため、ほかの関数で構成される式が導入されました。コードの精度やパフォーマンスが期待どおりにならない可能性があります。コードの正当性およびパフォーマンスを検証してください。
修正方法の提案
コードの正当性およびパフォーマンスを検証してください。
例えば、以下のオリジナル CUDA* コードについて考えてみます。
1 __device__ void device(float *f) {
2 float a = __ldg(f);
3 }
このコードは、以下の SYCL* コードに移行されます。
1 void device(float *f) {
2 /*
3 DPCT1098:0: The '*' expression is used instead of the __ldg call. These two
4 expressions do not provide the exact same functionality.Check the generated
5 code for potential precision and/or performance issues.
6 */
7 float a = *f;
8 }
このコードは次のように書き換えられます。
1 void device(float *f) {
2 #if defined(__NVPTX__) && defined(__SYCL_DEVICE_ONLY__)
3 float a = sycl::ext::oneapi::experimental::cuda::ldg(f);
4 #else
5 float a = *f;
6 #endif
7 }