Cuda基本介绍
- 2. GPU 介绍
GPU 英文全称 Graphic Processing Unit ,中
文
译为“图形处理器”。 GPU 是相
对于 CPU 的一个概念, GPU 是
显示卡的“心脏”,也就相当于
CPU 在电脑中的作用,它决定
了该显卡的档次和大部分性能。
- 3. GPU 的优势
强大的处理能力 GPU 接近 1Tflops/s
高带宽 140GB/s
低成本 Gflop/$ 和 Gflops/w 高于
CPU
当前世界超级计算机五百强的入门门槛为
12Tflops/s
一个三节点,每节点 4GPU 的集群,总处理能
力就超过 12Tflops/s ,如果使用 GTX280 只需
10 万元左右,使用专用的 Tesla 也只需 20 万左
右
- 7. GPU 发展
1993 年,黄仁勋与 C.P 和 C.M 共同成立
NVIDIA 公司。
2007 年, CUDA 正式发布,引发 GPU 通用计
算的革命。
2009 年, GeForce GTS 250 发布。
2011 年 3 月 24 日, GeForce GTX 590 发布,
这是 Nvidia 公司最新的显卡。
- 8. CUDA
CUDA(Compute Unified Device Architecture ,
计算统一设备架构 ) ,由显卡厂商 Nvidia 推出
的运算平台。
CUDA 是一种通用并行计算架构,该架构使
GPU 能够解决复杂的计算问题。开发人员可以
使用 C 语言来为 CUDA 架构编写程序。
CUDA的硬件架构
CUDA的软件架构
- 9. 体系架构
体系架构由两部分组成,分别是流处理器阵列
( SPA )和存储器系统。 (GT200)
GPU 的巨大计算能力来自 SPA 中的大量计算单
元, SPA 的结构又分为两层: TPC(线程处理
器群)和 SM(流多处理器);
存储器系统由几个部分组成:存储器控制器
( MMC ),固定功能的光栅操作单元( ROP
),以及二级纹理缓存。
- 14. CUDA 执行模型
将 CPU 作为主机 (Host) ,而 GPU 作为协处理
器 (Coprocessor) 或者设备( Device ),从而
让 GPU 来运行一些能够被高度线程化的程序。
在这个模型中, CPU 与 GPU 协同工作, CPU
负责进行逻辑性强的事务处理和串行计
算, GPU 则专注于执行高度线程化的并行处理
任务。
一个完整的 CUDA 程序是由一系列的设备端
kernel 函数并行步骤和主机端的串行处理步骤
共同组成的。
- 15. CUDA 执行模型
grid 运行在 SPA 上
block 运行在 SM 上
thread 运行在 SP 上
- 16. grid block thread
Kernel 不是一个完整的程序,而只是其中的一
个关键并行计算步骤。
Kernel 以一个网格 (Grid) 的形式执行,每个网
格由若干个线程块( block )组成,每一个线程
块又由若干个线程 (thread) 组成。
一个 grid 最多可以有 65535 * 65535 个 block
一个 block 总共最多可以有 512 个 thread ,在
三个维度上的最大值分别为 512, 512 和 64
- 17. 存储器模型
Register
Local
shared
Global
Constant
Texture
Host memory
Pinned host memory
- 18. CUDA C 语言
由 Nvidia 的 CUDA 编译器 (nvcc) 编译
CUDA C 不是 C 语言,而是对 C 语言进行扩展形成的变种
引入了函数类型限定符: __device__ , __host__ 和
__global__ 。
引入了变量限定符: __device__ , __shared__ 和
__constant__ 。
引入了内置矢量类型: char1 , dim3 , double2 等
引入了内建变量: blockIdx , threadIdx , gridDim , blockDim 和
warpSize
引入了 <<<>>> 运算符
引入了一些函数:同步函数,原子函数,纹理函数等
- 19. 主机端代码主要完成的功能:
启动 CUDA
为输入数据分配内存空间
初始化输入数据
为 GPU 分配显存,存放输入数据
将内存输入数据拷贝到显存
为 GPU 分配显存,存放输出数据
调用 device 端的 kernel 计算
为 CPU 分配内存,存放输出数据
将显存结果读到内存
使用 CPU 进行其他处理
释放内存和显存空间
退出 CUDA