Вопрос по organization, c++, cuda, header, project – эффективный способ организации файлов cuda: .cpp .h .cu .cuh .curnel файлы

8

Что является наиболее простым для понимания / эффективной и т. Д. Организацией кода для cuda. После некоторого исследования я обнаружил, что объявления функций cuda должны быть в файле .cuh, а реализации находятся в файле .cu, а реализации функций ядра - в файлах .curnel. Другие c ++ вещи в файлах .cpp и .h обычно. Недавно я отправил вопросФайл Visual Studio .cu показывает синтаксическую ошибку, но успешно компилируется , Правильна ли эта организация? где .cpp вызывает .cu и вызывает функцию ядра, которая в .curnel.

Это зависит от вас, вы можете группировать файлы по функциональности, по типу (.cu, .h, .cpp) или другим или объединять их (в функциональных группах вы можете хранить файл .cu вместе) .h, Tomasz Dzięcielewski
curnel файлы? Я считаю себя достаточно опытным с CUDA и смотрел на множество проектов других людей, и я не могуКогда-либо не забудьте увидеть одинcurnel расширение файла. Это конечно неВсе, что NVCC понимает или имеет предопределенную траекторию для .... talonmies

Ваш Ответ

2   ответа
6
CPP, C,HPP,вкл - файлы, которые нене содержит код CUDA C (например, __устройство___ и другие ключевые слова, вызовы ядра и т. д.) и не выполняют никаких вызовов времени выполнения cuda (функции cuda ...). Из этих файлов прекрасно вызывать функции API (cu ...) драйвера CUDA. Обратите внимание, что эти файлы можно компилировать с помощью компиляторов, отличных от NVCC.у.е. - Исходные файлы CUDA C. Эти файлы передаются компилятору NVCC для компиляции в связываемые объекты (хост / устройство).CuH,cuinc - файлы, которые включены в .cu файлы. Эти файлы могут иметь ключевые слова CUDA C и / или вызывать функции времени выполнения CUDA.
1

что имеется код FDTD на основе графического процессора. Я обычно делаю следующее (Visual Studio 2010).

файл main.cpp, включая передачу памяти CPU-GPU;FDTD.cu, включаяextern "C" void E_update(...) функция, которая содержит ядро<<< >>> вызов;файл main.h, включаяextern "C" void E_update(...) прототип;FDTD.cuh, включая__global__ void E_update_kernel(...) функция.
Не могли бы вы предоставить тела для файлов с пустыми реализациями функций? Спасибо! Yola

Похожие вопросы