一种CPU串行程序移植到MIC平台的方法技术

技术编号:9596601 阅读:92 留言:0更新日期:2014-01-23 02:08
本发明专利技术提供了一种实现CPU串行程序移植到MIC平台的方法,涉及CPU串行程序修改和MIC并行程序移植。该方法包括:按照MIC程序格式要求修改原CPU串行程序,得到新版本的CPU串行程序;然后开发CPU版本的OpenMP版本并行程序;最后把OpenMP程序移植到MIC平台上并进行进一步的优化。本发明专利技术利用先修改CPU串行程序后移植到MIC平台的方法,充分利用CPU和MIC上的资源,快速、有效地实现CPU串行程序移植到MIC平台的方法。

【技术实现步骤摘要】
【专利摘要】本专利技术提供了一种实现CPU串行程序移植到MIC平台的方法,涉及CPU串行程序修改和MIC并行程序移植。该方法包括:按照MIC程序格式要求修改原CPU串行程序,得到新版本的CPU串行程序;然后开发CPU版本的OpenMP版本并行程序;最后把OpenMP程序移植到MIC平台上并进行进一步的优化。本专利技术利用先修改CPU串行程序后移植到MIC平台的方法,充分利用CPU和MIC上的资源,快速、有效地实现CPU串行程序移植到MIC平台的方法。【专利说明】—种CPU串行程序移植到MIC平台的方法
本专利技术涉及计算机高性能计算领域、并行计算领域,具体涉及一种实现CPU串行程序移植到MIC平台的方法。
技术介绍
MIC (Many Integrated Core)是Intel公司推出的众核处理器,跟通用的多核至强处理器相比,MIC众核架构具有更小的内核和硬件线程,众核处理器计算资源密度更高,片上通信开销显著降低,更多的晶体管和能量,能够胜任更为复杂的并行应用。Intel MIC产品基于X86架构,基于重核的众核处理器,包含50个以上的核心,以及512bit的向量位宽,双精性能超过lTFlops。Intel MIC产品采用PC1-E的方式与主板连接,如图1所示,因此MIC做计算时需要先把数据由CPU内 存传递到MIC内存中。另外,MIC作为众核处理器,并行线程数较多,与CPU平台上的并行方式有很大的不同,正确的MIC并行程序开发过程将获得快速、高效的结果,否则将不能有效地、合理地利用MIC加速。可见,为实现MIC并行程序开发的需求,需要一种快速、有效地实现CPU串行程序移植到MIC平台的方法。
技术实现思路
本专利技术的目的在于实现一种快速、有效地CPU串行程序移植到MIC平台的方法,提高MIC并行程序开发效率,降低MIC并行程序开发周期,该方法按照先修改CPU串行程序后移植到MIC平台的原理,把需要在MIC上做的工作尽量先在CPU平台上修改,降低了程序的开发难度,同时有利用bug的调试。可以分为以下步骤: (I)CPU串行程序分析对于CPU串行程序,首先需要测试串行程序中的热点函数,以及分析热点函数的并行性: a)热点测试 根据时间的测试结果确定热点函数,作为后面移植的重点代码模块。b)并行性分析 找出热点代码后,需要分析热点部分的算法、数据特点,根据算法和数据的特点分析其是否可以并行,确定其并行性。c)确定MIC内核使用的数组 根据对串行程序的分析,确定哪些模块需要移植到MIC平台上运行,对于需要运行上MIC平台上的代码内的数据进行分析,确定数组在代码中的什么位置传递到MIC上,传递的方向是in、out、还是inout,以及每次传递时的大小等信息。(2)仿MIC格式的CPU串行程序 MIC程序相对CPU程序比较复杂,当出现bug时,调试的难度也要比CPU程序大很多,为了降低MIC程序开发难度和周期,可以把一些MIC上的移植工作提前在CPU平台上实现,具体涉及下面几个方面:a)修改成可并行算法 对于CPU串行程序,有些代码理论上可以并行,但经过CPU版本的优化之后导致代码不能直接并行化,这时需要根据并行算法的要求修改原程序,改成可并行的模式;有些模块理论上是可以并行的,但串行算法无法直接并行化,需要重新设计并行算法。b)数组修改 根据Mic并行程序对数组格式的要求对串行程序中的数组进行修改。根据前面几条的修改方式,对原CPU程序修改成一个仿MIC格式的CPU串行程序,为后面的移植工作做大量的准备,这样有利于后面MIC程序的开发和调试。(3) CPU平台OpenMP版本程序 基于CPU多核平台和步骤2得到的串行程序利用OpenMP并行编程模型实现其OpenMP并行程序,并保证其结果的正确性。为了满足程序往MIC平台的移植,设计CPU版本的OpenMP程序需要充分考虑扩展性,因为,MCI平台需要设置数百个线程,而CPU平台仅几十个线程。(4) MIC并行程序基本版本 根据对原程序数组的分析,把CPU平台上的OpenMP版本程序移植到MIC平台,主要包括: a)实现Offload语句 根据对数组的分析,完成offload语句,实现数据的传递和MIC内核的调用。b)修改OpenMP线程数 根据MIC核的数目设计OpenMP的线程数,充分利用MIC的计算资源。(5) MIC并行程序优化版本 根据步骤4实现的基本版本的MIC并行程序,利用MIC的优化技术进一步提高并行程序的性能,主要优化包括两个方面:通信优化和内核优化。a) MIC通信优化 MIC计算需要CPU与MIC之间进行数据的传递,合理的利用通信优化技术有利用提高MIC并行程序的性能,主要手段包括:nOCOpy、异步传递等。b) MIC内核优化 MIC内核的优化对其性能更为重要,常见的方法有:并行度、Cache、向量化等。本专利技术的有益效果是:提出一种MIC程序开发的过程,可以快速、有效地实现CPU串行程序移植到MIC平台上,降低MIC并行程序开发的周期和难度,减少bug的调试时间。【专利附图】【附图说明】附图1 CPU+MIC协同计算方式示意图; 附图2 CPU串行程序移植到MIC平台的过程示意图。【具体实施方式】为了使本专利技术的目的、技术方案和优点更加清晰,下面结合附图和实施例,对本专利技术作以下详细说明。( I) CPU串行程序分析 对于CPU串行程序,首先需要测试串行程序中的热点函数,以及分析热点函数的并行性: a)热点测试 通常测试热点有两种方法:(1)对每个函数模块添加时间函数,根据打印出来的时间确定热点模块;(2)使用Intel vTune Amplifier XE等热点分析工具确定热点模块。根据时间的测试结果确定热点函数,作为后面移植的重点代码模块。b)并行性分析 找出热点代码后,需要分析热点部分的算法、数据特点,根据算法和数据的特点分析其是否可以并行,确定其并行性。c)确定MIC内核使用的数组 根据对串行程序的分析,确定哪些模块需要移植到MIC平台上运行,对于需要运行上MIC平台上的代码内的数据进行分析,确定数组在代码中的什么位置传递到MIC上,传递的方向是in、out、还是inout,以及每次传递时的大小等信息。(2)仿MIC格式的CPU串行程序 MIC程序相对CPU程序比较复杂,当出现bug时,调试的难度也要比CPU程序大很多,为了降低MIC程序开发难度和周期,可以把一些MIC上的移植工作提前在CPU平台上实现,具体涉及下面几个方面:a)修改成可并行算法 对于CPU串行程序,有些代码理论上可以并行,但经过CPU版本的优化之后导致代码不能直接并行化,这时需要根据并行算法的要求修改原程序,改成可并行的模式;有些模块理论上是可以并行的,但串行算法无法直接并行化,需要重新设计并行算法。b)数组修改 CPU串行程序中使用的数组定义的形式有可能无法在MIC上直接使用,这时需要对数组的定义进行修改,如C语言程序,多维数组改成一维数组,才能进行CPU与MIC之间的数据传递。另外,考虑到向量化和访存之间的关系,有时还需要对数组的访问方向进行修改,从而也需要改变数组的定义形式(如做行列变换)。总之,本文档来自技高网
...

【技术保护点】
一种实现CPU串行程序移植到MIC平台的方法,该方法包括:CPU串行程序和MIC并行程序,所述CPU串行程序是指CPU串行程序的分析和修改、以及OpenMP并行程序实现;所述MIC并行程序是指CPU程序移植到MIC平台,以及MIC并行程序的优化。

【技术特征摘要】

【专利技术属性】
技术研发人员:张广勇沈铂卢晓伟吴绍华张清
申请(专利权)人:浪潮电子信息产业股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1