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*/ 
4void foo(dpct::image_accessor_ext<sycl::char4, 2> tex) { 
5 sycl::float4 f = tex.read(0.5f, 0.5f); 
6} 
7void foo(dpct::image_accessor_ext<sycl::char4, 2> tex) { 
8 sycl::char4 c = tex.read(0.5f, 0.5f); 
9}

このコードは次のように書き換えられます。


1void 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} 
6void foo2(dpct::image_accessor_ext<sycl::char4, 2> tex) { 
7 sycl::char4 c = tex.read(0.5f, 0.5f); 
8}

修正方法の提案

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