小城二虎深入理解 GPU 计算: CUDA 编程指南
编写GPU函数以执行计算
为了说明GPU编程,这个应用程序将两个数组的相应元素添加到一起,将结果写入第三个数组。清单1显示了一个在CPU上执行此计算的函数,用C语言编写。它循环遍历索引,计算循环的每次迭代一个值。
清单1数组添加,用C编写
const ****float *** p是指p是常量指针,指向float常量或者变量,但是可以改变指向;float *** **const **p 代表p可以指向变量,但是声明指定后就不能再改变
每个值都是独立计算的,因此可以同时安全地计算这些值。要在GPU上执行计算,需要在金属着色语言(MSL)中重写此功能。MSL是为GPU编程而设计的C ++的变体。在Metal中,在GPU上运行的代码称为着色器,因为历史上它们首先用于计算3D图形中的颜色。清单2显示了MSL中的着色器,它执行与清单1相同的计算。项目在文件中定义了此函数。Xcode构建应用程序目标中的所有文件,并创建一个默认的Metal库,它嵌入到您的应用程序中。将在本示例的后面看到如何加载默认库。