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 }