thrust
ライブラリとcufft
を私のプロジェクトに結合したいと思います。 thrust::sequence
だけthrust::complex<double>
-vectorsで正常に動作している間にこのように、私は残念ながら推力ライブラリで操作するときにカフを使用する
int length = 5;
thrust::device_vector<thrust::complex<double> > V1(length);
thrust::device_vector<cuDoubleComplex> V2(length);
thrust::device_vector<thrust::complex<double> > V3(length);
thrust::sequence(V1.begin(), V1.end(), 1);
thrust::sequence(V2.begin(), V2.end(), 2);
thrust::transform(V1.begin(), V1.end(), V2.begin(), V3.begin(), thrust::multiplies<thrust::complex<double> >());
cufftHandle plan;
cufftPlan1d(&plan, length, thrust::complex<double>, 1);
cufftExecZ2Z(plan, &V1, &V2, CUFFT_FORWARD);
for (int i = 0; i < length; i++)
std::cout << V1[i] << ' ' << V2[i] << ' ' << V3[i] << '\n';
std::cout << '\n';
return EXIT_SUCCESS;
を書いたテストのために、cufft
は、そのようcuDoubleComplex *a
として配列を受け入れます。上記のコードをコンパイルするときに、私は2つのエラーを取得:第二つstd::cout << V1[i] << ' ' << V2[i] << ' ' << V3[i] << '\n';
を指す
error : no operator "=" matches these operands
error : no operator "<<" matches these operands
を最初のものは、thrust::sequence(V2.begin(), V2.end(), 2);
を指します。私がV2
とコメントすると、すべて正常に動作します。
thrust::device_vector<thrust::complex<double>>
とcuDoubleComplex *
の間に変換がありますか?そうでない場合は、どのように組み合わせることができますか?
方法の代わりに、 '推力:: sequence'のカスタム' UnaryOperation'で '推力:: tabulate'を使用してはどうですか? –