我正在开发一个需要在Nvidia和AMD显卡上使用FFT的项目.我最初寻找一个可以同时工作的库(认为这将是OpenCL方式),但我没有运气.
有人向我建议我必须使用每个供应商的FFT实现并编写一个包装器,根据平台选择做什么.我很容易发现AMD的实现,但实际上我正在使用Nvidia卡(这对我的特定应用来说更重要).
我能找到的唯一Nvidia实现是CUFFT实现.有谁知道我如何实际使用OpenCL的CUFFT库?我能想到的唯一方法就是在我的OpenCL代码旁边加上一些CUDA代码.我已经读过,我不能只使用OpenCL缓冲区作为CUDA指针(试图将OpenCL与NVIDIA SDK模板中的CUDA混合使用).相反,我是否必须在运行OpenCL内核后将缓冲区复制回主机,然后使用CUDA内存传输例程将它们复制回GPU?我真的不喜欢这种方法,因为它似乎涉及无意义的内存传输,如果我可以使用OpenCL的CUFFT,我会更喜欢它.