gpgpu 所引领的高性能计算

103
GPGPU GPGPU 所所所所所所所所所 所所所所所所所所所 所所所所所所 2010-01-28

Upload: tirzah

Post on 07-Jan-2016

190 views

Category:

Documents


5 download

DESCRIPTION

GPGPU 所引领的高性能计算. 技术支持中心 2010-01-28. 提 纲. GPGPU 简介 为什么 GPGPU 会被引入高性能计算 GPGPU 的应用领域 主流 GPGPU 介绍 曙光与 GPGPU GPGPU 并行编程模式概述 CUDA 并行编程模式详细介绍. GPGPU 的定义. 图形处理器 (GPU) : graphics processing units 用于通用计算目的的图形处理器 (GPGPU) : General-Purpose computation on GPUs. 提升系统整体性能的方法. 处理器硬件: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: GPGPU 所引领的高性能计算

GPGPUGPGPU 所引领的高性能计所引领的高性能计算算

技术支持中心2010-01-28

Page 2: GPGPU 所引领的高性能计算

提 纲提 纲• GPGPUGPGPU 简介简介

– 为什么为什么 GPGPUGPGPU 会被引入高性能计算会被引入高性能计算– GPGPUGPGPU 的应用领域的应用领域

• 主流主流 GPGPUGPGPU 介绍介绍• 曙光与曙光与 GPGPUGPGPU• GPGPUGPGPU 并行编程模式概述并行编程模式概述• CUDACUDA 并行编程模式详细介绍并行编程模式详细介绍

2

Page 3: GPGPU 所引领的高性能计算

GPGPUGPGPU 的定义的定义• 图形处理器 (GPU) :

graphics processing units

• 用于通用计算目的的图形处理器 (GPGPU) :General-Purpose computation on GPUs

3

Page 4: GPGPU 所引领的高性能计算

提升系统整体性能的方法提升系统整体性能的方法• 处理器硬件:

– 提高制程: 130nm->90nm->65nm->45nm->32nm ?– 多核心: 2003 年单核 -> 双核 ->4核 ->2008年 6 核 ->? ( 12核 ?

)– 多线程: 多线程 -> 单线程 -> 多线程 (Sun T1, Xeon Nahelam)– 超长指令字 (VLIW) :安

腾、 Xeon(Woodcrest)、 Opteron(Shanghai)

• 系统硬件:– 加速部件: FPGA(CRAY X4/X5), CELL(IBM Roadrunner)– 高速网络:千兆 ->Myrinet/ 万兆 ->InfiniBand

• 软件:– 采用消息传递的 MPI 并行化– 采用共享内存的线程并行– 编译器优化 4

Page 5: GPGPU 所引领的高性能计算

摩尔定律的困境摩尔定律的困境• CPU 发展规律:

– “ 摩尔定律” :每 18 个月,同一面积芯片上可以集成的晶体管数量将翻一番,而价格下降一半

– 由于物理定律的限制,采用提高 CPU 制程和主频的办法遇到了工艺上的壁垒,暂时无法突破

• GPU 发展规律:– 1993 年开始, GPU 的性能以每年 2.8 倍的速度增长

峰值发展趋势 带宽发展趋势 5

Page 6: GPGPU 所引领的高性能计算

图形处理器的发展图形处理器的发展• GPU 性能的飞跃

– 1993 年开始, GPU 的性能以每年 2.8 倍的速度增长。– 1985 年渲染 1 帧图片需要 CRAY 1 超级计算机 2 ~ 3 小时– 如今可以很容易的在 1/30 秒以内完成 1 帧的

• 相对低廉的 GPU 设计和生产价格• GPGPU 浮点性能的快速发展

– 无法利用的浮点计算能力– 比 CPU 高一个数量级的浮点性能

年份 CPU GPU

2004 Intel 3GHz Pentium 4 Nvidia GeForce 6800 Ultra

6 GFLOPS 40 GFLOPS

2006 Intel 3.0 GHz Core2 Duo NVIDIA GeForce 8800 GTX

24 GFLOPS 330 GFLOPS

2008 Intel 3.0 GHz Xeon E5472 Nvidia Tesla C1060

48 GFLOPS 933 GFlops 6

Page 7: GPGPU 所引领的高性能计算

