我一直在关注一个例子(https://github.com/ContinuumIO/numbapro-examples/blob/master/convolution/fftconvolve.py)给与fftconvolve与图像和内核,都是二维数组。在我的用例中,我想用两个1D阵列来做fftconvolve来寻找可能的匹配和延迟。我试图将示例转换为1D,但收到了几个Invalid type combination
错误。是否有更好的例子可以通过numbapro使用CUDA进行一维数组fftconvolve?谢谢1维的fftconvolve与numbapro cuda
0
A
回答
2
在一个域中做卷积等同于在傅立叶域中做fft。这是信号处理的基础之一。因此,要进行vector1和vector2的卷积,可以简单地将fft(1D)应用于vector1和vector2,并将两个复变换相乘(滤波),然后将该产品反转回原始域。
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
现在你的工作就完成了。在cuda工具包中还有一个名为“simpleCUFFT”的例子,您可以在中找到C:\ ProgramData \ NVIDIA Corporation \ CUDA Samples
相关问题
- 1. 转换功能NumbaPro CUDA
- 2. PyCUDA和NumbaPro CUDA Python有什么区别?
- 3. Anaconda Acclerate/NumbaPro CUDA链接错误OSX
- 4. CUDA类与多维指针
- 5. NumbaPro(Python)装饰器的NotImplementedError
- 6. 用fftconvolve计算包裹的二维相关
- 7. 在Jetson上使用Numbapro TK1
- 8. 二维数组与CUDA和cudaMallocPitch
- 9. CUDA二维数组
- 10. NumbaPro - 排序二维数组,然后求和的相同的密钥
- 11. 二维数组CUDA 2D纹理CUDA
- 12. CUDA中的一维fftshift
- 13. CUDA中的二维数组
- 14. Numbapro快速入门指南错误
- 15. Python的SciPy的卷积VS fftconvolve
- 16. numbapro 3D环形表现不佳
- 17. CUDA常量内存2维
- 18. 与CUDA
- 19. 与CUDA
- 20. 与CUDA
- 21. CUDA 5与CUDA 4兼容
- 22. 与cuda-memcheck错误的cuda-gdb
- 23. Java的1维图
- 24. 1索引与二维数组错误
- 25. Python NumbaPro GPU向量化与错误:TypingError:在nopython(nopython前端)失败
- 26. surf3Dwrite与CUDA 5
- 27. numba-pro无法加载CUDA设备
- 28. 第三维CUDA阵列求和
- 29. CUDA联合访问二维块
- 30. PAPI与CUDA功耗