P020100202696493829487
Shared by: pengtt
-
Stats
- views:
- 6
- posted:
- 9/28/2010
- language:
- Chinese
- pages:
- 103
Document Sample


GPGPU所引领的高性能计算
技术支持中心
2010-01-28
提 纲
• GPGPU简介
–为什么GPGPU会被引入高性能计算
–GPGPU的应用领域
• 主流GPGPU介绍
• 曙光与GPGPU
• GPGPU并行编程模式概述
• CUDA并行编程模式详细介绍
2
GPGPU的定义
• 图形处理器(GPU):
graphics processing units
• 用于通用计算目的的图形处理器(GPGPU):
General-Purpose computation on GPUs
3
提升系统整体性能的方法
• 处理器硬件:
–提高制程: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
摩尔定律的困境
• CPU发展规律:
– “摩尔定律” :每18个月,同一面积芯片上可以集成的晶体管数量将翻一番
,而价格下降一半
– 由于物理定律的限制,采用提高CPU制程和主频的办法遇到了工艺上的壁垒,
暂时无法突破
• GPU发展规律:
– 1993年开始,GPU的性能以每年2.8倍的速度增长
5
峰值发展趋势 带宽发展趋势
图形处理器的发展
• 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
二者的区别与联系
• CPU和GPU的联系
– 都是计算机体系结构中的重要部分
– 超大规模集成电路元件
– 能够完成浮点运算功能
• GPU的设计目标与CPU是不同的:
– CPU的微架构是按照兼顾“指令并行执行
”和“数据并行运算”的思路而设计。
• CPU的大部分晶体管主要用于构建控制电路和
Cache
• CPU的5%是ALU,控制电路设计更加复杂
• CPU的内存延迟是GPU的1/10
– GPU其实是由硬件实现的一组图形函数的
集合。
• GPU控制电路相对简单,而且对Cache的需求
小,所以可以把大部分的晶体管用于计算单
元
• GPGPU的40%是ALU
• GPGPU的内存带宽是CPU的10倍
7
GPU所具有的优势
• 众多的处理单元(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
GPGPU的可编程性
• 在现代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
提 纲
• GPGPU简介
–为什么GPGPU会被引入高性能计算
–GPGPU的应用领域
• 主流GPGPU介绍
• 曙光与GPGPU
• GPGPU并行编程模式概述
• CUDA并行编程模式详细介绍
10
GPGPU应用领域
11
石油天然气物探
• SeismicCity公司软件在nVIDIA Tesla S870可以达到CPU配置20
倍的性能提升
• Headwave解决方案让地球物理学家能够对他们的数据进行高级
过滤处理,也能实现查看数TB的数据
12
气象海洋建模与空间科学
• CUDA加速的WRF 代码
13
医学成像
使用 GPGPU加快高级 MRI 计算体层重建
重建速度 Batenburg, Sijbers, 等人
Stone 等人 14
基因及蛋白质排序
利用GPGPU加速HMMER MUMmerGPU:使用GPGPU进
Scalable Informatics 行高吞吐量DNA序列比对
Schatz等人
15
复杂多相流动分子动力学
• 分子动力学(molecular dynamics,MD)模拟是认为分子之
间作用力遵守牛顿力学的一种科学计算方法,现已广泛应
用到生物、医药、材料、能源、机电的等领域中。
• 中国科学院过程工程研究所多相复杂系统国家重点实验室
进行了GPGPU上的分子动力学(MD)模拟。
16
UIUC分子动力学程序
• UIUC大学NAMD和VMD程序在18个CPU
的机群上有100倍的加速。
• 3个C870的工作站实际达到
705Gflops计算能力
计算量子化学
直接自洽场(SCF)计算 双电子积分评估
Ufimtsev 以及 Martinez 安田幸司
18
脑神经网络仿真案例
• 仿真一条单独的神经
– 需要每秒解200,000,
000个微分方程
– 一条神经需40亿次浮点运
算
• 这就意味着要处理一个感
觉神经数组,需要进行超
过10万亿次的浮点运算
• 用GPU实现模拟
– 与X86 CPU相比要快130倍
19
金融市场预测案例
• Black-Scholes option prizing
• 4.7 GOptions/s
• 加速比: up to 197X
20
提 纲
• GPGPU简介
• 主流GPGPU介绍
–nVIDIA解决方案
–AMD/ATI解决方案
–未来的GPGPU
• 曙光与GPGPU
• GPGPU并行编程模式概述
• CUDA并行编程模式详细介绍
21
nVIDIA 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个线程
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 40db桌面系统 标准1U机架式
PCI-e)
功耗 187.8W 800W 800W
Nvidia 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
CUDA逻辑结构
• 程序执行区域
– Host ——CPU
– Device(Kernel) ——GPU
• 分工
– CPU ——调度
– GPU ——运算
• 并行机制
– 海量线程
– 线程索引Index
25
提 纲
• GPGPU简介
• 主流GPGPU介绍
–Nvidia解决方案
–AMD/ATI解决方案
–未来的GPGPU
• 曙光与GPGPU
• GPGPU并行编程模式概述
• CUDA并行编程模式详细介绍
26
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
ATI GPGPU技术
GPU接受命令,
并执行命令
CPU发送指令
高带宽的GPU
内存
庞大的
计算单元组
AMD FireStream GPGPU
AMD FireStream 9250 AMD FireStream 9270
200 GFLOPS 双精度浮点峰值 240 GFLOPS 双精度浮点峰值
1 TFLOPS 单精度浮点峰值 1.2 TFLOPS 单精度浮点峰值
800个处理器核心 800个处理器核心
处理器核心主频625MHz 处理器核心主频750MHz
1 GB GDDR3 显卡内存 2 GB GDDR5 显卡内存
显存带宽:108.8GB/s 显存带宽:108.8GB/s
单 PCIe 2.0 插槽 双 PCIe 2.0 插槽
功耗90W 功耗160W
29
AMD Radeon HD 4870x2
单精度浮点处理能力
Radeon™ HD 4870 X2 480 GFLOPS
双精度浮点处理能力 2.4 TFLOPS
核心频率 750 MHz
处理器核心数量 1600
内存类型 GDDR5
$299 显存容量 2 GB
最大功耗 260 W
显存带宽 230 GB/sec
30
Aprius CA8000
• 模块化机架式4U机箱
• 可装入8个AMD FireStream 9270 流计算器
• 通过多个PCI-E光纤连接接到一个服务器族。
• 最长50米的PCIe 2.0光纤连接管道,带宽80Gbps
• 最多4条光纤通道,聚合带宽达到320Gbps
• 允许同时加速4台服务器
• 对所有操作系统透明支持
• 关键部件支持热插拔
AMD流计算开发包
• 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+ ACML/Cobra Rapidmind
32
ATI GPGPU编程模型
为用户提供便捷
的应用函数库
为用户提供
易用的编译器
为用户提供高性能
的API
33
提 纲
• GPGPU简介
• 主流GPGPU介绍
–nVIDIA解决方案
–AMD/ATI解决方案
–未来的GPGPU
• 曙光与GPGPU
• GPGPU并行编程模式概述
• CUDA并行编程模式详细介绍
34
Intel Larrabee
• Larrabee是英特尔公司 CPU-GPU的芯片代号 ,它隶属于Intel万亿次
计算计划,基于可编程架构,主要面向高端通用目的计算平台,至少
有16个核心,主频1.7-2.5GHz,功耗则在150W以上,支持JPEG纹理、
物理加速、反锯齿、增强AI、光线追踪等特性。
35
AMD Fusion
• AMD首款Fusion处理器将会采用MCM模块式设计,即CPU一个模块、GPU一个模
块,然后将二者组合在一起,与芯片级集成GPU和CPU相 比,这是生产混合处
理器最简单有效的方便方法。首批上市的Fusion处理器采用的就是这种方法
,它拥有两个独立的核心模块,一个为GPU,另一个为 CPU。这样的话,AMD
就可以根据具体的应用情况推出多GPU和多CPU不同组合的Fusion处理器了。
• 只有未来的第二代Fusion处理器才开始会采用原生整合GPU+CPU技术,AMD首
款Fusion处理器的工程代号为Swift。
提 纲
• GPGPU简介
• 主流GPGPU介绍
• 曙光与GPGPU
• GPGPU并行编程模式概述
• CUDA并行编程模式详细介绍
37
曙光GHPC1000
• 计算能力:201.6 Tflops
• 系统组成
– 42台 TWINS服务器节点
– 84块ATI Radeon HD 4870 X2
GPGPU
– 互联网络:20G InfiniBand
– 曙光水冷机柜:4
• 应用软件
– 过程所多相实验室:粒子模拟
– 计算所&曙光公司参与程序移植
(加速17倍)
曙光GPGPU机群解决方案
节点: 软件系统:
计算节点(A620r-T) 操作系统
IO节点(A620-FX) GridView管理系统
网络: GNU/PGI编译器
20G Infiniband计算网 并行环境
络 开发环境
1000Mb以太管理网络
控制系统系统:
SKVM over IP
机群控制台
39
提 纲
• GPGPU简介
• 主流GPGPU介绍
• 曙光和GPGPU
• GPGPU并行编程模式概述
• CUDA并行编程模式详细介绍
40
GPGPU并行编程模式(1/3)
• 图形API
• OpenGL
– 提供针对图形渲染的API
– 最早由SGI开发、跨平台
• Direct3D
– 一种基于OLE COM的API
– 依赖于Windows平台的DirectX
• OpenCL
– 针对异构系统并行编程计算的API
– 由Apple提出,收到多家硬件厂商支持(IBM, HP, NVIDIA)
– 由Khronos组织维护
2010/9/28 41
GPGPU并行编程模式(2/3)
• 通用计算编程接口
• STREAM
– 包含:
» CAL 指令集
» Brook++ 类C语言及编译器
– 特点:
» 板载内存——带宽受限
» 支持汇编方式编程
2010/9/28 42
GPGPU并行编程模式(3/3)
• 通用计算编程接口
• CUDA
– 包含:
» ISA 指令集
» NVCC 编译器
– 特点:
» 利用显卡share memory——带宽高
» 硬件升级代码可重用性好
» 数学库支持:
» CUFFT(离散快速傅立叶变换)
» CUBLAS(离散基本线性计算)
2010/9/28 43
CUDA架构详解
• 以NVIDIA Tesla C870图形卡为例介绍
CUDA架构
– CUDA——Compute Unified Device Architecture
– 峰值: 518Gflops/card
– 编程模式: CUDA v1.1
– 编译器: NVCC
2010/9/28 44
CUDA逻辑结构及内存结构(1/6)
• 在CUDA的程序架构中,程序执
行区域分为两个部分:Host 与
Device。
– Host 指在CPU上执行的部分
– Device指在GPU 上执行的部分,这
部分又称为“kernel”
• 通常,Host 程序会将需要并行
计算的数据复制到 GPU 的显存,
再由 GPU 执行 Device程序,完
成后再由Host 程序将结果从
GPU 显存中取回
2010/9/28 45
CUDA逻辑结构及内存结构(2/6)
• 在这个过程中,CPU担任的工
作为控制 GPU执行,调度分
配任务,并能做一些简单的计
算,而大量需要并行计算的工
作都交给 GPU 实现。
– 另外需要注意的是,由于 CPU
存取显存时只能通过 PCI-
Express 接口,速度较慢,因此
不能经常进行,以免降低效率。
通常可以在程序开始时将数据复
制进GPU显存,然后在 GPU内
进行计算,直到获得需要的数据,
再将其复制到系统内存中。
2010/9/28 46
CUDA逻辑结构及内存结构(3/6)
• 在程序实际运行时,CUDA 会
产生很多在 Device 上执行的
线程(thread),每个线程都会执
行kernel 程序段,根据索引号
(index)的不同,获取不同的数
据进行计算。
2010/9/28 47
CUDA逻辑结构及内存结构(4/6)
• 在CUDA架构下,GPU执行
时的最小单位是线程。32至
512 个线程组成一个块(block),
每个块中的线程能存取同一
块共用的显存(shared
memory),快速进行同步
2010/9/28 48
CUDA逻辑结构及内存结构(5/6)
• 执行相同程序的块,可以组
成格子(grid)。不同块中的线
程无法从对方的共用显存
(shared memory)中读取数据,
因此不同块中的线程合作效
率较低。
• 利用这种模式,可以使程序
不用担心 GPU 上实际能同时
执行的线程数目限制。
2010/9/28 49
CUDA逻辑结构及内存结构(6/6)
• 例如,一个具有少量执行单
元的 GPU,可能会把各个块
中的线程循环执行,而非同
时执行。
• 不同的格子可以执行不同的
程序(即 kernel)。
2010/9/28 50
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
2010/9/28 51
CUDA存储类型(2/3)
• registers 和本地显存(local memory)是以线程为单位,同一
个块中的每个线程都有自己的一份registers和本地显存
• 共享显存(shared memory)则是存在于块中,让同一个块中
的每一个线程共用。
• 上面这三种,都是在芯片上的显存,速度会比位于存储器
上的显存快,但是容量相比也较小。
2010/9/28 52
CUDA存储类型(3/3)
• 格子中的全局显存(global memory)、常量显存(constant
memory)、结构显存(texture memory)这三种显存可以让不
同块中的线程一起使用,不同格子又具有各自的全局显存
(global memory)、常量显存(constant memory)、结构显存
(texture memory)。
• 这三种显存位于存储器,相比芯片中的显存,容量要大得
多。并且可以在同一个程序中的不同 kernel 中持续的存在
和使用,常量显存(constant memory)和结构显存(texture
memory)具有只读属性,利用快取的机制可以加速读取 。
• 合理利用各种显存存放不同的数据,可以有效提高程序执
行效率。
2010/9/28 53
CUDA并行处理问题(1/2)
• 存取的延迟问题
– CPU 通常使用 cache 来减少存取内存的次数,以避免
内存延迟影响到执行效率。GPU 大多没有 cache,采用
并行化的方式来隐藏显存的读取延迟,即当第一个
thread需要等待显存读取结果时,开始执行第二个
thread,依次类推。
• 分支指令的问题
– CPU通常利用分支预测(Branch Prediction)、推测运
算(Speculative Operation)等方式来减少分支指令造成
的pipeline bubble。GPU则使用类似处理显存延迟的办
法,通过多线程大量并行的方式能够弥补效率低的影
2010/9/28响。 54
CUDA并行处理问题(2/2)
因此,最适合利用 CUDA 处理的问题,是可以大量并
行化的问题,一方面有效隐藏了显存的延迟,另一方面利
用的 GPU 上大量的执行单元。而粒子模拟程序其大块的
粒子空间区域正可以划分为许多并行的子区域,正好适合
这种CUDA编程模式,只是在实现时需要注意多线程读写
及边界处理情况。
2010/9/28 55
提 纲
• GPGPU简介
• 主流GPGPU介绍
• 曙光和GPGPU
• GPGPU并行编程模式概述
• CUDA并行编程模式详细介绍
56
G80 GPU并行平台
Host
Input Assembler Setup / Rstr / ZCull
Vtx Thread Issue Geom Thread Issue Pixel Thread Issue
SP SP SP SP SP SP SP SP SP SP SP SP SP SP SP SP
Thread Processor
TF TF TF TF TF TF TF TF
L1 L1 L1 L1 L1 L1 L1 L1
L2 L2 L2 L2 L2 L2
FB FB FB FB FB FB
AMD RV770
GPU大规模并行计算(cuda)
适用的应用
GPU
CPU 潜在
热点
搜索引擎
数据库、数据挖掘
操作系统
数理统计分析
递归算法 油气勘探 生物医药工程
桌面应用 金融分析 导航识别
例如MS 医疗成像 军事模拟
Word 有限元 无线射频模拟
交互性应用 基因分析 图像语音识别
例如 物理模拟 …
Debugger 地理信息系统
…
小结(1/2)
• CUDA编程模式开发要注意多线程读写、写
写操作错误
• CUDA编程模式性能优化:
– 每个线程访问的数据尽量是连续的
– 在计算过程中,尽量使数据从内存到显存中的拷贝一
次完成
– 将计算过程中频繁用到的变量,存储到share memory或
register中,合理利用芯片级显存
– 线程数尽量多
2010/9/28 101
小结(2/2)
• 通过 CUDA 编程模式改造,可以大幅度的提升粒子模拟
程序的计算性能,但是作为GPGPU编程模式的一种,其
仍有以下一些不足之处有待进一步完善:
– 编程复杂度较大,比较CUDA编程模式与传统的x86 CPU编程模式可以看到,在
CUDA 编程中,对于线程分配、线程边界的处理及多线程读写等问题,不但需要
人为的设计,且设计结构的好坏极大程度影响了最终程序运行的性能。而这些工
作,在 x86 CPU编程模式中,实现起来相对要方便的多,有的甚至可以交给编译器
来做。而与 Cell 体系结构编程模式相比较,CUDA目前缺少主流的集成开发环境,
因此软件开发工作量相对也会大一些;
– GPU的运算单元较多,因此对于不能高度并行化的程序,性能提升不大;
– 在科学计算领域,往往对运算过程中的精度有一定要求,否则容易由于大量的迭
代,导致结果不正确,而 CUDA 目前的版本双精度浮点运算支持不好,这限制了
其在某些领域的应用;
– 不具备分支预测等复杂流程控制单元,因此对于具有高度分支的程序,效率较低;
– 目前GPGPU 编程模型尚不成熟,还没有公认的标准。
2010/9/28 102
谢谢!
Other docs by pengtt
Introduction to IPv6 IPv6 deployment IPv6 Forum IPv6 Transition support IPv6 IPv4 and
Views: 5 | Downloads: 0
Get documents about "