二者的区别与联系二者的区别与联系• CPU和 GPU 的联系

– 都是计算机体系结构中的重要部分– 超大规模集成电路元件– 能够完成浮点运算功能

• GPU 的设计目标与 CPU 是不同的 :– CPU 的微架构是按照兼顾“指令并行执

行”和“数据并行运算”的思路而设计。• CPU 的大部分晶体管主要用于构建控制电路和 Cache

• CPU的 5%是 ALU ,控制电路设计更加复杂

• CPU 的内存延迟是 GPU的 1/10

– GPU 其实是由硬件实现的一组图形函数的集合。

• GPU 控制电路相对简单,而且对 Cache 的需求小,所以可以把大部分的晶体管用于计算单元

• GPGPU的 40%是 ALU• GPGPU 的内存带宽是 CPU的 10 倍 7

Page 8: GPGPU 所引领的高性能计算

GPUGPU 所具有的优势所具有的优势• 众多的处理单元 (ALU)

– nVIDIA Tesla C1060 具有 240个 ALU( 1.296GHz )– AMD/ATI HD 4870 x2 具有 1600个 ALU( 0.75MHz )– Intel/AMD 处理器具有 2 个 ALU

• 高数据带宽的运算– nVIDIA Tesla C1060 内存带宽: 102GB/s– AMD/ATI HD 4870 x2 内存带宽: 230GB/s– 最新的 I620r-G 最大内存带宽: 64GB/s

• 高效的并行性– 在目前主流的 GPU 中,配置 16 个片段处理流水线, 6 个顶点处理流水线– 多条流水线可以在单一控制部件的集中控制下运行,也可以独立运行

• 超长图形流水线– 超长图形流水线的设计以吞吐量的最大化为目标(如 nVIDIA GeForce 3 流水线有

800 个流水步)– 在对大规模的数据流并行处理方面具有明显的优势。

8

Page 9: GPGPU 所引领的高性能计算

GPGPUGPGPU 的可编程性的可编程性• 在现代 GPU 概念出现以前 , 特殊的图形硬件只出现在诸如 Silicon Graphics(SGI) 等图形工

作站上 , 具有基于硬件的顶点变换和纹理映射功能 .

• 第一代现代图形处理器出现在 1998 年后期 , 主要代表为 Nvidia TNT2,ATI Rage 和 3DFX Voodoo3.这些处理器主要处理光栅化部分 , 有些芯片支持多纹理 , 可以在光栅化过程中完成多幅纹理的融合操作 .

• 从 1999 年后期开始 , 第二代 GPU(Nvidia GeForce256,GeForce 2 和 ATI Radeon 7500) 可以处理顶点的矩阵变换和进行光照计算 ,但此时还未出现真正的可编程性 .

• 第三代 GPU (Nvidia GeForce3,GeForce4,ATI Radeon 8500,2001 年和 2002 年早期 )代表着第一次重要变革 ,这时可以将图形硬件的流水线作为流处理器来解释 . 顶点级出现可编程性 , 而在像素级出现有限的可编程性 .在像素级程序中 ,访问纹理的方式和格式受到一定限制 , 只有定点数可用 . 正是这个时候 , 采用 GPU 作通用计算开始出现 .

• 第四代 GPU (Nvidia GeForce FX series,ATI Radeon 9700/9800) 的像素和顶点可编程性更通用化 , 可以包含上千条指令 . 依赖纹理更为灵活 , 可以用作索引进行查找 .GPU 具备了浮点功能 , 纹理不再限制在 [0,1] 范围 , 从而可以用作任意数组 ,这一点是对通用计算的一个重要贡献 .

• 第五代 GPU 以 Nvidia GeForce 6800 为代表 , 功能相对以前更为丰富、灵活 .顶点程序可以访问纹理 , 支持动态分支操作 ; 像素程序开始支持分支操作 , 包括循环、 if/else 、重复等 ,支持子函数调用 ,64 位浮点纹理滤波和融合 , 多个绘制目标 .

• 第六代 GPU (Nvidia Tesla C870, AMD FireStream 9250) 的浮点运算能力已达到或接近1TFLOPS, 在此前提下 , 硬件厂商纷纷加大力度推广适用于自己 GPU 的编程模式 .

9

Page 10: GPGPU 所引领的高性能计算

