CN103049245B - 一种基于中央处理器cpu多核平台的软件性能优化方法 - Google Patents
一种基于中央处理器cpu多核平台的软件性能优化方法 Download PDFInfo
- Publication number
- CN103049245B CN103049245B CN201210411973.5A CN201210411973A CN103049245B CN 103049245 B CN103049245 B CN 103049245B CN 201210411973 A CN201210411973 A CN 201210411973A CN 103049245 B CN103049245 B CN 103049245B
- Authority
- CN
- China
- Prior art keywords
- parallel
- optimization
- software
- thread
- performance
- 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.)
- Active
Links
- 238000005457 optimization Methods 0.000 title claims abstract description 116
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000004458 analytical method Methods 0.000 claims abstract description 63
- 230000008569 process Effects 0.000 claims abstract description 59
- 238000013461 design Methods 0.000 claims abstract description 53
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 45
- 238000004891 communication Methods 0.000 claims abstract description 35
- 238000010276 construction Methods 0.000 claims abstract description 21
- 238000011161 development Methods 0.000 claims abstract description 14
- 238000009472 formulation Methods 0.000 claims abstract description 9
- 239000000203 mixture Substances 0.000 claims abstract description 9
- 238000007620 mathematical function Methods 0.000 claims abstract description 6
- 235000019580 granularity Nutrition 0.000 claims description 44
- 230000006870 function Effects 0.000 claims description 29
- 238000012360 testing method Methods 0.000 claims description 26
- 230000003139 buffering effect Effects 0.000 claims description 22
- 230000007246 mechanism Effects 0.000 claims description 21
- 238000011056 performance test Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 12
- 230000009466 transformation Effects 0.000 claims description 11
- 238000013178 mathematical model Methods 0.000 claims description 9
- 238000005070 sampling Methods 0.000 claims description 9
- 230000000295 complement effect Effects 0.000 claims description 8
- 230000006399 behavior Effects 0.000 claims description 6
- 230000000694 effects Effects 0.000 claims description 6
- 239000011159 matrix material Substances 0.000 claims description 6
- 238000004452 microanalysis Methods 0.000 claims description 6
- 238000005065 mining Methods 0.000 claims description 6
- 239000013598 vector Substances 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000012512 characterization method Methods 0.000 claims description 3
- 230000007547 defect Effects 0.000 claims description 3
- 238000011156 evaluation Methods 0.000 claims description 3
- 230000007717 exclusion Effects 0.000 claims description 3
- 239000013604 expression vector Substances 0.000 claims description 3
- 238000007726 management method Methods 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 3
- 239000002245 particle Substances 0.000 claims description 3
- 239000003208 petroleum Substances 0.000 claims description 3
- 238000012913 prioritisation Methods 0.000 claims description 3
- 238000012797 qualification Methods 0.000 claims description 3
- 238000004451 qualitative analysis Methods 0.000 claims description 3
- 238000011002 quantification Methods 0.000 claims description 3
- 238000012113 quantitative test Methods 0.000 claims description 3
- 230000003068 static effect Effects 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 238000002474 experimental method Methods 0.000 claims description 2
- 238000005194 fractionation Methods 0.000 claims description 2
- 230000004927 fusion Effects 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Abstract
本发明提供一种基于CPU多核平台的软件性能优化方法,涉及软件运行特征分析、并行优化方案制定、并行优化方案实施与迭代调优三个步骤,具体内容包括:应用软件运行特征分析、串行算法分析、CPU多进/线程并行算法设计、多缓冲设计、线程间通信模式设计、访存优化、cache优化、处理器向量化优化、数学函数库优化等。本发明提供的方法广泛适用于具有多线程并行处理需求的应用场合,指导软件开发人员以较短的开发周期,较低的开发成本,快速高效地对现有软件进行多线程并行优化改造,实现软件对系统资源利用最优化,实现读数据,计算,写回数据的互相掩盖,最大限度地缩短软件运行时间,显著提高硬件资源利用率,提高软件的计算效率和软件整体性能。
Description
技术领域
本发明涉及计算机高性能计算领域,具体地说是一种基于中央处理器CPU多核平台的软件性能优化方法。
背景技术
硬件系统在新技术的推动下进行着快速演进,表现出更好的性能、更低的价格,如传统中央处理器CPU从单核向多核直至众核发展。随着多核体系结构处理器的普及,应用软件多进/线程并行处理方式将逐渐成为主流。
硬件发展的最终目的是推动应用软件的表现,进而推进整个计算系统的性能。但随着计算设备体系结构的多样化,多核化,软件系统仅仅依靠硬件的更新从而获得性能提升的方式已经不符合现有硬件的发展趋势,例如传统的单线程串行程序在多核计算设备下不能表现出更好的性能。因此软件系统必须摒弃原有继续享用免费午餐的方式,不能仅仅依靠硬件性能的发展,而应该同时针对硬件系统的发展进行软件系统的再次开发和更新。这也是目前计算架构下我们遇到的最大挑战,而软件系统的再次开发和改造则显得极为必要。
为了提高现有软件系统在新计算设备架构下的性能表现,针对软件系统进行再开发具有很强的现实意义。
目前国内外针对中央处理器CPU多核体系结构的应用开发在中央处理器CPU多核发展之初就如火如荼地展开了,并陆续开发或改造出相当数量的应用。
本方法关注于传统单线程串行软件的并行化改造,利用当前主流的多核中央处理器CPU计算设备,最大化提升计算资源利用率,提升软件效能。
发明内容
本发明的目的是提供一种基于中央处理器CPU多核平台的软件性能优化方法。
本发明的目的是按以下方式实现的,内容包括:
1)软件运行特征分析;是对应用软件进行运行特征采样与分析,定位软件性能瓶颈,特征采集与分析,需要代码分析与实验测试结合,并且善于使用软件运行特征分析工具,软件运行特征分析工具有用户自有性能分析工具、商业性能分析软件或开源性能分析软件;
2)性能优化方案制定;包含三个方面:并行模型方案设计、并行库的选择、进程/线程性能优化方案,其中:
(1)并行模型方案设计,涉及并行层次与并行粒度设计、核心计算并行算法设计、异步并行处理框架设计、多缓冲设计、负载均衡设计、线程/进程通信设计、线程/进程函数优化;
(2)并行库的选择,主要考滤并行模型、软件开发效率与项目周期、并行库的适用性、灵活性、性能及其开发效率;
(3)进程/线程性能优化方案,内容有:进程/线程调度优化、任务调度优化、热点算法模型优化、访存优化、高速缓存cache优化、数学函数库优化、指令优化、编译器优化,性能优化方案实施与迭代调优,并重复调优——测试——调优过程,进行迭代优化;
具体优化流程及其实施步骤、细则如下:
1)软件运行特征分析:分析软件运行特征,定位软件性能瓶颈应用软件运行特征分析,精准定位软件的性能瓶颈,使优化工作有的放矢,大大提高优化的效率;应用软件运行特征分析的原则有:
(1)系统与局部分析结合
软件整体框架与软件局部模块分析都很重要,互为补充,综合全面地掌握应用软件的运行特征;
(2)定性与定量分析并重在优化开发周期有限的条件下,定性分析为工程师指明工作方向,专注于软件的主要瓶颈,而定量分析界定了性能提升的理论极限;
(3)工具采样与代码分析结合软件运行特征分析过程中,工具采样分析与代码分析两种手段互为补充、互为指导工具采样分析,可以帮助程序员快速定位程序热点,而代码分析,为程序热点找到理论依据,从而使热点与代码映射起来;
软件运行特征分析工具,具有高效全面、数据完备直观特点,在整个性能优化过程中都能发挥极大作用;
软件运行特征分析工具,可以采集应用软件运行过程中的中央处理器CPU利用率、内存特征、磁盘特征、网络特征、指令信息CPI;
软件热点分析工具,可以采集应用软件运行时各函数中央处理器CPU使用率及其百分比、分析线程时序、分析程序并发度、检查软件内存和线程缺陷;
(4)宏观与微观分析结合应用软件的运行特征分析,既有高层次的宏观分析,也有底层的微观分析,宏观呈现现象,微观揭示原理,宏观分析指明优化方向,微观分析指导优化的手段;
2)性能优化方案制定:制定综合、全面的性能优化方案
(1)优化方案的总体思想高效利用系统资源,包括多核计算资源、内存资源、磁盘资源、网络资源;
(2)优化层次、效率、开发周期的关系;
优化层次与优化效率的关系:物理模型>数学模型>算法模型;
优化层次与优化周期的关系:物理模型<数学模型<算法模型;
(3)并行模型设计
1>并行算法设计
优异的并行算法,是性能优化的前提条件和基础;
深入分析数据依赖关系,充分挖掘算法的并行性,允许对现有算法进行并行性改造,从而最大限度减少数据依赖和交换,提高算法的并行度,并行度越高,并行可扩展性越好;
2>并行粒度或层次的选择
定义:高层次或外层循环,并行为粗粒度并行,低层次或内层循环,并行为细粒度并行;
并行粒度的选择非常关键,主要考虑以下因素:
a)算法的并行性与并行的可扩展性:不同的并行粒度,数据依赖关系不同,导致并行度也不同,制定并行方案时,要充分挖掘算法的并行性,对现有算法进行并行性改造,从而最大限度减少数据依赖和交换,提高算法的并行度,并行度越高,并行可扩展性越好;
b)并行效率——线程调度开销:并行粒度越小,线程调度越频繁,开销越大,兼顾负载均衡性,选择合适的并行粒度;
c)线程通信开销:不同的并行粒度,用于线程通信的锁、队列开销不同,不同并行粒度,可能引入不同的线程间数据依赖关系,从而导致线程同步或等待;
d)内存容量——空间换时间:并行化引入多缓冲,增加内存需求,不同并行粒度,引入不同缓存需求;
e)负载均衡:并行粒度不同,可能负载均衡效果的差异;
f)满足数据输入输出IO与计算异步并行的需求:并行层级必须达到高度要求,才方便实现读、写功能线程,进而与计算线程实现异步并行;
g)平衡性能与开发周期的矛盾:优化层次越高,开发周期越长;
h)并行粒度影响并行库的选择:并行库的选择,取决于并行粒度;
多节点分布式内存并行方案,需要多进程并行,这样就需要选择MPI并行;
节点内共享式内存并行方案,多线程并行效率更高,如果并行粒度低且并行逻辑较简单,多核并行OpenMP满足要求,并且开发周期短,如果并行粒度较高或并行逻辑复杂,那么多线程编程pthread是不错的选择;
3>并行模型设计
选择了合适的并行粒度之后,需要设计一个高效的并行模型,其主要内容有:
a)数据输入输出IO与计算异步并行处理模型设计:
为了实现读数据、计算、写数据的并行处理,设计异步并行模型,使得读、计算、写分别由相应的功能线程执行,三类线程具有异步时序,三者时间互相隐藏,从而使资源利用率达到最大化,大大提高应用软件性能,异步并行模型,需要多缓冲、任务分发机制、线程调度机制的支持;
4>多缓冲设计
设计多缓冲,用于数据预取、预输出,主要有源数据缓冲、中间数据缓冲、结果数据缓冲,各缓冲与相应进程/线程构成“生产者-消费者”模型;
5>任务调度机制设计
任务分发机制,有共享互斥锁、消息队列模式;
6>进程/线程通信机制设计
进程/线程间需要通信,通信主要是同步、等待;
进程间通信方式有管道、信号;
线程间通信方式有信号量、消息队列、共享内存;
7>负载均衡设计
为提高并行处理效率,达到资源利用最大化,需要实现各进程/线程负责均衡最优化;
负载均衡是软件设计目标,其实现载体是任务调度机制及进/线程通信机制;
负载均衡分为节点间负载均衡和节点内负载均衡;
负载均衡的原则是:能者多劳;
负载均衡的实现方式有:
iii.a)静态负载均衡
适用于数据并行,且运算量与数据规模呈稳定的关系,这种方式实现简单,但是系统适应性差;
iv.b)动态负载均衡
适用于任务并行或者运算量无法事先预测的情形,这种方式实现起来相对复杂,但是非常高效,系统适应性好,软件健壮性高;
3)进程/线程函数优化
软件并行化后,软件的热点部分,即核心计算,都由相应的进程/线程函数执行,因此,进程/线程的优化,成为软件性能进一步提升的关键,进程/线程函数优化的主要内容有:
a)核心算法逻辑优化
1>与并行优化、数据输入输出IO优化、热点代码优化相结合,相辅相成;
2>微数学模型优化,化繁琐变换为直接计算;
3>计算过程精简,减少中间变量;
b)数据输入输出IO优化
1>宏观数据输入输出IO优化
<1>尽量实现读、计算、写异步并行,互相掩盖;
<2>化随机、零散小数据读写为连续、大块数据读写;
2>微观数据输入输出IO优化,体现于核心算法的优化;
<1>内存管理优化
a)减小内存使用量
b)使内存集中分配、释放,减小内存分配、释放次数;
c)数据结构优化,提高访存效率,将矩阵行优先存储访问,以提高矩阵的访问效率;
<2>高速缓存(cache)优化:充分利用数据局部性,平衡任务粒度与高速缓存(cache)容量的矛盾;
<3>变量优化:常量复用,中间数据精简,最大限度减少冗余计算、冗余变量开销;
<4>寻址优化:使用临时指针,减少多级寻址次数;
a)数据函数库优化
1>选择不同的快速数学库:mkl/fftw;
2>数学函数的不同精度版本,包括:X(d),X函数的双精度版本、cos/exp/log;Xf,X函数的单精度版本cosf/expf/logf;
b)指令优化
1>指令集(SIMD)优化,即向量指令优化;
2>预编译指令:#pragmaivdep/simd;
3>编译选项:-xSSE3/4.1a/4.2a–vec-report3;
4>控制向量化精度:-fp-modelstrict/precise/double/fast/source;
5>为提高自动向量化率,对代码要作调整;
6>循环拆分、循环融合、循环调序;
<1>复杂表达式拆解;
<2>统一操作数精度;
<3>查看编译日志,了解相应循环是否向量化或未能向量化原因;
e)编译器优化;
1>自动优化选项:-O3,-fp-modelfast;
2>各种优化手段都依赖编译器支持,如自动向量化选项,向量化编译报告,高性能数学库链接选项;
f)性能与精度的平衡;
大部分时候,性能与精度是互相矛盾的,程序员根据实际需求,进行取舍;
g)并行库的选择
方案制定的最后一项,是选择合适的并行库,目前,比较主流的并行库有多点接口/多线程编程/多核并行(MPI/OpenMP/pthread);
a)不同并行库的开发周期比较:多点接口/多线程编程/多核并行(MPI/pthread>OpenMP);
b)不同并行库的灵活性比较:多点接口/多线程编程/多核并行(MPI/pthread>OpenMP);
c)不同并行库的系统适应性比较;
ii.多点接口(MPI)既适用于多节点间分布式内存并行,也适用于节点内共享内存并行,进行间通信开销较大;
iii.多核并行/多线程编程(OpenMP/pthread)只能用于共享内存并行,线程间通信直接、高效;
程序员综合并行方案,性能目标,软件开发周期因素,选择最合适的并行库;
4)性能优化方案实施与迭代调优:实施既定的性能优化方案并迭代调优主要是实现第2阶段制定的性能优化方案,并重复调优——测试——调优过程,进行迭代优化;
5)性能测试及分析
将该方法应用于某个典型的石油行业应用软件模块多线程并行程序开发项目,并利用真实数据进行性能测试;
本次性能测试将针对不同规模的作业,利用不同规模的任务进行多次测试,并搜集测试数据进行性能分析;
a)测试环境及测试数据
(4)测试环境包括硬件环境、软件环境;
(5)软件环境
操作系统名称:红帽林纽克斯系统RedHatLinux企业版,版本:5.3
编译器名称:因特尔Intel编译器,版本:10.1
数据库名称:神谕Oracle数据库,版本:10g
应用系统名称:某地震资料解释软件模块
(6)测试数据及作业规模
测试数据为真实生产的3D实际数据;
b)性能测试结果分析
利用该方法对该软件模块进行多线程并行化改造后,显著地提升了该软件模块的运行效率,以较短的开发周期,获得了较高的性能加速比。
本发明的有益效果是:由本发明的技术方案可见,本发明提供了一种基于中央处理器(CPU)多核平台的软件性能优化通用方法,该方法广泛适用于具有多线程并行处理需求的应用场合,指导软件开发人员以较短的开发周期,较低的开发成本,快速高效地对现有软件进行多线程并行优化改造,实现软件对系统资源利用最优化,读数据,计算,写回数据的互相掩盖,最大限度地缩短软件运行时间,显著提高硬件资源利用率,提高软件的计算效率和软件整体性能。
附图说明
图1是典型的读、计算、写异步并行处理模型图;
图2是各缓冲与相应进程/线程构成“生产者-消费者”模型图;
图3是并行处理模型的线程通信模型图。
具体实施方式
参照说明书附图对本发明的方法作以下详细地说明。
本发明的目的在于提供一种中央处理器CPU多核平台软件性能优化的通用性、系统性方法。
为了使本发明的目的、技术方案和优点更加清晰,下面结合附图和实施例,对本发明作以下详细说明。
中央处理器CPU多核平台软件性能优化流程及其实施步骤、细则如下:
1)软件运行特征分析:分析软件运行特征,定位软件性能瓶颈
应用软件运行特征分析,精准定位软件的性能瓶颈,可以使优化工作有的放矢,大大提高优化的效率。
应用软件运行特征分析的原则有:
(1)系统与局部分析结合
软件整体框架与软件局部模块分析都很重要,互为补充,综合全面地掌握应用软件的运行特征。
(2)定性与定量分析并重
在优化开发周期有限的条件下,定性分析为工程师指明工作方向,专注于软件的主要瓶颈,而定量分析界定了性能提升的理论极限。
(3)工具采样与代码分析结合
软件运行特征分析过程中,工具采样分析与代码分析两种手段互为补充、互为指导工具采样分析,可以帮助程序员快速定位程序热点,而代码分析,为程序热点找到理论依据,从而使热点与代码映射起来。
软件运行特征分析工具,具有高效全面、数据完备直观的特点,在整个性能优化过程中都能发挥极大作用。
软件运行特征分析工具,可以采集应用软件运行过程中的中央处理器(CPU)利用率、内存特征、磁盘特征、网络特征、指令CPI信息。
软件热点分析工具,可以采集应用软件运行时各函数中央处理器(CPU)使用率及其百分比、分析线程时序、分析程序并发度、检查软件内存和线程缺陷等。
(4)宏观与微观分析结合
应用软件的运行特征分析,既有高层次的宏观分析,也有底层的微观分析,宏观呈现现象,微观揭示原理,宏观分析指明优化方向,微观分析指导优化的手段。
2)性能优化方案制定:制定综合、全面的性能优化方案
(1)优化方案的总体思想
高效利用系统资源,包括多核计算资源、内存资源、磁盘资源、网络资源等。
(2)优化层次、效率、开发周期的关系
优化层次与优化效率的关系:物理模型>数学模型>算法模型
优化层次与优化周期的关系:物理模型<数学模型<算法模型
(3)并行模型设计
<1>并行算法设计
优异的并行算法,是性能优化的前提条件和基础。
深入分析数据依赖关系,充分挖掘算法的并行性,对现有算法进行并行性改造,从而最大限度减少数据依赖和交换,提高算法的并行度,并行度越高,并行可扩展性越好。
<2>选择合适的并行粒度(层次)
定义:高层次(外层循环)并行为粗粒度并行,低层次(内层循环)并行为细粒度并行。
并行粒度的选择非常关键,主要考虑以下因素:
a.算法的并行性与并行的可扩展性
不同的并行粒度,数据依赖关系不同,导致并行度也不同,制定并行方案时,要充分挖掘算法的并行性,对现有算法进行并行性改造,从而最大限度减少数据依赖和交换,提高算法的并行度,并行度越高,并行可扩展性越好。
b.并行效率——线程调度开销
并行粒度越小,线程调度越频繁,开销越大
兼顾负载均衡性,选择合适的并行粒度
c.线程通信开销
不同的并行粒度,用于线程通信的锁、队列开销不同
不同并行粒度,可能引入不同的线程间数据依赖关系,从而导致线程同步或等待
d.内存容量——空间换时间
并行化引入多缓冲,增加内存需求
不同并行粒度,引入不同缓存需求
e.负载均衡
并行粒度不同,可能负载均衡效果的差异
f.满足数据输入输出(IO)与计算异步并行的需求
并行层级必须达到一定高度,才方便实现读、写功能线程,进而与计算线程实现异步并行。
g.平衡性能与开发周期的矛盾
优化层次越高,开发周期越长
h.并行粒度影响并行库的选择
并行库的选择,很大程度上取决于并行粒度。多节点分布式内存并行方案,需要多进程并行,这样就需要选择MPI并行。节点内共享式内存并行方案,多线程并行效率更高,如果并行粒度低且并行逻辑较简单,多核并行OpenMP可以满足要求,并且开发周期短,如果并行粒度较高或并行逻辑复杂,那么多线程编程pthread是不错的选择。
<3>并行模型设计
选择了合适的并行粒度之后,需要设计一个高效的并行模型。其主要内容有:
a.数据输入输出IO与计算异步并行处理模型设计
为了实现读数据、计算、写数据的并行处理,设计异步并行模型,使得读、计算、写分别由相应的功能线程执行,三类线程具有异步时序,三者时间互相隐藏,从而使资源利用率达到最大化,大大提高应用软件性能。异步并行模型,需要多缓冲、任务分发机制、线程调度机制的支持。
如图1所示,为一种典型的读、计算、写异步并行处理模型:
b.多缓冲设计
设计多缓冲,用于数据预取、预输出等,主要有源数据缓冲、中间数据缓冲、结果数据缓冲等。
各缓冲与相应进程/线程构成“生产者-消费者”模型,如图2所示:
c.任务调度机制设计
任务分发机制,有共享互斥锁、消息队列等模式。
d.进程/线程通信机制设计
进程/线程间需要通信,通信主要是同步、等待等。
进程间通信方式有管道、信号。
线程间通信方式有信号量、消息队列、共享内存。
如图3所示,是一个并行处理模型的线程通信模型:
(4)负载均衡设计
为提高并行处理效率,达到资源利用最大化,需要实现各进程/线程负责均衡最优化。
负载均衡是软件设计目标,其实现载体是任务调度机制及进/线程通信机制。
负载均衡分为节点间负载均衡和节点内负载均衡。
负载均衡的原则是:能者多劳。
负载均衡的实现方式有:
1>静态负载均衡
适用于数据并行,且运算量与数据规模呈稳定的关系,这种方式实现简单,但是系统适应性差。
2>动态负载均衡
适用于任务并行,或者运算量无法事先预测的情形,这种方式实现起来相对复杂,但是非常高效,系统适应性好,软件健壮性高。
3>进程/线程函数优化
软件并行化后,软件的热点部分,即核心计算,都由相应的进程/线程函数执行。因此,进程/线程的优化,成为软件性能进一步提升的关键。进程/线程函数优化的主要内容有:
a)核心算法逻辑优化
i)与并行优化、数据输入输出(IO)优化、热点代码优化相结合,相辅相成。
ii)微数学模型优化,化繁琐变换为直接计算。
iii)计算过程精简,减少中间变量。
b)数据输入输出(IO)优化
i宏观数据输入输出(IO)优化
<1>尽量实现读、计算、写异步并行,互相掩盖。
<2>化随机、零散小数据读写为连续、大块数据读写。
ii微观数据输入输出(IO)优化(体现于核心算法的优化)
c)内存管理优化
a>减小内存使用量
b>使内存集中分配、释放,减小内存分配、释放次数
c>数据结构优化,提高访存效率,如将矩阵行优先存储访问,可以提高矩阵的访问效率。
<2>高速缓存(cache)优化:充分利用数据局部性,平衡任务粒度与高速缓存(cache)容量的矛盾。
<3>变量优化:常量复用,中间数据精简,最大限度减少冗余计算、冗余变量等开销。
<4>寻址优化:使用临时指针,减少多级寻址次数
d)数据函数库优化
i选择不同的快速数学库:mkl/fftw等。
ii数学函数的不同精度版本。如:X(d),X函数的双精度版本,如cos/exp/log等;Xf,X函数的单精度版本,如cosf/expf/logf等。
e)指令优化
SIMD指令集优化,即向量指令优化
①预编译指令:#pragmaivdep/simd;
②编译选项:-xSSE3/4.1a/4.2a–vec-report3;
③控制向量化精度:-fp-modelstrict/precise/double/fast/source等;
④为提高自动向量化率,要对代码进行调整;
⑤循环拆分、循环融合、循环调序;
<1>复杂表达式拆解
<2>统一操作数精度
<3>查看编译日志,了解相应循环是否向量化或未能向量化原因
f)编译器优化
①自动优化选项:-O3,-fp-modelfast等
②各种优化手段都依赖编译器支持。如自动向量化选项,向量化编译报告,高性能数学库链接选项等。
g)性能与精度的平衡
大部分时候,性能与精度是互相矛盾的,程序员根据实际需求,进行取舍。
h)并行库的选择
方案制定的最后一项,是选择合适的并行库。目前,比较主流的并行库有多点接口/多线程编程/多核并行(MPI/OpenMP/pthread)等。
i)不同并行库的开发周期比较:多点接口/多线程编程/多核并行
(MPI/pthread>OpenMP)
j)不同并行库的灵活性比较:多点接口/多线程编程/多核并行
(MPI/pthread>OpenMP)
k)不同并行库的系统适应性比较:
1>多点接口MPI既适用于多节点间分布式内存并行,也适用于节点内共享内存并行,进行间通信开销较大。
2>多核并行/多线程编程(OpenMP/pthread)只能用于共享内存并行,线程间通信直接、高效。
程序员综合并行方案,性能目标,软件开发周期等因素,选择最合适的并行库。
3>性能优化方案实施与迭代调优:实施既定的性能优化方案并迭代调优是实现第2阶段制定的性能优化方案,并重复调优——测试——调优过程,进行迭代优化。
(5)性能测试及分析
将该方法应用于某个典型的石油行业应用软件模块多线程并行程序开发项目,并利用真实数据进行性能测试。
本次性能测试将针对不同规模的作业,利用不同规模的任务进行多次测试,并搜集测试数据进行性能分析。
1)测试环境及测试数据
测试环境包括硬件环境、软件环境。
(1)表1是测试硬件环境表
(2)软件环境
操作系统名称:RedHatLinux企业版,版本:5.3
编译器名称:Intel编译器,版本:10.1
数据库名称:Oracle数据库,版本:10g
应用系统名称:某地震资料解释软件模块
(3)测试数据及作业规模
测试数据为真实生产的3D实际数据。
作业规模:通过CMPline和CMP数来控制作业规模,表2是作业具体参数:
2)性能测试结果
在浪潮英信NF8520四路服务器上进行了不同规模作业的测试,测试结果如表3所示:
3)性能测试结果分析
利用该方法对该软件模块进行多线程并行化改造后,显著地提升了该软件模块的运行效率,以较短的开发周期,获得了较高的性能加速比。
4)总结
由本发明的技术方案可见,本发明提供了一种基于中央处理器(CPU)多核平台的软件性能优化通用方法,该方法广泛适用于具有多线程并行处理需求的应用场合,指导软件开发人员以较短的开发周期,较低的开发成本,快速高效地对现有软件进行多线程并行优化改造,实现软件对系统资源利用最优化,读数据,计算,写回数据的互相掩盖,最大限度地缩短软件运行时间,显著提高硬件资源利用率,提高软件的计算效率和软件整体性能。
Claims (1)
1.一种基于中央处理器CPU多核平台的软件性能优化方法,其特征在于内容包括:
1)软件运行特征分析;是对应用软件进行运行特征采样与分析,定位软件性能瓶颈,特征采集与分析,需要代码分析与实验测试结合,并且善于使用软件运行特征分析工具,软件运行特征分析工具有用户自有性能分析工具、商业性能分析软件或开源性能分析软件;
2)性能优化方案制定;包含三个方面:并行模型方案设计、并行库的选择、进程/线程性能优化方案,其中:
(1)并行模型方案设计,涉及并行层次与并行粒度设计、核心计算并行算法设计、异步并行处理框架设计、多缓冲设计、负载均衡设计、线程/进程通信设计、线程/进程函数优化;
(2)并行库的选择,要考滤并行模型、软件开发效率与项目周期、并行库的适用性、灵活性、性能及其开发效率;
(3)进程/线程性能优化方案,内容有:进程/线程调度优化、任务调度优化、热点算法模型优化、访存优化、高速缓存cache优化、数学函数库优化、指令优化、编译器优化,性能优化方案实施与迭代调优,并重复调优——测试——调优过程,进行迭代优化;
具体优化流程及其实施步骤、细则如下:
1)软件运行特征分析:分析软件运行特征,定位软件性能瓶颈应用软件运行特征分析,精准定位软件的性能瓶颈,使优化工作有的放矢,大大提高优化的效率;应用软件运行特征分析的原则有:
(1)系统与局部分析结合
软件整体框架与软件局部模块分析都很重要,互为补充,综合全面地掌握应用软件的运行特征;
(2)定性与定量分析并重在优化开发周期有限的条件下,定性分析为工程师指明工作方向,专注于软件的主要瓶颈,而定量分析界定了性能提升的理论极限;
(3)工具采样与代码分析结合软件运行特征分析过程中,工具采样分析与代码分析两种手段互为补充、互为指导工具采样分析,可以帮助程序员快速定位程序热点,而代码分析,为程序热点找到理论依据,从而使热点与代码映射起来;
软件运行特征分析工具,具有高效全面、数据完备直观特点,在整个性能优化过程中都能发挥极大作用;
软件运行特征分析工具,可以采集应用软件运行过程中的中央处理器CPU利用率、内存特征、磁盘特征、网络特征、指令信息CPI;
软件热点分析工具,可以采集应用软件运行时各函数中央处理器CPU使用率及其百分比、分析线程时序、分析程序并发度、检查软件内存和线程缺陷;
(4)宏观与微观分析结合应用软件的运行特征分析,既有高层次的宏观分析,也有底层的微观分析,宏观呈现现象,微观揭示原理,宏观分析指明优化方向,微观分析指导优化的手段;
2)性能优化方案制定:制定综合、全面的性能优化方案
(1)优化方案的总体思想高效利用系统资源,包括多核计算资源、内存资源、磁盘资源、网络资源;
(2)优化层次、效率、开发周期的关系;
优化层次与优化效率的关系:物理模型>数学模型>算法模型;
优化层次与优化周期的关系:物理模型<数学模型<算法模型;
(3)并行模型设计
1>并行算法设计
优异的并行算法,是性能优化的前提条件和基础;
深入分析数据依赖关系,充分挖掘算法的并行性,对现有算法进行并行性改造,从而最大限度减少数据依赖和交换,提高算法的并行度,并行度越高,并行可扩展性越好;
2>并行粒度或层次的选择
定义:高层次或外层循环,并行为粗粒度并行,低层次或内层循环,并行为细粒度并行;
并行粒度的选择非常关键,考虑以下因素:
a)算法的并行性与并行的可扩展性:不同的并行粒度,数据依赖关系不同,导致并行度也不同,制定并行方案时,要充分挖掘算法的并行性,对现有算法进行并行性改造,从而最大限度减少数据依赖和交换,提高算法的并行度,并行度越高,并行可扩展性越好;
b)并行效率——线程调度开销:并行粒度越小,线程调度越频繁,开销越大,兼顾负载均衡性,选择并行粒度;
c)线程通信开销:不同的并行粒度,用于线程通信的锁、队列开销不同,不同并行粒度,可能引入不同的线程间数据依赖关系,从而导致线程同步或等待;
d)内存容量——空间换时间:并行化引入多缓冲,增加内存需求,不同并行粒度,引入不同缓存需求;
e)负载均衡:并行粒度不同,可能负载均衡效果的差异;
f)满足数据输入输出IO与计算异步并行的需求:并行层级必须达到高度,才方便实现读、写功能线程,进而与计算线程实现异步并行;
g)平衡性能与开发周期的矛盾:优化层次越高,开发周期越长;
h)并行粒度影响并行库的选择:并行库的选择,取决于并行粒度;
多节点分布式内存并行方案,需要多进程并行,这样就需要选择MPI并行;
节点内共享式内存并行方案,多线程并行效率更高,如果并行粒度低且并行逻辑较简单,多核并行OpenMP满足要求,并且开发周期短,如果并行粒度较高或并行逻辑复杂,那么多线程编程pthread是不错的选择;
3>并行模型设计
选择了并行粒度之后,需要设计一个高效的并行模型,其内容有:
a)数据输入输出IO与计算异步并行处理模型设计:
为了实现读数据、计算、写数据的并行处理,设计异步并行模型,使得读、计算、写分别由相应的功能线程执行,三类线程具有异步时序,三者时间互相隐藏,从而使资源利用率达到最大化,大大提高应用软件性能,异步并行模型,需要多缓冲、任务分发机制、线程调度机制的支持;
4>多缓冲设计
设计多缓冲,用于数据预取、预输出,有源数据缓冲、中间数据缓冲、结果数据缓冲,各缓冲与相应进程/线程构成“生产者-消费者”模型;
5>任务调度机制设计
任务分发机制,有共享互斥锁、消息队列模式;
6>进程/线程通信机制设计
进程/线程间需要通信,通信是同步、等待;
进程间通信方式有管道、信号;
线程间通信方式有信号量、消息队列、共享内存;
7>负载均衡设计
为提高并行处理效率,达到资源利用最大化,需要实现各进程/线程负责均衡最优化;
负载均衡是软件设计目标,其实现载体是任务调度机制及进/线程通信机制;
负载均衡分为节点间负载均衡和节点内负载均衡;
负载均衡的原则是:能者多劳;
负载均衡的实现方式有:
i.静态负载均衡
适用于数据并行,且运算量与数据规模呈稳定的关系,这种方式实现简单,但是系统适应性差;
ii.动态负载均衡
适用于任务并行或者运算量无法事先预测的情形,这种方式实现起来相对复杂,但是非常高效,系统适应性好,软件健壮性高;
3)进程/线程函数优化
软件并行化后,软件的热点部分,即核心计算,都由相应的进程/线程函数执行,因此,进程/线程的优化,成为软件性能进一步提升的关键,进程/线程函数优化的内容有:
a)核心算法逻辑优化
i.与并行优化、数据输入输出IO优化、热点代码优化相结合,相辅相成;
ii.微数学模型优化,化繁琐变换为直接计算;
iii.计算过程精简,减少中间变量;
b)数据输入输出IO优化
i.宏观数据输入输出IO优化
<1>尽量实现读、计算、写异步并行,互相掩盖;
<2>化随机、零散小数据读写为连续、大块数据读写;
ii.微观数据输入输出IO优化,体现于核心算法的优化;
<1>内存管理优化
a)减小内存使用量
b)使内存集中分配、释放,减小内存分配、释放次数;
c)数据结构优化,提高访存效率,将矩阵行优先存储访问,以提高矩阵的访问效率;
<2>高速缓存(cache)优化:充分利用数据局部性,平衡任务粒度与高速缓存(cache)容量的矛盾;
<3>变量优化:常量复用,中间数据精简,最大限度减少冗余计算、冗余变量开销;
<4>寻址优化:使用临时指针,减少多级寻址次数;
c)数据函数库优化
i.选择不同的快速数学库:mkl/fftw;
ii.数学函数的不同精度版本,包括:X(d),X函数的双精度版本、cos/exp/log;Xf,X函数的单精度版本cosf/expf/logf;
d)指令优化
i.指令集(SIMD)优化,即向量指令优化;
ii.预编译指令:#pragmaivdep/simd;
iii.编译选项:-xSSE3/4.1a/4.2a–vec-report3;
iv.控制向量化精度:-fp-modelstrict/precise/double/fast/source;
v.为提高自动向量化率,对代码要作调整;
vi.循环拆分、循环融合、循环调序;
<1>复杂表达式拆解;
<2>统一操作数精度;
<3>查看编译日志,了解相应循环是否向量化或未能向量化原因;
e)编译器优化;
i.自动优化选项:-O3,-fp-modelfast;
ii.各种优化手段都依赖编译器支持,如自动向量化选项,向量化编译报告,高性能数学库链接选项;
f)性能与精度的平衡;
大部分时候,性能与精度是互相矛盾的,程序员根据实际需求,进行取舍;
g)并行库的选择
方案制定的最后一项,是选择合适的并行库,目前,比较主流的并行库有多点接口/多线程编程/多核并行(MPI/OpenMP/pthread);
a)不同并行库的开发周期比较:多点接口/多线程编程/多核并行(MPI/pthread>OpenMP);
b)不同并行库的灵活性比较:多点接口/多线程编程/多核并行(MPI/pthread>OpenMP);
c)不同并行库的系统适应性比较;
1.多点接口(MPI)既适用于多节点间分布式内存并行,也适用于节点内共享内存并行,进行间通信开销较大;
2.多核并行/多线程编程(OpenMP/pthread)只能用于共享内存并行,线程间通信直接、高效;
程序员综合并行方案,性能目标,软件开发周期因素,选择最合适的并行库;
4)性能优化方案实施与迭代调优:实施既定的性能优化方案并迭代调优是实现第2阶段制定的性能优化方案,并重复调优——测试——调优过程,进行迭代优化;
5)性能测试及分析
将该方法应用于某个典型的石油行业应用软件模块多线程并行程序开发项目,并利用真实数据进行性能测试;
本次性能测试将针对不同规模的作业,利用不同规模的任务进行多次测试,并搜集测试数据进行性能分析;
a)测试环境及测试数据
(1)测试环境包括硬件环境、软件环境;
(2)软件环境
操作系统名称:红帽林纽克斯系统RedHatLinux企业版,版本:5.3
编译器名称:因特尔Intel编译器,版本:10.1
数据库名称:神谕Oracle数据库,版本:10g
应用系统名称:某地震资料解释软件模块
(3)测试数据及作业规模
测试数据为真实生产的3D实际数据;
b)性能测试结果分析
利用该方法对该软件模块进行多线程并行化改造后,显著地提升了该软件模块的运行效率,以较短的开发周期,获得了较高的性能加速比。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210411973.5A CN103049245B (zh) | 2012-10-25 | 2012-10-25 | 一种基于中央处理器cpu多核平台的软件性能优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210411973.5A CN103049245B (zh) | 2012-10-25 | 2012-10-25 | 一种基于中央处理器cpu多核平台的软件性能优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103049245A CN103049245A (zh) | 2013-04-17 |
CN103049245B true CN103049245B (zh) | 2015-12-02 |
Family
ID=48061898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210411973.5A Active CN103049245B (zh) | 2012-10-25 | 2012-10-25 | 一种基于中央处理器cpu多核平台的软件性能优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103049245B (zh) |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981805B (zh) * | 2012-11-02 | 2015-11-18 | 浪潮(北京)电子信息产业有限公司 | 串行软件的响应方法和系统 |
CN103279449A (zh) * | 2013-06-14 | 2013-09-04 | 浪潮电子信息产业股份有限公司 | 大规模异构众核处理器平台的效率核算方法 |
US9843631B2 (en) | 2013-06-26 | 2017-12-12 | Amazon Technologies, Inc. | Producer system selection |
EP3014537A2 (en) * | 2013-06-26 | 2016-05-04 | Amazon Technologies, Inc. | Producer system partitioning among leasing agent systems |
CN103440229B (zh) * | 2013-08-12 | 2017-11-10 | 浪潮电子信息产业股份有限公司 | 一种基于mic架构处理器的向量化优化方法 |
CN103514055A (zh) * | 2013-10-09 | 2014-01-15 | 浪潮(北京)电子信息产业有限公司 | 一种面向过程的高性能计算应用性能的测评方法及系统 |
CN104572256A (zh) * | 2013-10-29 | 2015-04-29 | 中国石油化工股份有限公司 | 一种地震处理多核异构并行模式自适应匹配通用计算模型 |
CN103530132A (zh) * | 2013-10-29 | 2014-01-22 | 浪潮电子信息产业股份有限公司 | 一种cpu串行程序移植到mic平台的方法 |
CN103729180A (zh) * | 2013-12-25 | 2014-04-16 | 浪潮电子信息产业股份有限公司 | 一种快速开发cuda并行程序的方法 |
CN104821924B (zh) * | 2014-01-30 | 2018-11-27 | 西门子公司 | 一种网络数据包处理方法、装置和网络处理设备 |
CN103884343B (zh) * | 2014-02-26 | 2017-01-11 | 海华电子企业(中国)有限公司 | 一种基于mic协处理器的全网最短路径规划并行化方法 |
CN104266657B (zh) * | 2014-09-12 | 2017-08-04 | 海华电子企业(中国)有限公司 | 基于cpu和mic协同计算的最短路径规划并行化方法 |
CN104391742B (zh) * | 2014-11-11 | 2019-03-01 | 小米科技有限责任公司 | 应用优化方法和装置 |
CN105812327B (zh) * | 2014-12-29 | 2020-07-10 | 航天信息股份有限公司 | 复合型多用通讯方法及系统 |
CN106033345B (zh) * | 2015-03-17 | 2019-06-11 | 阿里巴巴集团控股有限公司 | Cpu使用率的控制方法和装置 |
CN105242909B (zh) * | 2015-11-24 | 2017-08-11 | 无锡江南计算技术研究所 | 一种基于多版本代码生成的众核循环分块方法 |
CN105654491A (zh) * | 2015-12-31 | 2016-06-08 | 南京华捷艾米软件科技有限公司 | 一种从背景图像中并行化提取深度连续物体图像的方法 |
CN105700998A (zh) * | 2016-01-13 | 2016-06-22 | 浪潮(北京)电子信息产业有限公司 | 一种对并行程序的性能进行监测分析的方法及装置 |
CN106095695A (zh) * | 2016-06-06 | 2016-11-09 | 中国石油集团川庆钻探工程有限公司地球物理勘探公司 | 一种基于多核处理器的地震数据快速访问方法 |
CN106293736B (zh) * | 2016-08-08 | 2019-05-31 | 合肥工业大学 | 用于粗粒度多核计算系统的两级编程装置及其计算方法 |
CN106648886A (zh) * | 2016-10-20 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种分布式存储系统的实现方法及装置 |
CN108920130A (zh) * | 2017-04-17 | 2018-11-30 | 北京京东尚科信息技术有限公司 | 一种Java代码优化的方法和装置 |
US20180316626A1 (en) * | 2017-04-28 | 2018-11-01 | Futurewei Technologies, Inc. | Guided Optimistic Resource Scheduling |
CN107729057B (zh) * | 2017-06-28 | 2020-09-22 | 西安微电子技术研究所 | 一种在多核dsp下的数据块多缓冲流水处理方法 |
CN109307885A (zh) * | 2017-07-28 | 2019-02-05 | 中国石油化工股份有限公司 | 一种地震解释模块的通用并行处理方法 |
EP3438825A1 (en) * | 2017-07-31 | 2019-02-06 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for resource allocation and terminal device |
US11182210B2 (en) | 2017-07-31 | 2021-11-23 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for resource allocation and terminal device |
CN109633746A (zh) * | 2017-10-09 | 2019-04-16 | 中国石油化工股份有限公司 | 一种反射倾角及其相似系数的自动拾取方法 |
CN107862042B (zh) * | 2017-11-06 | 2020-12-18 | 中国银行股份有限公司 | 一种数据库并行度的控制方法及装置 |
CN107992368A (zh) * | 2017-11-15 | 2018-05-04 | 国家计算机网络与信息安全管理中心 | 一种多进程间的数据交换方法和系统 |
CN108255674A (zh) * | 2017-12-31 | 2018-07-06 | 广东欧珀移动通信有限公司 | 多进程浏览器进程日志收集方法、装置以及移动终端 |
CN108256212B (zh) * | 2018-01-16 | 2021-08-31 | 中南大学 | 多棒燃料元件并行性能分析方法、系统及存储介质 |
CN108304218A (zh) * | 2018-03-14 | 2018-07-20 | 郑州云海信息技术有限公司 | 一种汇编代码的编写方法、装置、系统和可读存储介质 |
CN109144693B (zh) * | 2018-08-06 | 2020-06-23 | 上海海洋大学 | 一种功率自适应任务调度方法及系统 |
CN109740747B (zh) * | 2018-12-29 | 2019-11-12 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN109947680A (zh) * | 2019-01-16 | 2019-06-28 | 佛山市顺德区中山大学研究院 | 一种基于dsp的软件运行速度优化方法 |
CN109901839A (zh) * | 2019-01-23 | 2019-06-18 | 国家新闻出版广电总局广播电视规划院 | 一种广播电视关键信息基础设施网络安全攻防实训平台构建方法 |
CN109933431B (zh) * | 2019-03-11 | 2023-04-04 | 浪潮通用软件有限公司 | 一种智能的客户端负载均衡方法及系统 |
CN110413256B (zh) * | 2019-07-23 | 2021-10-22 | 江苏芯盛智能科技有限公司 | 一种二元随机序列检测方法、系统、设备及计算机介质 |
CN110673104A (zh) * | 2019-08-22 | 2020-01-10 | 西安电子科技大学 | 一种基于cpu架构的外辐射源雷达实时信号处理方法及系统 |
CN110501363B (zh) * | 2019-08-30 | 2020-06-02 | 中国科学院长春应用化学研究所 | X射线衍射仪用多线程样品测试方法 |
CN110704193B (zh) * | 2019-10-12 | 2022-12-16 | 中国电子科技集团公司第三十八研究所 | 一种适合向量处理的多核软件架构的实现方法及装置 |
CN111062855B (zh) * | 2019-11-18 | 2023-09-05 | 中国航空工业集团公司西安航空计算技术研究所 | 一种图形流水线性能分析方法 |
CN111177759B (zh) * | 2019-12-30 | 2022-03-15 | 武汉市陆刻科技有限公司 | 一种线性运算加速方法及装置 |
CN111352738B (zh) * | 2020-02-29 | 2022-08-12 | 苏州浪潮智能科技有限公司 | 一种在高性能服务器上运行wrf时的优化方法与系统 |
CN111445349B (zh) * | 2020-03-13 | 2023-09-05 | 贵州电网有限责任公司 | 一种适用于能源互联网的混合式数据存储处理方法及系统 |
CN112182770A (zh) * | 2020-10-10 | 2021-01-05 | 中国运载火箭技术研究院 | 在线迭代计算方法、装置及计算机存储介质、电子设备 |
CN112612831B (zh) * | 2020-12-14 | 2023-10-17 | 南方电网数字电网研究院有限公司 | 一种预警系统的运维流程管理性能优化方法 |
CN114840256A (zh) * | 2021-01-30 | 2022-08-02 | 华为技术有限公司 | 一种程序数据级并行分析方法、装置及相关设备 |
CN112783511B (zh) * | 2021-02-05 | 2023-04-11 | 成都信息工程大学 | 一种栅元少群参数计算模块程序的优化方法、系统、终端 |
CN112988114B (zh) * | 2021-03-12 | 2022-04-12 | 中国科学院自动化研究所 | 基于gpu的大数计算系统 |
CN113419119A (zh) * | 2021-06-02 | 2021-09-21 | 中电科思仪科技股份有限公司 | 一种基于多核dsp的并行相位噪声测量方法 |
CN113377513B (zh) * | 2021-06-17 | 2024-04-05 | 吉林大学 | 一种针对全球耦合气候模式的进程调度优化方法 |
CN113778892B (zh) * | 2021-07-13 | 2024-05-07 | 统信软件技术有限公司 | 定位操作系统性能瓶颈的方法、计算设备以及存储介质 |
CN113672235A (zh) * | 2021-08-25 | 2021-11-19 | 中国人民解放军国防科技大学 | 射线水声传播模型的多核并行方法 |
CN116860587B (zh) * | 2023-09-05 | 2023-11-28 | 中国电子科技集团公司第十五研究所 | 面向战场态势性能优化的普适体系化设计框架的构建方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819651A (zh) * | 2010-04-16 | 2010-09-01 | 浙江大学 | 粒子群算法在多机上并行执行的方法 |
CN101894046A (zh) * | 2009-07-27 | 2010-11-24 | 浪潮电子信息产业股份有限公司 | 一种应用软件最优化运行方案的寻找方法 |
CN102193831A (zh) * | 2010-03-12 | 2011-09-21 | 复旦大学 | 一种建立层次化的映射/归约并行编程模型的方法 |
WO2012037168A2 (en) * | 2010-09-13 | 2012-03-22 | Massively Parallel Technologies, Inc. | Software design and automatic coding for parallel computing |
-
2012
- 2012-10-25 CN CN201210411973.5A patent/CN103049245B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894046A (zh) * | 2009-07-27 | 2010-11-24 | 浪潮电子信息产业股份有限公司 | 一种应用软件最优化运行方案的寻找方法 |
CN102193831A (zh) * | 2010-03-12 | 2011-09-21 | 复旦大学 | 一种建立层次化的映射/归约并行编程模型的方法 |
CN101819651A (zh) * | 2010-04-16 | 2010-09-01 | 浙江大学 | 粒子群算法在多机上并行执行的方法 |
WO2012037168A2 (en) * | 2010-09-13 | 2012-03-22 | Massively Parallel Technologies, Inc. | Software design and automatic coding for parallel computing |
Also Published As
Publication number | Publication date |
---|---|
CN103049245A (zh) | 2013-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103049245B (zh) | 一种基于中央处理器cpu多核平台的软件性能优化方法 | |
CN102902512B (zh) | 一种基于多线程编程及消息队列的多线程并行处理方法 | |
Benkner et al. | PEPPHER: Efficient and productive usage of hybrid computing systems | |
Phothilimthana et al. | Portable performance on heterogeneous architectures | |
EP2707797B1 (en) | Automatic load balancing for heterogeneous cores | |
Li et al. | Performance modeling in CUDA streams—A means for high-throughput data processing | |
Arafa et al. | Ppt-gpu: Scalable gpu performance modeling | |
Löff et al. | The NAS parallel benchmarks for evaluating C++ parallel programming frameworks on shared-memory architectures | |
Weber et al. | MATOG: array layout auto-tuning for CUDA | |
Zhang et al. | iMLBench: A machine learning benchmark suite for CPU-GPU integrated architectures | |
Ai et al. | A GPU-based Kalman Filter for track fitting | |
Zheng et al. | Performance model for OpenMP parallelized loops | |
Sarje et al. | Massively parallel X-ray scattering simulations | |
CN102981805B (zh) | 串行软件的响应方法和系统 | |
Mehta et al. | Evaluating performance portability of OpenMP for SNAP on NVIDIA, Intel, and AMD GPUs using the roofline methodology | |
Ashraf et al. | AAP4All: An Adaptive Auto Parallelization of Serial Code for HPC Systems. | |
Szugyi et al. | Towards a multicore C++ standard template library | |
Bajrovic et al. | Tuning OpenCL applications with the periscope tuning framework | |
Pan et al. | Heterogeneous multi-core optimization of MUMPS solver and its application | |
Magnussen et al. | Performance evaluation of oscar multi-target automatic parallelizing compiler on intel, amd, arm and risc-v multicores | |
Dokulil et al. | Automatic placement of tasks to NUMA nodes in iterative applications | |
Ao et al. | Parainsight: An assistant for quantitatively analyzing multi-granularity parallel region | |
Samadi et al. | Leveraging GPUs using cooperative loop speculation | |
Lai et al. | Performance improvement on heterogeneous platforms: a machine learning based approach | |
Poe et al. | TransPlant: A parameterized methodology for generating transactional memory workloads |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |