我开始使用CUDA编程,在一些示例中,我发现代码中包含了包含文件cuda.h
、cuda_runtime.h
和cuda_runtime_api.h
。有人能给我解释一下这些文件之间的区别吗?
发布于 2011-06-10 15:04:07
用非常宽泛的术语:
cuda.h
定义了CUDA 驱动程序的公共主机函数和类型,API.cuda_runtime_api.h
定义了CUDA 运行时的公共主机函数和类型,APIcuda_runtime.h
定义了cuda_runtime_api.h
执行的所有操作,以及CUDA语言扩展和设备内部函数的内置类型定义和函数覆盖。如果您正在编写要使用包含API调用的主机编译器进行编译的主机代码,则需要包含cuda.h
或cuda_runtime_api.h
。如果您需要其他CUDA语言内置组件,如类型,并且使用运行时应用编程接口并使用主机编译器进行编译,则可以包含cuda_runtime.h
。如果您正在编写将使用nvcc编译的代码,那么这一切都是无关紧要的,因为nvcc会自动包含所有必需的头文件,而无需程序员干预。
发布于 2020-01-23 00:48:51
除了@talonmies之外,还有一些观察结果:
cuda_runtime.h
在内部包含cuda_runtime_api.h
,但不包含相反的内容。所以:"runtime includes all of API“是remember.cuda_runtime_api.h
的助记符,它没有你可以在官方文档中找到的完整的runtime runtime_api函数,而cuda_runtime.h
将拥有所有的函数(例如:cudaEventCreate()
)。但是,所有定义为cuda_runtime.h
的API调用实际上都是在头文件中使用对cuda_runtime_api.h
中的函数的调用来实现的。这些是“函数覆盖”,即@talonmies mentioned.cuda_runtime_api.h
是一个只有C语言函数声明的C语言头文件;cuda_runtime.h
是一个带有一些模板化函数implemented.的C++头文件
https://stackoverflow.com/questions/6302695
复制相似问题