Ответ 1
В очень широких терминах:
-
cuda.h
определяет общедоступный хост функций и типов для CUDA API драйвера. -
cuda_runtime_api.h
определяет общественность хост-функции и типы для API времени выполнения CUDA -
cuda_runtime.h
определяет всеcuda_runtime_api.h
, а также встроенный тип определения и наложения функций для языковых расширений CUDA и встроенные функции устройства.
Если вы пишете код хоста для компиляции с компилятором хоста, который включает вызовы API, вы должны включить либо cuda.h
, либо cuda_runtime_api.h
. Если вам нужны другие встроенные модули языка CUDA, например типы, и использовали API-интерфейс для выполнения и компилировали с компилятором хоста, вы бы включили cuda_runtime.h
. Если вы пишете код, который будет скомпилирован с использованием nvcc, все это не имеет значения, потому что nvcc заботится о включении всех необходимых заголовков автоматически без вмешательства программиста.