CN116185937B - 基于众核处理器多层互联架构的二元运算访存优化方法及装置 - Google Patents
基于众核处理器多层互联架构的二元运算访存优化方法及装置 Download PDFInfo
- Publication number
- CN116185937B CN116185937B CN202211509617.7A CN202211509617A CN116185937B CN 116185937 B CN116185937 B CN 116185937B CN 202211509617 A CN202211509617 A CN 202211509617A CN 116185937 B CN116185937 B CN 116185937B
- Authority
- CN
- China
- Prior art keywords
- data
- calculation
- core
- type
- round
- 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 67
- 238000005457 optimization Methods 0.000 title claims abstract description 47
- 238000004364 calculation method Methods 0.000 claims abstract description 224
- 238000012545 processing Methods 0.000 claims description 15
- 238000013461 design Methods 0.000 claims description 13
- 238000003491 array Methods 0.000 claims description 12
- 230000000977 initiatory effect Effects 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 claims description 3
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 230000003993 interaction Effects 0.000 claims description 3
- 238000012546 transfer Methods 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 claims description 2
- 238000012549 training Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
Classifications
-
- 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
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Complex Calculations (AREA)
Abstract
一种基于众核处理器多层互联架构的二元运算访存优化方法,包括:检查第二类核间的计算任务是否存在可重用的计算数据以及需要加载的数据批次数;确定每一次计算迭代时,每个第二类核所分配的计算数据;第一轮计算时,所有第二类核的计算数据通过DMA从主存获取到第二类核LDM中;第2~N轮计算,根据访存优化的策略,计算数据通过RMA从第二类核组内其他第二类核的LDM中获取,然后进行计算;此前2个步骤重复次;第轮计算,计算数据通过DMA从主存获取到第二类核的LDM中,然后进行计算;第轮计算,计算数据通过RMA从第二类核组内其他第二类核的LDM中获取,然后进行计算;结束计算,将上一轮计算的结果通过DMA写回主存。
Description
技术领域
本发明涉及深度学习技术、人工智能专用处理器领域,尤其涉及一种基于众核处理器多层互联架构的二元运算访存优化方法及装置。
背景技术
随着人工智能神经网络与深度学习技术的兴起,人工智能芯片也得到了快速发展。深度神经网络的计算任务中包含大量的二元运算,如卷积计算,矩阵计算等,计算任务不可避免地存在访存开销,同时二元运算在众核处理器各个第二类核上通常存在大量的可重用数据,如何高效利用可重用数据,解决访存方式单一,访存效率低的问题,是所有高性能计算任务在众核处理器访存优化的主要方向。
在处理器架构设计上,存储架构和互联架构的设计对于并行模式的设计有着重要意义。高效利用存储和互联架构的特性,可以显著提升访存效率,从而降低整个系统训练开销。
常见的众核处理器中,通常存在两类核,其中第一类核主要负责调度等逻辑操作,具体的计算任务一般分配在第二类核阵列上执行。第二类核拥有自己的本地直接存储(LDM,Local direct memory)。众核处理器中通常存在多层互联架构,第二类核可以使用直接内存访问(DMA,direct memory access)从主存直接读取数据到LDM中,第二类核之间的LDM数据交换也可以通过远端内存访问(RMA,remote memory access)来实现。
在实现本发明的过程中,发明人发现现有技术存在如下问题:
在众核处理器上进行并行计算的设计时,单纯利用DMA(direct memory access)进行训练数据的搬运往往不足以发挥互联架构的能力,在各个第二类核同时进行共享数据的获取时,DMA的下网带宽会受制于主存带宽。
发明内容
本发明要克服现有技术的上述缺点,提供一种基于众核处理器多层互联架构的二元运算访存优化方法及装置。本发明提出一类处理器架构上多第二类核之间协同计算二元运算任务时的访存和计算模式,解决计算数据在硬件上的访存方式单一、访存效率低的问题。
根据本发明的第一方面,提供一种基于众核处理器多层互联架构的二元运算访存优化方法,应用于众核处理器上,包括以下步骤:
S1.根据每个第二类核分配到的计算任务,以及第二类核的LDM局存空间,确定计算数据需要的计算迭代次数为K,即有K批数据需要迭代计算。判断各第二类核间是否存在可重用的计算数据,结合第二类核阵列的结构对第二类核阵列进行分组,确定各第二类核组内第二类核数为N。
S2.根据第二类核组内可复用的数据、数据批次数K、第二类核组内第二类核数N,进行访存优化设计,确定每次迭代时每个第二类核被分配的计算数据,并确定每轮迭代时计算数据来源与访存方式。
S3.根据步骤S2确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式启动计算过程,第一轮计算时,所有第二类核的计算数据通过DMA从主存中获取到第二类核LDM中,然后进行二元运算。
S4.启动第2~N轮/迭代数的计算过程。根据步骤S2确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式继续计算过程,进行第2~N轮计算,根据访存优化的策略,第2~N轮时各个第二类核的计算数据将通过RMA向其他第二类核发起数据请求,获取到自身LDM中,进行二元运算。
S5.以上步骤S3、S4重复次。
S6.第轮计算时,仍然根据步骤S2确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式执行计算过程,所有第二类核的计算数据通过DMA从第一类核中获取到第二类核LDM中,然后进行二元运算,同时将上一轮计算的结果通过DMA写回主存。
S7.第轮计算,根据步骤S2确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式执行计算过程,所有第二类核的计算数据将通过RMA向其他第二类核发起数据请求,获取到自身LDM中,进行二元运算,同时将上一轮计算的结果通过DMA写回主存。
S8.结束计算,并将最后一轮计算的结果通过DMA写回主存。
优选地,所述的二元运算是卷积计算。
优选地,步骤S1具体包括:
S11:获取第二类核计算任务映射,即每个第二类核分配到的特征图与卷积核对应计算的计算任务;
S12:根据数据量进行循环设计并确定数据批次;
在每个第二类核分配到计算任务后,根据特征图、卷积核的数据量以及第二类核上LDM的空间大小设计循环模式;由于第二类核LDM的空间限制,每次循环时可能无法加载所有卷积核,假设每次外循环迭代时,只能加载FM_slave_iter_num个特征图,每次内循环迭代时,只能加载Filter_slave_iter_num个卷积核,则数据批次K=Filter_slave_num/Filter_slave_iter_num。
S13:对可重用数据分析及第二类核分组;
通常第二类核阵列的同行或者同列第二类核之间会存在重用数据。通过对第二类核间可重用的计算数据分析后,将具有重用数据的第二类核分为1组。
优选地,步骤S2具体包括:
在确定数据批次数即迭代数K,第二类核组内第二类核数N之后,第二类核n在迭代i时的计算数据为:
同时确定每一轮迭代时计算数据的数据来源与访存方式,迭代数时,数据来源为主存,访存方式为第二类核通过DMA向主存请求传输数据获得。迭代数时,数据来源为其他第二类核LDM,访存方式为第二类核通过RMA向其他第二类核LDM请求数据获得。
优选地,步骤S3具体包括:
在8个第二类核为一组的情况下,若每个第二类核负责不同的特征图与相同的卷积核数据计算,前八批卷积核数据即代表为[D1,D2,…,D8],其中第二类核1在第一轮迭代时负责处理第一批卷积核数据,第二类核2在第一轮迭代时负责处理第二批数据,以此类推。每个第二类核的计算数据都通过DMA向主存请求数据并传输到第二类核LDM中,其中主存的访问延迟为:
其中MM_bandwidth表示主存带宽,每个第二类核向从核获取数据时,共享主存带宽;Frequency表示LDM的存储频率。num_core即第二类核组内第二类核数,num_clu表示第二类核组数,Filter_data表示该轮迭代时单个第二类核请求的卷积核数据,FM_data表示该轮迭代时单个第二类核请求的特征图数据,其中,第一轮迭代时,因为也需要加载外循环所需的数据,所以传输数据既包括卷积核数据又包括特征图数据;
其中DMA传输的下网延迟为:
其中,DMA_net_bandwidth表示DMA传输的下网带宽,表示单个LDM通过总线可以获取数据的峰值带宽;而FM_data表示单个第二类核在这一轮迭代时请求的特征图数据,Filter_data表示单个第二类核在这一轮迭代时请求的卷积核数据;
实际访存的开销,由于受限于主存带宽对所有第二类核的通信,DMA的下网带宽并不一定能达到峰值,所以具体的访存开销为:
Latency=Max(MEM_cyc,DNET_cyc) (4)
需要进一步说明的是,每个第二类核在每轮迭代时所进行的计算以及计算数据的大小都是相同的,所以执行开销是相同的。
优选地,步骤S4具体包括:
8个第二类核为一组的情况下,若每个第二类核负责不同的特征图与相同的卷积核数据计算,前八批卷积核数据即代表为[D1,D2,…D8,],其中第二类核1在第二轮迭代时负责处理第二批卷积核数据D2,第二类核2在第二轮迭代时负责处理第三批数据D3,第二类核8在第二轮迭代时负责处理第8批数据D1;而第二类核2在第一轮迭代时计算数据为D2,第二类核1第二轮所需的计算数据也为D2,故第二类核1在第二轮计算前通过RMA向第二类核2发起数据请求,获得数据后进行卷积计算,而非通过DMA向主存发起数据请求;第二类核2第二轮的计算数据D3通过RMA向第二类核3发起数据请求,获得数据后进行卷积计算。以此类推,而第二类核8第二轮的计算数据D1通过RMA向第二类核1发起数据请求,获得数据后进行卷积计算,同时将上一轮计算的结果通过DMA写回主存;
其中因为使用RMA进行数据的交互,所以不存在主存的延迟,而RMA的下网延迟为:
优选地,步骤S5具体包括:
因为K批数据[D1,D2,D3,D4,…DK],至少可以分为组,每组中含有N批数据,即这/>组的数据都可以以步骤三、四的相同计算模式和访存方法执行。
根据本发明的第二方面,提供实施本发明的一种基于众核处理器多层互联架构的二元运算访存优化方法的装置,包括:
第二类核分组模块,用于根据每个第二类核分配到的计算任务,以及第二类核的LDM局存空间,确定计算数据需要的计算迭代次数为K,即有K批数据需要迭代计算。判断各第二类核间是否存在可重用的计算数据,结合第二类核阵列的结构对第二类核阵列进行分组,确定各第二类核组内第二类核数为N。
计算数据及访存方式确定模块,用于根据第二类核组内可复用的数据、数据批次数K、第二类核组内第二类核数N,进行访存优化设计,确定每次迭代时每个第二类核被分配的计算数据,并确定每轮迭代时计算数据来源与访存方式。
第一轮计算模块,用于根据步骤计算数据分配模块确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式启动计算过程,第一轮计算时,所有第二类核的计算数据通过DMA从主存中获取到第二类核LDM中,然后进行二元运算。
第2~N轮计算模块,用于根据计算数据分配模块确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式继续计算过程,进行第2~N轮计算,根据访存优化的策略,第2~N轮时各个第二类核的计算数据将通过RMA向其他第二类核发起数据请求,获取到自身LDM中,进行二元运算。
重复计算模块,用于第一轮计算模块、第2~N轮计算模块重复运行次。
第轮计算模块,用于第/>轮计算,仍然根据计算数据分配模块确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式执行计算过程,所有第二类核的计算数据通过DMA从第一类核中获取到第二类核LDM中,然后进行二元运算,同时将上一轮计算的结果通过DMA写回主存。
第轮计算模块,用于第/>轮计算,根据计算数据分配模块确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式执行计算过程,所有第二类核的计算数据将通过RMA向其他第二类核发起数据请求,获取到自身LDM中,进行二元运算,同时将上一轮计算的结果通过DMA写回主存。
计算结束模块,用于结束计算,并将最后一轮计算的结果通过DMA写回主存。
根据本发明的第三方面,一种基于众核处理器多层互联架构的二元运算访存优化方法的装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-7中任一项所述的一种基于众核处理器多层互联架构的二元运算访存优化方法。
根据本发明的第四方面,一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现本发明的一种基于众核处理器多层互联架构的二元运算访存优化方法。
本发明旨在基于对计算任务和硬件架构的分析,针对二元运算在众核处理器上的计算进行访存优化,提高系统带宽利用率,减少访存开销,从而提升整体训练效率。本发明提出的基于众核处理器上多层互联架构,通过结合第二类核间RMA(remote memoryaccess)的异步访存可以有效提升数据访存的效率。
本发明的优点是:针对一种众核处理器架构提出第二类核间数据协同计算的方法,提升系统的带宽利用率,从而提高深度神经网络的训练效率。
附图说明:
图1是本发明的访存优化方案的流程示意图。
图2是具体实施例中四个第二类核的四轮计算访存示意图。
图3是单个第二类核上的计算和访存示意图。
图4是本发明装置的结构示意图。
图5是第二类核阵列分组模块流程示意图。
具体实施方式:
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
如图1所示,基于众核处理器多层互联架构的二元运算访存优化方法及装置,针对二元运算任务的特性,在众核处理器上计算时,第二类核之间的计算数据存在可重用的情况,结合硬件架构特点,如处理器存储架构,处理器互联架构,第二类核阵列结构,对第二类核进行分组,并对原本的计算数据执行顺序进行调整,改变数据的访存来源和访存方式,解决计算数据在硬件上的访存方式单一、访存效率低的问题,从而使二元运算在众核处理器上数据的传输开销降低。具体包括以下步骤:
S1:根据每个第二类核分配到的计算任务,以及第二类核的LDM局存空间,确定计算数据需要的计算迭代次数为K,即有K批数据需要迭代计算。判断各第二类核间是否存在可重用的计算数据,结合第二类核阵列的结构对第二类核阵列进行分组,确定各第二类核组内第二类核数为N。
具体地,以卷积计算作为二元运算的例子说明。
S11:获取第二类核计算任务映射。
在卷积计算中,计算数据通常为特征图和卷积核,例如FM_num张特征图与Filter_num个卷积核进行对应计算,在并行计算的设计下,针对mesh_Col*mesh_Row大小的第二类核阵列,计算任务会进行映射,每个第二类核会分配到不同的计算任务,假设每个第二类核分配到FM_slave_num张特征图与Filter_slave_num个卷积核对应计算的计算任务。以320张特征图需要与100个卷积核进行对应计算为例,针对4*8的第二类核阵列,可能的一种任务映射方式为,每个第二类核负责10张特征图与所有卷积核的对应计算。
S12:根据数据量进行循环设计并确定数据批次;
在每个第二类核分配到计算任务后,会根据特征图、卷积核的数据量以及第二类核上LDM的空间大小设计循环模式,一般在卷积核数据比较小的时候,会将卷积核数据的迭代设计为内循环,特征图数据的迭代设计为外循环。由于第二类核LDM的空间限制,每次循环时可能无法加载所有卷积核,假设每次外循环迭代时,只能加载FM_slave_iter_num个特征图,每次内循环迭代时,只能加载Filter_slave_iter_num个卷积核,则数据批次K=Filter_slave_num/Filter_slave_iter_num。
S13:对可重用数据分析及第二类核分组。
通常第二类核阵列的同行或者同列第二类核之间会存在重用数据。例如在任务映射之后,第二类核1负责第1-10张特征图与所有卷积核进行对应计算,第二类核2负责第11-20张特征图与所有卷积核进行对应计算,此时第二类核1与第二类核2之间便共享了所有卷积核的数据。通过对第二类核间可重用的计算数据分析后,我们可以将具有重用数据的第二类核分为1组。分组时,以4行8列的第二类核阵列为例,若每一行都存在重用数据,则取8为第二类核组内第二类核数,即存在重用数据的第二类核数的最大因数。
S2:确定每轮迭代时各第二类核的计算数据,数据来源以及访存方式。
根据第二类核组内可复用的数据、数据批次数K、第二类核组内第二类核数N,进行访存优化设计,确定每次迭代时每个第二类核被分配的计算数据,并确定每轮迭代时计算数据来源与访存方式。
具体地,在确定数据批次数即迭代数K,第二类核组内第二类核数N之后,第二类核n在迭代i时的计算数据为:
同时确定每一轮迭代时计算数据的数据来源与访存方式,迭代数时,数据来源为主存,访存方式为第二类核通过DMA向主存请求传输数据获得。迭代数时,数据来源为其他第二类核LDM,访存方式为第二类核通过RMA向其他第二类核LDM请求数据获得。
S3:启动第一轮/迭代数的计算过程。
根据步骤S2确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式启动计算过程,第一轮计算时,所有第二类核的计算数据通过DMA从主存中获取到第二类核LDM中,然后进行二元运算。
具体地,以卷积计算作为二元运算的例子说明。
假设8个第二类核为一组的情况下,若每个第二类核负责不同的特征图与相同的卷积核数据计算,前八批卷积核数据即代表为[D1,D2,…,D8],其中第二类核1在第一轮迭代时负责处理第一批卷积核数据,第二类核2在第一轮迭代时负责处理第二批数据,以此类推。每个第二类核的计算数据都通过DMA向主存请求数据并传输到第二类核LDM中。其中主存的访问延迟为:
其中MM_bandwidth表示主存带宽,每个第二类核向从核获取数据时,共享主存带宽。Frequency表示LDM的存储频率。num_core即第二类核组内第二类核数,num_clu表示第二类核组数,Filter_data表示该轮迭代时单个第二类核请求的卷积核数据,FM_data表示该轮迭代时单个第二类核请求的特征图数据,其中,第一轮迭代时,因为也需要加载外循环所需的数据,所以传输数据既包括卷积核数据又包括特征图数据。
其中DMA传输的下网延迟为:
其中,DMA_net_bandwidth表示DMA传输的下网带宽,表示单个LDM通过总线可以获取数据的峰值带宽。而FM_data表示单个第二类核在这一轮迭代时请求的特征图数据,Filter_data表示单个第二类核在这一轮迭代时请求的卷积核数据。
实际访存的开销,由于受限于主存带宽对所有第二类核的通信,DMA的下网带宽并不一定能达到峰值,所以具体的访存开销为:
Latency=Max(MEM_cyc,DNET_cyc) (4)
需要进一步说明的是,每个第二类核在每轮迭代时所进行的计算以及计算数据的大小都是相同的,所以执行开销是相同的。
S4:启动第2~N轮/迭代数的计算过程。
根据步骤S2确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式继续计算过程,进行第2~N轮计算,根据访存优化的策略,第2~N轮时各个第二类核的计算数据将通过RMA向其他第二类核发起数据请求,获取到自身LDM中,进行二元运算。
具体地,同样以卷积计算作为二元运算的例子,假设8个第二类核为一组的情况下,若每个第二类核负责不同的特征图与相同的卷积核数据计算,前八批卷积核数据即代表为[D1,D2,…D8,],其中第二类核1在第二轮迭代时负责处理第二批卷积核数据D2,第二类核2在第二轮迭代时负责处理第三批数据D3,第二类核8在第二轮迭代时负责处理第8批数据D1。而第二类核2在第一轮迭代时计算数据为D2,第二类核1第二轮所需的计算数据也为D2,故第二类核1在第二轮计算前通过RMA向第二类核2发起数据请求,获得数据后进行卷积计算,而非通过DMA向主存发起数据请求。第二类核2第二轮的计算数据D3通过RMA向第二类核3发起数据请求,获得数据后进行卷积计算。以此类推,而第二类核8第二轮的计算数据D1通过RMA向第二类核1发起数据请求,获得数据后进行卷积计算,同时将上一轮计算的结果通过DMA写回主存;
其中因为使用RMA进行数据的交互,所以不存在主存的延迟,而RMA的下网延迟为:
S5.以上步骤S3、S4重复次。
具体地,因为K批数据[D1,D2,D3,D4,…DK],至少可以分为组,每组中含有N批数据,即/>这/>组的数据都可以以步骤三、四的相同计算模式和访存方法执行。
S6.最后剩下的数据为其中/>轮计算时,仍然根据步骤二确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式执行计算过程,所有第二类核的这一轮的计算数据通过DMA从第一类核中获取到第二类核LDM中,然后进行二元运算,同时将上一轮计算的结果通过DMA写回主存。
S7.第轮计算,根据步骤二确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式执行计算过程,所有第二类核的所需的计算数据将通过RMA向其他第二类核发起数据请求,获取到自身LDM中,进行二元运算,同时将上一轮计算的结果通过DMA写回主存。
S8.结束计算,并将最后一轮计算的结果通过DMA写回主存。
根据本发明的第二方面,提供实施本发明的一种基于众核处理器多层互联架构的二元运算访存优化方法的装置,包括:
第二类核分组模块,用于根据每个第二类核分配到的计算任务,以及第二类核的LDM局存空间,确定计算数据需要的计算迭代次数为K,即有K批数据需要迭代计算。判断各第二类核间是否存在可重用的计算数据,结合第二类核阵列的结构对第二类核阵列进行分组,确定各第二类核组内第二类核数为N。
计算数据及访存方式确定模块,用于根据第二类核组内可复用的数据、数据批次数K、第二类核组内第二类核数N,进行访存优化设计,确定每次迭代时每个第二类核被分配的计算数据,并确定每轮迭代时计算数据来源与访存方式。
第一轮计算模块,用于根据步骤计算数据分配模块确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式启动计算过程,第一轮计算时,所有第二类核的计算数据通过DMA从主存中获取到第二类核LDM中,然后进行二元运算。
第2~N轮计算模块,用于根据计算数据分配模块确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式继续计算过程,进行第2~N轮计算,根据访存优化的策略,第2~N轮时各个第二类核的计算数据将通过RMA向其他第二类核发起数据请求,获取到自身LDM中,进行二元运算。
重复计算模块,用于第一轮计算模块、第2~N轮计算模块重复运行次。
第轮计算模块,用于第/>轮计算,仍然根据计算数据分配模块确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式执行计算过程,所有第二类核的计算数据通过DMA从第一类核中获取到第二类核LDM中,然后进行二元运算,同时将上一轮计算的结果通过DMA写回主存。
第轮计算模块,用于第/>轮计算,根据计算数据分配模块确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式执行计算过程,所有第二类核的计算数据将通过RMA向其他第二类核发起数据请求,获取到自身LDM中,进行二元运算,同时将上一轮计算的结果通过DMA写回主存。
计算结束模块,用于结束计算,并将最后一轮计算的结果通过DMA写回主存。
根据本发明的第三方面,一种基于众核处理器多层互联架构的二元运算访存优化方法的装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-7中任一项所述的一种基于众核处理器多层互联架构的二元运算访存优化方法。
根据本发明的第四方面,一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现本发明的一种基于众核处理器多层互联架构的二元运算访存优化方法。
Claims (10)
1.一种基于众核处理器多层互联架构的二元运算访存优化方法,应用于众核处理器上,包括以下步骤:
S1.根据每个第二类核分配到的计算任务,以及第二类核的LDM局存空间,确定计算数据需要的计算迭代次数为K,即有K批数据需要迭代计算;判断各第二类核间是否存在可重用的计算数据,结合第二类核阵列的结构对第二类核阵列进行分组,确定各第二类核组内第二类核数为N;
S2.根据第二类核组内可重用的计算数据、数据批次数K、第二类核组内第二类核数N,进行访存优化设计,确定每次迭代时每个第二类核被分配的计算数据,并确定每轮迭代时计算数据来源与访存方式;
S3.启动第一轮迭代数的计算过程;根据步骤S2确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式启动计算过程,第一轮计算时,所有第二类核的计算数据通过DMA从主存中获取到第二类核LDM中,然后进行二元运算;
S4.启动第2~N轮迭代数的计算过程;根据步骤S2确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式继续计算过程,进行第2~N轮计算,根据访存优化的策略,第2~N轮时各个第二类核的计算数据将通过RMA向其他第二类核发起数据请求,获取到自身LDM中,进行二元运算;
S5.以上步骤S3、S4重复次;
S6.第轮计算时,仍然根据步骤S2确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式执行计算过程,所有第二类核的计算数据通过DMA从第一类核中获取到第二类核LDM中,然后进行二元运算,同时将上一轮计算的结果通过DMA写回主存;
S7.第轮计算,根据步骤S2确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式执行计算过程,所有第二类核的计算数据将通过RMA向其他第二类核发起数据请求,获取到自身LDM中,进行二元运算,同时将上一轮计算的结果通过DMA写回主存;
S8.结束计算,并将最后一轮计算的结果通过DMA写回主存。
2.如权利要求1所述的一种基于众核处理器多层互联架构的二元运算访存优化方法,其特征在于:所述的二元运算是卷积计算,矩阵运算作用于两个对象生成第三个对象的运算方法。
3.如权利要求2所述的一种基于众核处理器多层互联架构的二元运算访存优化方法,其特征在于:步骤S1具体包括:
S11:获取第二类核计算任务映射,即每个第二类核分配到的特征图与卷积核对应计算的计算任务;
S12:根据数据量进行循环设计并确定数据批次;
在每个第二类核分配到计算任务后,根据特征图、卷积核的数据量以及第二类核上LDM的空间大小设计循环模式;由于第二类核LDM的空间限制,每次循环时可能无法加载所有卷积核,假设每次外循环迭代时,只能加载FM_slave_iter_num个特征图,每次内循环迭代时,只能加载Filter_slave_iter_num个卷积核,则数据批次K=Filter_slave_num/Filter_slave_iter_num;
S13:对可重用数据分析及第二类核分组;
第二类核阵列的同行或者同列第二类核之间存在重用数据时,通过对第二类核间可重用的计算数据分析后,将具有重用数据的第二类核分为1组。
4.如权利要求2所述的一种基于众核处理器多层互联架构的二元运算访存优化方法,其特征在于:步骤S2具体包括:
在确定数据批次数即迭代数K,第二类核组内第二类核数N之后,第二类核n在迭代i时的计算数据为:
同时确定每一轮迭代时计算数据的数据来源与访存方式,迭代数时,数据来源为主存,访存方式为第二类核通过DMA向主存请求传输数据获得;迭代数时,数据来源为其他第二类核LDM,访存方式为第二类核通过RMA向其他第二类核LDM请求数据获得。
5.如权利要求2所述的一种基于众核处理器多层互联架构的二元运算访存优化方法,其特征在于:步骤S3具体包括:
在8个第二类核为一组的情况下,若每个第二类核负责不同的特征图与相同的卷积核数据计算,前八批卷积核数据即代表为[D1,D2,…,D8],其中第二类核1在第一轮迭代时负责处理第一批卷积核数据,第二类核2在第一轮迭代时负责处理第二批数据,以此类推;每个第二类核的计算数据都通过DMA向主存请求数据并传输到第二类核LDM中,其中主存的访问延迟为:
其中MM_bandwidth表示主存带宽,每个第二类核向从核获取数据时,共享主存带宽;Frequency表示LDM的存储频率;num_core即第二类核组内第二类核数,num_clu表示第二类核组数,Filter_data表示该轮迭代时单个第二类核请求的卷积核数据,FM_data表示该轮迭代时单个第二类核请求的特征图数据,其中,第一轮迭代时,因为也需要加载外循环所需的数据,所以传输数据既包括卷积核数据又包括特征图数据;
其中DMA传输的下网延迟为:
其中,DMA_net_bandwidth表示DMA传输的下网带宽,表示单个LDM通过总线可以获取数据的峰值带宽;而FM_data表示单个第二类核在这一轮迭代时请求的特征图数据,Filter_data表示单个第二类核在这一轮迭代时请求的卷积核数据;
实际访存的开销,由于受限于主存带宽对所有第二类核的通信,DMA的下网带宽并不一定能达到峰值,所以具体的访存开销为:
Latency= Max(MEM_cyc,DNET_cyc) (4)
每个第二类核在每轮迭代时所进行的计算以及计算数据的大小都是相同的,所以执行开销是相同的。
6.如权利要求2所述的一种基于众核处理器多层互联架构的二元运算访存优化方法,其特征在于:步骤S4具体包括:
8个第二类核为一组的情况下,若每个第二类核负责不同的特征图与相同的卷积核数据计算,前八批卷积核数据即代表为[D1,D2,…D8,],其中第二类核1在第二轮迭代时负责处理第二批卷积核数据D2,第二类核2在第二轮迭代时负责处理第三批数据D3,第二类核8在第二轮迭代时负责处理第8批数据D1;而第二类核2在第一轮迭代时计算数据为D2,第二类核1第二轮所需的计算数据也为D2,故第二类核1在第二轮计算前通过RMA向第二类核2发起数据请求,获得数据后进行卷积计算,而非通过DMA向主存发起数据请求;第二类核2第二轮的计算数据D3通过RMA向第二类核3发起数据请求,获得数据后进行卷积计算;以此类推,而第二类核8第二轮的计算数据D1通过RMA向第二类核1发起数据请求,获得数据后进行卷积计算,同时将上一轮计算的结果通过DMA写回主存;
其中因为使用RMA进行数据的交互,所以不存在主存的延迟,而RMA的下网延迟为:
7.如权利要求2所述的一种基于众核处理器多层互联架构的二元运算访存优化方法,其特征在于:步骤S5具体包括:
因为K批数据[D1,D2,D3,D4,…DK],至少分为组,每组中含有N批数据,即这/>组的数据都以步骤S3、S4的相同计算模式和访存方法执行。
8.实施如权利要求1所述的一种基于众核处理器多层互联架构的二元运算访存优化方法的装置,其特征在于:包括:
第二类核分组模块,用于根据每个第二类核分配到的计算任务,以及第二类核的LDM局存空间,确定计算数据需要的计算迭代次数为K,即有K批数据需要迭代计算;判断各第二类核间是否存在可重用的计算数据,结合第二类核阵列的结构对第二类核阵列进行分组,确定各第二类核组内第二类核数为N;
计算数据及访存方式确定模块,用于根据第二类核组内可重用的计算数据、数据批次数K、第二类核组内第二类核数N,进行访存优化设计,确定每次迭代时每个第二类核被分配的计算数据,并确定每轮迭代时计算数据来源与访存方式;
第一轮计算模块,用于根据步骤计算数据分配模块确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式启动计算过程,第一轮计算时,所有第二类核的计算数据通过DMA从主存中获取到第二类核LDM中,然后进行二元运算;
第2~N轮计算模块,用于根据计算数据分配模块确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式继续计算过程,进行第2~N轮计算,根据访存优化的策略,第2~N轮时各个第二类核的计算数据将通过RMA向其他第二类核发起数据请求,获取到自身LDM中,进行二元运算;
重复计算模块,用于第一轮计算模块、第2~N轮计算模块重复运行次;
第轮计算模块,用于第/>轮计算,仍然根据计算数据分配模块确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式执行计算过程,所有第二类核的计算数据通过DMA从第一类核中获取到第二类核LDM中,然后进行二元运算,同时将上一轮计算的结果通过DMA写回主存;
第轮计算模块,用于第/>轮计算,根据计算数据分配模块确定的各第二类核在各轮迭代时所需负责的计算数据以及数据来源和访存方式执行计算过程,所有第二类核的计算数据将通过RMA向其他第二类核发起数据请求,获取到自身LDM中,进行二元运算,同时将上一轮计算的结果通过DMA写回主存;
计算结束模块,用于结束计算,并将最后一轮计算的结果通过DMA写回主存。
9.实施如权利要求1所述的一种基于众核处理器多层互联架构的二元运算访存优化方法的装置,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-7中任一项所述的一种基于众核处理器多层互联架构的二元运算访存优化方法。
10.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现权利要求1-7中任一项所述的一种基于众核处理器多层互联架构的二元运算访存优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211509617.7A CN116185937B (zh) | 2022-11-29 | 2022-11-29 | 基于众核处理器多层互联架构的二元运算访存优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211509617.7A CN116185937B (zh) | 2022-11-29 | 2022-11-29 | 基于众核处理器多层互联架构的二元运算访存优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116185937A CN116185937A (zh) | 2023-05-30 |
CN116185937B true CN116185937B (zh) | 2023-11-21 |
Family
ID=86439128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211509617.7A Active CN116185937B (zh) | 2022-11-29 | 2022-11-29 | 基于众核处理器多层互联架构的二元运算访存优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116185937B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472448B (zh) * | 2023-12-28 | 2024-03-26 | 山东省计算中心(国家超级计算济南中心) | 一种申威众核处理器从核簇加速并行方法、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929724A (zh) * | 2012-11-06 | 2013-02-13 | 无锡江南计算技术研究所 | 基于异构众核处理器的多级访存方法、离散访存方法 |
WO2016159765A1 (en) * | 2015-03-27 | 2016-10-06 | Recore Systems B.V. | Many-core processor architecture and many-core operating system |
CN112306678A (zh) * | 2020-10-22 | 2021-02-02 | 中国海洋大学 | 一种基于异构众核处理器的算法并行处理方法及系统 |
CN112579089A (zh) * | 2019-09-27 | 2021-03-30 | 无锡江南计算技术研究所 | 异构众核数据重用方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9977663B2 (en) * | 2016-07-01 | 2018-05-22 | Intel Corporation | Technologies for optimizing sparse matrix code with field-programmable gate arrays |
-
2022
- 2022-11-29 CN CN202211509617.7A patent/CN116185937B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929724A (zh) * | 2012-11-06 | 2013-02-13 | 无锡江南计算技术研究所 | 基于异构众核处理器的多级访存方法、离散访存方法 |
WO2016159765A1 (en) * | 2015-03-27 | 2016-10-06 | Recore Systems B.V. | Many-core processor architecture and many-core operating system |
CN112579089A (zh) * | 2019-09-27 | 2021-03-30 | 无锡江南计算技术研究所 | 异构众核数据重用方法 |
CN112306678A (zh) * | 2020-10-22 | 2021-02-02 | 中国海洋大学 | 一种基于异构众核处理器的算法并行处理方法及系统 |
Non-Patent Citations (2)
Title |
---|
Towards Optimized Tensor Code Generation for Deep Learning on Sunway Many-Core Processor;Mingzhen Li等;《arXiv:1904.07404v3 [cs.LG]》;第1-13页 * |
面向异构众核超级计算机的大规模稀疏计算性能优化研究;胡正丁等;《大数据》(第4期);第40-55页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116185937A (zh) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9529590B2 (en) | Processor for large graph algorithm computations and matrix operations | |
US9886418B2 (en) | Matrix operands for linear algebra operations | |
US11960934B2 (en) | Systems and methods for improved neural network execution | |
CN108416436B (zh) | 使用多核心处理模块进行神经网络划分的方法及其系统 | |
US11775430B1 (en) | Memory access for multiple circuit components | |
US20170097884A1 (en) | Pipelined convolutional operations for processing clusters | |
US20210065005A1 (en) | Systems and methods for providing vector-wise sparsity in a neural network | |
US11586601B2 (en) | Apparatus and method for representation of a sparse matrix in a neural network | |
US9612750B2 (en) | Autonomous memory subsystem architecture | |
CN110991630A (zh) | 一种面向边缘计算的卷积神经网络处理器 | |
EP3844610B1 (en) | Method and system for performing parallel computation | |
CN116185937B (zh) | 基于众核处理器多层互联架构的二元运算访存优化方法及装置 | |
US11921814B2 (en) | Method and device for matrix multiplication optimization using vector registers | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2020103883A1 (zh) | 执行矩阵乘法运算的方法、电路及soc | |
CN112966729A (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
CN113077042B (zh) | 卷积神经网络的数据重用与高效处理方法 | |
CN112905954A (zh) | 一种利用fpga bram的cnn模型卷积运算加速计算方法 | |
CN110825311A (zh) | 用于存储数据的方法和装置 | |
US20230376562A1 (en) | Integrated circuit apparatus for matrix multiplication operation, computing device, system, and method | |
CN114218141B (zh) | 一种针对深度学习半精度算子数据访存对界处理方法 | |
CN117008871A (zh) | 一种基于swai芯片的矩阵乘法性能分析方法及系统 | |
CN116484157A (zh) | 矩阵乘计算核选取方法和矩阵乘运算的确定方法 | |
CN113592702A (zh) | 基于深度卷积神经网络的图像算法加速器及系统和方法 | |
CN114546643A (zh) | 面向arm架构的numa感知的并行计算方法及系统 |
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 |