一种基于CPU多核平台的软件性能优化方法技术

技术编号:8593749 阅读:178 留言:0更新日期:2013-04-18 06:53
本发明专利技术提供一种基于CPU多核平台的软件性能优化方法,涉及软件运行特征分析、并行优化方案制定、并行优化方案实施与迭代调优三个步骤,具体内容包括:应用软件运行特征分析、串行算法分析、CPU多进/线程并行算法设计、多缓冲设计、线程间通信模式设计、访存优化、cache优化、处理器向量化优化、数学函数库优化等。本发明专利技术提供的方法广泛适用于具有多线程并行处理需求的应用场合,指导软件开发人员以较短的开发周期,较低的开发成本,快速高效地对现有软件进行多线程并行优化改造,实现软件对系统资源利用最优化,实现读数据,计算,写回数据的互相掩盖,最大限度地缩短软件运行时间,显著提高硬件资源利用率,提高软件的计算效率和软件整体性能。

【技术实现步骤摘要】

本专利技术涉及计算机高性能计算领域,具体地说是一种基于CPU多核平台的软件 性能优化方法。
技术介绍
硬件系统在新技术的推动下进行着快速演进,表现出更好的性能、更低的价格,如 传统CPU从单核向多核直至众核发展。随着多核体系结构处理器的普及,应用软件多进/ 线程并行处理方式将逐渐成为主流。硬件发展的最终目的是推动应用软件的表现,进而推进整个计算系统的性能。但 随着计算设备体系结构的多样化,多核化,软件系统仅仅依靠硬件的更新从而获得性能提 升的方式已经不符合现有硬件的发展趋势,例如传统的单线程串行程序在多核计算设备下 不能表现出更好的性能。因此软件系统必须摒弃原有继续享用免费午餐的方式,不能仅仅 依靠硬件性能的发展,而应该同时针对硬件系统的发展进行软件系统的再次开发和更新。 这也是目前计算架构下我们遇到的最大挑战,而软件系统的再次开发和改造则显得极为必 要。为了提高现有软件系统在新计算设备架构下的性能表现,针对软件系统进行再开 发具有很强的现实意义。目前国内外针对CPU多核体系结构的应用开发在CPU多核发展之初就如火如荼地 展开了,并陆续开发或改造出相当数量的应用。本方法关注于传统单线程串行软件的并行化改造,利用当前主流的多核CPU计算 设备,最大化提升计算资源利用率,提升软件效能。
技术实现思路
本专利技术的目的是提供一种基于CPU多核平台的软件性能优化方法。本专利技术的目的是按以下方式实现的,内容包括O软件运行特征分析;是对应用软件进行运行特征采样与分析,定位软件性能瓶颈, 特征采集与分析,需要代码分析与实验测试结合,并且善于使用软件运行特征分析工具,软 件运行特征分析工具主要有用户自有性能分析工具、商业性能分析软件或开源性能分析软 件;2)性能优化方案制定;包含三个方面并行模型方案设计、并行库的选择、进程/线程 性能优化方案,其中并行模型方案设计,主要涉及并行层次与并行粒度设计、核心计算并行算法设计、异步 并行处理框架设计、多缓冲设计、负载均衡设计、线程/进程通信设计、线程/进程函数优 化;并行库的选择,主要考滤并行模型、软件开发效率与项目周期、并行库的适用性、灵活 性、性能及其开发效率;进程/线程性能优化方案,内容有进程/线程调度优化、任务调度优化、热点算法模型 优化、访存优化、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与计算异步并行处理模型设计为了实现读数据、计算、写数据的并行处理,设计异步并行模型,使得读、计算、写分别 由相应的功能线程执行,三类线程具有异步时序,三者时间互相隐藏,从而使资源利用率达 到最大化,大大提高应用软件性能,异步并行模型,需要多缓冲、任务分发机制、线程调度机 制的支持;b)多缓冲设计设计多缓冲,用于数据预取、预输出,主要有源数据缓冲、中间数据缓冲、结果数据缓 冲,各缓冲与相应进程/线程构成“生产者-消费者”模型;c)任务调度机制设计任务分发机制,有共享互斥锁、消息队列模式;d)进程/线程通信机制设计进程/线程间需要通信,通信主要是同步、等待;进程间通信方式有管道、信号;线程间通信方式有信号量、消息队列、共享内存;e)负载均衡设计为提高并行处理效率,达到资源利用最大化,需要实现各进程/线程负责均衡最优化;负载均衡是软件设计目标,其实现载体是任务调度机制及进/线程通信机制;负载均衡分为节点间负载均衡和节点内负载均衡;负载均衡的原则是能者多劳;负载均衡的实现方式有1.静态负载均本文档来自技高网...

