概述
该篇论文由西交大的巨涛、朱正东、董小社所写。他们首先从不同方面分析对比了当前不同异构系统的特点,揭示了异构众核系统相对传统多核并行系统的优势及其发展趋势。然后分析了异构系统编程模型以及性能优化的研究现状、所存在的问题和面临的挑战,提出了进一步的研究方向。接着对GPU 和MIC两种异构系统进行性能测试,验证了两种异构系统不同的应用特点,为用户选择具体异构系统提供参考。最后作者提出了将GPU和MIC结合的混合异构系统,分析了在该混合异构系统下必须要研究和解决的问题。
为了达到高性能低功耗的目的,异构众核系统采用主处理器+协处理器的体系架构,该架构下主处理器(CPU)负责处理复杂的逻辑控制任务,协处理器负责处理计算密度高、逻辑分支简单的大规模数据并行任务,两者协同为具体的应用提供高效的计算平台。
当前高性能计算领域四种典型的异构系统架构:
CELL BE、CPU+GPU、APU、CPU+MIC
1.CELL BE:
依据CBEA(Cell Broadband Engine Architecture)技术所实现,以PowerPC架构为基础,以POWER处理单元为核心(PPE),结合8个协处理单元(SPEs)所构成的微处理器。CELL处理器使用成本较高,现在只用在一些高端服务器上。程序开发难度较大,限制了CELL处理器在通用高性能领域的普及。
2.CPU+GPU
GPU以大量的线程实现面向高吞吐量的数据并行计算,适合于处理计算密度高、逻辑分支简单的大规模数据并行任务.CPU具有复杂的逻辑控制单元和大容量的缓存,有低的数据传送延迟,能够适应各种不同类型的运算情况,尤其擅长复杂的逻辑运算.采用CPU+GPU架构,让GPU处理数据密集型的并行任务,而由CPU进行复杂的逻辑事务处理,降低计成本和能耗.
3.APU
APU的主要特点是内含由标量和矢量硬件构成的全部处理能力,由于将两种计算核心整合在一 起,受芯片空间和制造工艺及散热的制约,处理器的主频及处理核数目受到限制,同时当前APU中X86CPU和GPU矢量处理器还没有实现无缝集成,所以其整体的计算性能与主处理器和协处理器分离的架构相比稍有不足.
4. CPU+MIC
通过对传统的微处理器进行向量扩展,然后将多个扩展后的核心整合在一起,来进一步提升 计算能力。MIC协处理器的独特之处在于:它不像传统的加速器,它本身具有独立的微操作系统μOS,更像是一个能被访问、被编程、功能全面的高性能计算节点,在应用程序看来,它如同一个运行着自身的基于LINUX的操作系统的计算机.
GPU编程:
CUDA为GPU通用计算提供了统一的编程接口,提供近似高级语言的语法特性,突破了以往GPU编程时必须要深入了解底层硬件和图形处理接口限制,简化了GPU编程难度.但CUDA并不是一种完全透明的语言,它没有封装存储系统的异构性,在进行CUDA程序开发时,程序员还是需要对各种存储器的特点和局限性有清楚的认识,要根据硬件特点将任务进行合理分解,进行具体的线程配置,并在编程时对数据传输、存储器访问及指令流进行优化,从根本上增加了编程难度和程序调试难度, 且容易出错.从而影响了GPGPU程序的开发效率.
MIC编程:
MIC架构的优点之一是可运行已有的X86应用程序,而不用将程序完全移植到一个新的编程环境中,可以比较方便的利用协处 理器的高计算性能.MIC架构处理器能够支持现有的标准化编程工具,大大方便了开发人员.MIC架构在单个芯片中融合了众多处理 核心,这些核心都能够通过使用标准的C、C++和FROTRAN进行编程.MIC卡拥有灵活的编程方式,即可以作为一个协处理器存 在,又可以被看作是一个独立的节点。较常用的编程模式主要有三种:(1)以CPU为主MIC为辅的编程模式;(2)CPU和MIC对等的编程模式;(3)MIC原生编程模式。
. 提高异构系统的可编程性可以从以下方面进行深入的研究:第一,将原有的通用并行编程模 型编写的并行程序通过源到源编译技术转换成满足特定异构系统要求的目标代码;第二,通过扩展现有的通用编程语言,在原有的程序中加入一些指导语句,结合编译技术,实现通用程序到异构系统目标代码的转换;第三,提供一种和异构系统底层硬件架构完全独立的共享虚拟存储的编程模型和语言,结合编译器和相应的运行时来提高异构系统的可编程性,可扩展性及性能;第四,实现完全自动的将通用串行程序转换成满足异构系统要求的目标程序。
目前针对异构系统性能优化主要通过设计编译器、提供优化工具及函数库、设计运行时系统三种方式实现。
GPU/MIC性能测试:
结论:GPU适合处理细粒度大规模的数据并行型的应用,这类应用属于SIMD运算模式,所有运算核心都执行同一个指令,只是作用在不同的数据上; MIC更适合处理粗粒度的任务并行类应用,它的特点是对一批数据反复进行大量运算,属MIMD的运算模式.
该混合异构系统将两种不同的加速卡整合在同一个计算节点内,要能将两种不同的加速设备的优势充分发挥出来,实现较好的协同计算,在编程时要考虑和解决的问题会更复杂.如何划分任务,如何在两种加速设备GPU和MIC间进行任务调度,如何根据所处理的任务特点在两者之间进行很好的协调,如何设计合理的通信机制,还要有可同时编译两种加速设备代码编译器的支持等,这些将会是该混合异构系统下必须要研究和解决的问题.
最后
以上就是飞快玫瑰为你收集整理的GPU相关——《异构众核系统综述》的全部内容,希望文章能够帮你解决GPU相关——《异构众核系统综述》所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复