一、前言
- 在计算密集型应用中,往往有很多并行数据的程序段,我们期望使用特殊架构的硬件加速器提升这部分程序段的执行速度,GPU可以说是最为常见的硬件加速器。今天介绍我们学习新的编程语言时都会写的一个程序
Hello world!——CUDA版
。
二、CUDA背景知识
-
CUDA是一种通用的并行计算平台和编程模型,它利用NVIDIA GPU中的并行计算引擎能更有效地解决复杂的计算问题。CUDA C是标准ANSI C的一个扩展,它带有的少数语言扩展功能使异构编程成为可能,同时也能用过API来管理设备、内存和其他任务。
-
一个CUDA程序包含了以下两部分的混合。
- 在CPU上运行的主机代码
- 在GPU上运行的设备代码
-
NVIDIA 的CUDA nvcc编译器在编译过程中将设备代码从主机代码中分离出来。主机代码是标准的C代码,使用C编译器进行编译。设备代码,也就是核函数,是用扩展的带有标记数据并行函数关键字的CUDA C语言编写的。设备代码通过nvcc进行编译。在链接阶段,在内核程序调用和显示GPU设备操作中添加CUDA运行时库。
-
nvcc编译器以LLVM开源编译系统为基础的。
本文在Linux上进行演示。
三、用GPU输出Hello World
-
检查环境和硬件是否正确安装。
首先检查是否安装了NVIDIA加速卡。ls -l /dev/nv*
代表存在加速卡。或者使用
nvidia-smi
指令查看是否有NVIDIA加速卡,可以看到当前使用的机器上装有一个Tesla V100加速卡。
接下来检查nvcc编译器是否正确安装。
nvcc -V
不出意外应该会输出类似的提示👇