首页 / 专利库 / 专利权 / 第I章 / 国际申请 / 修改 / 一种CPU串行程序移植到MIC平台的方法

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

阅读:1发布:2023-02-25

专利汇可以提供一种CPU串行程序移植到MIC平台的方法专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种实现CPU串行程序移植到MIC平台的方法,涉及CPU串行程序 修改 和MIC并行程序移植。该方法包括:按照MIC程序格式要求修改原CPU串行程序,得到新版本的CPU串行程序;然后开发CPU版本的OpenMP版本并行程序;最后把OpenMP程序移植到MIC平台上并进行进一步的优化。本发明利用先修改CPU串行程序后移植到MIC平台的方法,充分利用CPU和MIC上的资源,快速、有效地实现CPU串行程序移植到MIC平台的方法。,下面是一种CPU串行程序移植到MIC平台的方法专利的具体信息内容。

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并行程序的性能。

说明书全文

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

[0001]

技术领域

[0002] 本发明涉及计算机高性能计算领域、并行计算领域,具体涉及一种实现CPU串行程序移植到MIC平台的方法。

背景技术

[0003] MIC(Many Integrated Core)是Intel公司推出的众核处理器,跟通用的多核至强处理器相比,MIC众核架构具有更小的内核硬件线程,众核处理器计算资源密度更高,片上通信开销显著降低,更多的晶体管和能量,能够胜任更为复杂的并行应用。
[0004] Intel MIC产品基于X86架构,基于重核的众核处理器,包含50个以上的核心,以及512bit的向量位宽,双精性能超过1TFlops。
[0005] Intel MIC产品采用PCI-E的方式与主板连接,如图1所示,因此MIC做计算时需要先把数据由CPU内存传递到MIC内存中。另外,MIC作为众核处理器,并行线程数较多,与CPU平台上的并行方式有很大的不同,正确的MIC并行程序开发过程将获得快速、高效的结果,否则将不能有效地、合理地利用MIC加速
[0006] 可见,为实现MIC并行程序开发的需求,需要一种快速、有效地实现CPU串行程序移植到MIC平台的方法。

发明内容

[0007] 本发明的目的在于实现一种快速、有效地CPU串行程序移植到MIC平台的方法,提高MIC并行程序开发效率,降低MIC并行程序开发周期,该方法按照先修改CPU串行程序后移植到MIC平台的原理,把需要在MIC上做的工作尽量先在CPU平台上修改,降低了程序的开发难度,同时有利用bug的调试。可以分为以下步骤:(1)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] (1)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语句按下面格式实现:
#pragma offload target(mic: mic_id) \
in(A,B: length(N * N)) \
out(C: length(N * N))
{}
b)修改OpenMP线程数
根据MIC核的数目设计OpenMP的线程数,充分利用MIC的计算资源。根据MIC核数目计算OpenMP线程数目,如Intel Xeon Phi SE10P产品含有61个核,其中一个核运行操作系统,那么OpenMP线程数可以设置为180或240(根据MIC程序优化技术,每个核上运行3个或4个线程性能较好)。
[0032] (5)MIC并行程序优化版本根据步骤4实现的基本版本的MIC并行程序,利用MIC的优化技术进一步提高并行程序的性能,主要优化包括两个方面:通信优化和内核优化。
[0033] a)MIC通信优化MIC计算需要CPU与MIC之间进行数据的传递,合理的利用通信优化技术有利用提高MIC并行程序的性能,主要手段包括:nocopy、异步传递等。
[0034] b)MIC内核优化MIC内核的优化对其性能更为重要,常见的方法有:并行度、Cache、向量化等。
[0035] 由本发明的技术方案可见,本发明该方法按照先修改CPU串行程序后移植到MIC平台的原理,把需要在MIC上做的工作尽量先在CPU平台上修改,降低了程序的开发难度,同时有利用bug的调试。通过实现一种快速、有效地CPU串行程序移植到MIC平台的方法,提高MIC并行程序开发效率,降低MIC并行程序开发周期和难度。
相关专利内容
标题 发布/更新时间 阅读量
一种修改纸 2020-05-11 922
多功能修改器 2020-05-12 324
已修改流同步 2020-05-12 34
一种面型修改油 2020-05-13 503
修改命令 2020-05-11 389
修改液笔 2020-05-11 350
修改对象的基层 2020-05-13 91
引导过程修改 2020-05-13 886
修改液 2020-05-11 792
修改书写笔 2020-05-12 825
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