提 纲提 纲• GPGPUGPGPU 简介简介

– 为什么为什么 GPGPUGPGPU 会被引入高性能计算会被引入高性能计算– GPGPUGPGPU 的应用领域的应用领域

• 主流主流 GPGPUGPGPU 介绍介绍• 曙光与曙光与 GPGPUGPGPU• GPGPUGPGPU 并行编程模式概述并行编程模式概述• CUDACUDA 并行编程模式详细介绍并行编程模式详细介绍

10

Page 11: GPGPU 所引领的高性能计算

GPGPUGPGPU 应用领域应用领域

11

Page 12: GPGPU 所引领的高性能计算

石油天然气物探石油天然气物探• SeismicCity公司软件在 nVIDIA Tesla S870 可以达到 CPU

配置 20 倍的性能提升

• Headwave解决方案让地球物理学家能够对他们的数据进行高级过滤处理,也能实现查看数 TB 的数据

12

Page 13: GPGPU 所引领的高性能计算

气象海洋建模与空间科学气象海洋建模与空间科学• CUDA 加速的 WRF 代码

13

Page 15: GPGPU 所引领的高性能计算

基因及蛋白质排序基因及蛋白质排序

利用GPGPU加速HMMER

Scalable Informatics

MUMmerGPU :使用 GPGPU进行高吞吐量 DNA序列比对

Schatz 等人15

Page 16: GPGPU 所引领的高性能计算

复杂多相流动分子动力学复杂多相流动分子动力学• 分子动力学 (molecular dynamics,MD) 模拟是认为

分子之间作用力遵守牛顿力学的一种科学计算方法,现已广泛应用到生物、医药、材料、能源、机电的等领域中。

• 中国科学院过程工程研究所多相复杂系统国家重点实验室进行了 GPGPU 上的分子动力学 (MD) 模拟。

16

Page 17: GPGPU 所引领的高性能计算

UIUCUIUC 分子动力学程序分子动力学程序• UIUC 大学 NAMD和 VMD 程序在

18个 CPU 的机群上有 100 倍的加速。

• 3 个 C870 的工作站实际达到705Gflops 计算能力

Page 18: GPGPU 所引领的高性能计算

计算量子化学计算量子化学

直接自洽场( SCF )计算Ufimtsev 以及 Martinez

双电子积分评估安田幸司

18

Page 19: GPGPU 所引领的高性能计算

脑神经网络仿真案例脑神经网络仿真案例• 仿真一条单独的神经

– 需要每秒解 200, 000,000 个微分方程

– 一条神经需 40亿次浮点运算

• 这就意味着要处理一个感觉神经数组,需要进行超过 10 万亿次的浮点运算

• 用 GPU 实现模拟– 与 X86 CPU 相比要快 130

19

Page 20: GPGPU 所引领的高性能计算

金融市场预测案例金融市场预测案例• Black-Scholes option prizing• 4.7 GOptions/s• 加速比 : up to 197X

20

Page 21: GPGPU 所引领的高性能计算

提 纲提 纲• GPGPUGPGPU 简介简介• 主流主流 GPGPUGPGPU 介绍介绍

– nVIDIAnVIDIA 解决方案解决方案– AMD/ATIAMD/ATI 解决方案解决方案– 未来的未来的 GPGPUGPGPU

• 曙光与曙光与 GPGPUGPGPU• GPGPUGPGPU 并行编程模式概述并行编程模式概述• CUDACUDA 并行编程模式详细介绍并行编程模式详细介绍

21

Page 22: GPGPU 所引领的高性能计算

nVIDIA GTX200nVIDIA GTX200 核心核心• Tesla GPGPU 可以看作之

前的 Nvidia Quadro专业卡的通用计算版本

• GTX200的 240 个流处理器被分为 10 组并行的材质处理簇 TPC( Texture Processing Cluster )

• 每个 TPC由 3 个流处理器单元 SM( Streaming Multiprocessors )组成

• 每个 SM由 8 个流处理器 SP( Stream Processor );每个 TPC 内的 24 个流处理器共享 L1缓存( TPC 的核内内存)

• 每个 SM 可以支持 1024个并行线程

• 整个 GTX200 核心可以支持 30720 个线程

Page 23: GPGPU 所引领的高性能计算

