Hacemos una verificación profunda cada secciones de nuestra página web con el objetivo de mostrarte en todo momento información con la mayor veracidad y actual.
Solución:
En términos muy amplios:
cuda.h
define las funciones y los tipos de host público para CUDA
conductor API.cuda_runtime_api.h
define las funciones y los tipos de host público para CUDA tiempo de ejecución APIcuda_runtime.h
define todocuda_runtime_api.h
hace, así como definiciones de tipo incorporadas y superposiciones de funciones para las extensiones de lenguaje CUDA y funciones intrínsecas del dispositivo.
Si estuviera escribiendo código de host para compilarlo con el compilador de host que incluye llamadas API, incluiría cuda.h
o cuda_runtime_api.h
. Si necesitara otras funciones integradas del lenguaje CUDA, como tipos, y estuviera usando la API de tiempo de ejecución y compilando con el compilador host, incluiría cuda_runtime.h
. Si está escribiendo código que se compilará usando nvcc, todo es irrelevante, porque nvcc se encarga de incluir automáticamente todos los encabezados requeridos sin la intervención del programador.
Algunas observaciones además de la respuesta de @talonmies:
cuda_runtime.h
incluyecuda_runtime_api.h
internamente, pero no al revés. Entonces: “el tiempo de ejecución incluye todo runtime_api” es un mnemotécnico para recordar.cuda_runtime_api.h
no tiene todas las funciones API de tiempo de ejecución que encontrará en la documentación oficial, mientras quecuda_runtime.h
voluntad tenerlo todo (ejemplo:cudaEventCreate()
). Sin embargo, todas las llamadas API definidascuda_runtime.h
en realidad se implementan, en el propio archivo de encabezado, utilizando llamadas a funciones encuda_runtime_api.h
. Estas son las “superposiciones de funciones” que mencionó @talonmies.cuda_runtime_api.h
es un encabezado en lenguaje C (IIANM) con solo declaraciones de funciones en lenguaje C;cuda_runtime.h
es un archivo de encabezado de C++, con algunas funciones de plantilla implementadas.