У меня есть несколько .cpp
файлов, которые реализуют гидродинамику Smoothed Particle, которая является методом частиц для моделирования потока жидкости.
Одним из наиболее трудоемких компонентов в этих методах частиц является поиск ближайших соседей (K-ближайших соседей или поиск по дальности) для каждой частицы на каждом временном шаге моделирования.
Сейчас я просто хочу ускорить процедуру поиска соседей, используя графические процессоры и CUDA, заменив мою текущую процедуру поиска соседей на основе процессора.Только поиск соседей будет выполняться на графических процессорах, в то время как остальная часть симуляции продолжается на процессоре.
Мой вопрос: как мне скомпилировать весь код?Если быть более точным, предположим, что я записываю функцию ядра поиска соседей в файл nsearch.cu
.
Затем я должен переименовать все мои предыдущие файлы .cpp
в .cu
файлы и повторно-компилировать весь набор (вместе с nsearch.cu), используя nvcc
?Для простых примеров, по крайней мере, nvcc не может компилировать коды CUDA с расширением .cpp
, то есть nvcc foo.cu
компилируется, но nvcc hello.cpp
нет.
Короче говоря, какой должна быть структура этого плагина CUDA и как мне его собирать?
Я использую Ubuntu Linux 10.10, CUDA 4.0, NVIDIA GTX 570 (Computeability 2.0) и компилятор gcc для моей работы