nVIDIA Tesla nVIDIA Tesla 产品产品C1060 GPGPU 个人高性能计算机 S1070 Server

应用领域 加速卡 桌面高性能计算 企业级机群GPU 数目 1 4 4

处理器内核频率 1.296 GHz 1.296GHz 1.296~ 1.44GHz

处理器核心数目 240 960 960

单精度浮点峰值 933 Gflops 3.73Tflops 3.73 to 4.14TFlops

双精度浮点峰值 78Gflops 311Gflops 311 to 345 GFlops

专用内存 4GB 16GB 16GB

内存位宽 512位 GDDR3 512位 GDDR3 512位 GDDR3

内存带宽 102GB/s 408GB/s 408GB/s

安装环境 dual slots 全长卡( X16 PCI-e )

40db桌面系统 标准 1U 机架式

功耗 187.8W 800W 800W

Page 24: GPGPU 所引领的高性能计算

Nvidia TeslaNvidia Tesla 的开发环境的开发环境• CUDA (统一计算设备架构)

– Compute Unified Device Architecture

– 在 nVIDIA GT200 系列显卡和 Tesla 系列通用计算系统上 C 语言的函式库来编写应用程序的软件开发环境,

– CUDA 主要分为 Library, runtime和Driver 三个部分

• nVIDIA CUDA 为一款完整的软件开发方案,内含支持 GPU的 C 语言编译器、调试工具( Debugger )、性能分析软件 (Profiler) 、驱动程序及标准函数库

• CUDA 开发者社区:http://www.nvidia.com/CUDA 24

Page 25: GPGPU 所引领的高性能计算

CUDACUDA 逻辑结构逻辑结构• 程序执行区域

– Host ——CPU– Device(Kernel) ——GPU

• 分工– CPU ——调度– GPU —— 运算

• 并行机制– 海量线程– 线程索引 Index

25

Page 26: GPGPU 所引领的高性能计算

提 纲提 纲• GPGPUGPGPU 简介简介• 主流主流 GPGPUGPGPU 介绍介绍

– NvidiaNvidia 解决方案解决方案– AMD/ATIAMD/ATI 解决方案解决方案– 未来的未来的 GPGPUGPGPU

• 曙光与曙光与 GPGPUGPGPU• GPGPUGPGPU 并行编程模式概述并行编程模式概述• CUDACUDA 并行编程模式详细介绍并行编程模式详细介绍

26

Page 27: GPGPU 所引领的高性能计算

AMD/ATI GPU AMD/ATI GPU 的发展的发展• 2006年 7 月 24日, AMD购并 ATI• 2006年 11 月,发布首款流处理器- Fire Stream 580.• 2007年 11 月, Fire Stream 9170 ,处理能力达到

500Gflops• 2008年 11 月, Fire Stream 9270 ,处理能力达到

1.2Tflops• 2008 年底推出 Stream SDK ,将 ATI 4870 x2引入高

性能计算领域,浮点处理能力达到 2.4Tflops 。

27

Page 28: GPGPU 所引领的高性能计算

ATI GPGPUATI GPGPU 技术技术CPU 发送指令

GPU 接受命令 ,并执行命令

庞大的计算单元组

高带宽的 GPU内存

Page 29: GPGPU 所引领的高性能计算

AMD FireStream GPGPUAMD FireStream GPGPUAMD FireStream 9250

200 GFLOPS 双精度浮点峰值1 TFLOPS 单精度浮点峰值800 个处理器核心处理器核心主频 625MHz1 GB GDDR3 显卡内存显存带宽: 108.8GB/s单 PCIe 2.0 插槽功耗 90W

AMD FireStream 9270

240 GFLOPS 双精度浮点峰值1.2 TFLOPS 单精度浮点峰值800 个处理器核心处理器核心主频 750MHz2 GB GDDR5 显卡内存显存带宽: 108.8GB/s双 PCIe 2.0 插槽功耗 160W

29

Page 30: GPGPU 所引领的高性能计算

AMD Radeon HD 4870x2AMD Radeon HD 4870x2

Radeon™ HD 4870 X2

$299

2.4 TFLOPS

750 MHz

1600

GDDR5

2 GB

260 W

双精度浮点处理能力

核心频率

处理器核心数量

内存类型

显存容量

