1.08k likes | 1.47k Views
GPGPU 所引领的高性能计算. 技术支持中心 2010-01-28. 提 纲. GPGPU 简介 为什么 GPGPU 会被引入高性能计算 GPGPU 的应用领域 主流 GPGPU 介绍 曙光与 GPGPU GPGPU 并行编程模式概述 CUDA 并行编程模式详细介绍. GPGPU 的定义. 图形处理器 (GPU) : graphics processing units 用于通用计算目的的图形处理器 (GPGPU) : General-Purpose computation on GPUs. 提升系统整体性能的方法. 处理器硬件:
E N D
GPGPU所引领的高性能计算 技术支持中心 2010-01-28
提 纲 • GPGPU简介 • 为什么GPGPU会被引入高性能计算 • GPGPU的应用领域 • 主流GPGPU介绍 • 曙光与GPGPU • GPGPU并行编程模式概述 • CUDA并行编程模式详细介绍
GPGPU的定义 • 图形处理器(GPU): graphics processing units • 用于通用计算目的的图形处理器(GPGPU): General-Purpose computation on GPUs
提升系统整体性能的方法 • 处理器硬件: • 提高制程: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并行化 • 采用共享内存的线程并行 • 编译器优化
摩尔定律的困境 • CPU发展规律: • “摩尔定律” :每18个月,同一面积芯片上可以集成的晶体管数量将翻一番,而价格下降一半 • 由于物理定律的限制,采用提高CPU制程和主频的办法遇到了工艺上的壁垒,暂时无法突破 • GPU发展规律: • 1993年开始,GPU的性能以每年2.8倍的速度增长 峰值发展趋势 带宽发展趋势
图形处理器的发展 • GPU性能的飞跃 • 1993年开始,GPU的性能以每年2.8倍的速度增长。 • 1985年渲染1帧图片需要CRAY 1超级计算机2~3小时 • 如今可以很容易的在1/30秒以内完成1帧的 • 相对低廉的GPU设计和生产价格 • GPGPU浮点性能的快速发展 • 无法利用的浮点计算能力 • 比CPU高一个数量级的浮点性能
二者的区别与联系 • CPU和GPU的联系 • 都是计算机体系结构中的重要部分 • 超大规模集成电路元件 • 能够完成浮点运算功能 • GPU的设计目标与CPU是不同的: • CPU的微架构是按照兼顾“指令并行执行”和“数据并行运算”的思路而设计。 • CPU的大部分晶体管主要用于构建控制电路和Cache • CPU的5%是ALU,控制电路设计更加复杂 • CPU的内存延迟是GPU的1/10 • GPU其实是由硬件实现的一组图形函数的集合。 • GPU控制电路相对简单,而且对Cache的需求小,所以可以把大部分的晶体管用于计算单元 • GPGPU的40%是ALU • GPGPU的内存带宽是CPU的10倍
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个流水步) • 在对大规模的数据流并行处理方面具有明显的优势。
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的编程模式.
提 纲 • GPGPU简介 • 为什么GPGPU会被引入高性能计算 • GPGPU的应用领域 • 主流GPGPU介绍 • 曙光与GPGPU • GPGPU并行编程模式概述 • CUDA并行编程模式详细介绍
石油天然气物探 • SeismicCity公司软件在nVIDIA Tesla S870可以达到CPU配置20倍的性能提升 • Headwave解决方案让地球物理学家能够对他们的数据进行高级过滤处理,也能实现查看数TB的数据
气象海洋建模与空间科学 • CUDA加速的WRF 代码
复杂多相流动分子动力学 • 分子动力学(molecular dynamics,MD)模拟是认为分子之间作用力遵守牛顿力学的一种科学计算方法,现已广泛应用到生物、医药、材料、能源、机电的等领域中。 • 中国科学院过程工程研究所多相复杂系统国家重点实验室进行了GPGPU上的分子动力学(MD)模拟。
UIUC分子动力学程序 • UIUC大学NAMD和VMD程序在18个CPU的机群上有100倍的加速。 • 3个C870的工作站实际达到705Gflops计算能力
脑神经网络仿真案例 • 仿真一条单独的神经 • 需要每秒解200,000,000个微分方程 • 一条神经需40亿次浮点运算 • 这就意味着要处理一个感觉神经数组,需要进行超过10万亿次的浮点运算 • 用GPU实现模拟 • 与X86 CPU相比要快130倍
金融市场预测案例 • Black-Scholes option prizing • 4.7 GOptions/s • 加速比: up to 197X
提 纲 • GPGPU简介 • 主流GPGPU介绍 • nVIDIA解决方案 • AMD/ATI解决方案 • 未来的GPGPU • 曙光与GPGPU • GPGPU并行编程模式概述 • CUDA并行编程模式详细介绍
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的开发环境 • 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
CUDA逻辑结构 • 程序执行区域 • Host ——CPU • Device(Kernel) ——GPU • 分工 • CPU ——调度 • GPU ——运算 • 并行机制 • 海量线程 • 线程索引Index COPY
提 纲 • GPGPU简介 • 主流GPGPU介绍 • Nvidia解决方案 • AMD/ATI解决方案 • 未来的GPGPU • 曙光与GPGPU • GPGPU并行编程模式概述 • CUDA并行编程模式详细介绍
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。
ATI GPGPU技术 GPU接受命令, 并执行命令 CPU发送指令 高带宽的GPU 内存 庞大的 计算单元组
AMD FireStream GPGPU AMD FireStream 9270 • 240 GFLOPS 双精度浮点峰值 • 1.2 TFLOPS 单精度浮点峰值 • 800个处理器核心 • 处理器核心主频750MHz • 2 GB GDDR5 显卡内存 • 显存带宽:108.8GB/s • 双 PCIe 2.0 插槽 • 功耗160W AMD FireStream 9250 • 200 GFLOPS 双精度浮点峰值 • 1 TFLOPS 单精度浮点峰值 • 800个处理器核心 • 处理器核心主频625MHz • 1 GB GDDR3 显卡内存 • 显存带宽:108.8GB/s • 单 PCIe 2.0 插槽 • 功耗90W
双精度浮点处理能力 2.4 TFLOPS 核心频率 750 MHz 处理器核心数量 1600 内存类型 GDDR5 显存容量 2 GB 最大功耗 260 W 显存带宽 230 GB/sec AMD Radeon HD 4870x2 Radeon™ HD 4870 X2 单精度浮点处理能力 480 GFLOPS $299
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+ Rapidmind ACML/Cobra
ATI GPGPU编程模型 为用户提供便捷 的应用函数库 为用户提供 易用的编译器 为用户提供高性能 的API
提 纲 • GPGPU简介 • 主流GPGPU介绍 • nVIDIA解决方案 • AMD/ATI解决方案 • 未来的GPGPU • 曙光与GPGPU • GPGPU并行编程模式概述 • CUDA并行编程模式详细介绍
Intel Larrabee • Larrabee是英特尔公司CPU-GPU的芯片代号 ,它隶属于Intel万亿次计算计划,基于可编程架构,主要面向高端通用目的计算平台,至少有16个核心,主频1.7-2.5GHz,功耗则在150W以上,支持JPEG纹理、物理加速、反锯齿、增强AI、光线追踪等特性。
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并行编程模式详细介绍
曙光GHPC1000 • 计算能力:201.6 Tflops • 系统组成 • 42台 TWINS服务器节点 • 84块ATI Radeon HD 4870 X2 GPGPU • 互联网络:20G InfiniBand • 曙光水冷机柜:4 • 应用软件 • 过程所多相实验室:粒子模拟 • 计算所&曙光公司参与程序移植(加速17倍)
曙光GPGPU机群解决方案 • 节点: • 计算节点(A620r-T) • IO节点(A620-FX) • 网络: • 20G Infiniband计算网络 • 1000Mb以太管理网络 • 控制系统系统: • SKVM over IP • 机群控制台 • 软件系统: • 操作系统 • GridView管理系统 • GNU/PGI编译器 • 并行环境 • 开发环境
提 纲 • GPGPU简介 • 主流GPGPU介绍 • 曙光和GPGPU • GPGPU并行编程模式概述 • CUDA并行编程模式详细介绍
GPGPU并行编程模式(1/3) • 图形API • OpenGL • 提供针对图形渲染的API • 最早由SGI开发、跨平台 • Direct3D • 一种基于OLE COM的API • 依赖于Windows平台的DirectX • OpenCL • 针对异构系统并行编程计算的API • 由Apple提出,收到多家硬件厂商支持(IBM, HP, NVIDIA) • 由Khronos组织维护
GPGPU并行编程模式(2/3) • 通用计算编程接口 • STREAM • 包含: • CAL 指令集 • Brook++ 类C语言及编译器 • 特点: • 板载内存——带宽受限 • 支持汇编方式编程
GPGPU并行编程模式(3/3) • 通用计算编程接口 • CUDA • 包含: • ISA 指令集 • NVCC 编译器 • 特点: • 利用显卡share memory——带宽高 • 硬件升级代码可重用性好 • 数学库支持: • CUFFT(离散快速傅立叶变换) • CUBLAS(离散基本线性计算)
CUDA架构详解 • 以NVIDIA Tesla C870图形卡为例介绍CUDA架构 • CUDA——Compute Unified Device Architecture • 峰值: 518Gflops/card • 编程模式: CUDA v1.1 • 编译器: NVCC
CUDA逻辑结构及内存结构(1/6) • 在CUDA的程序架构中,程序执行区域分为两个部分:Host 与Device。 • Host 指在CPU上执行的部分 • Device指在GPU 上执行的部分,这部分又称为“kernel” • 通常,Host 程序会将需要并行计算的数据复制到 GPU 的显存,再由 GPU 执行 Device程序,完成后再由Host 程序将结果从GPU 显存中取回
CUDA逻辑结构及内存结构(2/6) • 在这个过程中,CPU担任的工作为控制 GPU执行,调度分配任务,并能做一些简单的计算,而大量需要并行计算的工作都交给 GPU 实现。 • 另外需要注意的是,由于 CPU 存取显存时只能通过 PCI-Express 接口,速度较慢,因此不能经常进行,以免降低效率。通常可以在程序开始时将数据复制进GPU显存,然后在 GPU内进行计算,直到获得需要的数据,再将其复制到系统内存中。
CUDA逻辑结构及内存结构(3/6) • 在程序实际运行时,CUDA 会产生很多在 Device 上执行的线程(thread),每个线程都会执行kernel 程序段,根据索引号(index)的不同,获取不同的数据进行计算。
CUDA逻辑结构及内存结构(4/6) • 在CUDA架构下,GPU执行时的最小单位是线程。32至512 个线程组成一个块(block),每个块中的线程能存取同一块共用的显存(shared memory),快速进行同步
CUDA逻辑结构及内存结构(5/6) • 执行相同程序的块,可以组成格子(grid)。不同块中的线程无法从对方的共用显存(shared memory)中读取数据,因此不同块中的线程合作效率较低。 • 利用这种模式,可以使程序不用担心 GPU 上实际能同时执行的线程数目限制。
CUDA逻辑结构及内存结构(6/6) • 例如,一个具有少量执行单元的 GPU,可能会把各个块中的线程循环执行,而非同时执行。 • 不同的格子可以执行不同的程序(即 kernel)。