1 / 103

GPGPU 所引领的高性能计算

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

tirzah
Download Presentation

GPGPU 所引领的高性能计算

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GPGPU所引领的高性能计算 技术支持中心 2010-01-28

  2. 提 纲 • GPGPU简介 • 为什么GPGPU会被引入高性能计算 • GPGPU的应用领域 • 主流GPGPU介绍 • 曙光与GPGPU • GPGPU并行编程模式概述 • CUDA并行编程模式详细介绍

  3. GPGPU的定义 • 图形处理器(GPU): graphics processing units • 用于通用计算目的的图形处理器(GPGPU): General-Purpose computation on GPUs

  4. 提升系统整体性能的方法 • 处理器硬件: • 提高制程: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并行化 • 采用共享内存的线程并行 • 编译器优化

  5. 摩尔定律的困境 • CPU发展规律: • “摩尔定律” :每18个月,同一面积芯片上可以集成的晶体管数量将翻一番,而价格下降一半 • 由于物理定律的限制,采用提高CPU制程和主频的办法遇到了工艺上的壁垒,暂时无法突破 • GPU发展规律: • 1993年开始,GPU的性能以每年2.8倍的速度增长 峰值发展趋势 带宽发展趋势

  6. 图形处理器的发展 • GPU性能的飞跃 • 1993年开始,GPU的性能以每年2.8倍的速度增长。 • 1985年渲染1帧图片需要CRAY 1超级计算机2~3小时 • 如今可以很容易的在1/30秒以内完成1帧的 • 相对低廉的GPU设计和生产价格 • GPGPU浮点性能的快速发展 • 无法利用的浮点计算能力 • 比CPU高一个数量级的浮点性能

  7. 二者的区别与联系 • CPU和GPU的联系 • 都是计算机体系结构中的重要部分 • 超大规模集成电路元件 • 能够完成浮点运算功能 • GPU的设计目标与CPU是不同的: • CPU的微架构是按照兼顾“指令并行执行”和“数据并行运算”的思路而设计。 • CPU的大部分晶体管主要用于构建控制电路和Cache • CPU的5%是ALU,控制电路设计更加复杂 • CPU的内存延迟是GPU的1/10 • GPU其实是由硬件实现的一组图形函数的集合。 • GPU控制电路相对简单,而且对Cache的需求小,所以可以把大部分的晶体管用于计算单元 • GPGPU的40%是ALU • GPGPU的内存带宽是CPU的10倍

  8. 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个流水步) • 在对大规模的数据流并行处理方面具有明显的优势。

  9. 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的编程模式.

  10. 提 纲 • GPGPU简介 • 为什么GPGPU会被引入高性能计算 • GPGPU的应用领域 • 主流GPGPU介绍 • 曙光与GPGPU • GPGPU并行编程模式概述 • CUDA并行编程模式详细介绍

  11. GPGPU应用领域

  12. 石油天然气物探 • SeismicCity公司软件在nVIDIA Tesla S870可以达到CPU配置20倍的性能提升 • Headwave解决方案让地球物理学家能够对他们的数据进行高级过滤处理,也能实现查看数TB的数据

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

  14. 医学成像

  15. 基因及蛋白质排序

  16. 复杂多相流动分子动力学 • 分子动力学(molecular dynamics,MD)模拟是认为分子之间作用力遵守牛顿力学的一种科学计算方法,现已广泛应用到生物、医药、材料、能源、机电的等领域中。 • 中国科学院过程工程研究所多相复杂系统国家重点实验室进行了GPGPU上的分子动力学(MD)模拟。

  17. UIUC分子动力学程序 • UIUC大学NAMD和VMD程序在18个CPU的机群上有100倍的加速。 • 3个C870的工作站实际达到705Gflops计算能力

  18. 计算量子化学

  19. 脑神经网络仿真案例 • 仿真一条单独的神经 • 需要每秒解200,000,000个微分方程 • 一条神经需40亿次浮点运算 • 这就意味着要处理一个感觉神经数组,需要进行超过10万亿次的浮点运算 • 用GPU实现模拟 • 与X86 CPU相比要快130倍

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

  21. 提 纲 • GPGPU简介 • 主流GPGPU介绍 • nVIDIA解决方案 • AMD/ATI解决方案 • 未来的GPGPU • 曙光与GPGPU • GPGPU并行编程模式概述 • CUDA并行编程模式详细介绍

  22. 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个线程

  23. nVIDIA Tesla 产品

  24. 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

  25. CUDA逻辑结构 • 程序执行区域 • Host ——CPU • Device(Kernel) ——GPU • 分工 • CPU ——调度 • GPU ——运算 • 并行机制 • 海量线程 • 线程索引Index COPY

  26. 提 纲 • GPGPU简介 • 主流GPGPU介绍 • Nvidia解决方案 • AMD/ATI解决方案 • 未来的GPGPU • 曙光与GPGPU • GPGPU并行编程模式概述 • CUDA并行编程模式详细介绍

  27. 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。

  28. ATI GPGPU技术 GPU接受命令, 并执行命令 CPU发送指令 高带宽的GPU 内存 庞大的 计算单元组

  29. 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

  30. 双精度浮点处理能力 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

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

  32. 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

  33. ATI GPGPU编程模型 为用户提供便捷 的应用函数库 为用户提供 易用的编译器 为用户提供高性能 的API

  34. 提 纲 • GPGPU简介 • 主流GPGPU介绍 • nVIDIA解决方案 • AMD/ATI解决方案 • 未来的GPGPU • 曙光与GPGPU • GPGPU并行编程模式概述 • CUDA并行编程模式详细介绍

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

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

  37. 提 纲 • GPGPU简介 • 主流GPGPU介绍 • 曙光与GPGPU • GPGPU并行编程模式概述 • CUDA并行编程模式详细介绍

  38. 曙光GHPC1000 • 计算能力:201.6 Tflops • 系统组成 • 42台 TWINS服务器节点 • 84块ATI Radeon HD 4870 X2 GPGPU • 互联网络:20G InfiniBand • 曙光水冷机柜:4 • 应用软件 • 过程所多相实验室:粒子模拟 • 计算所&曙光公司参与程序移植(加速17倍)

  39. 曙光GPGPU机群解决方案 • 节点: • 计算节点(A620r-T) • IO节点(A620-FX) • 网络: • 20G Infiniband计算网络 • 1000Mb以太管理网络 • 控制系统系统: • SKVM over IP • 机群控制台 • 软件系统: • 操作系统 • GridView管理系统 • GNU/PGI编译器 • 并行环境 • 开发环境

  40. 提 纲 • GPGPU简介 • 主流GPGPU介绍 • 曙光和GPGPU • GPGPU并行编程模式概述 • CUDA并行编程模式详细介绍

  41. GPGPU并行编程模式(1/3) • 图形API • OpenGL • 提供针对图形渲染的API • 最早由SGI开发、跨平台 • Direct3D • 一种基于OLE COM的API • 依赖于Windows平台的DirectX • OpenCL • 针对异构系统并行编程计算的API • 由Apple提出,收到多家硬件厂商支持(IBM, HP, NVIDIA) • 由Khronos组织维护

  42. GPGPU并行编程模式(2/3) • 通用计算编程接口 • STREAM • 包含: • CAL 指令集 • Brook++ 类C语言及编译器 • 特点: • 板载内存——带宽受限 • 支持汇编方式编程

  43. GPGPU并行编程模式(3/3) • 通用计算编程接口 • CUDA • 包含: • ISA 指令集 • NVCC 编译器 • 特点: • 利用显卡share memory——带宽高 • 硬件升级代码可重用性好 • 数学库支持: • CUFFT(离散快速傅立叶变换) • CUBLAS(离散基本线性计算)

  44. CUDA架构详解 • 以NVIDIA Tesla C870图形卡为例介绍CUDA架构 • CUDA——Compute Unified Device Architecture • 峰值: 518Gflops/card • 编程模式: CUDA v1.1 • 编译器: NVCC

  45. CUDA逻辑结构及内存结构(1/6) • 在CUDA的程序架构中,程序执行区域分为两个部分:Host 与Device。 • Host 指在CPU上执行的部分 • Device指在GPU 上执行的部分,这部分又称为“kernel” • 通常,Host 程序会将需要并行计算的数据复制到 GPU 的显存,再由 GPU 执行 Device程序,完成后再由Host 程序将结果从GPU 显存中取回

  46. CUDA逻辑结构及内存结构(2/6) • 在这个过程中,CPU担任的工作为控制 GPU执行,调度分配任务,并能做一些简单的计算,而大量需要并行计算的工作都交给 GPU 实现。 • 另外需要注意的是,由于 CPU 存取显存时只能通过 PCI-Express 接口,速度较慢,因此不能经常进行,以免降低效率。通常可以在程序开始时将数据复制进GPU显存,然后在 GPU内进行计算,直到获得需要的数据,再将其复制到系统内存中。

  47. CUDA逻辑结构及内存结构(3/6) • 在程序实际运行时,CUDA 会产生很多在 Device 上执行的线程(thread),每个线程都会执行kernel 程序段,根据索引号(index)的不同,获取不同的数据进行计算。

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

  49. CUDA逻辑结构及内存结构(5/6) • 执行相同程序的块,可以组成格子(grid)。不同块中的线程无法从对方的共用显存(shared memory)中读取数据,因此不同块中的线程合作效率较低。 • 利用这种模式,可以使程序不用担心 GPU 上实际能同时执行的线程数目限制。

  50. CUDA逻辑结构及内存结构(6/6) • 例如,一个具有少量执行单元的 GPU,可能会把各个块中的线程循环执行,而非同时执行。 • 不同的格子可以执行不同的程序(即 kernel)。

More Related