最大功耗

显存带宽 230 GB/sec

30

单精度浮点处理能力 480 GFLOPS

Page 31: GPGPU 所引领的高性能计算

Aprius CA8000Aprius CA8000• 模块化机架式 4U 机箱• 可装入 8 个 AMD FireStream 9270 流计算器• 通过多个 PCI-E光纤连接接到一个服务器族。• 最长 50米的 PCIe 2.0光纤连接管道,带宽 80Gbps• 最多 4 条光纤通道,聚合带宽达到 320Gbps• 允许同时加速 4 台服务器 • 对所有操作系统透明支持• 关键部件支持热插拔

Page 32: GPGPU 所引领的高性能计算

AMDAMD 流计算开发包流计算开发包• FireStream Software Development Kit( SDK )

– Brook+• 基于 C 语言的面向 GPGPU 的高级编程语言• 基于 Standford 大学的 Brook语言• 开源软件( SourceForge.net )

• Libraries– AMD 核心数学库( ACML )– COBRA 图形图像库

• 第三方工具– RapidMind, etc

Compilers Libraries Available 3rd Party Tools

Brook+ RapidmindACML/Cobra

32

Page 33: GPGPU 所引领的高性能计算

ATI GPGPUATI GPGPU 编程模型编程模型

为用户提供高性能的 API

为用户提供易用的编译器

为用户提供便捷的应用函数库

33

Page 34: GPGPU 所引领的高性能计算

提 纲提 纲• GPGPUGPGPU 简介简介• 主流主流 GPGPUGPGPU 介绍介绍

– nVIDIAnVIDIA 解决方案解决方案– AMD/ATIAMD/ATI 解决方案解决方案– 未来的未来的 GPGPUGPGPU

• 曙光与曙光与 GPGPUGPGPU• GPGPUGPGPU 并行编程模式概述并行编程模式概述• CUDACUDA 并行编程模式详细介绍并行编程模式详细介绍

34

Page 35: GPGPU 所引领的高性能计算

Intel LarrabeeIntel Larrabee• Larrabee 是英特尔公司 CPU-GPU 的芯片代号 ,它隶属于 Intel 万亿次计算计划,基于可编程架构,主要面向高端通用目的计算平台,至少有 16 个核心,主频 1.7-2.5GHz ,功耗则在 150W 以上,支持JPEG纹理、物理加速、反锯齿、增强 AI 、光线追踪等特性。

35

Page 36: GPGPU 所引领的高性能计算

AMD FusionAMD Fusion• AMD首款 Fusion 处理器将会采用 MCM 模块式设计,即 CPU 一个模块、 GPU 一个模块,然后将二者组合在一起,与芯片级集成 GPU和 CPU 相 比,这是生产混合处理器最简单有效的方便方法。首批上市的 Fusion 处理器采用的就是这种方法,它拥有两个独立的核心模块,一个为 GPU ,另一个为 CPU 。这样的话, AMD就可以根据具体的应用情况推出多 GPU 和多CPU 不同组合的 Fusion 处理器了。

• 只有未来的第二代 Fusion 处理器才开始会采用原生整合 GPU+CPU技术, AMD首款 Fusion 处理器的工程代号为 Swift 。

Page 37: GPGPU 所引领的高性能计算

提 纲提 纲• GPGPUGPGPU 简介简介• 主流主流 GPGPUGPGPU 介绍介绍• 曙光与曙光与 GPGPUGPGPU• GPGPUGPGPU 并行编程模式概述并行编程模式概述• CUDACUDA 并行编程模式详细介绍并行编程模式详细介绍

37

Page 38: GPGPU 所引领的高性能计算

曙光曙光 GHPC1000GHPC1000• 计算能力: 201.6 Tflops

• 系统组成– 42台 TWINS服务器节点– 84块 ATI Radeon HD 4870

X2 GPGPU– 互联网络: 20G InfiniBand– 曙光水冷机柜: 4

• 应用软件– 过程所多相实验室:粒子模拟– 计算所 & 曙光公司参与程序移植(加速 17 倍)

Page 39: GPGPU 所引领的高性能计算

曙光曙光 GPGPUGPGPU 机群解决方案机群解决方案 节点:

计算节点 (A620r-T) IO节点 (A620-FX)

