DPCT1101#

メッセージ#

<expression text> 式は値に置き換えられました。コメントで示される元の式が正しい場合、その式を使用するようにコードを変更します。

説明#

移行された SYCL* コードで使用される定数の変数名、タイプ、マクロなどの ID は、コードスコープでは利用できない可能性があるため、値で置き換えられます。ユーザーは、コードスコープで ID が利用できることを確認して、値をコメントで示される元の式に手動で書き戻すことができます。

修正方法の提案#

マクロまたは const 変数を使用して値を置き換えます。

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

1 __global__ void f() { 
2 const int x = 2; 
3 __shared__ int fold[x]; 
4 } 
5 
6 int main() { 
7 f<<<1, 1>>>(); 
8 return 0; 
9 }

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

1 void f(int *fold) { 
2 const int x = 2; 
3 } 
4 
5 int main() { 
6 dpct::get_default_queue().submit([&](sycl::handler &cgh) { 
7 sycl::local_accessor<int, 1> fold_acc_ct1(sycl::range<1>(2 /*x*/), cgh); 
8 
9 cgh.parallel_for( 
10 sycl::nd_range<3>(sycl::range<3>(1, 1, 1), sycl::range<3>(1, 1, 1)), 
11 [=](sycl::nd_item<3> item_ct1) { 
12 f(fold_acc_ct1.get_pointer()); 
13 }); 
14 }); 
15 return 0; 
16 }

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

1 const int x = 2; 
2 void f(int *fold) { 
3 
4 } 
5 
6 int main() { 
7 dpct::get_default_queue().submit([&](sycl::handler &cgh) { 
8 sycl::local_accessor<int, 1> fold_acc_ct1(sycl::range<1>(x), cgh); 
9 
10 cgh.parallel_for( 
11 sycl::nd_range<3>(sycl::range<3>(1, 1, 1), sycl::range<3>(1, 1, 1)), 
12 [=](sycl::nd_item<3> item_ct1) { 
13 f(fold_acc_ct1.get_pointer()); 
14 }); 
15 }); 
16 return 0; 
17 }