面向异构并行系统的典型编程模型的分析与研究

来源 :中国新通信 | 被引量 : 0次 | 上传用户:lqlq2323
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】 随着半导体技术的发展,在高性能计算领域中异构众核系统的设计已经成为技术发展的趋势和学术研究的热点。随之而来的基于异构系统上的编程,主要面临以下几个方面的挑战:第一方面就是针对异构平台同时在CPU+GPU上编程复杂;第二就是针对异构平台的移植性。原有的编程模型(CILK、OpenMP、CUDA)都是针对特定平台的,可移植性比较差。那么针对异构平台的编程模型随之产生。本文针对PGI等公司提出的异构平台的编程模型openACC进行分析与研究。
  【关键词】 异构众核系统 异构编程模型 GPU openACC[1]
  随着硬件技术的发展,在高性能计算领域中从单核到多核的发展,但由于功耗、互连、设计复杂度三方面因素的限制,性能并不能通过增加计算核心数带来提升,众核设计就成为技术发展的趋势和学术研究的热点。目前面向高性能的众核处理器分为同构加速器的方式和异构加速器的方式。同构加速器如:Intel MIC/Xeon Phi众核协处理器;nVIDIA公司自家GPU架构General Purpose computing on graphics Processing Units GPGPU平台。异构加速器,2016年6月份第47届全球顶级超级计算机TOP500榜单中位于榜首的Sunway TaihuLight - Sunway MPP, Sunway SW26010 260C 便是异构众核处理器结构。第二名的天河2 号结合Intel Ivy Bridge 多核处理器和Intel Xeon Phi 众核协处理器的混合架构。
  为了解决异构编程带来的复杂性和移植性的问题,异构平台上的编程模型已经被广泛的使用和优化。如:PGI公司等提出的openACC;Khronos Group宣布成立GPU通用计算开放行业标准工作组,以苹果的提案为基础创立OpenCL行业规范;微软Visual Studio和C++编程语言的新扩展C++ AMP等都是异构平台的并行编程模型[2]。本文首先针对异构平台面临得挑战做简要描述,分别分析和研究OpenACC异构并行编程模型,总结未来异构编程模型的发展。
  一、异构平台面临的挑战
  CPU-GPU异构众核系统与同构系统相比在编程方面面临着一些问题。第一,GPU之间的通信、CPU与GPU之间的通信、GPU存储空间的管理都是用户负责的;第二,可移植性差,由于第一种描述的,CPU-GPU之间的通信都是用户负责的,而异构平台具有不同的硬件架构、编程模型、cache大小等,代码移植比较复杂,及时移植后,很难达到高性能,需要深入了解新的异构平台特点,针对性的重新进行性能优化。第三,GPU的代码的调试比较困难,多个线程间是异步执行的,产生的错误或者异常是很难复现的,导致错误或者异常很难被定位,只有通过逻辑判断,或者打印输出等辅助调试。
  二、OpenACC编程模型
  PGI公司等提出的OpenACC克服了上一章节中提到的异构平台面临的挑战,编程简单,在串行代码上增加几句编程制导就实现了并行化,再经过异构平台特点和串行程序的特点进行性能调优,就可以实现程序的并行化。更新硬件时,需要手工改动的代码仅仅是编译和运行的MAKEFILE文件,代码的手工改动量是很小的。
  2.1 OpenACC的执行模型
  OpenACC的执行模型是host指导加速设备的运行,形成协作的一种执行模型。在大型程序执行过程中,串行部分是host执行,当出现热点函数的计算时,在host控制下热点函数交给加速设备执行。热点函数在加速设备上的执行过程:在加速设备上分配私有数据空间并加载热点函数代码;将所需的数据从MMEM加载到加速器的私有数据空间中,加速设备进行执行,并将结果从加速设备的数据空间传输到MMEM中;释放掉加速设备上申请的数据空间。
  2.2 OpenACC的存储模型
  在同构系统上,CPU的片内存储模式是软件cache结构;片外存储模式则是同享的模式。因此数据只能分配在片外存储中,且数据是同享的,并不需要显示的进行CPU和加速设备之间的通信。而在异构系统中,数据可分配在CPU或者加速设备的局部存储的多个位置,数据的分配和管理起来比较复杂,加速设备间的通信是通过直接内存访问(Direct Memory Access)的方式由程序员进行显示的调用才能实现。
  2.3 OpenACC指令语法
  OpenACC指令语法包括:加速计算构件、循环映射构件、组合编译、加速数据区构件、同步和执行导语、加速编译指示的子句等。下面以c代码为例简单介绍OpenACC指令语法。
  Fortran语言编译指示格式如下:(!$acc间不能有其它字符,其它类似)
  !$acc directive-name [clause[ [,] clause]...] new-line
  c$acc directive-name [clause[ [,] clause]...] new-line
  *$acc directive-name [clause[ [,] clause]...] new-line
  三、未来异构编程模型的发展
  异构编程模型是否能提供更加高效的性能优化,程序在异构平台上并行性的研究的最终目的是想达到高效的性能加速。而现有的异构编程模型提供的构件仍然需要程序员了解异构的架构,硬件特征,才能达到想要达到的性能优化,那么,根据不同的硬件细节设置不同的编程导语,便成为未来研究的一个方向。
  参 考 文 献
  [1]OpenAcc: Directives for Accelerators. 2013. http://www.openacc-standard.org/
  [2]王文義,王晗. 基于多核与众核结构的并行编程模型研究[J].中原工学院报,2014,03:52-56.
