我正在開發一個需要在Nvidia和AMD圖形卡上使用FFT的項目。我最初尋找一個可以在兩者上工作的庫(認爲這將是OpenCL的方式),但我沒有任何運氣。Nvidia和AMD硬件上的OpenCL FFT?
有人向我建議,我將不得不使用每個供應商的FFT實現並編寫一個選擇基於該平臺做什麼的包裝。我發現AMD的實現非常容易,但實際上我正在使用Nvidia卡(這對於我的特定應用來說是更重要的)。
我能找到的唯一的Nvidia實現是CUFFT。有誰知道我如何實際使用OpenCL的CUFFT庫?我能想到的唯一方法是在OpenCL代碼旁邊添加一些CUDA代碼。我讀過我不能將OpenCL緩衝區用作CUDA指針(Trying to mix in OpenCL with CUDA in NVIDIA's SDK template)。相反,在運行OpenCL內核之後,我是否必須將緩衝區複製回主機,然後使用CUDA內存傳輸例程將它們複製回GPU?我不太喜歡這種方法,因爲它似乎涉及毫無意義的內存傳輸,如果我只能使用OpenCL的CUFFT,我會更喜歡它。
ViennaCL現在包含一個「實驗性」FFT實現。至少對於電力2轉換它應該合理地執行。 – talonmies