DPCT1112

メッセージ

フィルターモードが linear に設定されていると、イメージの「リード」動作は、元のコードの tex1Dfetch とは異なる可能性があります。コードを調整する必要があります。

詳細な説明

CUDA* tex1Dfetch 関数は、最も近いフィルターモードを適用します。移行後のコードでは、イメージの読み取り関数はテクスチャー・オブジェクトに設定されるフィルターモードを適用します。読み取り後のイメージは異なる結果になる可能性があるため、イメージの読み取りでフィルターモードを調整することが必要な場合があります。

修正方法の提案

例えば、以下のオリジナル CUDA* コードについて考えてみます。


1 cudaTextureDesc desc; 
2 desc.filterMode = cudaFilterModeLinear; 
3   ...
4 cudaTextureObject_t obj; 
5 cudaCreateTextureObject(&obj, ..., &desc, ...); 
6    ... 
7 tex1Dfetch(..., obj, ...);

このコードは、以下の SYCL* コードに移行されます。


1 dpct::sampling_info desc; 
2 desc.set(sycl::filtering_mode::linear); 
3    ... 
4 dpct::image_wrapper_base_p obj; 
5 obj = dpct::create_image_wrapper(..., desc); 
6    ... 
7 obj.read(...);

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


1 dpct::sampling_info desc; 
2 desc.set(sycl::filtering_mode::nearest); // Update the filtering mode from linear to nearest 
3    ... 
4 dpct::image_wrapper_base_p obj; 
5 obj = dpct::create_image_wrapper(..., desc); 
6    ...