其他文献
慢性阻塞性肺病(COPD)是指慢性支气管炎、肺气肿和支气管哮喘后期伴有支气管阻塞的一组疾病。在发作间期呼吸肌的康复治疗是目前国内外关注的新问题。原因是COPD引起的呼吸衰
今年七、八月间,笔者参加上海市公共客运行业中、高级管理人员赴英培训团,在英国伦敦以及英格兰、苏格兰地区学习考察出租汽车管理。通过与英国交通部、伦敦公共车辆办公室及
杠杆是一个能绕着固定点(支点)作为轴来转动的杆,通过改变力点与支点,支点与重点之间的距离,可以改变力的大小.杠杆思想运用于企业管理,借助于杠杆机械效益放大杠杆一端的动
期刊
【摘要】将TD-LTE网络引入铁路货场,以达到提高作业效率的目的。本文以在建的沙良货场为例,通过对WLAN系统及TD-LTE系统方案的讨论,对比各个系统的优缺点。此外,利用LTE系统级仿真,论证了TD-LTE网络的可行性。  【关键词】铁路货场 TD-LTE WLAN 系统级仿真  一、引言  近年来,铁路货运业务迅猛发展,各地区开始了铁路物流园区及货运车站的建设热潮。同时,随着铁路货场场区面积的
回顾语言国际发展的历史,可以得知语言的扩散势力主要来自于政治、军事与经济领域,而与语言本身的结构、词汇量的多寡并无关系。美英两国倾力向世界推行英语,英语正成为当今世界
一、技术调整 节油必须以汽车良好的技术状态为基础,而汽车技术状态又取决于日常正确的技术调整。其技术状态应具备:发动机易启动,满载一脚能制动,平地空载一人能推动。要想
针对高速机床滚珠丝杠的摩擦发热导致丝杠产生轴向热伸长的问题,采用丝杠和螺母中空冷却的方法抑制丝杠温升,通过在不同进给速度下的实心滚珠丝杠与空心滚珠丝杠的稳态仿真对
把SIFT-SUSAN算法应用在零件图像的特征提取上,检测图像的特征极值点。首先对采集的图像进行均值滤波和Laplace锐化预处理,以此增强图像的边缘响应;利用高斯卷积和高斯差分建立尺度空间域;再利用SIFT算法提取空间极值点,并引入SUSAN算子检测空间角点;计算两种特征点的位置,生成特征描述子,实现零件图像的匹配。通过对垫片、螺母和轴承盖零件分别采用SIFT算法和SIFT-SUSAN算法进行对
无形资产风险投资评价是财务管理的难题之一,其关键是合理、准确地估计无形资产产生的现金流量。由于无形资产产生的现金流量往往具有高度的不确定性,通常采用现金流量的期望值
针对铝用炭阳极焙烧过程中的多目标且目标不一致的问题,建立了炭阳极焙烧系统的混合逻辑动态MLD(Mixed Logical Dynamical)模型,详细的介绍了阳极焙烧系统的混合逻辑动态模型的