DPCT1027#

メッセージ#

<reason> により、<API name> 呼び出しは 0 に置き換えられました。

説明#

機能的に互換性のある SYCL* API 呼び出しが存在しないオリジナル・アプリケーションの API 呼び出しは、インテル® DPC++ 互換性ツールがこの呼び出しを削除してもプログラムロジックに影響しないと判断し、同時にその呼び出しの戻り値がエラー処理に使用される場合、0 に置き換えられます。

置き換えには次のような理由が考えられます:

  • SYCL* は現在、デバイスでリソース制限をサポートしていません。

  • SYCL* は現在、USM を特定のキューに関連付けることをサポートしていません。

  • SYCL* は現在、キューに対する照会操作をサポートしていません。

  • SYCL* は現在、キューに対するキャプチャー操作をサポートしていません。

  • SYCL* は現在、デバイス上での共有メモリーの設定をサポートしていません。

  • SYCL* は現在、デバイスでキャッシュの設定をサポートしていません。

  • SYCL* は現在、デバイスで使用する既存のホストメモリーの登録をサポートしていません。USM を使用して、ホストとデバイスが使用するメモリーを割り当てます。

  • SYCL* は現在、デバイス向けのフラグをサポートしていません。

  • SYCL* は現在、ピアデバイス間のメモリーアクセスをサポートしていません。

  • SYCL* には対応する API がありません。

  • SYCL* での呼び出しは冗長です。

修正方法の提案#

コードの正当性を検証してください。

例えば、以下のオリジナル CUDA* コードについて考えてみます。

1void foo() { 
2 int err = 0; 
3 cudaLimit limit; 
4 cudaStream_t stream; 
5 unsigned int flags; 
6 cudaSharedMemConfig config; 
7 
8 err = cudaDeviceSetLimit(limit, 0); 
9 err = cudaStreamAttachMemAsync(stream, nullptr); 
10 err = cudaStreamQuery(stream); 
11 err = cudaStreamBeginCapture(stream, cudaStreamCaptureModeGlobal); 
12 err = cudaDeviceSetSharedMemConfig(config); 
13 err = cudaDeviceSetCacheConfig(cudaFuncCachePreferNone); 
14 err = cuMemHostRegister(ptr, count, flags); 
15 err = cudaSetDeviceFlags(flags); 
16 err = cudaDeviceEnablePeerAccess(peer_device, flags); 
17 err = cuInit(0); 
18}

このコードは、以下の SYCL* コードに移行されます。

1void foo() try { 
2 int err = 0; 
3 cudaLimit limit; 
4 dpct::queue_ptr stream; 
5 unsigned int flags; 
6 int config; 
7 
8 /* 
9 DPCT1027:0: The call to cudaDeviceSetLimit was replaced with 0 because SYCL 
10 currently does not support setting resource limits on devices.11 */ 
12 err = 0; 
13 /* 
14 DPCT1027:1: The call to cudaStreamAttachMemAsync was replaced with 0 because 
15 SYCL currently does not support associating USM with a specific queue.16 */ 
17 err = 0; 
18 /* 
19 DPCT1027:2: The call to cudaStreamQuery was replaced with 0 because SYCL 
20 currently does not support query operations on queues.21 */ 
22 err = 0; 
23 /* 
24 DPCT1027:3: The call to cudaDeviceSetSharedMemConfig was replaced with 0 
25 because SYCL currently does not support configuring shared memory on devices.26 */ 
27 err = 0; 
28 /* 
29 DPCT1027:4: The call to cudaDeviceSetCacheConfig was replaced with 0 because 
30 SYCL currently does not support setting cache config on devices.31 */ 
32 err = 0; 
33 /* 
34 DPCT1027:5: The call to cudaSetDeviceFlags was replaced with 0 because SYCL 
35 currently does not support setting flags for devices.36 */ 
37 err = 0; 
38 /* 
39 DPCT1027:6: The call to cuInit was replaced with 0 because this call is 
40 redundant in SYCL.41 */ 
42 err = 0; 
43} 
44catch (sycl::exception const &exc) { 
45 std::cerr << exc.what() << "Exception caught at file:" << __FILE__ 
46 << ", line:" << __LINE__ << std::endl; 
47 std::exit(1); 
48}

このコードは次のように書き換えられます。

1void foo() { 
2 int err = 0; 
3 cudaLimit limit; 
4 dpct::queue_ptr stream; 
5 unsigned int flags; 
6 int config; 
7}