网络:20G Infiniband 计算

网络1000Mb 以太管理网络

控制系统系统:SKVM over IP 机群控制台

软件系统:操作系统GridView 管理系统GNU/PGI 编译器并行环境开发环境

39

Page 40: GPGPU 所引领的高性能计算

提 纲提 纲• GPGPUGPGPU 简介简介• 主流主流 GPGPUGPGPU 介绍介绍• 曙光和曙光和 GPGPUGPGPU• GPGPUGPGPU 并行编程模式概述并行编程模式概述• CUDACUDA 并行编程模式详细介绍并行编程模式详细介绍

40

Page 41: GPGPU 所引领的高性能计算

GPGPU并行编程模式 (1/3)

• 图形 API• OpenGL

– 提供针对图形渲染的 API

– 最早由 SGI开发、跨平台• Direct3D

– 一种基于 OLE COM的 API

– 依赖于Windows平台的 DirectX

• OpenCL– 针对异构系统并行编程计算的 API

– 由 Apple提出,收到多家硬件厂商支持 (IBM, HP, NVIDIA)

– 由 Khronos组织维护

23/4/20 41

Page 42: GPGPU 所引领的高性能计算

GPGPU并行编程模式 (2/3)

• 通用计算编程接口• STREAM

– 包含:» CAL 指令集» Brook++ 类 C语言及编译器

– 特点:» 板载内存——带宽受限» 支持汇编方式编程

23/4/20 42

Page 43: GPGPU 所引领的高性能计算

GPGPU并行编程模式 (3/3)

23/4/20 43

Page 44: GPGPU 所引领的高性能计算

CUDA架构详解• 以 NVIDIA Tesla C870图形卡为例介绍

CUDA架构– CUDA——Compute Unified Device Architecture– 峰值 : 518Gflops/card– 编程模式 : CUDA v1.1– 编译器 : NVCC

23/4/20 44

Page 45: GPGPU 所引领的高性能计算

CUDA逻辑结构及内存结构 (1/6)

• 在 CUDA的程序架构中,程序执行区域分为两个部分: Host 与 Device。– Host 指在 CPU上执行的部分– Device指在 GPU 上执行的部分,

“这部分又称为 kernel”

• 通常, Host 程序会将需要并行 计算的数据复制到 GPU 的显存,

再由 GPU 执行 Device程序,完成后再由 Host 程序将结果从GPU 显存中取回

23/4/20 45

Page 46: GPGPU 所引领的高性能计算

CUDA逻辑结构及内存结构 (2/6)

• 在这个过程中, CPU担任的 工作为控制 GPU执行,调度

分配任务,并能做一些简单的计算,而大量需要并行计算的

工作都交给 GPU 实现。– 另外需要注意的是,由于 CPU

存取显存时只能通过 PCI-Express 接口,速度较慢,因此不能经常进行,以免降低效率。通常可以在程序开始时将数据复制进 GPU 显存,然后在 GPU内进行计算,直到获得需要的数据,再将其复 制到系统内存中。

23/4/20 46

Page 47: GPGPU 所引领的高性能计算

CUDA逻辑结构及内存结构 (3/6)

• 在程序实际运行时, CUDA 会产生很多在 Device 上执行

的线程 (thread),每个线程都会执行 kernel 程序段,根据索引号 (index)的不同,获取

不同的数据进行计算。

23/4/20 47

Page 48: GPGPU 所引领的高性能计算

CUDA逻辑结构及内存结构 (4/6)

• 在 CUDA架构下, GPU执行时的最小单位是线程。 32至 512 个线程组成一个块(block),每个块中的线程能存取同一块共用的显存(shared memory),快速进行同步

23/4/20 48

Page 49: GPGPU 所引领的高性能计算

CUDA逻辑结构及内存结构 (5/6)

• 执行相同程序的块,可以组成格子 (grid)。不同块中的线程无法从对方的共用显存(shared memory)中读取数据,因此不同块中的线程合作效率较低。

• 利用这种模式,可以使程序 不用担心 GPU 上实际能同

时执行的线程数目限制。

23/4/20 49

Page 50: GPGPU 所引领的高性能计算

CUDA逻辑结构及内存结构 (6/6)

• 例如,一个具有少量执行单 元的 GPU,可能会把各个

