深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题。这里主要记录自己的GPU自学历程。
目录
- 《GPU编程自学1 —— 引言》
- 《GPU编程自学2 —— CUDA环境配置》
- 《GPU编程自学3 —— CUDA程序初探》
- 《GPU编程自学4 —— CUDA核函数运行参数》
- 《GPU编程自学5 —— 线程协作》
- 《GPU编程自学6 —— 函数与变量类型限定符》
- 《GPU编程自学7 —— 常量内存与事件》
- 《GPU编程自学8 —— 纹理内存》
- 《GPU编程自学9 —— 原子操作》
- 《GPU编程自学10 —— 流并行》
三、 CUDA程序初探
3.1 主机与设备
通常将CPU及其内存称之为主机,GPU及其内存称之为设备。
如下图所示,新建一个NVIDIA CUDA工程,并命名为 “1-helloworld”
之后发现项目里多了一个 “kernel.cu”的文件,该文件内容是一个经典的 矢量相加 的GPU程序。
可以暂时全部注释该代码,并尝试编译运行下面的我们经常见到的编程入门示例:
#include <iostream>
int main()
{
std::cout<<"Hello, World!"<<std::endl;
system("pause");
return 0;
}
这看起来和普通的C++程序并没什么区别。 这个示例只是为了说明CUDA C编程和我们熟悉的标准C在很大程度上是没有区别的。 同时,这段程序直接运行在 主机上。
接下来,我们看看如何使用GPU来执行代码。如下: