Есть ли способ использовать FFTW и cuFFTW в одной программе C ++? - PullRequest
0 голосов
/ 26 сентября 2018

Я пишу кусок кода, который использует библиотеку FFTW3 и хочу перенести его на GPU с помощью CUDA.Самый простой способ сделать это - использовать библиотеку совместимости cuFFTW, но, как говорится в документации, предполагается полностью заменить версию FFTW для ЦП на эквивалентную для GPU.После добавления заголовка cufftw.h он заменяет все функции процессора, и код запускается на графическом процессоре.

Но есть ли способ иметь в моем коде и версии CPU и GPU FFTW, поэтому яМожно ли переключаться между ними во время выполнения, например, с помощью флажка в пользовательском интерфейсе?Или единственный способ добиться этого - использовать нативный cuFFT API?

1 Ответ

0 голосов
/ 26 сентября 2018

Даже не смотря на заголовки библиотек: Да.

Упрощенным решением было бы использование разных модулей компиляции, каждая из которых включает только одну из библиотек, и предоставляет только свои собственные пользовательские функции / классы / и т. Д.в остальной части приложения.Таким образом, заголовки двух библиотек не будут мешать друг другу.

Однако вполне возможно, что есть лучшее решение.Я бы посмотрел на cufftw.h, чтобы увидеть, что именно там делает nVIDIA и как именно он «заменяет» функции процессора.

...