块中的线程循环执行,而非同时执行。

• 不同的格子可以执行不同的 程序(即 kernel)。

23/4/20 50

Page 51: GPGPU 所引领的高性能计算

CUDA存储类型 (1/3)

• 在 CUDA架构中,要让线程可以使用各种变量,必须先 将数据复制到 Device 的显存中,由于 Device 的显存分

别位于存储器( Dram)和芯片 (Chip)上,因此在读取速度上有较大区别,有表中所示的 6种。

registers read-write per-thread

local memory read-write per-thread

shared memory read-write per-block

global memory read-write per-grid

constant memory read-only per-grid

texture memory read-only per-grid

23/4/20 51

Page 52: GPGPU 所引领的高性能计算

CUDA存储类型 (2/3)

• registers 和本地显存 (local memory)是以线程为单位,同一个块中的每个线程都有自己的一份 registers和本地显存

• 共享显存 (shared memory)则是存在于块中,让同一个块 中的每一个线程共用。

• 上面这三种,都是在芯片上的显存,速度会比位于存储器上的显存快,但是容量相比也较小。

23/4/20 52

Page 53: GPGPU 所引领的高性能计算

CUDA存储类型 (3/3)

• 格子中的全局显存 (global memory)、常量显存 (constant memory)、结构显存 (texture memory)这三种显存可以让不同块中的线程一起使用,不同格子又具有各自的全局显存 (global memory)、常量显存 (constant memory)、结构显存 (texture memory) 。

• 这三种显存位于存储器,相比芯片中的显存,容量要大得 多。并且可以在同一个程序中的不同 kernel 中持续的存

在和使用,常量显存 (constant memory)和结构显存(texture memory)具有只读属性,利用快取的机制可以加

速读取。• 合理利用各种显存存放不同的数据,可以有效提高程序执

行效率。23/4/20 53

Page 54: GPGPU 所引领的高性能计算

CUDA并行处理问题 (1/2)

• 存取的延迟问题– CPU 通常使用 cache 来减少存取内存的次数,以避免内存延迟影响到执行效率。 GPU 大多没有 cache,采用并

行化的方式来隐藏显存的读取延迟,即当第一个 thread 需要等待显存读取结果时,开始执行第二个 thread,依

次类推。• 分支指令的问题

– CPU通常利用分支预测( Branch Prediction)、推测运算( Speculative Operation)等方式来减少分支指令造成的pipeline bubble。 GPU则使用类似处理显存延迟的办法,

通过多线程大量并行的方式能够弥补效率低的影响。23/4/20 54

Page 55: GPGPU 所引领的高性能计算

CUDA并行处理问题 (2/2)

因此,最适合利用 CUDA 处理的问题,是可以大量并行化的问题,一方面有效隐藏了显存的延迟,另一方

面利用的 GPU 上大量的执行单元。而粒子模拟程序其大块的粒子空间区域正可以划分为许多并行的子区域,正好适合这种 CUDA编程模式,只是在实现时需要注意多线

程读写及边界处理情况。

23/4/20 55

Page 56: GPGPU 所引领的高性能计算

提 纲提 纲• GPGPUGPGPU 简介简介• 主流主流 GPGPUGPGPU 介绍介绍• 曙光和曙光和 GPGPUGPGPU• GPGPUGPGPU 并行编程模式概述并行编程模式概述• CUDACUDA 并行编程模式详细介绍并行编程模式详细介绍

56

Page 57: GPGPU 所引领的高性能计算
Page 58: GPGPU 所引领的高性能计算
Page 59: GPGPU 所引领的高性能计算
Page 60: GPGPU 所引领的高性能计算
Page 61: GPGPU 所引领的高性能计算

G80 GPU 并行平台

L2

FB

SP SP

L1

TF

Th

rea

d P

roc

es

so

r

Vtx Thread Issue

Setup / Rstr / ZCull

Geom Thread Issue Pixel Thread Issue

Input Assembler

Host

SP SP

L1

TF

SP SP

L1

TF

SP SP

L1

TF

SP SP

L1

TF

SP SP

L1

TF

SP SP

L1

TF

SP SP

L1

TF

L2

FB

L2

FB

L2

FB

L2

FB

L2

FB

Page 62: GPGPU 所引领的高性能计算

AMD RV770

