Есть ли способ использовать как FFTW, так и cuFFTW в одной программе на C ++?

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

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

0

Решение

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

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

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

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]