DPCT1075

メッセージ

cuFFT 呼び出しの移行は正しくない可能性があります。確認が必要です。

説明

この警告は、以下のような場合に生成されます。

  1. オリジナルコードで 1 つの cuFFT ハンドルが複数のストリームに関連付けられていますが、インテル® DPC++ 互換性ツールは、cuFFT 呼び出しで使用されているストリームを検出できませんでした。

  2. 移行したコードで 1 つ以上のコミット呼び出しを使用する必要がありますが、インテル® DPC++ 互換性ツールは正しいコミット呼び出しのセットを生成する方法を推測できませんでした。

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

1
2
3
4
5
6
// original code:

cufftPlan1d(plan, ...);
cufftExecR2C(plan, ...); // this call is using default stream
cufftSetStream(plan, s2);
cufftExecR2C(plan, ...); // this call is using s2 stream

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// migrated DPC++ code:

/*
DPCT1075: Migration of cuFFT calls may be incorrect and requires review.
*/
plan->commit(*s2); // wrong queue is used
...
dft::compute_forward (...);
...                                  // missing commit call
dft::compute_forward(...);

このコードを以下のように手動で調整します。

1
2
3
4
5
6
7
8
// adjusted DPC++ code:

plan->commit(dpct::get_default_queue()); // using default queue
...
dft::compute_forward (...);
...
plan->commit(*s2); // added new commit call with *s2 queue
dft::compute_forward(...);

修正方法の提案

oneapi::mkl::dft::descriptor::commit() 呼び出しが正しく生成され、正しいキュー・パラメーターを使用していることを確認します。必要に応じて、不足しているコミット呼び出しを追加したり、キュー・パラメーターを調整するなどして、コードを修正します。

詳細は、「descriptor<precision, domain>::commit function」 (英語) を参照してください。