DPCT1017#

メッセージ#

<CUDA API name> 呼び出しの代わりに <SYCL API name> 呼び出しが使用されます。この 2 つの呼び出しは同じ機能を提供するものではありません。生成されたコードの潜在的な精度やパフォーマンスの問題を確認してください。

詳細な説明#

インテル® DPC++ 互換性ツールは、同機能の SYCL* 関数が見つからなかったため、最も近いものを使用しました。これは、コードの精度やパフォーマンスに影響する可能性があります。コードの正当性とパフォーマンスを検証してください。

修正方法の提案#

コードの正当性とパフォーマンスを検証してください。

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

1  __global__ void k(float *out, float *in) {
2   *out = normf(3, in);
3  }

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

1  void k(float *out, float *in) {
2   /* 
3   DPCT1017:0: The dpct::length call is used instead of the normf call.These two 
4   calls do not provide exactly the same functionality.Check the potential 
5   precision and/or performance issues for the generated code.
6  */
7   *out = dpct::length(in, 3);
8  }

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

1  #include <sycl/ext/intel/math.hpp>
2  void k(float *out, float *in) {
3   /*
4   If the extension API sycl::ext::intel::math::norm is available, the following
5   line can alternately be migrated to *out = sycl::ext::intel::math::norm(3, in);
6   */
7   *out = dpct::length(in, 3);
8  }