DPCT1098#

Message#

The <expression text> expression is used instead of the <function name> call. These two expressions do not provide the exact same functionality. Check the generated code for potential precision and/or performance issues.

Detailed Help#

No exact functional equivalent of the function was found in SYCL* so an expression composed of other functions was used. Code precision and/or performance may not be as expected. Verify the code for correctness and performance.

Suggestions to Fix#

Verify the code for correctness and performance.

For example, this original CUDA* code:

1__device__ void device(float *f) {
2  float a = __ldg(f);
3}

results in the following migrated SYCL code:

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

which is rewritten to:

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