随着科学技术的不断发展,超级计算机正在经历着由Pataflop(千万亿次)向Exascale(百亿亿次)的过渡。Exascale超级计算是百亿亿次高性能计算技术,是超级计算领域的下一个里程碑,linpack性能是目前全球速度最快超级计算机Pataflop(千万亿次)级别的千倍以上。
在这之前,我们先来大概了解一下GPU计算及其发展历史。其实GPU(图形处理器)计算模型就是在一个异构计算模型中同时使用了 CPU 和 GPU(图形处理器)。应用程序的顺序部分在 CPU 上运行,计算密集型部分在 GPU(图形处理器)上运行。虽然应用程序使用了 GPU(图形处理器)的卓越性能来提升运行性能,但对用户而言,他们所能感知到的将仅仅是运行速度更快的应用程序。
应用程序开发人员将需要修改其应用程序中的计算密集型内核,并将其关联到 GPU(图形处理器)。应用程序的其它部分将仍然依赖于 CPU 进行处理。将一项功能关联到 GPU(图形处理器)需要重写功能,以在其中支持并行处理,同时添加“C”关键字以在应用程序和 GPU(图形处理器)之间往返传输数据。
GPU(图形处理器)计算得到了 NVIDIA(英伟达)被称作 CUDA 架构的 GPU(图形处理器)大规模并行架构的支持。CUDA 架构由 100 多个处理器内核组成,这些内核能够协作运行来处理应用程序中的数据集。
Tesla 10 系列 GPU(图形处理器)是第二代 CUDA 架构,包含有专为科学应用程序优化的特性,如 IEEE 标准双精度浮点硬件支持、以分布于 GPU(图形处理器)中的共享内存形式存在的本地数据高速缓存、以及结合内存访问等。
GPU(图形处理器)计算的发展历史
图形芯片最初用作固定功能图形管线。随着时间的推移,这些图形芯片的可编程性日益增加,在此基础之上 NVIDIA®(英伟达™)推出了第一款 GPU(图形处理器)。1999-2000 年间,计算机科学家,与诸如医疗成像和电磁等领域的研究人员,开始使用 GPU(图形处理器)来运行通用计算应用程序。他们发现 GPU(图形处理器)具备的卓越浮点性能可为众多科学应用程序带来显著的性能提升。这一发现掀起了被称作 GPGPU(GPU(图形处理器)通用计算)的浪潮。
此处需要解决的问题为 GPGPU 要求使用图形编程语言来对 GPU(图形处理器)进行编程,如 OpenGL 和 Cg 等。开发人员需要使其科学应用程序看起来像图形应用程序,并将其关联到需要绘制三角形和多边形的问题。这一方法限制了 GPU(图形处理器)的卓越性能在科学领域的充分发挥。
NVIDIA(英伟达)认识到了让更多科学群体使用这一卓越性能的强大优势,决定投资来修改 GPU(图形处理器),使其能够完全可编程以支持科学应用程序,同时还添加了对于诸如 C 和 C++ 等高级语言的支持。此举最终推动诞生了面向 GPU(图形处理器)的 CUDA 架构。
CUDA 并行架构与编程模型
CUDA 并行硬件架构伴随有 CUDA 并行编程模型。该模型提供了一个抽象集合,能够支持实现精细和粗放级别的数据与任务并行处理。编程人员可以选择使用高级语言(如 C、C++ 和 Fortran)或驱动程序 API(如 OpenCL 和 DirectX-11 Compute)来实现并行处理。
NVIDIA(英伟达)率先提供支持的语言为 C 语言。一系列面向 CUDA 的 C 语言软件开发工具支持基于 C 语言,使用最小的关键字或扩展集合来对 GPU(图形处理器)进行编程。对于 Fortran 和 OpenCL 等语言的支持将很快推出。
CUDA 并行编程模型可支持编程人员将问题划分为粗放子问题,以并行方式独立解决。之后编程人员再对子问题进行精细并行处理,以便所有子问题能够以并行方式协作解决。>>
百亿亿次计算的飞速发展
在Exascale超级计算发展领域,中国、美国、日本、欧盟等国家展开了新一轮的超级计算机竞赛。今年6月的世界500强超级计算机的排名中,日本富士通代号为“K”的超级计算机超过了中国的天河一号A型超级计算机,排名第一位,运算速度为8.612千万亿次每秒。
从千万亿次到亿亿次,在2008年下半年公布的全球超级计算机Top500榜单中,IBM为美国能源部LosAlamos国家实验室建造的“Roadrunner走鹃”计算机系统运算速度达到了1.026Pflop/s(千万亿次/秒),这是首次计算峰值突破千万亿次。随后,全球Top500前十套超算系统全部达到千万亿次级别,而中国超算Top100前六套系统均超过了千万亿次。
从2008年到2011年,HPC的计算能力提升十倍,曾经遥不可攀的一个高度,只不过在短短三年内成为现实。我们将目光看的再远一点,1998年,HPC首次突破万亿次,到2008年达到千万亿次,十年间HPC计算能力提高三个数量级。
百亿亿次,看上去像是不可能完成的任务,不过从HPC进化史来看,一个个不可能都已经成为现实。如今,HPC业界已经将百亿亿次列为下一个奋斗目标,包括英特尔、NVIDIA等芯片厂商,以及诸多服务器系统厂商,也开始了向百亿亿次迈进的脚步。
2010年NVIDIA签署了一个代号Echelon的项目。该项目属于美国国防部下属DARPA(国防高级研究计划署)的“普及高性能计算计划”。计划的目标是在2014年提供一台原型机架式服务器,功耗不超过57KW,性能达到1PFLOPS。下一步则是到2018年,建成达到Exascale性能的原型系统。
当时,竞争这一项目的有来自NVIDIA、Intel、麻省理工学院和Sandia国家实验室的四组团队。William Dally表示,NVIDIA的主要着眼点是提升每瓦性能,并提供可以打造从Tegra到Tesla的各种产品的通用架构。他们计划在芯片内集成256MB SRAM,并尽量降低SRAM缓存延迟。
为了进一步降低功耗,NVIDIA团队引入了根据不同应用需要的动态配置设计。他们将每次浮点运算的功耗从Fermi架构的200皮焦,下降到Echelon 32nm试验架构下的10皮焦。
内核架构
Echelon其架构包括128个流式多处理器单元(SMU),每个SMU包含8个64-bit浮点运算核心(每个核心在一个时钟周期内可进行4次双精度浮点运算)。根据估算,1024个核心的Echelon芯片运算能力在10TFLOPS左右。而该芯片的手机版本将只有一组SMU,8个核心,双精度浮点运算能力78MFLOPS。
和目前的架构相比,Echelon 1024个流处理单元的数量是Fermi的两倍,而且其核心在一个时钟周期内可进行4次双精度浮点运算,现有架构只有1次。
和x86多核心处理器遇到的挑战一样,在1024核芯片上编程的难度可想而知。Dally承认在编程模型方面大家肯定会遇到海量的问题,而解决这些问题将成为未来10年甚至更长时间中的主要工作。
是CPU、还是CPU+GPU,是目前实现百亿亿次计算的两个主要方向,这也要从两种架构的优缺点谈起,对于异构架构,最大的问题在于编程困难,不具有通用性,如果针对单一应用重新开发新程序会使超算的使用成本很高。
不仅这样,我们可以记得在今年的SC11大会上,NVIDIA宣布了勃朗峰计划(Mont-Blancproject),该计划的目标是使用超节能的商用组件开发一个欧洲的exascale级别超级计算机,并与全球超级计算机500强的超算机想媲美。
勃朗峰计划将主要依赖于NVIDIA公司的Tegra ARM处理器以作为GeForce GPU加速器的流量控制。第一台原型机将配有256个ARM处理器以及大量的NVIDIA GPU。而明年将发布的CUDA ARM开发工具将包括一个有四核NVIDIA Tegra3ARM处理器和支持CUDA技术GPU的主板,以及千兆以太网、SATA和USB端口,其价格与其他详细信息还未公布。
ARM与GPU(或者其他专门的加速器)的组合将能够迎接x86巨人在科学技术计算领域的最强有力挑战。诚然,现在还没有一个ARM HPC软件的系统,尽管HPC用户通常都不太愿意在新技术上涉足太多,但如果最终结果是更高性能和更低成本,他们还是会很高兴来建立和优化自己的软件的。
如果这一组合能够在HPC成功地证明自身,那么其商业化并开始出现在企业数据中心将只是一个时间问题。
美国橡树岭国家实验室的一位专家曾对笔者坦言:“我更加看好CPU+GPU的异构方式,在编程方面MIC并不比CUDA简单,而在MIC实现百亿亿次的过程中结构还可能会变,这会导致编程更加复杂。而CUDA编程则会越来越广泛,并且异构要更加节能,实现起来更加现实。”除了这位专家,笔者所接触的多位HPC专家都更加看好异构,认为这是一场HPC的新趋势,是未来的发展方向。
随着摩尔定律的进化,超级计算机的性能也正在迅速提升,但因此带来的功耗问题也越来越显著,比如一度全球最快的我国天河一号A,要想达到百亿亿次计算级别,必须付出16亿瓦的耗电量,相当于200万个家庭的用电量。未来技术发展会更快,性能飞速发展的同时,功耗则是厂商需要仔细考量的问题了。
相关报道:
- 新型系统可以让无人机高速穿越树林2015-11-10
- 研究者攻破iOS 9安全机制 获100万美元奖金2015-11-03
- 微软计划为Win7/8设备自动推送Win10升级2015-10-30
- 谷歌公布Android M潜在命名:棉花糖和奶昔上榜2015-08-15
- 如何自Windows 10滚回老版系统:仅30天期限2015-08-07
本类最新
本类最热
科技视界
要闻推荐
今日视点
热点专题
新闻图片
- 新闻排行
- 评测排行