一、环境配置与安装
- Linux下安装请参考Ubuntu12.04配置NVIDIA cuda5.5经验帖
- Windows下安装请参考CUDA在Windows的安装和使用
我是在Windows下安装的CUDA,使用Visual Studio 2013编程。安装过程是只用点确定的傻瓜式安装,并且会自动给你添加环境变量。安装完成后,Visual Studio在新建项目的时候会多出来一个CUDA的工程选型,如下图所示:
![VS2013新建CUDA工程](https://img-blog.csdn.net/20171203125103076?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcTU4Mzk1NjkzMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 建立工程的时候,编译器会自动生成一个模板供我们参考。
二、GPU的硬件结构
为了更好地编写CUDA程序,我们必须先了解我们的显卡硬件信息,不同的显卡(GPU)会有不同的硬件特性,如果编程不恰当,会直接导致CUDA程序无法在不同型号的显卡上通用!
先集中介绍下CUDA中的常用专业名词:
英 | 简写 | 中 |
---|---|---|
Stream Processor | SP | 流处理器 |
Stream MultiProcessor | SM | 流处理器组 |
Thread | 线程 | |
Block | 线程块 | |
Grid | 线程网格 | |
Warp | 线程束 | |
shared memory | 共享内存 | |
kernel function | 核函数 |
显卡结构方面推荐大家去看Rachel-Zhang的CUDA系列学习(一),里面做了非常详细的介绍,这里我借用CUDA_C_Programming_Guide中的两张图做简要说明。
首先简单说下显卡的硬件结构,一块显卡的PCB上主要有 核心芯片 和 核心外的显存,前者相当于计算机中的CPU,后者相当于内存,详细参数可以通过GPU-Z或者在techpowerup上查看,下图就是显卡的结构,决定显卡计算能力的就是红框中的GPU核心芯片。
可以看到上图中的GPU核心芯片的型号是GM107,其内部的架构如下图所示。它有3个 SM(Stream MultiProcessor)