DPCT1062
目次
DPCT1062#
メッセージ#
SYCL* のイメージは、正規化された読み取りモードをサポートしていません。
詳細な説明#
この警告は、元のコードで cudaReadModeNormalizedFloat
が、テクスチャーの 3 番目の引数として使用されると発行されます。SYCL* イメージは正規化読み取りモードをサポートしていないため、移行中に cudaReadModeNormalizedFloat
は無視されます。
オーバーロードされた関数が、元のコードのテクスチャー・タイプに基づいて区分されている場合、生成されたコードで再定義されるなどのエラーが発生する可能性があります。
例えば、以下のオリジナル CUDA* コードについて考えてみます。
1 __device__ void foo(const texture<char4, 2, cudaReadModeNormalizedFloat> tex) {
2 float4 f = tex2D(tex, 0.5f, 0.5f);
3 }
4 __device__ void foo (const texture<char4, 2, cudaReadModeElementType> tex) {
5 char4 c = tex2D(tex, 0.5f, 0.5f);
6 }
このコードは、以下の SYCL* コードに移行されます。
1 /*
2 DPCT1062:0: SYCL* のイメージは'正規化された読み取りモードをサポートしていません。3 */
4 void foo(dpct::image_accessor_ext<sycl::char4, 2> tex) {
5 sycl::float4 f = tex.read(0.5f, 0.5f);
6 }
7 void foo(dpct::image_accessor_ext<sycl::char4, 2> tex) {
8 sycl::char4 c = tex.read(0.5f, 0.5f);
9 }
このコードは次のように書き換えられます。
1 void foo1(dpct::image_accessor_ext<sycl::char4, 2> tex) {
2 sycl::char4 temp_c = tex.read(0.5f, 0.5f);
3 sycl::float4 f{temp_c.x(), temp_c.y(), temp_c.z(), temp_c.w()};
4 f = f / 255.f;
5 }
6 void foo2(dpct::image_accessor_ext<sycl::char4, 2> tex) {
7 sycl::char4 c = tex.read(0.5f, 0.5f);
8 }
修正方法の提案#
コードを確認し、必要に応じて更新してください。