1. 编程接口
CUDA C++为熟悉C++编程语言的用户提供了一条便捷路径由一组极简的C++语言扩展和一个运行时库构成。
核心语言扩展已在"编程模型"章节中介绍。这些扩展允许程序员将内核定义为C++函数,并通过新增语法指定每次调用函数时的网格(grid)和线程块(block)维度。任何包含这些扩展的源文件必须按照使用NVCC编译中所述方式用nvcc
编译。
运行时库在CUDA运行时章节引入。它提供了在主机上执行的C和C++函数,用于分配/释放设备内存、在主机内存与设备内存间传输数据、管理多设备系统等。
该运行时库构建在更低层级的C API(即CUDA驱动API)之上,应用程序也可直接调用驱动API。驱动API通过暴露更底层的概念(如设备端的宿主进程模拟——CUDA上下文,以及动态加载库模拟——CUDA模块)提供了额外的控制层级。由于大多数应用无需这种精细控制,且使用运行时库时上下文和模块管理是隐式进行的(代码更简洁),因此多数应用不直接使用驱动API。由于运行时库与驱动API可互操作,需要部分驱动API功能的应用通常默认使用运行时API,仅在必要时调用驱动API。驱动API在驱动API章节引入,其完整描述见参考手册。