Включение заголовочных файлов в NVRTC - PullRequest
0 голосов
/ 10 октября 2019

Я просматриваю пример кода CUDA, пытаясь лучше понять, как работает NVRTC. В заголовочном файле nvrtc_helper.h есть функция с именем compileFileToPTX. В нем они используют NVRTC, чтобы JIT компилировать функцию (указанную через путь к файлу) в PTX. Конвейер для использования nvrtc выглядит следующим образом:

nvrtcCreateProgram -> nvrtcCompileProgram -> nvrtcGetPTX -> nvrtcDestroyProgram

В документации для nvrtcCreateProgram указано, что если ваш кодсодержит файлы заголовков, чтобы включить их в скомпилированную программу, вы должны извлечь исходный код каждого файла заголовков и передать исходный код в nvrtcCreateProgram вместе с именами заголовков. В nvrtc_helper.h они жестко кодируют в 0, NULL, NULL для аргументов заголовка в nvrtcCreateProgram. Однако один из примеров, похоже, содержит заголовочный файл, который необходимо включить. Насколько я могу судить, они используют nvrtcCompileProgram и передают аргумент компилятора --include-path= в файл заголовка вместо передачи источника файла заголовка в nvrtcCreateProgram.

Мое пониманиеневерно и есть ли разница между любым из двух подходов к включению заголовочных файлов?

...