DPCT1026#

Message#

The call to <API name> was removed because <reason>.

Detailed Help#

API calls from the original application, which do not have functionally compatible SYCL* API calls are removed if Intel® DPC++ Compatibility Tool determines that it should not affect the program logic.

Possible reasons for removal:

  • SYCL currently does not support setting resource limits on devices.

  • SYCL currently does not support associating USM with a specific queue.

  • SYCL currently does not support query operations on queues.

  • SYCL currently does not support capture operations on queues.

  • SYCL currently does not support configuring shared memory on devices.

  • SYCL currently does not support setting cache config on devices.

  • SYCL currently does not support registering of existing host memory for use by device. Use USM to allocate memory for use by host and device.

  • SYCL currently does not support setting flags for devices.

  • SYCL currently does not support memory access across peer devices.

  • There is no corresponding API in SYCL.

  • The call is redundant in SYCL.

Suggestions to Fix#

Verify the code correctness.

For example, this original CUDA* code:

 1__device__ void bar(int *a) {
 2  __ldg(a);
 3}
 4
 5void foo() {
 6  cudaLimit limit;
 7  cudaStream_t stream;
 8  unsigned int flags;
 9  cudaSharedMemConfig config;
10
11  cudaDeviceSetLimit(limit, 0);
12  cudaStreamAttachMemAsync(stream, nullptr);
13  cudaStreamQuery(stream);
14  cudaDeviceSetSharedMemConfig(config);
15  cudaDeviceSetCacheConfig(cudaFuncCachePreferNone);
16  cudaSetDeviceFlags(flags);
17  cuInit(0);
18}

results in the following migrated SYCL code:

 1void bar(int *a) {
 2  /*
 3  DPCT1026:0: The call to __ldg was removed because there is no corresponding
 4  API in SYCL.
 5  */
 6  *a;
 7}
 8
 9void foo() {
10  cudaLimit limit;
11  dpct::queue_ptr stream;
12  unsigned int flags;
13  int config;
14
15  /*
16  DPCT1026:1: The call to cudaDeviceSetLimit was removed because SYCL currently
17  does not support setting resource limits on devices.
18  */
19  /*
20  DPCT1026:2: The call to cudaStreamAttachMemAsync was removed because SYCL
21  currently does not support associating USM with a specific queue.
22  */
23  /*
24  DPCT1026:3: The call to cudaStreamQuery was removed because SYCL currently
25  does not support query operations on queues.
26  */
27  /*
28  DPCT1026:4: The call to cudaDeviceSetSharedMemConfig was removed because SYCL
29  currently does not support configuring shared memory on devices.
30  */
31  /*
32  DPCT1026:5: The call to cudaDeviceSetCacheConfig was removed because SYCL
33  currently does not support setting cache config on devices.
34  */
35  /*
36  DPCT1026:6: The call to cudaSetDeviceFlags was removed because SYCL currently
37  does not support setting flags for devices.
38  */
39  /*
40  DPCT1026:7: The call to cuInit was removed because this call is redundant in
41  SYCL.
42  */
43}

which is rewritten to:

 1void bar(int *a) {
 2  *a;
 3}
 4
 5void foo() {
 6  cudaLimit limit;
 7  dpct::queue_ptr stream;
 8  unsigned int flags;
 9  size_t count;
10  float *ptr;
11
12  int config;
13}