DPCT1064

メッセージ

移行した <function name> の呼び出しは、マクロ定義で使用されていますが、すべてのマクロの使用に対して有効ではありません。コードを調整します。

説明

この警告は、関数呼び出しがマクロ定義で使用され、マクロ呼び出しの方法に応じて異なる方法で移行する必要がある場合に生成されます。インテル® DPC++ 互換性ツールは、マクロ呼び出しの 1 つに対して有効なコードを生成できますが、コード内でそのマクロのすべての呼び出しでは有効でない可能性があります。

以下に例を示します。pow 関数は、マクロ引数で渡されるパラメーターのタイプに応じて、sycl::pow<double> または sycl::pown に移行できます。

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


1#define POW(B, E) pow(B, E) 
2__device__ void foo() { 
3 double a = POW(2.5, 3.1); 
4 double b = POW(2.5, 2); 
5}

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


1 /* 
2 DPCT1064:0: 移行した pow の呼び出しは、マクロ/テンプレートで使用されていますが、すべてのマクロ/テンプレートの使用に対して有効ではありません。
3コードを調整します。
4*/ 
5#define POW(B, E) dpct::pow(B, E) 
6void foo() { 
7 double a = POW(2.5, 3.1); 
8 double b = POW(2.5, 2); 
9}

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


1void foo() { 
2 double a = POW(2.5, 3.1); 
3 double b = 2.5 * 2.5; 
4}

修正方法の提案

移行されたコード内のマクロ呼び出しの使用例に対応する新しいマクロを宣言します。