一、什么是CUDA?
CUDA是建立在NVIDIA的CPUs上的一个通用并行计算平台和编程模型,基于CUDA编程可以利用GPUs的并行计算引擎来更加高效地解决比较复杂地计算难题。
二、什么是GPU计算
GPU并不是一个独立运行的计算平台,而需要与CPU协同工作,可以看成是CPU的协处理器,因此当我们在说GPU并行计算时,其实是指的基于CPU+GPU的异构计算架构。在异构计算架构中,CPU和GPU通过PCle总线连接在一起。
CPU所在位置称为主机端(host),而GPU所在位置称为设备端(device)。
三、CPU与GPU协同工作
GPU包括更多的运算核心,其特别适合数据并行的计算密集型任务,如大型矩阵计算;CPU的运算核心较少,但是其可以实现复杂的逻辑运算,因此适合控制密集型任务。基于CPU+GPU的异构计算平台可以优势互补,CPU负责处理逻辑复杂的串行程序,而GPU重点处理数据密集型的并行计算程序。
四、CUDA程序执行流程
- 分配host内存,进行数据初始化;
- 分配device内存,从host将数据拷贝到device上;
- 调用CUDA的核函数在device上完成指定的运算;
- 将device上的运算结果拷贝到host上;
- 释放device和host上分配的内存。