cuda api cu和cuda有什么区别......?

时间:2014-03-25 15:27:24

标签: api cuda

例如cudaMemcpycuMemcpy?我可以看到函数定义不同,但我的意思是API。为什么api从cu...开始,一个以cuda...开头?应该何时使用每个API?

1 个答案:

答案 0 :(得分:10)

方法名称以cu...开头的API就是所谓的驱动程序API 。方法名称以cuda...开头的API是运行时API

最初(直到CUDA 3.0)API已完全分离。粗略的分类是:Runtime API更简单,更经济。 Driver API适用于更复杂的“低级”编程(可能还有库开发)。

从CUDA 3.0开始,两个API都可以互操作。这意味着,例如,当您使用cuMemAlloc为驱动程序API分配内存时,您也可以在运行时API调用中使用相同的内存,例如cudaMemcpy

主要的实际区别在于,在Runtime API中,您可以使用特殊的kernel<<<...>>>启动语法,而在Driver API中,您可以将CUDA程序加载为“模块”(使用{{1}等方法以CUBIN文件或PTX文件的形式给出,并使用cuModuleLoad以编程方式启动这些内核。

事实上,我认为对于CUDA程序的最大部分,差异可以忽略不计:几乎所有其他功能(内核/模块处理除外)都可以在两个 API中使用,并且差不多两者都相等。这指的是方法(cuLaunchKernelcuMemcpy等,以及结构cudaMemcpyCU_event等。)

可以在涉及关键字“CUDA Runtime Driver API”的网络搜索中找到更多信息,例如https://devtalk.nvidia.com/default/topic/522598/what-is-the-difference-between-runtime-and-driver-api-/