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   }

修正方法の提案#

コードを確認し、必要に応じて更新してください。