CN103530132A - 一种cpu串行程序移植到mic平台的方法 - Google Patents
一种cpu串行程序移植到mic平台的方法 Download PDFInfo
- Publication number
- CN103530132A CN103530132A CN201310517767.7A CN201310517767A CN103530132A CN 103530132 A CN103530132 A CN 103530132A CN 201310517767 A CN201310517767 A CN 201310517767A CN 103530132 A CN103530132 A CN 103530132A
- Authority
- CN
- China
- Prior art keywords
- mic
- program
- cpu
- platform
- openmp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供了一种实现CPU串行程序移植到MIC平台的方法,涉及CPU串行程序修改和MIC并行程序移植。该方法包括:按照MIC程序格式要求修改原CPU串行程序,得到新版本的CPU串行程序;然后开发CPU版本的OpenMP版本并行程序;最后把OpenMP程序移植到MIC平台上并进行进一步的优化。本发明利用先修改CPU串行程序后移植到MIC平台的方法,充分利用CPU和MIC上的资源,快速、有效地实现CPU串行程序移植到MIC平台的方法。
Description
技术领域
本发明涉及计算机高性能计算领域、并行计算领域,具体涉及一种实现CPU串行程序移植到MIC平台的方法。
背景技术
MIC(Many Integrated Core)是Intel公司推出的众核处理器,跟通用的多核至强处理器相比,MIC众核架构具有更小的内核和硬件线程,众核处理器计算资源密度更高,片上通信开销显著降低,更多的晶体管和能量,能够胜任更为复杂的并行应用。
Intel MIC产品基于X86架构,基于重核的众核处理器,包含50个以上的核心,以及512bit的向量位宽,双精性能超过1TFlops。
Intel MIC产品采用PCI-E的方式与主板连接,如图1所示,因此MIC做计算时需要先把数据由CPU内存传递到MIC内存中。另外,MIC作为众核处理器,并行线程数较多,与CPU平台上的并行方式有很大的不同,正确的MIC并行程序开发过程将获得快速、高效的结果,否则将不能有效地、合理地利用MIC加速。
可见,为实现MIC并行程序开发的需求,需要一种快速、有效地实现CPU串行程序移植到MIC平台的方法。
发明内容
本发明的目的在于实现一种快速、有效地CPU串行程序移植到MIC平台的方法,提高MIC并行程序开发效率,降低MIC并行程序开发周期,该方法按照先修改CPU串行程序后移植到MIC平台的原理,把需要在MIC上做的工作尽量先在CPU平台上修改,降低了程序的开发难度,同时有利用bug的调试。可以分为以下步骤:
(1) 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平台的过程示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清晰,下面结合附图和实施例,对本发明作以下详细说明。
(1) 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之间的数据传递。另外,考虑到向量化和访存之间的关系,有时还需要对数组的访问方向进行修改,从而也需要改变数组的定义形式(如做行列变换)。总之,根据MIC对数组使用和CPU串行程序之间的区别,提前把数组修改,方便程序的调试。
根据前面几条的修改方式,对原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内核的调用,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个线程性能较好)。
(5) MIC并行程序优化版本
根据步骤4实现的基本版本的MIC并行程序,利用MIC的优化技术进一步提高并行程序的性能,主要优化包括两个方面:通信优化和内核优化。
a) MIC通信优化
MIC计算需要CPU与MIC之间进行数据的传递,合理的利用通信优化技术有利用提高MIC并行程序的性能,主要手段包括:nocopy、异步传递等。
b) MIC内核优化
MIC内核的优化对其性能更为重要,常见的方法有:并行度、Cache、向量化等。
由本发明的技术方案可见,本发明该方法按照先修改CPU串行程序后移植到MIC平台的原理,把需要在MIC上做的工作尽量先在CPU平台上修改,降低了程序的开发难度,同时有利用bug的调试。通过实现一种快速、有效地CPU串行程序移植到MIC平台的方法,提高MIC并行程序开发效率,降低MIC并行程序开发周期和难度。
Claims (8)
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并行程序的性能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310517767.7A CN103530132A (zh) | 2013-10-29 | 2013-10-29 | 一种cpu串行程序移植到mic平台的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310517767.7A CN103530132A (zh) | 2013-10-29 | 2013-10-29 | 一种cpu串行程序移植到mic平台的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103530132A true CN103530132A (zh) | 2014-01-22 |
Family
ID=49932172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310517767.7A Pending CN103530132A (zh) | 2013-10-29 | 2013-10-29 | 一种cpu串行程序移植到mic平台的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103530132A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104408019A (zh) * | 2014-10-29 | 2015-03-11 | 浪潮电子信息产业股份有限公司 | 一种基于mic平台实现gmres算法并行加速的方法 |
CN105955825A (zh) * | 2016-05-09 | 2016-09-21 | 深圳大学 | 优化天文学软件gridding的方法 |
CN111240987A (zh) * | 2020-01-16 | 2020-06-05 | 北京奇艺世纪科技有限公司 | 移植程序检测方法、装置、电子设备及计算机可读存储介质 |
CN112306554A (zh) * | 2020-11-19 | 2021-02-02 | 北京亚鸿世纪科技发展有限公司 | 高性能要求软件从Grantley平台过渡到Purley平台的优化方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102881042A (zh) * | 2012-09-05 | 2013-01-16 | 浪潮(北京)电子信息产业有限公司 | 电镜三维图像重构的方法及系统 |
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
CN103064819A (zh) * | 2012-10-25 | 2013-04-24 | 浪潮电子信息产业股份有限公司 | 一种利用MIC快速实现格子Boltzmann并行加速的方法 |
-
2013
- 2013-10-29 CN CN201310517767.7A patent/CN103530132A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102881042A (zh) * | 2012-09-05 | 2013-01-16 | 浪潮(北京)电子信息产业有限公司 | 电镜三维图像重构的方法及系统 |
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
CN103064819A (zh) * | 2012-10-25 | 2013-04-24 | 浪潮电子信息产业股份有限公司 | 一种利用MIC快速实现格子Boltzmann并行加速的方法 |
Non-Patent Citations (1)
Title |
---|
王恩东等: "《MIC高性能计算编程指南》", 30 November 2012, 中国水利水电出版社 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104408019A (zh) * | 2014-10-29 | 2015-03-11 | 浪潮电子信息产业股份有限公司 | 一种基于mic平台实现gmres算法并行加速的方法 |
CN105955825A (zh) * | 2016-05-09 | 2016-09-21 | 深圳大学 | 优化天文学软件gridding的方法 |
CN105955825B (zh) * | 2016-05-09 | 2020-07-10 | 深圳大学 | 优化天文学软件gridding的方法 |
CN111240987A (zh) * | 2020-01-16 | 2020-06-05 | 北京奇艺世纪科技有限公司 | 移植程序检测方法、装置、电子设备及计算机可读存储介质 |
CN111240987B (zh) * | 2020-01-16 | 2024-03-08 | 北京奇艺世纪科技有限公司 | 移植程序检测方法、装置、电子设备及计算机可读存储介质 |
CN112306554A (zh) * | 2020-11-19 | 2021-02-02 | 北京亚鸿世纪科技发展有限公司 | 高性能要求软件从Grantley平台过渡到Purley平台的优化方法及装置 |
CN112306554B (zh) * | 2020-11-19 | 2024-05-17 | 北京亚鸿世纪科技发展有限公司 | 高性能要求软件从Grantley平台过渡到Purley平台的优化方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fauzia et al. | Characterizing and enhancing global memory data coalescing on GPUs | |
CN104035781B (zh) | 一种快速开发异构并行程序的方法 | |
Löff et al. | The NAS parallel benchmarks for evaluating C++ parallel programming frameworks on shared-memory architectures | |
WO2016165562A1 (en) | Apparatus and method for using parameterized intermediate representation for just-in-time compilation in database query execution engine | |
CN103246541A (zh) | 自动并行化多级并行代价评估方法 | |
Hou et al. | Gpu-unicache: Automatic code generation of spatial blocking for stencils on gpus | |
CN103530132A (zh) | 一种cpu串行程序移植到mic平台的方法 | |
Krommydas et al. | On the characterization of opencl dwarfs on fixed and reconfigurable platforms | |
CN103207786A (zh) | 渐进式智能回溯向量化代码调优方法 | |
CN105511867A (zh) | 一种优化模式自动生成方法及优化装置 | |
CN103729180A (zh) | 一种快速开发cuda并行程序的方法 | |
CN104572256A (zh) | 一种地震处理多核异构并行模式自适应匹配通用计算模型 | |
Dalman et al. | Cloud MapReduce for Monte Carlo bootstrap applied to metabolic flux analysis | |
Booth et al. | Phase detection with hidden markov models for dvfs on many-core processors | |
CN104615437A (zh) | 一种基于gpu的软件体系架构及uml和adl结合描述的方法 | |
Dinh et al. | Assertion based parallel debugging | |
Lanc et al. | Adapting bioinformatics applications for heterogeneous systems: a case study | |
DeRose et al. | Relative debugging for a highly parallel hybrid computer system | |
Qureshi et al. | Genome sequence alignment-design space exploration for optimal performance and energy architectures | |
Caragea et al. | Brief announcement: performance potential of an easy-to-program PRAM-on-chip prototype versus state-of-the-art processor | |
CN102567206B (zh) | 一种剖析cuda程序行为的方法 | |
CN105700854B (zh) | 运行应用任务的方法及装置 | |
Hu et al. | Enabling Efficient Random Access to Hierarchically Compressed Text Data on Diverse GPU Platforms | |
Gao et al. | Benchmarking, Measuring, and Optimizing: Second BenchCouncil International Symposium, Bench 2019, Denver, CO, USA, November 14–16, 2019, Revised Selected Papers | |
Schwambach et al. | Estimating the potential speedup of computer vision applications on embedded multiprocessors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140122 |