CN102981805B - 串行软件的响应方法和系统 - Google Patents
串行软件的响应方法和系统 Download PDFInfo
- Publication number
- CN102981805B CN102981805B CN201210434606.7A CN201210434606A CN102981805B CN 102981805 B CN102981805 B CN 102981805B CN 201210434606 A CN201210434606 A CN 201210434606A CN 102981805 B CN102981805 B CN 102981805B
- Authority
- CN
- China
- Prior art keywords
- buffer memory
- write
- thread
- data
- read
- 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
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000004044 response Effects 0.000 title abstract description 8
- 230000008569 process Effects 0.000 claims abstract description 24
- 230000003139 buffering effect Effects 0.000 claims abstract description 13
- 238000005457 optimization Methods 0.000 description 23
- 238000004458 analytical method Methods 0.000 description 15
- 238000004422 calculation algorithm Methods 0.000 description 13
- 235000019580 granularity Nutrition 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 238000011161 development Methods 0.000 description 7
- 238000010276 construction Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013178 mathematical model Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000004452 microanalysis Methods 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 238000004451 qualitative analysis Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 238000012113 quantitative test Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
Abstract
本发明提供一种串行软件的响应方法和系统。所述方法,包括:应用在多核CPU的系统中,所述串行软件包括相互独立的读线程、写线程和计算线程,其中读线程与计算线程共享第一缓存,写线程与所述计算线程共享第二缓存,其中:在执行多组读写操作时,在读线程将读操作得到的数据缓存到第一缓存后,执行下一组读写操作;在计算线程检测到第一缓存写入数据后,采用第一缓存内的数据进行处理,得到的处理结果存入第二缓存;在写线程检测到第二缓存写入数据后,写线程将第二缓存内的数据存入存储空间。
Description
技术领域
本发明涉及计算机应用领域,尤其涉及一种串行软件的响应方法和系统。
背景技术
硬件系统在新技术的推动下进行着快速演进,表现出更好的性能、更低的价格,如传统CPU从单核向多核直至众核发展。随着多核体系结构处理器的普及,应用软件多进/线程并行处理方式将逐渐成为主流。
硬件发展的最终目的是推动应用软件的表现,进而推进整个计算系统的性能。但随着计算设备体系结构的多样化,多核化,软件系统仅仅依靠硬件的更新从而获得性能提升的方式已经不符合现有硬件的发展趋势,例如传统的单线程串行程序在多核计算设备下不能表现出更好的性能。因此软件系统必须摒弃原有继续享用免费午餐的方式,不能仅仅依靠硬件性能的发展,而应该同时针对硬件系统的发展进行软件系统的再次开发和更新。这也是目前计算架构下我们遇到的最大挑战,而软件系统的再次开发和改造则显得极为必要。
为了提高现有软件系统在新计算设备架构下的性能表现,针对软件系统进行再开发具有很强的现实意义。
目前国内外针对CPU多核体系结构的应用开发在CPU多核发展之初就如火如荼地展开了,并陆续开发或改造出相当数量的应用,但是现有技术中并没有针对传统单线程串行软件的并行化改造方案。因此如何实现串行软件的并行化处理是本发明要解决的问题。
发明内容
本发明提供一种串行软件的响应方法和系统,要解决的技术问题是如何实现串行软件的并行化处理
为解决上述技术问题,本发明提供了如下技术方案:
一种串行软件的响应方法,应用在多核CPU的系统中,所述串行软件包括相互独立的读线程、写线程和计算线程,其中读线程与计算线程共享第一缓存,写线程与所述计算线程共享第二缓存,其中:
在执行多组读写操作时,在读线程将读操作得到的数据缓存到第一缓存后,执行下一组读写操作;
在计算线程检测到第一缓存写入数据后,采用第一缓存内的数据进行处理,得到的处理结果存入第二缓存;
在写线程检测到第二缓存写入数据后,写线程将第二缓存内的数据存入存储空间。
优选的,所述方法还具有如下特点:所述方法还包括:
当第一缓存中存储的任务为多个时,多个计算线程依照次序从第一缓存中读取任务。
一种串行软件的响应装置,应用在多核CPU的系统中,所述串行软件包括相互独立的读线程模块、写线程模块和计算线程模块,其中读线程模块与计算线程模块共享第一缓存,写线程模块与所述计算线程模块共享第二缓存,其中:
所述读线程模块,用于在执行多组读写操作时,将读操作得到的数据缓存到第一缓存后,执行下一组读写操作;
计算线程模块,用于在检测到第一缓存写入数据后,采用第一缓存内的数据进行处理,得到的处理结果存入第二缓存;
写线程模块,用于在检测到第二缓存写入数据后,将第二缓存内的数据存入存储空间。
优选的,所述方法还具有如下特点:所述系统还包括:
调度模块,用于当第一缓存中存储的任务为多个时,控制多个计算线程模块依照次序从第一缓存中读取任务。
本发明提供的实施例,通过实现单一功能的线程来实现,因此,在执行多组读写操作时,实现了并行化处理,且通过共享缓存空间,触发下一个线程进行处理,便于不同功能的线程间的操作衔接。
附图说明
图1为本发明提供的串行软件的响应方法实施例的流程示意图;
图2为本发明方法实施例与现有技术的对比示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步的详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图1为本发明提供的串行软件的响应方法实施例的流程示意图。图1所示方法实施例,应用在多核CPU的设备中,包括:相互独立的读线程、写线程和计算线程,其中读线程与计算线程共享第一缓存,写线程与所述计算线程共享第二缓存,其中:
步骤101、在执行多组读写操作时,在读线程将读操作得到的数据缓存到第一缓存后,执行下一组读写操作;
步骤102、在计算线程检测到第一缓存写入数据后,采用第一缓存内的数据进行处理,理得到的处理结果存入第二缓存;
步骤103、在写线程检测到第二缓存写入数据后,写线程将第二缓存内的数据存入存储空间。
需要说明的是,本方法实施例,通过实现单一功能的线程来实现,因此,在执行多组读写操作时,实现了并行化处理,且通过共享缓存空间,触发下一个线程进行处理,便于不同功能的线程间的操作衔接。
图2为本发明方法实施例与现有技术的对比示意图。
在图2中,第一个为现有技术中串行处理所需的时间,即:
TOTAL_1=N*(READ_T+COMPUTE_T+WRITE_T);
第二个为本发明实施例中并行处理所需的时间,即:
TOTAL_2=N*READ_T+COMPUTE_T+(N-1)*(WRITE_T-READ_T)+WRITE_T;
其中,N为读写操作的组数,一组读写操作包括读、计算和写。
由此可以看出,读数据、计算以及写数据进行异步操作,在时间上互相掩盖,出现重叠,最大限度地缩短软件运行时间,显著提高硬件资源利用率,提高计算效率和整体性能。
可选的,当第一缓存中存储的任务为多个时,多个计算线程依照次序从第一缓存中读取任务。
通过对任务的调用可以对充分发挥性能,实现最优使用。
为提高该串行软件在多核CPU系统上的并行处理效率,达到资源利用最大化,需要实现各进程/线程负责均衡最优化,如果多核CPU系统包括多个节点,则负载均衡分为节点间负载均衡和节点内负载均衡,而负载均衡的原则是能者多劳,即将负载超过阈值的节点上的任务迁移到负载低于阈值的节点,其中该阈值的选择可以根据个人经验进行设置。
其中,负载均衡通常有两种方式:
1、静态负载均衡,适用于数据并行,且运算量与数据规模呈稳定的关系,这种方式实现简单,但是系统适应性差。
2、动态负载均衡,适用于任务并行,或者运算量无法事先预测的情形,这种方式实现起来相对复杂,但是非常高效,系统适应性好,软件健壮性高。
在软件并行化后,软件的热点部分,即核心计算,都由相应的进程/线程函数执行。因此,进程/线程的优化,成为软件性能进一步提升的关键。进程/线程函数优化的主要内容有,即在软件开发过程中对其进行优化:
1、核心算法逻辑优化
与并行优化、IO优化、热点代码优化相结合,相辅相成。
微数学模型优化,化繁琐变换为直接计算。
计算过程精简,减少中间变量。
2、IO优化
1)宏观IO优化
尽量实现读、计算、写异步并行,互相掩盖。
化随机、零散小数据读写为连续、大块数据读写。
2)微观IO优化(体现于核心算法的优化)
内存管理优化
减小内存使用量
使内存集中分配、释放,减小内存分配、释放次数
数据结构优化,提高访存效率,如将矩阵行优先存储访问,可以提高矩阵的访问效率。
3、Cache优化:充分利用数据局部性,平衡任务粒度与cache容量的矛盾。
4、变量优化:常量复用,中间数据精简,最大限度减少冗余计算、冗余变量等开销。
5、寻址优化:使用临时指针,减少多级寻址次数
6、数据函数库优化
1)选择不同的快速数学库:mkl/fftw等。
2)数学函数的不同精度版本。如:X(d),X函数的双精度版本,如cos/exp/log等;Xf,X函数的单精度版本,如cosf/expf/logf等。
7、指令优化
1)SIMD指令集优化,即向量指令优化
2)预编译指令:#pragmaivdep/simd
3)编译选项:-xSSE3/4.1a/4.2a-vec-report3
4)控制向量化精度:-fp-modelstrict/precise/double/fast/source等
当然,为提高自动向量化率,对代码作必要调整,循环拆分、循环融合、循环调序,复杂表达式拆解,统一操作数精度,查看编译日志,了解相应循环是否向量化或未能向量化原因。
8、编译器优化
1)自动优化选项:-O3,-fp-modelfast等
2)各种优化手段都依赖编译器支持。如自动向量化选项,向量化编译报告,高性能数学库链接选项等。
9、性能与精度的平衡
性能与精度是互相矛盾的,程序员根据实际需求,进行取舍。
10、并行库的选择
目前,比较主流的并行库有MPI/OpenMP/pthread等。
不同并行库的开发周期比较:MPI/pthread>OpenMP
不同并行库的灵活性比较:MPI/pthread>OpenMP
不同并行库的系统适应性比较:
MPI既适用于多节点间分布式内存并行,也适用于节点内共享内存并行,进行间通信开销较大。
OpenMP/pthread只能用于共享内存并行,线程间通信直接、高效。
程序员综合并行方案,性能目标,软件开发周期等因素,选择最合适的并行库。
性能优化方案实施与迭代调优:实施既定的性能优化方案并迭代调优
上文对软件开发过程进行了描述,为了缩短软件开发流程,可以在进行软件开发前,执行如下操作:
1、软件运行特征分析:分析软件运行特征,定位软件性能瓶颈
应用软件运行特征分析,精准定位软件的性能瓶颈,可以使优化工作有的放矢,大大提高优化的效率。
应用软件运行特征分析的原则包括:1)系统与局部分析结合,即软件整体框架与软件局部模块分析都很重要,互为补充,综合全面地掌握应用软件的运行特征;2)定性与定量分析并重,在优化开发周期有限的条件下,定性分析为工程师指明工作方向,专注于软件的主要瓶颈,而定量分析界定了性能提升的理论极限;3)工具采样与代码分析结合,软件运行特征分析过程中,工具采样分析与代码分析两种手段互为补充、互为指导工具采样分析,可以帮助程序员快速定位程序热点,而代码分析,为程序热点找到理论依据,从而使热点与代码映射起来;4)软件运行特征分析工具,具有高效全面、数据完备直观等特点,在整个性能优化过程中都能发挥极大作用;5)软件运行特征分析工具,可以采集应用软件运行过程中的CPU利用率、内存特征、磁盘特征、网络特征、指令CPI等信息,其中软件热点分析工具,可以采集应用软件运行时各函数CPU使用率及其百分比、分析线程时序、分析程序并发度、检查软件内存和线程缺陷等;6、宏观与微观分析结合,应用软件的运行特征分析,既有高层次的宏观分析,也有底层的微观分析,宏观呈现现象,微观揭示原理,宏观分析指明优化方向,微观分析指导优化的手段。
2、性能优化方案制定:制定综合、全面的性能优化方案
1)优化方案的总体思想:高效利用系统资源,包括多核计算资源、内存资源、磁盘资源、网络资源等。
2)优化层次、效率、开发周期的关系,包括:
优化层次与优化效率的关系:物理模型>数学模型>算法模型
优化层次与优化周期的关系:物理模型<数学模型<算法模型
3、并行模型设计
1)并行算法设计
优异的并行算法,是性能优化的前提条件和基础。
深入分析数据依赖关系,充分挖掘算法的并行性,必要时,对现有算法进行并行性改造,从而最大限度减少数据依赖和交换,提高算法的并行度,并行度越高,并行可扩展性越好。
2)选择合适的并行粒度(层次)
定义:高层次(外层循环)并行为粗粒度并行,低层次(内层循环)并行为细粒度并行。
并行粒度的选择非常关键,主要考虑以下因素:
第一点,算法的并行性与并行的可扩展性,即:不同的并行粒度,数据依赖关系不同,导致并行度也不同,制定并行方案时,要充分挖掘算法的并行性,必要时,对现有算法进行并行性改造,从而最大限度减少数据依赖和交换,提高算法的并行度,并行度越高,并行可扩展性越好。
第二点,并行效率——线程调度开销,即:并行粒度越小,线程调度越频繁,开销越大
第三点,兼顾负载均衡性和线程通信开销
选择合适的并行粒度,包括:不同的并行粒度,用于线程通信的锁、队列开销不同;不同并行粒度,可能引入不同的线程间数据依赖关系,从而导致线程同步或等待
3)内存容量——空间换时间
并行化引入多缓冲,增加内存需求
不同并行粒度,引入不同缓存需求
4)负载均衡
并行粒度不同,可能负载均衡效果的差异,满足IO与计算异步并行的需求,并行层级必须达到一定高度,才方便实现读、写功能线程,进而与计算线程实现异步并行。
5)平衡性能与开发周期的矛盾,即优化层次越高,开发周期越长
总结来说,并行粒度影响并行库的选择,并行库的选择,很大程度上取决于并行粒度,多节点分布式内存并行方案,需要多进程并行,这样就需要选择MPI并行,节点内共享式内存并行方案,多线程并行效率更高,如果并行粒度低且并行逻辑较简单,OpenMP基本可以满足要求,并且开发周期短,如果并行粒度较高或并行逻辑复杂,pthread是不错的选择。
本发明提供的串行软件的响应装置,应用在多核CPU的系统中,所述串行软件包括相互独立的读线程模块、写线程模块和计算线程模块,其中读线程模块与计算线程模块共享第一缓存,写线程模块与所述计算线程模块共享第二缓存,其中:
所述读线程模块,用于在执行多组读写操作时,将读操作得到的数据缓存到第一缓存后,执行下一组读写操作;
计算线程模块,用于在检测到第一缓存写入数据后,采用第一缓存内的数据进行处理,得到的处理结果存入第二缓存;
写线程模块,用于在检测到第二缓存写入数据后,将第二缓存内的数据存入存储空间。
可选的,所述系统还包括:
调度模块,用于当第一缓存中存储的任务为多个时,控制多个计算线程模块依照次序从第一缓存中读取任务。
本发明实施例提供的装置实施例,通过实现单一功能的线程来实现,因此,在执行多组读写操作时,实现了并行化处理,且通过共享缓存空间,触发下一个线程进行处理,便于不同功能的线程间的操作衔接。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。
Claims (1)
1.一种串行软件的响应装置,其特征在于,应用在多核CPU的系统中,所述串行软件包括相互独立的读线程模块、写线程模块和计算线程模块,其中读线程模块与计算线程模块共享第一缓存,写线程模块与所述计算线程模块共享第二缓存,其中:
所述读线程模块,用于在执行多组读写操作时,将读操作得到的数据缓存到第一缓存后,执行下一组读写操作;
计算线程模块,用于在检测到第一缓存写入数据后,采用第一缓存内的数据进行处理,得到的处理结果存入第二缓存;
写线程模块,用于在检测到第二缓存写入数据后,将第二缓存内的数据存入存储空间;
调度模块,用于当第一缓存中存储的任务为多个时,控制多个计算线程模块依照次序从第一缓存中读取任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210434606.7A CN102981805B (zh) | 2012-11-02 | 2012-11-02 | 串行软件的响应方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210434606.7A CN102981805B (zh) | 2012-11-02 | 2012-11-02 | 串行软件的响应方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102981805A CN102981805A (zh) | 2013-03-20 |
CN102981805B true CN102981805B (zh) | 2015-11-18 |
Family
ID=47855876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210434606.7A Active CN102981805B (zh) | 2012-11-02 | 2012-11-02 | 串行软件的响应方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102981805B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106161503A (zh) * | 2015-03-27 | 2016-11-23 | 中兴通讯股份有限公司 | 一种分布式存储系统中的文件读取方法及服务端 |
CN115150218A (zh) * | 2021-03-30 | 2022-10-04 | 广东博智林机器人有限公司 | 一种上位机与驱动器的串行通信方法、装置及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5179679A (en) * | 1989-04-07 | 1993-01-12 | Shoemaker Kenneth D | Apparatus and method for permitting reading of data from an external memory when data is stored in a write buffer in the event of a cache read miss |
CN101286138A (zh) * | 2008-06-03 | 2008-10-15 | 浙江大学 | 基于数据划分的多线程共享多核处理器二级缓存的方法 |
CN101504618A (zh) * | 2009-02-26 | 2009-08-12 | 浙江大学 | 面向多核处理器的实时线程迁移方法 |
CN102902512A (zh) * | 2012-08-31 | 2013-01-30 | 浪潮电子信息产业股份有限公司 | 一种基于多线程编程及消息队列的多线程并行处理方法 |
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
-
2012
- 2012-11-02 CN CN201210434606.7A patent/CN102981805B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5179679A (en) * | 1989-04-07 | 1993-01-12 | Shoemaker Kenneth D | Apparatus and method for permitting reading of data from an external memory when data is stored in a write buffer in the event of a cache read miss |
CN101286138A (zh) * | 2008-06-03 | 2008-10-15 | 浙江大学 | 基于数据划分的多线程共享多核处理器二级缓存的方法 |
CN101504618A (zh) * | 2009-02-26 | 2009-08-12 | 浙江大学 | 面向多核处理器的实时线程迁移方法 |
CN102902512A (zh) * | 2012-08-31 | 2013-01-30 | 浪潮电子信息产业股份有限公司 | 一种基于多线程编程及消息队列的多线程并行处理方法 |
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102981805A (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103049245B (zh) | 一种基于中央处理器cpu多核平台的软件性能优化方法 | |
Pattnaik et al. | Scheduling techniques for GPU architectures with processing-in-memory capabilities | |
CN102902512B (zh) | 一种基于多线程编程及消息队列的多线程并行处理方法 | |
Phothilimthana et al. | Portable performance on heterogeneous architectures | |
KR101839544B1 (ko) | 이종 코어의 자동 부하 균형 | |
Spafford et al. | The tradeoffs of fused memory hierarchies in heterogeneous computing architectures | |
Wang et al. | Asymo: scalable and efficient deep-learning inference on asymmetric mobile cpus | |
US8528001B2 (en) | Controlling and dynamically varying automatic parallelization | |
Prakash et al. | Energy-efficient execution of data-parallel applications on heterogeneous mobile platforms | |
Haji et al. | A State of Art Survey for OS Performance Improvement | |
Raju et al. | A survey on techniques for cooperative CPU-GPU computing | |
Hayes et al. | Unified on-chip memory allocation for SIMT architecture | |
Eastep et al. | Smartlocks: lock acquisition scheduling for self-aware synchronization | |
He et al. | Hadoop+ modeling and evaluating the heterogeneity for mapreduce applications in heterogeneous clusters | |
He et al. | Enabling energy-efficient DNN training on hybrid GPU-FPGA accelerators | |
Lösch et al. | Performance-centric scheduling with task migration for a heterogeneous compute node in the data center | |
Chen et al. | Balancing scalar and vector execution on gpu architectures | |
Butcher et al. | Optimizing for KNL usage modes when data doesn't fit in MCDRAM | |
CN102981805B (zh) | 串行软件的响应方法和系统 | |
Liang et al. | Efficient kernel management on GPUs | |
Zheng et al. | Performance model for OpenMP parallelized loops | |
Shekarisaz et al. | MASTER: Reclamation of hybrid scratchpad memory to maximize energy saving in multi-core edge systems | |
Tarakji et al. | The development of a scheduling system GPUSched for graphics processing units | |
Boyer | Improving Resource Utilization in Heterogeneous CPU-GPU Systems | |
Bratek et al. | Heterogeneous voltage frequency scaling of data-parallel applications for energy saving on homogeneous multicore platforms |
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 |