【技术保护点】
一种基于CPU多核平台的软件性能优化方法,?其特征在于内容包括:1)软件运行特征分析;是对应用软件进行运行特征采样与分析,定位软件性能瓶颈,特征采集与分析,需要代码分析与实验测试结合,并且善于使用软件运行特征分析工具,软件运行特征分析工具主要有用户自有性能分析工具、商业性能分析软件或开源性能分析软件;2)性能优化方案制定;包含三个方面:并行模型方案设计、并行库的选择、进程/线程性能优化方案,其中:并行模型方案设计,主要涉及并行层次与并行粒度设计、核心计算并行算法设计、异步并行处理框架设计、多缓冲设计、负载均衡设计、线程/进程通信设计、线程/进程函数优化;并行库的选择,主要考滤并行模型、软件开发效率与项目周期、并行库的适用性、灵活性、性能及其开发效率;进程/线程性能优化方案,内容有:进程/线程调度优化、任务调度优化、热点算法模型优化、访存优化、cache优化、数学函数库优化、指令优化、编译器优化,性能优化方案实施与迭代调优,并重复调优——测试——调优过程,进行迭代优化;具体优化流程及其实施步骤、细则如下:1)软件运行特征分析:分析软件运行特征,定位软件性能瓶颈应用软件运行特征分析,精准定位软件的性能瓶颈,使优化工作有的放矢,大大提高优化的效率;应用软件运行特征分析的原则有:(1)系统与局部分析结合软件整体框架与软件局部模块分析都很重要,互为补充,综合全面地掌握应用软件的运行特征;(2)定性与定量分析并重在优化开发周期有限的条件下,定性分析为工程师指明工作方向,专注于软件的主要瓶颈,而定量分析界定了性能提升的理论极限;(3)工具采样与代码分析结合软件运行特征分析过程中,工具采样分析与代码分析两种手段互为补充、互为指导工具采样分析,可以帮助程序员快速定位程序热点,而代码分析,为程序热点找到理论依据,从而使热点与代码映射起来;软件运行特征分析工具,具有高效全面、数据完备直观特点,在整个性能优化过程中都能发挥极大作用;软件运行特征分析工具,可以采集应用软件运行过程中的CPU利用率、内存特征、磁盘特征、网络特征、指令CPI信息;软件热点分析工具,可以采集应用软件运行时各函数CPU使用率及其百分比、分析线程时序、分析程序并发度、检查软件内存和线程缺陷;(4)宏观与微观分析结合应用软件的运行特征分析,既有高层次的宏观分析,也有底层的微观分析,宏观呈现现象,微观揭示原理,宏观分析指明优化方向,微观分析指导优化的手段;2)性能优化方案制定:制定综合、全面的性能优化方案(1)优化方案的总体思想高效利用系统资源,包括多核计算资源、内存资源、磁盘资源、网络资源;(2)优化层次、效率、开发周期的关系;优化层次与优化效率的关系:物理模型>数学模型>算法模型;优化层次与优化周期的关系:物理模型OpenMP;b)不同并行库的灵活性比较:MPI/pthread>OpenMP;c)不同并行库的系统适应性比较;?i.MPI既适用于多节点间分布式内存并行,也适用于节点内共享内存并行,进行间通信开销较大;ii.OpenMP/pthread只能用于共享内存并行,线程间通信直接、高效;程序员综合并行方案,性能目标,软件开发周期因素,选择最合适的并行库;3)性能优化方案实施与迭代调优:实施既定的性能优化方案并迭代调优主要是实现第2阶段制定的性能优化方案,并重复调优——测试——调优过程,进行迭代优化;5、性能测试及分析将该方法应用于某个典型的石油行业应用软件模块多线程并行程序开发项目,并利用真实数据进行性能测试;本次性能测试将针对不同规模的作业,利用不同规模的任务进行多次测试,并搜集测试数据进行性能分析;1)测试环境及测试数据(1)测试环境包括硬件环境、软件环境;(2)软件环境;操作系统名称:RedHat?Linux企业版,版本:5.3编译器名称:Intel编译器,版本:10.1数据库名称:Oracle数据库,版本:10g应用系统名称:某地震资料解释软件模块(3)测试数据及作业规模测试数据为真实生产的3D实际数据;2)性能测试结果分析利用该方法对该软件模块进行多线程并行化改造后,显著地提升了该软件模块的运行效率,以较短的开发周期,获得了较高的性能加速比。...

