CN112306678B - 一种基于异构众核处理器的算法并行处理方法及系统 - Google Patents
一种基于异构众核处理器的算法并行处理方法及系统 Download PDFInfo
- Publication number
- CN112306678B CN112306678B CN202011139857.3A CN202011139857A CN112306678B CN 112306678 B CN112306678 B CN 112306678B CN 202011139857 A CN202011139857 A CN 202011139857A CN 112306678 B CN112306678 B CN 112306678B
- Authority
- CN
- China
- Prior art keywords
- core
- slave
- data
- slave core
- master
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种基于异构众核处理器的算法并行处理方法及系统,以串行程序中运行耗时大的代码段作为并行计算的对象,根据其特点进行任务的划分,确定主核与从核阵列的任务分工,将耗时的计算交给从核阵列执行;每个从核主动从主存中获取任务和计算所用到的数据,并返回计算结果给主核,主核采用异步串行方式对主存数据进行更新,以避免数据依赖引起数据读写错误;同时,针对主从核通信的时间消耗问题,通过将单数据项封装在结构体中实现数据打包,并设置主核的数据主存地址256B对界,实现单次数据拷贝粒度不小于256B,以最大化地利用单核组的带宽,优化数据传输性能,在从核执行计算过程中,使用双缓冲机制实现通信时间的消耗隐藏,提高并行效率。
Description
技术领域
本发明涉及并行计算技术领域,并且更具体地,涉及一种基于异构众核处理器的算法并行处理方法及系统。
背景技术
在高性能处理器领域,受到功耗、互联及复杂度三大因素的限制,处理器计算性能的增长速度已经无法满足摩尔定律,异构并行的加速方式成为新的思考方向。加之片上微结构和低功耗技术的不断进步,异构众核处理器逐渐成为处理器设计的发展趋势。因此,使用异构众核处理器来加速算法执行效率也成为重要的研究领域。
完全由我国自主研发、计算能力居直接前列的神威·太湖之光超级计算机,搭载“申威26010”异构众核处理器,拥有超过10亿亿次量级的峰值运算速度,而且在资源调度、编程开发方面也提供了配套研发的编程接口和作业管理系统,成为我国科研事业中科学计算的强有力支撑。其采用独特的主从核异构结构,每个众核处理器具有4个核组(CoreGroups,CG),这4个核组通过片上网络连接,提供高达3TFlops左右的浮点峰值运算能力。每个核组包含一个主核,称为管理单元(Manage Processing Elements,MPE)和64个从核,称为计算处理单元(Computing Processing Elements,CPE)。主核和从核均采用了64-bitRISC指令集,每个核心均支持单线程,工作频率为1.45GHz,支持256位向量寄存器计算。但二者在微架构存在差别,因此在实际应用中分别承担不同的任务。其中,主核可以运行于用户态和系统态,支持函数中断、乱序执行,因此适用于作业调度、通信管理等任务;从核仅支持用户态模式,不支持函数中断,其设计目的在于,在有限的芯片空间上,以尽可能精简的微架构,聚合更多的核心以提供尽可能高的浮点运算能力。在存储架构上,每个主核分别含有32KB的一级数据缓存和以及指令缓存,以及256KB的二级数据、指令缓存;而每个从核含有一个私有的局部存储空间(Local Data Memory,LDM),没有数据缓存,但是有16KB的一级指令缓存。系统提供了并行计算接口,用户在不同处理器之间进行消息传递,实现节点层次的并行编程;在处理器内部,用户可以使用并行编程标准(Message Passing Interface,MPI)进行核组间的并行编程;在核组内部,用户可以使用多线程库实现从核级别的并行;在从核内部,用户可以使用SIMD intrinsics库,实现指令级别的并行编程。系统也提供了数据传输接口,便于从核阵列访问主存。
对于现有的算法,受文件大小等限制,使用传统的串行算法对文件进行处理时,大文件的处理效率是比较低的,无法满足相关行业的压缩需求。因此,需要一种基于异构众核处理器的算法并行处理方法。
发明内容
本发明提出一种基于异构众核处理器的算法并行处理方法及系统,以解决如何快速地进行算法运算的问题。
为了解决上述问题,根据本发明的一个方面,提供了一种基于异构众核处理器的算法并行处理方法,所述方法包括:
对串行的目标算法以代码段的形式进行分析,确定每个代码段的运行耗时占比,并将运行耗时占比大于预设运行耗时占比阈值的代码段移植到目标异构众核处理器的每个核组的从核,由从核执行运算;
将待处理文件的数据以预设的字节数为单位进行数据块的划分,并基于负载均衡将所有的数据块均分至每个核组的从核;
多个核组以并行的方式执行运算,每个核组的从核依次获取与其对应的数据块,并利用相应的代码段进行解析和运算,以获取每个从核对应的结果数据;
将每个从核对应的结果数据发送至每个从核对应的主核中,并将每个核组的主核获取的结果数据存储到预设的全局数组中,并进行文件的写入,以获取目标文件。
优选地,其中所述对串行的目标算法以代码段的形式进行分析,确定每个代码段的运行耗时占比,包括:
利用性能分析工具Kprof,以代码段的形式对所述串行的目标算法进行分析,确定每个代码段的运行耗时。
优选地,其中每个核组的从核均通过Athread线程库的数据获取接口获取需求的辅助变量,并将获取的辅助变量保存到该从核对应的局部存储空间LDM中,以进行辅助变量的调用;其中,所述局部存储空间LDM包括:计算任务存储子区域和辅助变量存储子区域;所述计算任务存储子区域的大小为45KB。
优选地,其中对于每一个核组的从核,当一个数据块对应的执行周期结束后,通过Athread线程库的数据返回接口将该从核对应的结果数据返回到该核组的主核中进行存储,并清空该核组的从核对应的局部存储空间。
优选地,其中所述将每个从核对应的结果数据发送至每个从核对应的主核中,并将每个核组的主核获取的结果数据存储到预设的全局数组中,并进行文件的写入,以获取目标文件,包括:
将每个从核对应的结果数据发送至每个从核对应的位于主核中的冗余数组空间中进行存储;其中,一个从核对应一个冗余数组空间;
在每个从核的执行周期结束后,利用该从核对应的主核读取对应的冗余数组空间中的缓存数据;
每个主核采用异步串行方式对获取的所有的缓存数据进行汇总,以获取中间数据;
将每个主核对应的中间数据存储到预设的全局数组,并进行文件的写入,以获取目标文件。
优选地,其中所述方法还包括:
将定义在主核中且在从核中需要频繁访问的变量和常量存储在结构体中;
将单变量进行数据打包,确保直接存储访问DMA的单次拷贝粒度大于256B,使每个核组的带宽接近峰值;
设置每个主核的数据主存地址为256B对界。
根据本发明的另一个方面,提供了一种基于异构众核处理器的算法并行处理系统,所述系统包括:
代码段移植单元,用于对串行的目标算法以代码段的形式进行分析,确定每个代码段的运行耗时占比,并将运行耗时占比大于预设运行耗时占比阈值的代码段移植到目标异构众核处理器的每个核组的从核,由从核执行运算;
数据块分配单元,用于将待处理文件的数据以预设的字节数为单位进行数据块的划分,并基于负载均衡将所有的数据块均分至每个核组的从核;
并行运算单元,用于使多个核组以并行的方式执行运算,每个核组的从核依次获取与其对应的数据块,并利用相应的代码段进行解析和运算,以获取每个从核对应的结果数据;
目标文件获取单元,用于将每个从核对应的结果数据发送至每个从核对应的主核中,并将每个核组的主核获取的结果数据存储到预设的全局数组中,并进行文件的写入,以获取目标文件。
优选地,其中所述代码段移植单元,对串行的目标算法以代码段的形式进行分析,确定每个代码段的运行耗时占比,包括:
利用性能分析工具Kprof,以代码段的形式对所述串行的目标算法进行分析,确定每个代码段的运行耗时。
优选地,其中每个核组的从核均通过Athread线程库的数据获取接口获取需求的辅助变量,并将获取的辅助变量保存到该从核对应的局部存储空间LDM中,以进行辅助变量的调用;其中,所述局部存储空间LDM包括:计算任务存储子区域和辅助变量存储子区域;所述计算任务存储子区域的大小为45KB。
优选地,其中对于每一个核组的从核,当一个数据块对应的执行周期结束后,通过Athread线程库的数据返回接口将该从核对应的结果数据返回到该核组的主核中进行存储,并清空该核组的从核对应的局部存储空间。
优选地,其中所述目标文件获取单元,将每个从核对应的结果数据发送至每个从核对应的主核中,并将每个核组的主核获取的结果数据存储到预设的全局数组中,并进行文件的写入,以获取目标文件,包括:
将每个从核对应的结果数据发送至每个从核对应的位于主核中的冗余数组空间中进行存储;其中,一个从核对应一个冗余数组空间;
在每个从核的执行周期结束后,利用该从核对应的主核读取对应的冗余数组空间中的缓存数据;
每个主核采用异步串行方式对获取的所有的缓存数据进行汇总,以获取中间数据;
将每个主核对应的中间数据存储到预设的全局数组,并进行文件的写入,以获取目标文件。
优选地,其中所述系统还包括:
将定义在主核中且在从核中需要频繁访问的变量和常量存储在结构体中;
将单变量进行数据打包,确保直接存储访问DMA的单次拷贝粒度大于256B,使每个核组的带宽接近峰值;
设置每个主核的数据主存地址为256B对界。
本发明提供了一种基于异构众核处理器的算法并行处理方法及系统,以串行程序找中计算比较集中的代码段作为并行计算的对象,根据其特点进行数据划分,确定主核与从核阵列的任务分工,将耗时的计算交给从核阵列执行,并为此设计了负载均衡的任务分配策略;另外,每个从核主动从主存中获取任务和计算所用到的数据,并将计算结果返回给主核,主核采用异步串行方式对主存数据进行更新,以避免数据依赖引起数据读写错误;同时,针对主从核通信过程存在较大时间消耗问题,能够从减少访存次数、优化数据传输性能和隐藏通信消耗三方面提升执行效率。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1为根据本发明实施方式的基于异构众核处理器的算法并行处理方法100的流程图;
图2为根据本发明实施方式的异构众核处理架构的示意图;
图3为根据本发明实施方式的压缩算法并行处理的示意图;
图4为根据本发明实施方式的基于异构众核处理器的算法并行处理系统400的结构示意图。
具体实施方式
现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
图1为根据本发明实施方式的基于异构众核处理器的算法并行处理方法100的流程图。如图1所示,本发明实施方式提供的基于异构众核处理器的算法并行处理方法,以串行程序找中计算比较集中的代码段作为并行计算的对象,根据其特点进行数据划分,确定主核与从核阵列的任务分工,将耗时的计算交给从核阵列执行,并为此设计了负载均衡的任务分配策略;另外,每个从核主动从主存中获取任务和计算所用到的数据,并将计算结果返回给主核,主核采用异步串行方式对主存数据进行更新,以避免数据依赖引起数据读写错误;同时,针对主从核通信过程存在较大时间消耗问题,能够从减少访存次数、优化数据传输性能和隐藏通信消耗三方面提升执行效率。本发明实施方式提供的基于异构众核处理器的算法并行处理方法100,从步骤101处开始,在步骤101对串行的目标算法以代码段的形式进行分析,确定每个代码段的运行耗时占比,并将运行耗时占比大于预设运行耗时占比阈值的代码段移植到目标异构众核处理器的每个核组的从核,由从核执行运算。
优选地,其中所述对串行的目标算法以代码段的形式进行分析,确定每个代码段的运行耗时占比,包括:
利用性能分析工具Kprof,以代码段的形式对所述串行的目标算法进行分析,确定每个代码段的运行耗时。
本发明的目标算法可以为压缩算法、加密算法等。目标异构众核处理器可以为不同型号的异构众核处理器。
在本发明的实施方式中,目标算法为压缩算法。处理器为申威26010”异构众核处理器,其架构如图2所示,其包括4个核组,每个核组包括一个主核和64个从核。将计算任务放到从核阵列上执行,主核负责控制从核的任务处理流程、协调任务分配和数据更新等串行操作。
在本发明的实施方式中,采用性能分析工具Kprof绘制压缩算法运行时流程图,以清晰、简洁的方式展现程序中函数间的调用关系和各函数时耗占比,从而精确分析出串行程序中计算密集的代码段,并选择将运行耗时占比大于预设运行耗时占比阈值的代码段移植到目标异构众核处理器的每个核组的从核,由从核执行运算。其中,程序的运行耗时划分为计算耗时和通信耗时。
在步骤102,将待处理文件的数据以预设的字节数为单位进行数据块的划分,并基于负载均衡将所有的数据块均分至每个核组的从核。
在步骤103,多个核组以并行的方式执行运算,每个核组的从核依次获取与其对应的数据块,并利用相应的代码段进行解析和运算,以获取每个从核对应的结果数据。
优选地,其中每个核组的从核均通过Athread线程库的数据获取接口获取需求的辅助变量,并将获取的辅助变量保存到该从核对应的局部存储空间LDM中,以进行辅助变量的调用;其中,所述局部存储空间LDM包括:计算任务存储子区域和辅助变量存储子区域;所述计算任务存储子区域的大小为45KB。
优选地,其中对于每一个核组的从核,当一个数据块对应的执行周期结束后,通过Athread线程库的数据返回接口将该从核对应的结果数据返回到该核组的主核中进行存储,并清空该核组的从核对应的局部存储空间。
在本发明的实施方式中,主核根据任务量的大小制定从核负载均衡的任务分配策略,并根据任务分配策略进行任务的分配,使得每个从核接受的任务数量基本一致。
具体地,主核将需要执行的待处理文件的数据按预设的字节数为单位,分成若干个数据块。为保证每个从核负载均衡,将所有的数据块均分给核组中的从核。从核在执行计算任务之前,将所需的、定义在主核的主存中的辅助变量通过Athread线程库的数据获取接口保存到其对应的局部存储空间LDM中,然后基于既定的任务分配从主存中获取所要计算的数据。通过设置局部存储空间,使得从核在每次进行计算的时候,可以直接从LDM中读取已经保存的辅助变量,避免每次调用都要从主存中获取,能够减少数据获取的耗时。
每个从核有一个64KB的局部存储空间LDM,LDM以由软件控制管理的便笺式(Scratch Pad Memory,SPM)方式组织,以此来代替数据缓存,从而省去缓存实现上的开销,同时避免维持一致性处理带来的性能影响。
另外,在本发明的实施方式,对从核中的64KB的局部存储空间LDM进行区域的划分,将其中的45KB作为计算任务存储子区域,剩余的19KB的空间作为用于保存计算所需的辅助变量的辅助变量存储子区域,以最大效率地利用从核的LDM。对于从核,当本次执行周期(一个数据块的执行周期)结束之后,就获取的结果数据通过Athread线程库的数据返回接口送到主存中,并清空计算任务存储子区域,以准备下次任务的获取。
本发明实时方式的压缩算法并行处理的过程如图3所示。
在步骤104,将每个从核对应的结果数据发送至每个从核对应的主核中,并将每个核组的主核获取的结果数据存储到预设的全局数组中,并进行文件的写入,以获取目标文件。
优选地,其中所述将每个从核对应的结果数据发送至每个从核对应的主核中,并将每个核组的主核获取的结果数据存储到预设的全局数组中,并进行文件的写入,以获取目标文件,包括:
将每个从核对应的结果数据发送至每个从核对应的位于主核中的冗余数组空间中进行存储;其中,一个从核对应一个冗余数组空间;
在每个从核的执行周期结束后,利用该从核对应的主核读取对应的冗余数组空间中的缓存数据;
每个主核采用异步串行方式对获取的所有的缓存数据进行汇总,以获取中间数据;
将每个主核对应的中间数据存储到预设的全局数组,并进行文件的写入,以获取目标文件。
优选地,其中所述方法还包括:
将定义在主核中且在从核中需要频繁访问的变量和常量存储在结构体中;
将单变量进行数据打包,确保直接存储访问DMA的单次拷贝粒度大于256B,使每个核组的带宽接近峰值;
设置每个主核的数据主存地址为256B对界。
在本发明的实施方式中,为解决数据依赖问题,分别在每个主核的主存中开辟了64份冗余数组空间,一个从核对应一个冗余数组空间,每个从核在计算出结果数据后,不再直接更新主存中的最终结果数组,而是将结果数据传到与之对应的冗余数组空间中进行缓存。对于任一个从核,当其对应的所有数据块的执行周期结束后,再用主核读取保存在冗余数组空间中的结果数据。最后,主核采用异步串行方式对从与其对应的所有从核取的最终结果进行汇总,处理器再对所有核组的主核中的数据进行汇总,存储到预设的全局数组中,并进行文件的写入,以获取目标文件。
在本发明的实施方中,将定义在主存中而在从核中需要频繁访问的变量和常量存储在结构体中,以减少数据请求次数,降低通信的时间消耗。对于单个核组来说,再每次直接存储器访问DMA访存的大小不小于256B时,带宽利用率比较接近峰值,因此对单变量进行数据打包,使单次数据拷贝粒度不小于256B,以最大化地利用单核组的带宽。在主核的存储器DDR3中,数据传输的最小粒度是128B,当主存地址128B对齐时,只需一次内存传输,相反,则需要两次,因此,在主存中定义变量和常量时,设置每个主核的数据主存地址为256B对界,以优化数据传输性能。
如果有几轮直接存储访问DMA读和写操作,则需要一个存储空间来存储由MPE(主核)和CPE(从核)缓冲的数据。存储空间的大小是传输数据量的两倍。除了第一轮接收数据和最后一轮发送数据外,CPE不仅完成本轮的计算,而且还接收(发送)下一轮(最后一轮)的数据,这就是为了更好地提高并行程序的执行效率而设计的双缓冲机制。在这个机制中,内存访问的成本包括重叠部分和非重叠部分。不重叠部分的成本包括第一轮和最后一轮的数据传输成本,即P。重叠部分的成本为P×(N-1)。计算成本是T/CoreNumber。用N表示需要执行的轮数,T表示在单个主核上串行执行程序所用时间,CoreNumber表示算法并行时使用到的从核数量。那么,可以用如下公式表征使用双缓冲机制的算法加速比为:
本发明使用并行编程标准MPI将单个芯片中的四个核组进行并行,以充分利用“申威26010”处理器的计算能力,完成压缩算法的并行运算。
本发明的实施方式,在主从核数据通信时采用两级并行编程模型,第一级并行运行在主核上,依靠Message Passing Interface(MPI)并行编程标准来实现,第二级并行运行在从核组上,依靠核组内从核间使用Athread细粒度加速线程库实现。通过在主存空间中开辟冗余数组空间,将每个从核返回的中间结果存储在对应的冗余数组中,避免在从核线程运行期间改写所有从核共同维护的公共数组,等到从核线程执行周期结束,再对公共数组数据进行更新,从而解决数据依赖问题。采用双缓冲机制,利用占比较大的计算耗时来隐藏占比较小但却不可忽略的通信耗时,能够大幅度提高并行的效率和可扩展性。
本发明的方法通过将基于X86架构的压缩算法串行程序移植到搭载“申威26010”国产异构众核处理器的神威太湖之光超级计算机上,并为之设计负载均衡的任务分配策略,使计算并行化,最后通过优化方法来提高加密算法的执行效率。具体地,根据压缩算法的特点对数据进行划分,确定主核与从核阵列的任务分工,并分别为主核和从核阵列设计合理的运行逻辑和负载均衡的任务分配策略,以保证主从核资源的充分利用;使用主核实现对从核计算结果的异步串行更新,解决数据依赖问题;根据访存密集型数据的要求对内存访问进行优化,加之采用双重缓冲机制以更好地隐藏通信消耗,能够提高算法的并行效率和可扩展性。
图4为根据本发明实施方式的基于异构众核处理器的算法并行处理系统400的结构示意图。如图4所示,本发明实施方式提供的基于异构众核处理器的算法并行处理系统400,包括:代码段移植单元401、数据块分配单元402、并行运算单元403和目标文件获取单元404。
优选地,所述代码段移植单元401,用于对串行的目标算法以代码段的形式进行分析,确定每个代码段的运行耗时占比,并将运行耗时占比大于预设运行耗时占比阈值的代码段移植到目标异构众核处理器的每个核组的从核,由从核执行运算。
优选地,其中所述代码段移植单元401,对串行的目标算法以代码段的形式进行分析,确定每个代码段的运行耗时占比,包括:
利用性能分析工具Kprof,以代码段的形式对所述串行的目标算法进行分析,确定每个代码段的运行耗时。
优选地,所述数据块分配单元402,用于将待处理文件的数据以预设的字节数为单位进行数据块的划分,并基于负载均衡将所有的数据块均分至每个核组的从核。
优选地,所述并行运算单元403,用于使多个核组以并行的方式执行运算,每个核组的从核依次获取与其对应的数据块,并利用相应的代码段进行解析和运算,以获取每个从核对应的结果数据。
优选地,其中每个核组的从核均通过Athread线程库的数据获取接口获取需求的辅助变量,并将获取的辅助变量保存到该从核对应的局部存储空间LDM中,以进行辅助变量的调用;其中,所述局部存储空间LDM包括:计算任务存储子区域和辅助变量存储子区域;所述计算任务存储子区域的大小为45KB。
优选地,其中对于每一个核组的从核,当一个数据块对应的执行周期结束后,通过Athread线程库的数据返回接口将该从核对应的结果数据返回到该核组的主核中进行存储,并清空该核组的从核对应的局部存储空间。
优选地,所述目标文件获取单元404,用于将每个从核对应的结果数据发送至每个从核对应的主核中,并将每个核组的主核获取的结果数据存储到预设的全局数组中,并进行文件的写入,以获取目标文件。
优选地,其中所述目标文件获取单元404,将每个从核对应的结果数据发送至每个从核对应的主核中,并将每个核组的主核获取的结果数据存储到预设的全局数组中,并进行文件的写入,以获取目标文件,包括:
将每个从核对应的结果数据发送至每个从核对应的位于主核中的冗余数组空间中进行存储;其中,一个从核对应一个冗余数组空间;
在每个从核的执行周期结束后,利用该从核对应的主核读取对应的冗余数组空间中的缓存数据;
每个主核采用异步串行方式对获取的所有的缓存数据进行汇总,以获取中间数据;
将每个主核对应的中间数据存储到预设的全局数组,并进行文件的写入,以获取目标文件。
优选地,其中所述系统还包括:
将定义在主核中且在从核中需要频繁访问的变量和常量存储在结构体中;
将单变量进行数据打包,确保直接存储访问DMA的单次拷贝粒度大于256B,使每个核组的带宽接近峰值;
设置每个主核的数据主存地址为256B对界。
本发明的实施例的基于异构众核处理器的算法并行处理系统400与本发明的另一个实施例的基于异构众核处理器的算法并行处理方法100相对应,在此不再赘述。
已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。
通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.一种基于异构众核处理器的算法并行处理方法,其特征在于,所述方法包括:
对串行的目标算法以代码段的形式进行分析,确定每个代码段的运行耗时占比,并将运行耗时占比大于预设运行耗时占比阈值的代码段移植到目标异构众核处理器的每个核组的从核,由从核执行运算;
将待处理文件的数据以预设的字节数为单位进行数据块的划分,并基于负载均衡将所有的数据块均分至每个核组的从核;
多个核组以并行的方式执行运算,每个核组的从核依次获取与其对应的数据块,并利用相应的代码段进行解析和运算,以获取每个从核对应的结果数据;
将每个从核对应的结果数据发送至每个从核对应的主核中,并将每个核组的主核获取的结果数据存储到预设的全局数组中,并进行文件的写入,以获取目标文件;
其中,所述将每个从核对应的结果数据发送至每个从核对应的主核中,并将每个核组的主核获取的结果数据存储到预设的全局数组中,并进行文件的写入,以获取目标文件,包括:
将每个从核对应的结果数据发送至每个从核对应的位于主核中的冗余数组空间中进行存储;其中,一个从核对应一个冗余数组空间;
在每个从核的执行周期结束后,利用该从核对应的主核读取对应的冗余数组空间中的缓存数据;
每个主核采用异步串行方式对获取的所有的缓存数据进行汇总,以获取中间数据;
将每个主核对应的中间数据存储到预设的全局数组,并进行文件的写入,以获取目标文件。
2.根据权利要求1所述的方法,其特征在于,所述对串行的目标算法以代码段的形式进行分析,确定每个代码段的运行耗时占比,包括:
利用性能分析工具Kprof,以代码段的形式对所述串行的目标算法进行分析,确定每个代码段的运行耗时。
3.根据权利要求1所述的方法,其特征在于,每个核组的从核均通过Athread线程库的数据获取接口获取需求的辅助变量,并将获取的辅助变量保存到该从核对应的局部存储空间LDM中,以进行辅助变量的调用;其中,所述局部存储空间LDM包括:计算任务存储子区域和辅助变量存储子区域;所述计算任务存储子区域的大小为45KB。
4.根据权利要求1所述的方法,其特征在于,对于每一个核组的从核,当一个数据块对应的执行周期结束后,通过Athread线程库的数据返回接口将该从核对应的结果数据返回到该核组的主核中进行存储,并清空该核组的从核对应的局部存储空间。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将定义在主核中且在从核中需要频繁访问的变量和常量存储在结构体中;
将单变量进行数据打包,确保直接存储访问DMA的单次拷贝粒度大于256B,使每个核组的带宽接近峰值;
设置每个主核的数据主存地址为256B对界。
6.一种基于异构众核处理器的算法并行处理系统,其特征在于,所述系统包括:
代码段移植单元,用于对串行的目标算法以代码段的形式进行分析,确定每个代码段的运行耗时占比,并将运行耗时占比大于预设运行耗时占比阈值的代码段移植到目标异构众核处理器的每个核组的从核,由从核执行运算;
数据块分配单元,用于将待处理文件的数据以预设的字节数为单位进行数据块的划分,并基于负载均衡将所有的数据块均分至每个核组的从核;
并行运算单元,用于使多个核组以并行的方式执行运算,每个核组的从核依次获取与其对应的数据块,并利用相应的代码段进行解析和运算,以获取每个从核对应的结果数据;
目标文件获取单元,用于将每个从核对应的结果数据发送至每个从核对应的主核中,并将每个核组的主核获取的结果数据存储到预设的全局数组中,并进行文件的写入,以获取目标文件;
其中,所述目标文件获取单元,将每个从核对应的结果数据发送至每个从核对应的主核中,并将每个核组的主核获取的结果数据存储到预设的全局数组中,并进行文件的写入,以获取目标文件,包括:
将每个从核对应的结果数据发送至每个从核对应的位于主核中的冗余数组空间中进行存储;其中,一个从核对应一个冗余数组空间;
在每个从核的执行周期结束后,利用该从核对应的主核读取对应的冗余数组空间中的缓存数据;
每个主核采用异步串行方式对获取的所有的缓存数据进行汇总,以获取中间数据;
将每个主核对应的中间数据存储到预设的全局数组,并进行文件的写入,以获取目标文件。
7.根据权利要求6所述的系统,其特征在于,所述代码段移植单元,对串行的目标算法以代码段的形式进行分析,确定每个代码段的运行耗时占比,包括:
利用性能分析工具Kprof,以代码段的形式对所述串行的目标算法进行分析,确定每个代码段的运行耗时。
8.根据权利要求6所述的系统,其特征在于,每个核组的从核均通过Athread线程库的数据获取接口获取需求的辅助变量,并将获取的辅助变量保存到该从核对应的局部存储空间LDM中,以进行辅助变量的调用;其中,所述局部存储空间LDM包括:计算任务存储子区域和辅助变量存储子区域;所述计算任务存储子区域的大小为45KB。
9.根据权利要求6所述的系统,其特征在于,对于每一个核组的从核,当一个数据块对应的执行周期结束后,通过Athread线程库的数据返回接口将该从核对应的结果数据返回到该核组的主核中进行存储,并清空该核组的从核对应的局部存储空间。
10.根据权利要求6所述的系统,其特征在于,所述系统还包括:
将定义在主核中且在从核中需要频繁访问的变量和常量存储在结构体中;
将单变量进行数据打包,确保直接存储访问DMA的单次拷贝粒度大于256B,使每个核组的带宽接近峰值;
设置每个主核的数据主存地址为256B对界。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011139857.3A CN112306678B (zh) | 2020-10-22 | 2020-10-22 | 一种基于异构众核处理器的算法并行处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011139857.3A CN112306678B (zh) | 2020-10-22 | 2020-10-22 | 一种基于异构众核处理器的算法并行处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112306678A CN112306678A (zh) | 2021-02-02 |
CN112306678B true CN112306678B (zh) | 2022-10-04 |
Family
ID=74327059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011139857.3A Active CN112306678B (zh) | 2020-10-22 | 2020-10-22 | 一种基于异构众核处理器的算法并行处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112306678B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113012023B (zh) * | 2021-02-22 | 2024-03-22 | 中国科学技术大学 | 基于众核处理器的视频分析加速方法及系统 |
CN113221116B (zh) * | 2021-04-12 | 2022-06-07 | 烽火通信科技股份有限公司 | 镜像的摘要计算方法、装置、设备及可读存储介质 |
CN113190349B (zh) * | 2021-04-29 | 2023-09-01 | 汕头大学 | 主机任务异步执行的方法、系统及计算机存储介质 |
CN113391970B (zh) * | 2021-07-08 | 2024-03-22 | 无锡江南计算技术研究所 | 一种面向异构众核处理器的芯片测试方法及装置 |
CN113608894B (zh) * | 2021-08-04 | 2023-03-14 | 电子科技大学 | 一种面向细颗粒度的算法组件运行方法 |
CN114564150B (zh) * | 2022-02-28 | 2024-03-22 | 无锡江南计算技术研究所 | 动态链接模式片上存储器空间分配方法 |
CN114743613B (zh) * | 2022-04-29 | 2022-11-25 | 中国海洋大学 | 基于异构众核架构的超大规模海洋天然产物分子对接方法 |
CN115600664B (zh) * | 2022-09-28 | 2024-03-08 | 美的集团(上海)有限公司 | 算子处理方法、电子设备及存储介质 |
CN116185937B (zh) * | 2022-11-29 | 2023-11-21 | 之江实验室 | 基于众核处理器多层互联架构的二元运算访存优化方法及装置 |
CN116360798B (zh) * | 2023-06-02 | 2023-08-18 | 太初(无锡)电子科技有限公司 | 一种针对异构芯片的异构可执行文件的反汇编方法 |
CN116701263B (zh) * | 2023-08-01 | 2023-12-19 | 山东大学 | 一种用于超级计算机的dma操作方法及系统 |
CN117472448B (zh) * | 2023-12-28 | 2024-03-26 | 山东省计算中心(国家超级计算济南中心) | 一种申威众核处理器从核簇加速并行方法、设备及介质 |
CN117632530B (zh) * | 2024-01-25 | 2024-05-03 | 山东省计算中心(国家超级计算济南中心) | 基于新一代申威众核处理器的从核数量调整并行加速方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168683A (zh) * | 2017-05-05 | 2017-09-15 | 中国科学院软件研究所 | 国产申威26010众核cpu上gemm稠密矩阵乘高性能实现方法 |
CN111444134A (zh) * | 2020-03-24 | 2020-07-24 | 山东大学 | 分子动力学模拟软件的并行pme的加速优化方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095583B (zh) * | 2016-06-20 | 2018-04-17 | 国家海洋局第一海洋研究所 | 基于新神威处理器的主从核协同计算编程框架 |
US10310861B2 (en) * | 2017-04-01 | 2019-06-04 | Intel Corporation | Mechanism for scheduling threads on a multiprocessor |
CN109002659B (zh) * | 2018-09-07 | 2020-08-28 | 西安交通大学 | 一种基于超级计算机的流体机械仿真程序优化方法 |
CN111125950B (zh) * | 2019-12-13 | 2021-11-12 | 北京科技大学 | 一种核反应堆热工水力模拟软件cfd并行处理方法 |
CN111368484B (zh) * | 2020-03-19 | 2022-04-15 | 山东大学 | 基于神威架构的宇宙n体数值模拟优化方法及系统 |
CN111667061B (zh) * | 2020-04-17 | 2023-04-18 | 中国海洋大学 | 一种基于目标众核的深度学习框架移植与优化方法及系统 |
-
2020
- 2020-10-22 CN CN202011139857.3A patent/CN112306678B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168683A (zh) * | 2017-05-05 | 2017-09-15 | 中国科学院软件研究所 | 国产申威26010众核cpu上gemm稠密矩阵乘高性能实现方法 |
CN111444134A (zh) * | 2020-03-24 | 2020-07-24 | 山东大学 | 分子动力学模拟软件的并行pme的加速优化方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112306678A (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112306678B (zh) | 一种基于异构众核处理器的算法并行处理方法及系统 | |
CN108595258B (zh) | 一种gpgpu寄存器文件动态扩展方法 | |
US8453132B2 (en) | System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems | |
US8528001B2 (en) | Controlling and dynamically varying automatic parallelization | |
CN105468439B (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行方法 | |
US9513886B2 (en) | Heap data management for limited local memory(LLM) multi-core processors | |
WO2008105558A1 (ja) | メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム | |
WO2015150342A1 (en) | Program execution on heterogeneous platform | |
US11720496B2 (en) | Reconfigurable cache architecture and methods for cache coherency | |
CN112130901A (zh) | 基于risc-v的协处理器、数据处理方法及存储介质 | |
CN116092587B (zh) | 一种基于生产者-消费者模型的生物序列分析系统及方法 | |
Maitre | Understanding nvidia gpgpu hardware | |
Lin et al. | swFLOW: A dataflow deep learning framework on sunway taihulight supercomputer | |
You et al. | Vector-aware register allocation for GPU shader processors | |
Tian et al. | Optimizing gpu register usage: Extensions to openacc and compiler optimizations | |
CN110515729B (zh) | 基于图形处理器的图计算节点向量负载平衡方法及装置 | |
Saidi et al. | Optimizing two-dimensional DMA transfers for scratchpad Based MPSoCs platforms | |
Wang et al. | micMR: An efficient MapReduce framework for CPU–MIC heterogeneous architecture | |
CN118245118B (zh) | 一种基于新一代申威众核处理器从核局存受限优化方法 | |
CN102981805A (zh) | 串行软件的响应方法和系统 | |
Farooqui et al. | Accelerating Data Analytics on Integrated GPU Platforms via Runtime Specialization | |
EP4227795A1 (en) | A computer-implemented method and a computer-readable medium | |
CN112148361A (zh) | 一种用于处理器加密算法移植的方法及系统 | |
Beni et al. | A GPU-Enabled Extension for Apache Ignite to Facilitate Running Genetic Algorithms | |
Ren et al. | Parallel Optimization of BLAS on a New-Generation Sunway Supercomputer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |