一种cpu串行程序移植到mic平台的方法

文档序号:6516847阅读:214来源:国知局
一种cpu串行程序移植到mic平台的方法
【专利摘要】本发明提供了一种实现CPU串行程序移植到MIC平台的方法,涉及CPU串行程序修改和MIC并行程序移植。该方法包括:按照MIC程序格式要求修改原CPU串行程序,得到新版本的CPU串行程序;然后开发CPU版本的OpenMP版本并行程序;最后把OpenMP程序移植到MIC平台上并进行进一步的优化。本发明利用先修改CPU串行程序后移植到MIC平台的方法,充分利用CPU和MIC上的资源,快速、有效地实现CPU串行程序移植到MIC平台的方法。
【专利说明】—种CPU串行程序移植到MIC平台的方法
[0001]
【技术领域】
[0002]本发明涉及计算机高性能计算领域、并行计算领域,具体涉及一种实现CPU串行程序移植到MIC平台的方法。
【背景技术】
[0003]MIC (Many Integrated Core)是Intel公司推出的众核处理器,跟通用的多核至强处理器相比,MIC众核架构具有更小的内核和硬件线程,众核处理器计算资源密度更高,片上通信开销显著降低,更多的晶体管和能量,能够胜任更为复杂的并行应用。
[0004]Intel MIC产品基于X86架构,基于重核的众核处理器,包含50个以上的核心,以及512bit的向量位宽,双精性能超过lTFlops。
[0005]Intel MIC产品采用PC1-E的方式与主板连接,如图1所示,因此MIC做计算时需要先把数据由CPU内 存传递到MIC内存中。另外,MIC作为众核处理器,并行线程数较多,与CPU平台上的并行方式有很大的不同,正确的MIC并行程序开发过程将获得快速、高效的结果,否则将不能有效地、合理地利用MIC加速。
[0006]可见,为实现MIC并行程序开发的需求,需要一种快速、有效地实现CPU串行程序移植到MIC平台的方法。

【发明内容】

[0007]本发明的目的在于实现一种快速、有效地CPU串行程序移植到MIC平台的方法,提高MIC并行程序开发效率,降低MIC并行程序开发周期,该方法按照先修改CPU串行程序后移植到MIC平台的原理,把需要在MIC上做的工作尽量先在CPU平台上修改,降低了程序的开发难度,同时有利用bug的调试。可以分为以下步骤:
(I)CPU串行程序分析
对于CPU串行程序,首先需要测试串行程序中的热点函数,以及分析热点函数的并行
性:
a)热点测试
根据时间的测试结果确定热点函数,作为后面移植的重点代码模块。
[0008]b)并行性分析
找出热点代码后,需要分析热点部分的算法、数据特点,根据算法和数据的特点分析其是否可以并行,确定其并行性。
[0009]c)确定MIC内核使用的数组
根据对串行程序的分析,确定哪些模块需要移植到MIC平台上运行,对于需要运行上MIC平台上的代码内的数据进行分析,确定数组在代码中的什么位置传递到MIC上,传递的方向是in、out、还是inout,以及每次传递时的大小等信息。[0010](2)仿MIC格式的CPU串行程序
MIC程序相对CPU程序比较复杂,当出现bug时,调试的难度也要比CPU程序大很多,为了降低MIC程序开发难度和周期,可以把一些MIC上的移植工作提前在CPU平台上实现,具体涉及下面几个方面:a)修改成可并行算法
对于CPU串行程序,有些代码理论上可以并行,但经过CPU版本的优化之后导致代码不能直接并行化,这时需要根据并行算法的要求修改原程序,改成可并行的模式;有些模块理论上是可以并行的,但串行算法无法直接并行化,需要重新设计并行算法。
[0011]b)数组修改
根据Mic并行程序对数组格式的要求对串行程序中的数组进行修改。
[0012]根据前面几条的修改方式,对原CPU程序修改成一个仿MIC格式的CPU串行程序,为后面的移植工作做大量的准备,这样有利于后面MIC程序的开发和调试。
[0013](3) CPU平台OpenMP版本程序
基于CPU多核平台和步骤2得到的串行程序利用OpenMP并行编程模型实现其OpenMP并行程序,并保证其结果的正确性。
[0014]为了满足程序往MIC平台的移植,设计CPU版本的OpenMP程序需要充分考虑扩展性,因为,MCI平台需要设置数百个线程,而CPU平台仅几十个线程。
[0015](4) MIC并行程序基本版本
根据对原程序数组的分析,把CPU平台上的OpenMP版本程序移植到MIC平台,主要包
括:
a)实现Offload语句
根据对数组的分析,完成offload语句,实现数据的传递和MIC内核的调用。
[0016]b)修改OpenMP线程数
根据MIC核的数目设计OpenMP的线程数,充分利用MIC的计算资源。
[0017](5) MIC并行程序优化版本
根据步骤4实现的基本版本的MIC并行程序,利用MIC的优化技术进一步提高并行程序的性能,主要优化包括两个方面:通信优化和内核优化。
[0018]a) MIC通信优化
MIC计算需要CPU与MIC之间进行数据的传递,合理的利用通信优化技术有利用提高MIC并行程序的性能,主要手段包括:nOCOpy、异步传递等。
[0019]b) MIC内核优化
MIC内核的优化对其性能更为重要,常见的方法有:并行度、Cache、向量化等。
[0020]本发明的有益效果是:提出一种MIC程序开发的过程,可以快速、有效地实现CPU串行程序移植到MIC平台上,降低MIC并行程序开发的周期和难度,减少bug的调试时间。
【专利附图】

