DPCT1060

メッセージ

SYCL* のレンジは 1D、2D、または 3D ベクトルのみです。コードを調整します。

説明

この警告は、オリジナルコードのメモリーの次元数が 3 を超える場合に出力されます。SYCL* のレンジは 1、2、または 3 次元のみをサポートしているため、移行したコードは SYCL* に準拠していません。

移行したコードを修正するには、低次元の配列で高次元の配列をシミュレートします。

以下の例は、3D 配列を使って 4D 配列をシミュレートする方法を示します。

以下は、移行した DPC++ コードです。

1
2
3
4
5
6
7
8
9
// migrated DPC++ code:

dpct::constant_memory<int, 4> array(dimX, dimY, dimZ, dimW);
void kernel(sycl::id<1> idx,
            dpct::accessor<int, dpct::constant, 4> const_array) {
  ...
      ... = const_array[x][y][z][w];
  ...
}

このコードを以下のように手動で調整します。

1
2
3
4
5
6
7
8
// manually adjusted code:

dpct::constant_memory<int, 3> array(dimX, dimY, dimZ * dimW);
void kernel(sycl::id<1> idx,
            dpct::accessor<int, dpct::constant, 3> const_array) {
  ... = const_array[x][y][w * dimZ + z];
  ...
}

修正方法の提案

このコードを書き換える必要があります。