Page 63: GPGPU 所引领的高性能计算

GPU 大规模并行计算( cuda )

Page 64: GPGPU 所引领的高性能计算
Page 65: GPGPU 所引领的高性能计算
Page 66: GPGPU 所引领的高性能计算
Page 67: GPGPU 所引领的高性能计算
Page 68: GPGPU 所引领的高性能计算
Page 69: GPGPU 所引领的高性能计算
Page 70: GPGPU 所引领的高性能计算
Page 71: GPGPU 所引领的高性能计算
Page 72: GPGPU 所引领的高性能计算
Page 73: GPGPU 所引领的高性能计算
Page 74: GPGPU 所引领的高性能计算
Page 75: GPGPU 所引领的高性能计算
Page 76: GPGPU 所引领的高性能计算
Page 77: GPGPU 所引领的高性能计算
Page 78: GPGPU 所引领的高性能计算
Page 79: GPGPU 所引领的高性能计算
Page 80: GPGPU 所引领的高性能计算
Page 81: GPGPU 所引领的高性能计算
Page 82: GPGPU 所引领的高性能计算
Page 83: GPGPU 所引领的高性能计算
Page 84: GPGPU 所引领的高性能计算
Page 85: GPGPU 所引领的高性能计算
Page 86: GPGPU 所引领的高性能计算
Page 87: GPGPU 所引领的高性能计算
Page 88: GPGPU 所引领的高性能计算
Page 89: GPGPU 所引领的高性能计算
Page 90: GPGPU 所引领的高性能计算
Page 91: GPGPU 所引领的高性能计算
Page 92: GPGPU 所引领的高性能计算
Page 93: GPGPU 所引领的高性能计算
Page 94: GPGPU 所引领的高性能计算
Page 95: GPGPU 所引领的高性能计算
Page 96: GPGPU 所引领的高性能计算
Page 97: GPGPU 所引领的高性能计算
Page 98: GPGPU 所引领的高性能计算
Page 99: GPGPU 所引领的高性能计算
Page 100: GPGPU 所引领的高性能计算

操作系统递归算法桌面应用例如 MS Word

交互性应用例如Debugger…

CPUGPU

适用的应用

油气勘探金融分析医疗成像有限元基因分析物理模拟地理信息系统

热点搜索引擎数据库、数据挖掘数理统计分析生物医药工程导航识别军事模拟无线射频模拟图像语音识别…

潜在

Page 101: GPGPU 所引领的高性能计算

小结 (1/2)

• CUDA编程模式开发要注意多线程读写、写写操作错误

• CUDA编程模式性能优化:– 每个线程访问的数据尽量是连续的– 在计算过程中,尽量使数据从内存到显存中的拷贝一次完成

– 将计算过程中频繁用到的变量,存储到 share memory或 register中,合理利用芯片级显存

– 线程数尽量多23/4/20 101

Page 102: GPGPU 所引领的高性能计算

小结 (2/2)

• 通过 CUDA 编程模式改造,可以大幅度的提升粒子模拟程序的计算性能,但是作为 GPGPU编程模式的一种,其仍有以下一些不足之处有待进一步完善:

– 编程复杂度较大,比较 CUDA编程模式与传统的 x86 CPU编程模式可以看到,在CUDA 编程中,对于线程分配、线程边界的处理及多线程读写等问题,不但需要人为的设计,且设计结构的好坏极大程度影响了最终程序运行的性能。而这些工作,

在 x86 CPU编程模式中,实现起来相对要方便的多,有的甚至可以交给编译器来 做。而与 Cell 体系结构编程模式相比较, CUDA目前缺少主流的集成开发环境,

因此软件开发工作量相对也会大一些;– GPU的运算单元较多,因此对于不能高度并行化的程序,性能提升不大;– 在科学计算领域,往往对运算过程中的精度有一定要求,否则容易由于大量的迭代,

导致结果不正确,而 CUDA 目前的版本双精度浮点运算支持不好,这限制了其在 某些领域的应用;

– 不具备分支预测等复杂流程控制单元,因此对于具有高度分支的程序,效率较低;– 目前 GPGPU 编程模型尚不成熟,还没有公认的标准。

23/4/20 102

Page 103: GPGPU 所引领的高性能计算

谢谢!谢谢!