【附图说明】
[0021]附图1 CPU+MIC协同计算方式示意图;
附图2 CPU串行程序移植到MIC平台的过程示意图。【具体实施方式】
[0022]为了使本发明的目的、技术方案和优点更加清晰,下面结合附图和实施例,对本发明作以下详细说明。
[0023]( I) CPU串行程序分析
对于CPU串行程序,首先需要测试串行程序中的热点函数,以及分析热点函数的并行
性:
a)热点测试
通常测试热点有两种方法:(1)对每个函数模块添加时间函数,根据打印出来的时间确定热点模块;(2)使用Intel vTune Amplifier XE等热点分析工具确定热点模块。根据时间的测试结果确定热点函数,作为后面移植的重点代码模块。
[0024]b)并行性分析
找出热点代码后,需要分析热点部分的算法、数据特点,根据算法和数据的特点分析其是否可以并行,确定其并行性。
[0025]c)确定MIC内核使用的数组
根据对串行程序的分析,确定哪些模块需要移植到MIC平台上运行,对于需要运行上MIC平台上的代码内的数据进行分析,确定数组在代码中的什么位置传递到MIC上,传递的方向是in、out、还是inout,以及每次传递时的大小等信息。
[0026](2)仿MIC格式的CPU串行程序
MIC程序相对CPU程序比较复杂,当出现bug时,调试的难度也要比CPU程序大很多,为了降低MIC程序开发难度和周期,可以把一些MIC上的移植工作提前在CPU平台上实现,具体涉及下面几个方面:a)修改成可并行算法
对于CPU串行程序,有些代码理论上可以并行,但经过CPU版本的优化之后导致代码不能直接并行化,这时需要根据并行算法的要求修改原程序,改成可并行的模式;有些模块理论上是可以并行的,但串行算法无法直接并行化,需要重新设计并行算法。
[0027]b)数组修改
CPU串行程序中使用的数组定义的形式有可能无法在MIC上直接使用,这时需要对数组的定义进行修改,如C语言程序,多维数组改成一维数组,才能进行CPU与MIC之间的数据传递。另外,考虑到向量化和访存之间的关系,有时还需要对数组的访问方向进行修改,从而也需要改变数组的定义形式(如做行列变换)。总之,根据MIC对数组使用和CPU串行程序之间的区别,提前把数组修改,方便程序的调试。
[0028]根据前面几条的修改方式,对原CPU程序修改成一个仿MIC格式的CPU串行程序,为后面的移植工作做大量的准备,这样有利于后面MIC程序的开发和调试。
[0029](3 ) CPU平台OpenMP版本程序
基于CPU多核平台和步骤2得到的串行程序利用OpenMP并行编程模型实现其OpenMP并行程序,并保证其结果的正确性。
[0030]为了满足程序往MIC平台的移植,设计CPU版本的OpenMP程序需要充分考虑扩展性,因为,MCI平台需要设置数百个线程,而CPU平台仅几十个线程。
[0031](4) MIC并行程序基本版本根据对原程序数组的分析,把CPU平台上的OpenMP版本程序移植到MIC平台,主要包
括:
a)实现Offload语句
根据对数组的分析,完成offload语句,实现数据的传递和MIC内核的调用,offload语句按下面格式实现:
【权利要求】
1.一种实现CPU串行程序移植到MIC平台的方法,该方法包括:CPU串行程序和MIC并行程序, 所述CPU串行程序是指CPU串行程序的分析和修改、以及OpenMP并行程序实现; 所述MIC并行程序是指CPU程序移植到MIC平台,以及MIC并行程序的优化。
2.按照权利要求1所述的方法,其特征在于,所述CPU串行程序将要程序分析、修改、以及OpenMP并行程序实现,具体包括: CPU串行程序分析; 仿MIC格式的CPU串行程序修改; CPU平台OpenMP版本程序实现。
3.按照权利要求2所述的方法,其特征在于,所述CPU串行程序分析,具体包括: 利用打印时间或vTune工具测试方式测试串行程序中的热点模块; 根据算法特点和数据特点分析热点模块是否可以并行; 根据可并行的模块,找到MIC内核将会使用到的数组。
4.按照权利要求2所述的方法,其特征在于,所述仿MIC格式的CPU串行程序修改,具体包括: 原程序算法修改,修改成可并行的代码; 数组修改,修改成适合MIC并行程序格式的数组形式。
5.按照权利要求2所述的方法,其特征在于,所述CPU平台OpenMP版本程序实现是指基于CPU多核平台,利用OpenMP并行模型实现OpenMP版本并行程序。
6.按照权利要求1所述的方法,其特征在于,所述CPU程序移植到MIC平台,以及MIC并行程序的优化,具体包括: MIC并行程序基本版本的实现; MIC并行程序的优化。
7.按照权利要求6所述的方法,其特征在于,所述MIC并行程序基本版本的实现,具体包括: Offload语句的实现,实现CPU和MIC之间的数据传递,以及MIC内核的调用; 修改OpenMP线程数,根据MIC核的数目设计OpenMP的线程数,充分利用MIC的计算资源。
8.按照权利要求6所述的方法,其特征在于,所述MIC并行程序的优化,具体包括: MIC通信优化,利用nocopy、异步等技术减少CPU和MIC之间通信的时间; MIC内核优化,利用并行度优化、cache局部性原理、向量化优化等手段优化MIC内核,提高MIC并行程序的性能。
【文档编号】G06F9/44GK103530132SQ201310517767
【公开日】2014年1月22日 申请日期:2013年10月29日 优先权日:2013年10月29日
【发明者】张广勇, 沈铂, 卢晓伟, 吴绍华, 张清 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1