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];
...
}
|
修正方法の提案¶
このコードを書き換える必要があります。