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

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

Info

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
Application number
CN201310517767.7A
Other languages
English (en)
Inventor
张广勇
沈铂
卢晓伟
吴绍华
张清
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN201310517767.7A priority Critical patent/CN103530132A/zh
Publication of CN103530132A publication Critical patent/CN103530132A/zh
Pending legal-status Critical Current

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平台的方法
 
技术领域
本发明涉及计算机高性能计算领域、并行计算领域,具体涉及一种实现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并行程序的性能。
CN201310517767.7A 2013-10-29 2013-10-29 一种cpu串行程序移植到mic平台的方法 Pending CN103530132A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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并行加速的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
王恩东等: "《MIC高性能计算编程指南》", 30 November 2012, 中国水利水电出版社 *

Cited By (7)

* Cited by examiner, † Cited by third party
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) 自动并行化多级并行代价评估方法
CN103530132A (zh) 一种cpu串行程序移植到mic平台的方法
Krommydas et al. On the characterization of opencl dwarfs on fixed and reconfigurable platforms
CN105511867A (zh) 一种优化模式自动生成方法及优化装置
Rockenbach et al. stream processing on multi-cores with GPUs: parallel programming models' challenges
CN103729180A (zh) 一种快速开发cuda并行程序的方法
CN104572256A (zh) 一种地震处理多核异构并行模式自适应匹配通用计算模型
Booth et al. Phase detection with hidden markov models for dvfs on many-core processors
CN104615437A (zh) 一种基于gpu的软件体系架构及uml和adl结合描述的方法
Dalman et al. Cloud MapReduce for Monte Carlo bootstrap applied to metabolic flux analysis
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
Anderson A framework for composing high-performance opencl from python descriptions
Hornung et al. A case for improved C++ compiler support to enable performance portability in large physics simulation codes
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) 运行应用任务的方法及装置
Schwambach et al. Estimating the potential speedup of computer vision applications on embedded multiprocessors
Kaiser et al. A Principled Kernel Testbed for Hardware/Software Co-Design Research

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