教你一步步写一个cuda path tracer:cuda简介和安装

cuda定义

cuda是nvidia推出的一种通用并行计算架构,该架构能够充分利用gpu强大的并行计算能力,解决一些具有内在并行性的计算密集型问题。

gpu vs cpu

通过上面的定义,我们可以知道cuda是和gpu紧密相关的。那么gpu相比于cpu到底有什么区别呢?优势又在什么地方?


教你一步步写一个cuda path tracer:cuda简介和安装_第1张图片

从上面的结构图中我们可以很直观的看出,cpu的核心(core)数要远远小于gpu。其中,每一个core就是一个独立运行的运算单元。简单来说,GPU可以把一个程序分成数以万计的线程一起运行,而CPU支持的线程数量数量是非常有限的,而且往往是通过时间片轮转等算法实现的伪线程。这是两者的最大区别。

另外还有以下几个不同点:

1.cache数量和层级数:cpu > gpu;

2.寄存器数量:gpu > cpu;

3.延时(latency):gpu > cpu(和cache有关)

4.时钟周期:gpu > cpu

5.吞吐量:gpu > cpu

总而言之,cpu适合运行具有复杂逻辑跳转分支和中断的程序,gpu适合运行具有高并行性的计算密集型程序。cpu更通用,gpu更专用。

cuda计算模型

我们有时候会听到Core、SP(Streaming Processor)、SM(Streaming Multiprocessors)、Device这些名词,有时候也会听到Thread、Block、Grid这些貌似和前面有对应关系的术语,那么这些名词到底有什么关系呢?其实两者是可以一一对应的,只不过前者是硬件的说法,后者是软件的说法。具体见下图:


教你一步步写一个cuda path tracer:cuda简介和安装_第2张图片

cuda的基本计算模型就是Thread——Block——Grid。

Thread:最基本的并行计算单元

Block:包含若干Thread

Grid:包含若干Block

可以把Grid想象成一个三维网格,Block就是三维网格的一个平面,Thread就是平面上的一根线条。

以上只是对cuda的简单介绍。后面遇到具体问题再具体讲解(例如cuda的内存模型,还有优化问题)。

cuda安装

目前cuda已经更新到了8.0版本,大家可以从官网上下载。注意操作系统、运行架构(x86/x64)和系统版本要选对。

建议在安装cuda之前,先安装好一个vs,推荐vs2015。据说cuda现在已经可以直接支持vs2017了,大家想尝鲜的话可以试试。我的搭配是vs2015+cuda。以后我都以vs2015为例进行说明。

安装过程其实很简单,一路下一步即可。cuda的默认安装目录位于C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0。

注:cuda安装之前会先检测显卡的兼容性。如果提示不兼容,请到官网上查询自己显卡所能支持的cuda版本,下载尽可能新的版本。我的显卡是GeForce GT 650M,可以支持cuda 8.0的基本要求,但这不代表可以完全直接所有cuda 8.0的新特性(cuda 8.0的Unified Memory特性我的显卡就不支持T_T)。

安装完毕,打开vs,点击文件-新建-项目,可以看到Nvidia的Cuda 8.0项目模板已经添加进去了。


教你一步步写一个cuda path tracer:cuda简介和安装_第3张图片

输入项目名称,选择“CUDA 8.0 Runtime”项目模型,点击确定。vs会自动创建一个cuda项目。

查看项目属性,可以看到cuda的头文件、库文件以及nvcc编译器都已经自动设置好了。老版的cuda,这些东西都得自己设置的,现在的确方便了很多。


教你一步步写一个cuda path tracer:cuda简介和安装_第4张图片

项目默认添加了一个kernel.cu文件,这段代码要做的就是把两个向量加起来。直接运行程序,如果不出意外,会看到如下结果:


教你一步步写一个cuda path tracer:cuda简介和安装_第5张图片

ok,到这一步,cuda安装完毕。下面我们要开始正式的cuda学习了!

你可能感兴趣的:(教你一步步写一个cuda path tracer:cuda简介和安装)