串行软件的响应方法和系统技术方案

技术编号:8452781 阅读:187 留言:0更新日期:2013-03-21 13:16
本发明专利技术提供一种串行软件的响应方法和系统。所述方法,包括:,应用在多核CPU的系统中,所述串行软件包括相互独立的读线程、写线程和计算线程,其中读线程与计算线程共享第一缓存,写线程与所述计算线程共享第二缓存,其中:在执行多组读写操作时,在读线程将读操作得到的数据缓存到第一缓存后,执行下一组读写操作;在计算线程检测到第一缓存写入数据后,采用第一缓存内的数据进行处理,得到的处理结果存入第二缓存;在写线程检测到第二缓存写入数据后,写线程将第二缓存内的数据存入存储空间。

【技术实现步骤摘要】

本专利技术涉及计算机应用领域,尤其涉及一种串行软件的响应方法和系统
技术介绍
硬件系统在新技术的推动下进行着快速演进,表现出更好的性能、更低的价格,如传统CPU从单核向多核直至众核发展。随着多核体系结构处理器的普及,应用软件多进/线程并行处理方式将逐渐成为主流。硬件发展的最终目的是推动应用软件的表现,进而推进整个计算系统的性能。但随着计算设备体系结构的多样化,多核化,软件系统仅仅依靠硬件的更新从而获得性能提升的方式已经不符合现有硬件的发展趋势,例如传统的单线程串行程序在多核计算设备下不能表现出更好的性能。因此软件系统必须摒弃原有继续享用免费午餐的方式,不能仅仅依靠硬件性能的发展,而应该同时针对硬件系统的发展进行软件系统的再次开发和更新。这也是目前计算架构下我们遇到的最大挑战,而软件系统的再次开发和改造则显得极为必要。为了提高现有软件系统在新计算设备架构下的性能表现,针对软件系统进行再开发具有很强的现实意义。目前国内外针对CPU多核体系结构的应用开发在CPU多核发展之初就如火如荼地展开了,并陆续开发或改造出相当数量的应用,但是现有技术中并没有针对传统单线程串行软件的并行化改造方案。因此如何实现串行软件的并行化处理是本专利技术要解决的问题。
技术实现思路
本专利技术提供一种串行软件的响应方法和系统,要解决的技术问题是如何实现串行软件的并行化处理为解决上述技术问题,本专利技术提供了如下技术方案一种串行软件的响应方法,应用在多核CPU的系统中,所述串行软件包括相互独立的读线程、写线程和计算线程,其中读线程与计算线程共享第一缓存,写线程与所述计算线程共享第二缓存,其中在执行多组读写操作时,在读线程将读操作得到的数据缓存到第一缓存后,执行下一组读写操作;在计算线程检测到第一缓存写入数据后,采用第一缓存内的数据进行处理,得到的处理结果存入第二缓存;在写线程检测到第二缓存写入数据后,写线程将第二缓存内的数据存入存储空间。优选的,所述方法还具有如下特点所述方法还包括当第一缓存中存储的任务为多个时,多个计算线程依照次序从第一缓存中读取任务。一种串行软件的响应装置,应用在多核CPU的系统中,所述串行软件包括相互独立的读线程模块、写线程模块和计算线程模块,其中读线程模块与计算线程模块共享第一缓存,写线程模块与所述计算线程模块共享第二缓存,其中所述读线程模块,用于在执行多组读写操作时,将读操作得到的数据缓存到第一缓存后,执行下一组读写操作;计算线程模块,用于在检测到第一缓存写入数据后,采用第一缓存内的数据进行处理,得到的处理结果存入第二缓存;写线程模块,用于在检测到第二缓存写入数据后,将第二缓存内的数据存入存储空间。优选的,所述方法还具有如下特点所述系统还包括调度模块,用于当第一缓存中存储的任务为多个时,控制多个计算线程模块依照次序从第一缓存中读取任务。本专利技术提供的实施例,通过实现单一功能的线程来实现,因此,在执行多组读写操作时,实现了并行化处理,且通过共享缓存空间,触发下一个线程进行处理,便于不同功能的线程间的操作衔接。附图说明图1为本专利技术提供的串行软件的响应方法实施例的流程示意图;图2为本专利技术方法实施例与现有技术的对比示意图。具体实施例方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本专利技术作进一步的详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。图1为本专利技术提供的串行软件的响应方法实施例的流程示意图。图1所示方法实施例,应用在多核CPU的设备中,包括相互独立的读线程、写线程和计算线程,其中读线程与计算线程共享第一缓存,写线程与所述计算线程共享第二缓存,其中步骤101、在执行多组读写操作时,在读线程将读操作得到的数据缓存到第一缓存后,执行下一组读写操作;步骤102、在计算线程检测到第一缓存写入数据后,采用第一缓存内的数据进行处理,理得到的处理结果存入第二缓存;步骤103、在写线程检测到第二缓存写入数据后,写线程将第二缓存内的数据存入存储空间。需要说明的是,本方法实施例,通过实现单一功能的线程来实现,因此,在执行多组读写操作时,实现了并行化处理,且通过共享缓存空间,触发下一个线程进行处理,便于不同功能的线程间的操作衔接。图2为本专利技术方法实施例与现有技术的对比示意图。在图2中,第一个为现有技术中串行处理所需的时间,即T0TAL_1 = N*(READ_T+COMPUTE_T+WRITE_T);第二个为本专利技术实施例中并行处理所需的时间,即T0TAL_2 = N*READ_T+COMPUTE_T+(N-1)*(WRITE_T-READ_T)+WRITE_T ;其中,N为读写操作的组数,一组读写操作包括读、计算和写。由此可以看出,读数据、计算以及写数据进行异步操作,在时间上互相掩盖,出现重叠,最大限度地缩短软件运行时间,显著提高硬件资源利用率,提高计算效率和整体性倉泛。可选的,当第一缓存中存储的任务为多个时,多个计算线程依照次序从第一缓存中读取任务。通过对任务的调用可以对充分发挥性能,实现最优使用。为提高该串行软件在多核CPU系统上的并行处理效率,达到资源利用最大化,需要实现各进程/线程负责均衡最优化,如果多核CPU系统包括多个节点,则负载均衡分为节点间负载均衡和节点内负载均衡,而负载均衡的原则是能者多劳,即将负载超过阈值的节点上的任务迁移到负载低于阈值的节点,其中该阈值的选择可以根据个人经验进行设置。其中,负载均衡通常有两种方式I、静态负载均衡,适用于数据并行,且运算量与数据规模呈稳定的关系,这种方式实现简单,但是系统适应性差。2、动态负载均衡,适用于任务并行,或者运算量无法事先预测的情形,这种方式实现起来相对复杂,但是非常高效,系统适应性好,软件健壮性高。在软件并行化后,软件的热点部分,即核心计算,都由相应的进程/线程函数执行。因此,进程/线程的优化,成为软件性能进一步提升的关键。进程/线程函数优化的主要内容有,即在软件开发过程中对其进行优化I、核心算法逻辑优化与并行优化、IO优化、热点代码优化相结合,相辅相成。微数学模型优化,化繁琐变换为直接计算。计算过程精简,减少中间变量。2、IO 优化I)宏观IO优化尽量实现读、计算、写异步并行,互相掩盖。化随机、零散小数据读写为连续、大块数据读写。 2)微观IO优化(体现于核心算法的优化)内存管理优化减小内存使用量使内存集中分配、释放,减小内存分配、释放次数数据结构优化,提高访存效率,如将矩阵行优先存储访问,可以提高矩阵的访问效率。3、Cache优化充分利用数据局部性,平衡任务粒度与cache容量的矛盾。4、变量优化常量复用,中间数据精简,最大限度减少冗余计算、冗余变量等开销。5、寻址优化使用临时指针,减少多级寻址次数6、数据函数库优化I)选择不同的快速数学库mkl/fftw等。2)数学函数的不同精度版本。如X(d),X函数的双精度版本,如cos/exp/log等;Xf, X函数的单精度版本,如cosf/expf/logf等。7、指令优化DSIMD指令集优化,即向量指令优化2)预编译指令#pragma ivdep/simd3)编译选项-xSSE3/4. la/4. 2a-vec-report34)控制向量化精度-fp-mo本文档来自技高网...

【技术保护点】
一种串行软件的响应方法,其特征在于,应用在多核CPU的系统中,所述串行软件包括相互独立的读线程、写线程和计算线程,其中读线程与计算线程共享第一缓存,写线程与所述计算线程共享第二缓存,其中:在执行多组读写操作时,在读线程将读操作得到的数据缓存到第一缓存后,执行下一组读写操作;在计算线程检测到第一缓存写入数据后,采用第一缓存内的数据进行处理,得到的处理结果存入第二缓存;在写线程检测到第二缓存写入数据后,写线程将第二缓存内的数据存入存储空间。

【技术特征摘要】

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

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

1