OpenCL FFT на оборудовании Nvidia и AMD?

Я работаю над проектом, в котором необходимо использовать БПФ на видеокартах Nvidia и AMD. Сначала я искал библиотеку, которая работала бы на обоих (, думая, что это будет способ OpenCL ), но мне не повезло.

Кто-то предложил мне использовать реализацию БПФ каждого поставщика и написать оболочку, которая выбирала, что делать, в зависимости от платформы. Я нашел реализацию AMD довольно легко, но пока я работаю с картой Nvidia (, и это более важно для моего конкретного приложения ).

Единственная реализация Nvidia, которую я могу найти, — это CUFFT. Кто-нибудь знает, как я могу использовать библиотеку CUFFT из OpenCL? Единственный способ, который я могу придумать, - это иметь некоторый код CUDA вместе с моим кодом OpenCL. Я читал, что не могу просто использовать буферы OpenCL в качестве указателей CUDA (. Попытка смешать OpenCL с CUDA в шаблоне NVIDIA SDK). Вместо этого мне придется копировать буферы обратно на хост после запуска ядер OpenCL, а затем копировать их обратно в графический процессор с помощью процедур передачи памяти CUDA? Мне не очень нравится этот подход, так как он, кажется, связан с бессмысленной передачей памяти, я бы предпочел, чтобы я мог просто использовать CUFFT из OpenCL.

9
задан Community 23 May 2017 в 11:53
поделиться