私は画像とカーネルでfftconvolveを実行するために与えられた例(https://github.com/ContinuumIO/numbapro-examples/blob/master/convolution/fftconvolve.py)に従っており、どちらも2次元配列です。私の使用例では、2つの1D配列を使ってfftconvolveを実行して、一致と遅延の可能性を探します。私は例を1Dに変換しようとしましたが、いくつかのエラーを受けました。おそらく、numbaproを通してCUDAを使って1次元配列fftconvolveを実行すると良い例はありますか?ありがとうnumbapro cudaとdimftal fftconvolve
0
A
答えて
2
1つのドメインで畳み込みを行うことは、フーリエ領域でfftを実行することと同じです。これは信号処理の基本の1つです。
したがって、vector1とvector2の畳み込みを行うには、単純にfft(1D)をvector1とvector2に適用し、2つの複素数変換を掛け合わせて(フィルタリング)、元のドメインに戻します。 CUDAで
、このようなものでなければなりません:
cufftHandle _planKernel // you fft handle
cufftPlan1d(&_planKernel, _fftLen, CUFFT_C2C, 1); // create 1D fft handle
cufftComplex* VECTOR1, *VECTOR2, *PRODUCT;
MakeVector1Complex<<<blockSize, GridSize>>>() // simply set real part of the VECTOR1 = vector1, and set the imaginary part VECTOR to 0
MakeVector2Complex<<<blockSize, GridSize>>>() // simply set real part of the VECTOR2 = vector2, and set the imaginary part VECTOR to 0
cufftExecC2C(planKernel, VECTOR1, VECTOR1, CUFFT_FORWARD); // apply fft to VECTOR1
cufftExecC2C(planKernel, VECTOR2, VECTOR2, CUFFT_FORWARD); // apply fft to VECTOR2
ComplexMutiplication<<<blockSize, GridSize>>>(VECTOR1, VECTOR2) // complex multiplication of VECTOR1 and VECTOR2
cufftExecC2C(planKernel, PRODUCT, PRODUCT, CUFFT_INVERSE); // inverse fft on the product of VECTOR1 AND VECTOR2
MakeProductReal<<<blockSize, GridSize>>>(PRODUCT) // extract the real part of PRODUCT
今、あなたの仕事が行われています。また、simpleCUFFTと呼ばれる例があります。C:¥ProgramData¥NVIDIA Corporation¥CUDAサンプル
関連する問題
- 1. PyCUDAとNumbaPro CUDA Pythonの違いは何ですか?
- 2. fftconvolveで二次元相関をラップした計算
- 3. OpenMPI CUDAとCUDPP
- 4. Cuda gridDimとblockDim
- 5. MathematicaとCUDA
- 6. CUDAストリームとコンテキスト
- 7. CUDAサーフェスとテクスチャ
- 8. TensorflowとCUDAバージョン
- 9. QtとDlibとCUDA
- 10. Python NumbaProエラー:TypingErrorで失敗:nopython(nopythonフロントエンド)で失敗しました
- 11. Gtk +とcudaのメイクファイル
- 12. MatlabとGPU/CUDAプログラミング
- 13. Tensorflow 1.3とCUDA 8.1
- 14. DirectXとCudaのパフォーマンス
- 15. AWSの操作を中止する/ numbaproでAnacondaをインストールする
- 16. CUDAアクティブ経糸CUDAで
- 17. Cuda
- 18. cuda 8とubuntu 17.04をインストールするためにcuda 9コンパイラループ
- 19. CUDAランタイムバージョンとCUDAドライババージョンの違いは何ですか?
- 20. CUDA-Python:PythonでCUDAカーネルを起動するにはどうすればいいですか(Numba 0.25)?
- 21. rc4とcudaの最適化
- 22. スレッドごとのCudaレジスタ
- 23. CUDAの__syncthreads()と再帰
- 24. CUDAワープの分岐とクロックサイクル
- 25. cudaでタイミングをとる
- 26. CUDAとNVCC:floatまたはdouble
- 27. CUDAとcuBLASでの型キャスト
- 28. Cudaアトミックと条件分岐
- 29. XCodeとCUDAの統合
- 30. cuda統合メモリとポインタエイリアシング