Форумчане, немогли бы вы выложить (либо дать ссылку) пример использования библиотечных функций БПФ (FFT) в Visual Studio с подробными инструкциями.
Использование видеокарт для вычислений
Форумчане, немогли бы вы выложить (либо дать ссылку) пример использования библиотечных функций БПФ (FFT) в Visual Studio с подробными инструкциями.
Посмотрите пример в
Посмотрите пример в C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK\C\src\simpleCUFFT
там как раз проект готовый... у меня открывается, компилится и запускается сразу без проблем.... можно взять этот проект за основу.
Также полистайте небольшую документацию CUFFT... всего несколько функций + примеры
http://developer.download.nvidia.com/compute/cuda/1_1/CUFFT_Library_1.1.pdf
примеры очень простые в конце... вот исходничок из документации + настроенный проект simpleCUFFT и тупо затолкать один массив на видюшку и вернуть фурье обратно, думаю, Вы сможете без проблем.
Спасибо! Но вот проблема -
Спасибо! Но вот проблема - исправлял пример simpleCUFFT - все работает, а если создаешь новый проект, то существующий код уже не работает, пишет что нет доступа к функциям CUFFT.
Да, все правильно... там
Да, все правильно... там жестко все завязано на пути
мне пришлось самому допиливать)
Во первых файлик кастом билд рулез...
я его скопировал из папки с примерами нвидии в
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\VCProjectDefaults
а точнее сделал даже два Cuda32.rules и Cuda64.rules
в той папке лежат правила компилирования асма... поэтому туда скинул
c 64 разрядной версией я не возился, поэтому использую только 32...
в этом файле есть строка, содержащая относительные пути, которые ранее считались относительно файла проекта.... я их изменил
Простите за кашу... диплом перед носом, расписывать подробно некогда...
ищите то, что начинается с "CommandLine="echo [CompilerPath] [Keep] [CInterleavedPTX] "
в итоге строка получилась такая... просто заменил пути что-то вроде "./../../shared/inc" и "./../../common/inc" на полные
CommandLine="echo [CompilerPath] [Keep] [CInterleavedPTX] [ExtraNvccOptions] -ccbin "$(VCInstallDir)bin" [Emulation] [Debug] [FastMath] [Defines] -I"$(CUDA_INC_PATH)" -I"./" -I"C:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK/C/common/inc" -I"C:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK/shared/inc" [Include] -Xcompiler "/EHsc [Warning] /nologo [Optimization] /Zi [RuntimeChecks] [Runtime] [TypeInfo] [ExtraCppOptions]" [MaxRegCount] [PtxAsOptionV] [Arch1] [Arch2] [Arch3] [NvccCompilation] "$(InputPath)"
[CompilerPath] [Keep] [CInterleavedPTX] [ExtraNvccOptions] [Arch1] [Arch2] [Arch3] -ccbin "$(VCInstallDir)bin" [Emulation] [Debug] [FastMath] [Defines] -I"$(CUDA_INC_PATH)" -I"./" -I"C:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK/C/common/inc" -I"C:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK/shared/inc" [Include] -Xcompiler "/EHsc [Warning] /nologo [Optimization] /Zi [RuntimeChecks] [Runtime] [TypeInfo] [ExtraCppOptions]" [Include] [MaxRegCount] [ptxasoptionv] [Arch1] [Arch2] [Arch3] [NvccCompilation] "$(InputPath)""
Далее в новом проекте правой кнопкой по нему... добавляем этот Custom Build Rules... и либы прописываем в обычном проекте
$(CUDA_LIB_PATH)/../lib
и указываем юзать cudart.lib cufft.lib
после этого у меня вроде все компилится, запускается... правда dll'ки куда кинул в WOW32 т.к. винда у меня седьмая 64-битная
в проекте используется еще и Qt... это вообще изначально кутешный проект, ну и еще некоторые либы...
все отлично дружит и собирается независимо от места расположения проекта
В парке прогуливается мужик с
В парке прогуливается мужик с маленьким сыном. На одной полянке они видят художника с мольбертом и палитрой в руках. Творец в экстазе: то подходит к холсту поближе, то отходит на несколько шагов, меняет кисти, смешивает краски...
Папаша наклоняется к сыну и говорит назидательно:
- Вот, смотри, сынок, как мучается человек без Полароида!
см. CMake:
CUDA_ADD_CUFFT_TO_TARGET( cuda_target )
-- Adds the cufft library to the target (can be any target). Handles whether
you are in emulation mode or not.
также есть готовые модули для QT.
Спасибо, но я уж разобрался,
Спасибо, но я уж разобрался, просто вписал библиотеку cufft.lib в свойсвах проекта и все заработало.
cufft
Смотрю на cufft32_30_14.dll - 12,5 Мегабайт
Почему она такая толстая? Неужто столько полезного кода там?
Хотелось бы посмотреть на исходники. Может как-то в меньший размер можно уложится.