第二章 C U D A 架构 2
1 CUDA 的编程模型 CUDA(Compute Unified Device Architecture),是一种由NVIDIA 推出的并行计算架构,非常适合大规模数据密集型计算
CUDA 使 GPU 的超高计算性能在数据处理和并行计算等通用计算领域发挥优势
它包含了 CUDA 指令集架构(ISA)以及 GPU 内部的并行计算引擎
随着显卡的发展,GPU 越来越强大,在计算上已经超越了通用的CPU
如此强大的芯片如果只是作为显卡会造成计算能力的浪费,因此 NVIDIA 推出CUDA,让显卡可以用于图像渲染以外的目的
CUDA的GPU 编程语言基于标准的C 语言,通过在标准 C 语言的基础上增加一小部分关键字,任何有 C 语言基础的用户都很容易地开发 CUDA 的应用程序
0 已经开始支持 C++和 FORTRAN
1 主机和设备 CUDA 编程模型在设计结构上采用了异构编程的模式,将CPU 作为宿主(Host),GPU作为设备(Device),在同一个系统中可以有同时存在多个设备,但是只能有一个宿主
在 CUDA 程序架构中,主程序由CPU 来执行,而当遇到数据并行处理的部分,CUDA 就会将程序编译成 GPU 能执行的程序,并传送到GPU
CUDA 使用被称为块(Block)的单元 ,每 个块都由一些CUDA 线 程组 成,线 程是CUDA 中最 小的处理单元 ,将这 些 较 小的子 问 题 进 一步 划 分为若 干 更 小的细 粒 度 的问 题 ,我 们 便 可以使用线 程来解 决 这 些 问 题 了
对 于一个普 通的NVIDIA GPU,其 CUDA 线 程数目通常能达 到数千 个甚 至 更 多,因此,这 样 的问 题 划 分模型便 可以成倍 地提 升 计算机的运 算性能
GPU 是由多个流 水 多处理器