【技术特征摘要】
1.一种基于CPU多核平台的软件性能优化方法,其特征在于内容包括1)软件运行特征分析;是对应用软件进行运行特征采样与分析,定位软件性能瓶颈, 特征采集与分析,需要代码分析与实验测试结合,并且善于使用软件运行特征分析工具,软件运行特征分析工具主要有用户自有性能分析工具、商业性能分析软件或开源性能分析软件;2)性能优化方案制定;包含三个方面并行模型方案设计、并行库的选择、进程/线程性能优化方案,其中并行模型方案设计,主要涉及并行层次与并行粒度设计、核心计算并行算法设计、异步并行处理框架设计、多缓冲设计、负载均衡设计、线程/进程通信设计、线程/进程函数优化;并行库的选择,主要考滤并行模型、软件开发效率与项目周期、并行库的适用性、灵活性、性能及其开发效率;进程/线程性能优化方案,内容有进程/线程调度优化、任务调度优化、热点算法模型优化、访存优化、cache优化、数学函数库优化、指令优化、编译器优化,性能优化方案实施与迭代调优,并重复调优——测试——调优过程,进行迭代优化;具体优化流程及其实施步骤、细则如下1)软件运行特征分析分析软件运行特征,定位软件性能瓶颈应用软件运行特征分析, 精准定位软件的性能瓶颈,使优化工作有的放矢,大大提高优化的效率;应用软件运行特征分析的原则有(1)系统与局部分析结合软件整体框架与软件局部模块分析都很重要,互为补充,综合全面地掌握应用软件的运行特征;(2)定性与定量分析并重在优化开发周期有限的条件下,定性分析为工程师指明工作方向,专注于软件的主要瓶颈,而定量分析界定了性能提升的理论极限;(3)工具采样与代码分析结合软件运行特征分析过程中,工具采样分析与代码分析两种手段互为补充、互为指导工具采样分析,可以帮助程序员快速定位程序热点,而代码分析,为程序热点找到理论依据,从而使热点与代码映射起来;软件运行特征分析工具,具有高效全面、数据完备直观特点,在整个性能优化过程中都能发挥极大作用;软件运行特征分析工具,可以采集应用软件运行过程中的CPU利用率、内存特征、磁盘特征、网络特征、指令CPI信息;软件热点分析工具,可以采集应用软件运行时各函数CPU使用率及其百分比、分析线程时序、分析程序并发度、检查软件内存和线程缺陷;(4)宏观与微观分析结合应用软件的运行特征分析,既有高层次的宏观分析,也有底层的微观分析,宏观呈现现象,微观揭示原理,宏观分析指明优化方向,微观分析指导优化的手段;2)性能优化方案制定制定综合、全面的性能优化方案(I)优化方案的总体思想高效利用系统资源,包括多核计算资源、内存资源、磁盘资源、 网络资源;(2)优化层次、效率、开发周期的关系; 优化层次与优化效率的关系物理模型 > 数学模型 > 算法模型; 优化层次与优化周期的关系物理模型〈数学模型〈算法模型; (3)并行模型设计;. 1.并行算法设计 优异的并行算法,是性能优化的前提条件和基础; 深入分析数据依赖关系,充分挖掘算法的并行性,必要时,对现有算法进行并行性改造,从而最大限度减少数据依赖和交換,提高算法的并行度,并行度越高,并行可扩展性越好;. 2.选择合适的并行粒度或层次 定义高层次或外层循环,并行为粗粒度并行,低层次或内层循环,并行为细粒度并行; 并行粒度的选择非常关键,主要考虑以下因素 a)算法的并行性与并行的可扩展性不同的并行粒度,数据依赖关系不同,导致并行度也不同,制定并行方案时,要充分挖掘算法的并行性,必要时,对现有算法进行并行性改造,从而最大限度减少数据依赖和交換,提高算法的并行度,并行度越高,并行可扩展性越好; b)并行效率一一线程调度开销并行粒度越小,线程调度越频繁,开销越大,兼顾负载均衡性,选择合适的并行粒度; c)线程通信开销不同的并行粒度,用于线程通信的锁、队列开销不同,不同并行粒度,可能引入不同的线程间数据依赖关系,从而导致线程同步或等待; d)内存容量——空间换时间并行化引入多缓冲,增加内存需求,不同并行粒度,引入不同缓存需求; e)负载均衡并行粒度不同,可能负载均衡效果的差异; f)满足IO与计算异步并行的需求并行层级必须达到一定高度,才方便实现读、写功能线程,进而与计算线程实现异步并行; g)平衡性能与开发周期的矛盾优化层次越高,开发周期越长; h)并行粒度影响并行库的选择并行库的选择,很大程度上取决于并行粒度; 多节点分布式内存并行方案,需要多进程并行,这样就需要选择MPI并行; 节点内共享式内存并行方案,多线程并行效率更高,如果并行粒度低且并行逻辑较简单,OpenMP基本满足要求,并且开发周期短,如果并行粒度较高或并行逻辑复杂,那么pthread是不错的选择;.3.并行模型设计 选择了合适的并行粒度之后,需要设计ー个高效的并行模型,其主要内容有 a)IO与计算异步并行处理模型设计 为了实现读数据、计算、写数据的并行处理,设计异步并行模型,使得读、计算、写分别由相应的功能线程执行,三类线程具有异步时序,三者时间互相隐藏,从而使资...

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

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

1