CN115328439A - 一种面向hpc/ai应用的增量式矩阵乘加速器 - Google Patents
一种面向hpc/ai应用的增量式矩阵乘加速器 Download PDFInfo
- Publication number
- CN115328439A CN115328439A CN202210847517.9A CN202210847517A CN115328439A CN 115328439 A CN115328439 A CN 115328439A CN 202210847517 A CN202210847517 A CN 202210847517A CN 115328439 A CN115328439 A CN 115328439A
- Authority
- CN
- China
- Prior art keywords
- matrix
- buffer
- core
- hpc
- accelerator
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种面向HPC/AI应用的增量式矩阵乘加速器,包括HPC核、迈动加速器核MZ、高带宽存储HBM、全局共享存储GSM以及数据总线,迈动加速器核MZ中包括脉动阵列SA、B缓冲以及C缓冲,B缓冲用于缓存输入脉动阵列SA中的矩阵乘所需的矩阵B,C缓冲用于缓存输入脉动阵列SA中的矩阵乘所需的矩阵C,全局共享存储GSM中包含用于存储脉动阵列SA中的矩阵乘所需的矩阵A的A缓冲。本发明能够在不影响性能的前提下节省存储资源,并可以满足脉动阵列的带宽需求,而且能够和原有的HPC核同时完成高性能GEMM任务,且不改变原有HPC核的生态,兼容原有矩阵函数库。
Description
技术领域
本发明涉及高性能计算(HPC,High Performance Computing)和人工智能(AI,Artificial Intelligence)运算技术,具体涉及一种面向HPC/AI应用的增量式矩阵乘加速器。
背景技术
自深度学习出现以来,结合数据中心传统的高性能计算需求,不管是从成本还是从算力上看,高性能计算(HPC,High Performance Computing)和人工智能(AI,ArtificialIntelligence)算力的融合都是趋势。研究表明,高性能计算和人工智能运算的核心,均为通用矩阵乘法(GEMM,General Matrix Multiplication),只是精度上有区别。例如AI算法里典型的卷积神经网络(CNN,Convolutional Neural Networks)占最大计算需求的卷积层和全连接层的核心操作,都可以通过im2col的转化或者是批量操作来得到矩阵乘。自然语言处理(NLP,Natural Language Processing)的主流模型Transfomer的核心操作也是矩阵乘。为了提高HPC和AI计算的性能,在HPC芯片中增加优化GEMM操作的加速核是主流的技术途径之一。由于数据流控制相对简单,脉动阵列是完成矩阵乘最高效的结构之一,被广泛采用。
脉动阵列(SA,Systolic Array)其结构如图1所示。由r行c列的处理单元(PE,Processing Element)阵列组成。每个PE通常是乘加器(MAC,Multiplier andAccumulation),能够流水化的完成乘加运算。脉动阵列的GEMM计算形式为Y=AB+C。AI计算时,矩阵A、B矩阵分别表示权值、特征图矩阵,C表示偏移矩阵,而Y是计算结果。所以通常需要设置A、B、C三个缓冲区,C缓冲区用于存储初始偏移矩阵C和计算中间结果。脉动阵列通常有三种数据流格式,权重固定(WS,Weight Stationary)、输入固定(IS,Input Stationary)和输出固定(OS,Output Stationary),分别对应将A、矩阵B、C预加载到PE中。本文只讨论IS、WS这两种数据流脉动阵列。预加载矩阵为固定矩阵,被乘的另一个矩阵即为动态矩阵,按行方向,依次动态加载到相邻的PE中进行计算。
典型的基于脉动阵列的处理器有Google的张量处理器(TPU,Tensor ProcessingUnit),其结构如图2所示,采用28nm工艺制造,最终面积不到330um2。TPU中脉动阵列包含256*256=65536个PE,虽然PE个数多,但是实际只占片上面积的四分之一,加上计算控制单元面积也不到片上的二分之一,而为了给脉动阵列提高计算密度,存储单元需要给计算单元源源不断提供数据,提高带宽。因此,TPU的片上存储占了接近三分之一的面积。
本文的背景是在已经具有高性能计算能力的芯片中,设计增量式的脉动阵列加速器核。HPC芯片的基本结构包括有HPC核、互联总线、共享存储等资源,因此给增量加速核面积预算有限,在支持AI应用下的GEMM(fp16,fp32)的同时,支持和已有HPC核共同完成GEMM(fp64),不改变原有系统生态,已成为一项亟待解决的关键技术问题。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种面向HPC/AI应用的增量式矩阵乘加速器,本发明能够在不影响性能的前提下节省存储资源,并可以满足脉动阵列的带宽需求,而且能够和原有的HPC核同时完成高性能GEMM任务,且不改变原有HPC核的生态,兼容原有矩阵函数库。
为了解决上述技术问题,本发明采用的技术方案为:
一种面向HPC/AI应用的增量式矩阵乘加速器,包括HPC核、迈动加速器核MZ、高带宽存储HBM、全局共享存储GSM以及数据总线,所述HPC核、迈动加速器核MZ、高带宽存储HBM、全局共享存储GSM分别与数据总线相连,所述迈动加速器核MZ中包括脉动阵列SA、B缓冲以及C缓冲,所述脉动阵列SA包括多行多列呈网格状布置的处理单元PE,所述B缓冲用于缓存输入脉动阵列SA中的矩阵乘所需的矩阵B,所述C缓冲用于缓存输入脉动阵列SA中的矩阵乘所需的矩阵C,所述全局共享存储GSM中包含用于存储脉动阵列SA中的矩阵乘所需的矩阵A的A缓冲,在HPC核不工作时迈动加速器核MZ单独使用A缓冲中存储的脉动阵列SA中的矩阵乘所需的矩阵A,在HPC核和迈动加速器核MZ均工作时HPC核和迈动加速器核MZ共享使用A缓冲中存储的脉动阵列SA中的矩阵乘所需的矩阵A。
可选地,在HPC核和迈动加速器核MZ均工作时迈动加速器核MZ执行的计算模式为HPC任务中的矩阵乘计算任务GEMM;在HPC核不工作时迈动加速器核MZ执行的计算模式为AI任务中的卷积计算任务CONV或者全连接计算任务FC。
可选地,当迈动加速器核MZ执行的计算模式为HPC任务中的矩阵乘计算任务GEMM时,迈动加速器核MZ执行的计算方式为YT=BTAT+CT,其中A缓冲用于缓存矩阵A,B缓冲用于缓存矩阵B的转置矩阵BT,C缓冲用于缓冲矩阵C的转置矩阵CT或者最终得到的矩阵Y的转置矩阵YT,且迈动加速器核MZ从A缓冲、B缓冲及C缓冲中读取矩阵时对A缓冲中读取的矩阵A执行转置操作以得到矩阵A的转置矩阵AT。
可选地,所述迈动加速器核MZ执行的计算模式为HPC任务中的矩阵乘计算任务GEMM时,包括将矩阵A的转置矩阵AT作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,将矩阵B的转置矩阵BT、矩阵C的转置矩阵CT存进脉动阵列SA的片上缓存以作为动态矩阵以参与计算。
可选地,当迈动加速器核MZ执行的计算模式为AI任务中的卷积计算任务CONV时,迈动加速器核MZ执行的计算方式为Y=AB+C,其中A缓冲用于缓存矩阵A,B缓冲用于缓存矩阵B,C缓冲用于缓冲矩阵C或者最终得到的矩阵Y,且迈动加速器核MZ从A缓冲、B缓冲及C缓冲中读取矩阵时均不执行转置操作。
可选地,所述迈动加速器核MZ执行的计算模式为AI任务中的卷积计算任务CONV时,包括将矩阵A作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,将矩阵B、矩阵C存进脉动阵列SA的片上缓存以作为动态矩阵以参与计算。
可选地,当迈动加速器核MZ执行的计算模式为AI任务中的全连接计算任务FC时,迈动加速器核MZ执行的计算方式为Y=ABT+C,其中A缓冲用于缓存矩阵A,B缓冲用于缓存矩阵B或矩阵B的转置矩阵BT,C缓冲用于缓冲矩阵C或者最终得到的矩阵Y,且迈动加速器核MZ从A缓冲及C缓冲中读取矩阵时均不执行转置操作,从B缓冲中读取矩阵时不执行转置操作或执行转置操作。
可选地,所述迈动加速器核MZ执行的计算模式为AI任务中的全连接计算任务FC时,包括将矩阵B或矩阵B的转置矩阵BT作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,将矩阵A、矩阵C存进脉动阵列SA的片上缓存以作为动态矩阵以参与计算。
可选地,所述将矩阵B或矩阵B的转置矩阵BT作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中时,若为将矩阵B作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,则加载固定矩阵的过程包括:对固定矩阵按照设定的大小自动分块,若末端的分块大小不足则补全并将掩码位置为0使得该数据不参与计算,然后按照分块顺序,将各个分块从脉动阵列SA的右侧注入脉动阵列SA以实现隐形转置,完成固定矩阵的加载;若为将矩阵B的转置矩阵BT作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,则加载固定矩阵的过程包括:对固定矩阵按照设定的大小自动分块,若末端的分块大小不足则补全并将掩码位置为0使得该数据不参与计算,然后按照分块顺序,将分块从脉动阵列SA的上侧注入脉动阵列SA,完成固定矩阵的加载。
可选地,所述增量式矩阵乘加速器还包括配置总线,所述HPC核、迈动加速器核MZ分别与配置总线相连。
和现有技术相比,本发明主要具有下述优点:
本发明的增量式矩阵乘加速器括HPC核、迈动加速器核MZ、高带宽存储HBM、全局共享存储GSM以及数据总线,所述HPC核、迈动加速器核MZ、高带宽存储HBM、全局共享存储GSM分别与数据总线相连,所述迈动加速器核MZ中包括脉动阵列SA、B缓冲以及C缓冲,所述脉动阵列SA包括多行多列呈网格状布置的处理单元PE,所述B缓冲用于缓存输入脉动阵列SA中的矩阵乘所需的矩阵B,所述C缓冲用于缓存输入脉动阵列SA中的矩阵乘所需的矩阵C,所述全局共享存储GSM中包含用于存储脉动阵列SA中的矩阵乘所需的矩阵A的A缓冲,在HPC核不工作时迈动加速器核MZ单独使用A缓冲中存储的脉动阵列SA中的矩阵乘所需的矩阵A,在HPC核和迈动加速器核MZ均工作时HPC核和迈动加速器核MZ共享使用A缓冲中存储的脉动阵列SA中的矩阵乘所需的矩阵A。本发明可融合HPC和AI加速,嵌入到HPC核的系统环境中,与HPC核共享高带宽存储(HBM,HighBandwidthMemory)和全局共享存储(GSM,GlobalSharedMemory)并配合完成矩阵乘GEMM加速,同时MZ核(迈动加速器核)也能完成AI任务的加速。利用脉动阵列对固定矩阵带宽的不敏感性,在迈动加速器核中实现一个半存储结构,不同于通常面向脉动阵列的结构需要三个矩阵缓冲存储A、B、C/Y矩阵数据。利用HPC核总线上的GSM和迈动加速器核片上的B缓冲、C缓冲构成半存储结构,使用半存储结构可以有效减少片上存储的面积开销并提高迈动加速器核计算单元密度。
附图说明
图1为现有技术中的脉动阵列SA的结构图。
图2为现有技术中的TPU结构图。
图3为本发明实施例中涉及的权重固定和输入固定数据流模式原理。
图4为本发明实施例中的脉动阵列计算时间原理示例。
图5为本发明实施例中动态矩阵带宽对性能的影响曲线。
图6为本发明实施例中固定矩阵带宽对性能的影响曲线。
图7为本发明实施例中增量式矩阵乘加速器的结构示意图。
图8为本发明实施例中上方注入固定矩阵方式示意图。
图9为本发明实施例中右侧注入固定矩阵方式示意图。
图10为本发明实施例中迈动加速器核MZ的工作流程示意图。
图11为本发明实施例中固定矩阵自动分块示意图。
图12为本发明实施例中动态矩阵自动分块示意图。
具体实施方式
在描述本发明面向HPC/AI应用的增量式矩阵乘加速器之前,首先分析脉动阵列在执行GEMM时的存储访问带宽需求。图3显示了脉动阵列的权重固定(WS)和输入固定(IS)的数据流。无论是输入固定(IS)还是权重固定(WS)的数据流模式,都需要三个存储体为GEMM计算提供数据,脉动阵列的计算结果可以写回偏移矩阵/部分和的缓冲中。矩阵需要根据脉动阵列的大小,即脉动阵列中处理单元PE的数量,将矩阵分块并注入脉动阵列。固定矩阵在一次计算过程中只需加载一次,而另外两个矩阵为动态矩阵,需同时注入脉动阵列。每个存储体的带宽需要和脉动阵列的大小匹配,特别是动态矩阵需要每个周期及时为脉动阵列提供数据,以保持较高的资源利用率。然后进行建模分析:将脉动阵列设为r行c列的脉动阵列,并且使用IS数据流模式,每个处理单元PE需要x拍来计算结果。Y=AB+C在输入固定(IS)数据流模式的计算映射为Y=WI+Bias,其中W为权重,I为输入,Bias为偏差/部分和。矩阵A的大小为m行k列,矩阵B的大小为k行n列,矩阵C的大小为m行n列,α是矩阵A的带宽利用率,β是矩阵B的带宽利用率,并要求矩阵C与矩阵A同时注入脉动阵列。图4为计算Y=AB+C时间,因此根据带宽利用率,得出计算时间如式(1)所示。式(2)表示的是在相同计算规模的情况下,最佳性能与测试性能之间的比。
上式中,t(α,β)为计算时间,r为脉动阵列的行数,β为矩阵B的带宽利用率,k为矩阵B的行数,n为矩阵B的列数,x为拍数,c为脉动阵列的列数,m为矩阵A的行数,α为矩阵A的带宽利用率,Pref_为最佳性能与测试性能之间的比,t(1.0,1.0)为α和β均取值为1.0时的计算时间。基于理论模型(1)(2),分析不同带宽及带宽利用率对性能的影响。在迈动加速器核中,计算核心是一个16行16列处理单元PE组成的脉动阵列,所以我们分析性能时将变量与实际联系,当r=c=16,x=1,m=k=n=16*i(i=1,2,3…,10),α和β分别从10%变化到100%。图5和图6表示了不同矩阵大小(不同曲线)及不同带宽利用率(横坐标变量)下的性能变化。图5中,随着矩阵A大小的增加,矩阵A带宽对性能的影响逐渐增加,并且逐渐成正比。在图6中,随着矩阵B大小的增加,矩阵B带宽对性能的影响逐渐减小,最终低到几乎可以忽略不计。因此,脉动阵列的GEMM性能对动态矩阵的带宽极为敏感,但是对固定矩阵并不敏感。
如图7所示,本实施例面向HPC/AI应用的增量式矩阵乘加速器包括HPC核、迈动加速器核MZ、高带宽存储HBM、全局共享存储GSM以及数据总线,所述HPC核、迈动加速器核MZ、高带宽存储HBM(HighBandwidthMemory)、全局共享存储GSM(GlobalSharedMemory)分别与数据总线相连,所述迈动加速器核MZ中包括脉动阵列SA、B缓冲以及C缓冲,所述脉动阵列SA包括多行多列呈网格状布置的处理单元PE,所述B缓冲用于缓存输入脉动阵列SA中的矩阵乘所需的矩阵B,所述C缓冲用于缓存输入脉动阵列SA中的矩阵乘所需的矩阵C,所述全局共享存储GSM中包含用于存储脉动阵列SA中的矩阵乘所需的矩阵A的A缓冲,在HPC核不工作时迈动加速器核MZ单独使用A缓冲中存储的脉动阵列SA中的矩阵乘所需的矩阵A,在HPC核和迈动加速器核MZ均工作时HPC核和迈动加速器核MZ共享使用A缓冲中存储的脉动阵列SA中的矩阵乘所需的矩阵A。HPC任务和AI任务中的GEMM使用存储的方式不同。对于AI任务中的GEMM,迈动加速器核独立完成计算任务,不存在访存冲突。对于HPC任务中的GEMM,HPC核与迈动加速器核共享GSM中的矩阵A数据,当矩阵A数据在GSM时,HPC核与迈动加速器核存在访存冲突。
本实施例中,在HPC核和迈动加速器核MZ均工作时迈动加速器核MZ执行的计算模式为HPC任务中的矩阵乘计算任务GEMM;在HPC核不工作时迈动加速器核MZ执行的计算模式为AI任务中的卷积计算任务CONV或者全连接计算任务FC,具体如表1所示。
表1:迈动加速器核MZ的计算模式表。
参见表1,当迈动加速器核MZ执行的计算模式为HPC任务中的矩阵乘计算任务GEMM时,迈动加速器核MZ执行的计算方式为YT=BTAT+CT,其中A缓冲用于缓存矩阵A,B缓冲用于缓存矩阵B的转置矩阵BT,C缓冲用于缓冲矩阵C的转置矩阵CT或者最终得到的矩阵Y的转置矩阵YT,且迈动加速器核MZ从A缓冲、B缓冲及C缓冲中读取矩阵时对A缓冲中读取的矩阵A执行转置操作以得到矩阵A的转置矩阵AT。本实施例中,迈动加速器核MZ执行的计算模式为HPC任务中的矩阵乘计算任务GEMM时,包括将矩阵A的转置矩阵AT作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,将矩阵B的转置矩阵BT、矩阵C的转置矩阵CT存进脉动阵列SA的片上缓存以作为动态矩阵以参与计算。HPC任务和AI任务中的GEMM使用存储的方式不同。对于AI任务中的GEMM,迈动加速器核独立完成计算任务,不存在访存冲突。对于HPC任务中的GEMM,HPC核与迈动加速器核共享GSM中的矩阵A数据,当矩阵A数据在GSM时,HPC核与迈动加速器核存在访存冲突。为了补偿通过总线访存全局共享存储GSM的延迟,可以在全局共享存储GSM存储固定矩阵数据,因为脉动阵列对固定矩阵的带宽并不敏感,全局共享存储GSM的带宽足以确保脉动阵列的吞吐量。为了解决访存冲突与为了解决延迟而在全局共享存储GSM中存储固定矩阵这两个问题,提出了固定矩阵双模加载的方案,实现了矩阵的隐形转置。利用矩阵计算原理Y=AB+C可以转化为YT=BTAT+CT,将AT矩阵作为迈动加速器核中脉动阵列的固定矩阵,减少其带宽需求并不影响整体系统的生态环境。根据矩阵计算原理,Y=AB+C可以转化为YT=BTAT+CT,YT、BT、AT、CT分别表示Y、B、A、C矩阵的转置矩阵。通过比较两个计算公式可以看出,转置之后的公式,矩阵A、B的位置互换了,所以它们注入脉动阵列的位置也相应产生了变化。若原公式在脉动阵列中计算,按照IS数据流格式,矩阵B为固定矩阵,矩阵A为动态矩阵,矩阵A带宽需求高,但矩阵A又存在全局共享存储GSM中,与HPC核共享,访存冲突高。而转置之后AT变为固定矩阵,复用率高,带宽需求低,此时再到全局共享存储GSM中取A能够降低访存冲突。由于全局共享存储GSM是HPC核和迈动加速器核MZ共用的,不能破坏原有系统的生态环境,所以不能将转置矩阵存储在全局共享存储GSM中,需要在取出原矩阵后,在传输过程中实现转置。而分析脉动阵列的结构特点后可以发现,如图8,迈动加速器核Z中脉动阵列的第一行位于最下方,固定矩阵从第一行开始向下注入,第一行注入到脉动阵列最下放,整体实现了矩阵的倒置,但矩阵左右顺序不变。动态矩阵在固定矩阵注入完毕后从左侧注入,并进行计算。如果将固定矩阵从右侧注入脉动阵列,将矩阵按列注入,如图9所示,在脉动阵列中的固定矩阵与原来从上方注入的固定矩阵相比,实现了转置功能。按此方案注入数据就实现了按照原格式存储的条件下,通过动脉动阵列实现的隐式转置,并且避免破坏原系统全局共享存储GSM的存储环境。当执行HPC任务中的GEMM时,计算方案为YT=BTAT+CT,迈动加速器核利用隐式转置,将AT矩阵作为固定矩阵注入脉动阵列,利用脉动阵列固定矩阵带宽不敏感性,降低访存冲突,实现了HPC核与迈动加速器核共同完成HPC任务。HPC核与迈动加速器核共享全局共享存储GSM中的矩阵A的数据,BT、CT矩阵以转置的形式存储在片上专有B缓冲和C缓冲上,生成的矩阵Y可以存储在高带宽存储HBM或者全局共享存储GSM中。
迈动加速器核执行AI任务时不需要与HPC核实现配合,即不共享数据。
参见表1,当迈动加速器核MZ执行的计算模式为AI任务中的卷积计算任务CONV时,迈动加速器核MZ执行的计算方式为Y=AB+C,其中A缓冲用于缓存矩阵A,B缓冲用于缓存矩阵B,C缓冲用于缓冲矩阵C或者最终得到的矩阵Y,且迈动加速器核MZ从A缓冲、B缓冲及C缓冲中读取矩阵时均不执行转置操作。迈动加速器核MZ执行的计算模式为AI任务中的卷积计算任务CONV时,包括将矩阵A作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,将矩阵B、矩阵C存进脉动阵列SA的片上缓存以作为动态矩阵以参与计算。当执行卷积计算任务时,例如利用im2col算法将多通道特征图转换为B矩阵,将卷积运算降维成矩阵乘计算GEMM。矩阵A为卷积核存储在GSM中,因为HPC核不执行卷积操作,所以不存在访存冲突,输入特征图存储在片上专有B缓冲中,偏差存储在片上专有C缓冲中,生成的矩阵Y可以存储在高带宽存储HBM或者全局共享存储GSM中。
参见表1,当迈动加速器核MZ执行的计算模式为AI任务中的全连接计算任务FC时,迈动加速器核MZ执行的计算方式为Y=ABT+C,其中A缓冲用于缓存矩阵A,B缓冲用于缓存矩阵B或矩阵B的转置矩阵BT,C缓冲用于缓冲矩阵C或者最终得到的矩阵Y,且迈动加速器核MZ从A缓冲及C缓冲中读取矩阵时均不执行转置操作,从B缓冲中读取矩阵时不执行转置操作或执行转置操作。参见表1,所述迈动加速器核MZ执行的计算模式为AI任务中的全连接计算任务FC时,包括将矩阵B或矩阵B的转置矩阵BT作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,将矩阵A、矩阵C存进脉动阵列SA的片上缓存以作为动态矩阵以参与计算。当执行全连接计算任务FC时,利用批量操作将向量拼接成矩阵图,将矩阵向量乘转化为矩阵乘计算任务GEMM,计算方案为Y=ABT+C。输入拼接图存储在片上B缓冲中,由于B缓冲是片上专有的,既可以直接将BT矩阵存储在片上缓冲中,也可以利用隐形转置在数据注入时实现转置。矩阵A为拼接图存储在GSM中,因为HPC核不执行全连接操作,所以不存在访存冲突,偏差存储在片上专有C缓冲中,生成的Y矩阵可以存储在高带宽存储HBM或者全局共享存储GSM中。
本实施例中,矩阵B或矩阵B的转置矩阵BT作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中时,若为将矩阵B作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,则加载固定矩阵的过程包括:对固定矩阵按照设定的大小自动分块,若末端的分块大小不足则补全并将掩码位置为0使得该数据不参与计算,然后按照分块顺序,将各个分块从脉动阵列SA的右侧注入脉动阵列SA以实现隐形转置,完成固定矩阵的加载;若为将矩阵B的转置矩阵BT作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,则加载固定矩阵的过程包括:对固定矩阵按照设定的大小自动分块,若末端的分块大小不足则补全并将掩码位置为0使得该数据不参与计算,然后按照分块顺序,将分块从脉动阵列SA的上侧注入脉动阵列SA,完成固定矩阵的加载。
如图7所示,本实施例的增量式矩阵乘加速器还包括配置总线,HPC核、迈动加速器核MZ分别与配置总线相连,以便于对HPC核、迈动加速器核MZ进行相关的参数配置。
本实施例中称从不同方向往脉动阵列注入矩阵数据为双模加载。它与半存储结构相结合,不仅解决了迈动加速器核可以与HPC核同时完成HPC任务,还降低了片上存储的面积,因为共享GSM,减少了迈动加速器核一个片上存储单元,从而提高了迈动加速器核片上计算单元的密度。
如图10所示,本实施例中迈动加速器核MZ的工作流程包括:
S1、判定计算模式,若计算模式为矩阵乘计算任务GEMM,则进入步骤S2;若计算模式为卷积操作计算任务CONV,则进入步骤S3;若计算模式为全连接计算任务FC,则既可以进入步骤S4。
S2、计算映射方案为YT=BTAT+CT,由于全局共享存储GSM与HPC核共享,所以将矩阵A直接存储到全局共享存储GSM中作为固定矩阵,将矩阵B、C按照转置形式,即BT、CT矩阵存进片上缓存,作为动态矩阵。进入步骤S5。
S3、计算映射方案为Y=AB+C,由于迈动加速器核MZ独立完成卷积操作,将矩阵A存进GSM作为固定矩阵,将矩阵B、C存进片上缓存,作为动态矩阵。进入步骤S6。
S4、计算映射方案为Y=ABT+C,由于迈动加速器核MZ独立完成全连接操作,既可以将矩阵B直接存进全局共享存储GSM作为固定矩阵也可以将矩阵B转置为矩阵BT存进全局共享存储GSM作为固定矩阵,将矩阵A、C存进片上缓存,作为动态矩阵。若矩阵B直接存进全局共享存储GSM,则进入步骤S5;若BT矩阵存进全局共享存储GSM,则进入步骤S6。
S5、由于矩阵需要实现转置,但是按照原格式存储,需要实现隐形转置。先按照图9的方式对固定矩阵自动分块,分块大小为16*16,若末端大小不满足16则补全并将掩码(MASK,用于限定相关位是否参与计算)位置为0即该数据不参与计算。按照分块顺序,将分块从右侧注入脉动阵列,如图11所示,实现隐形转置,等待动态矩阵注入。进入步骤S7。
S6、由于矩阵不需要实现转置,直接按照存储格式加载即可。先按照图12的方式对固定矩阵自动分块,分块大小为16*16,若末端大小不满足16则补全并将MASK位置为0即该数据不参与计算。按照分块顺序,将分块从上方注入脉动阵列,如图8所示,等待动态矩阵注入。进入步骤S7。
S7、由于动态矩阵无论需不需要转置,都已经提前将格式转换完成并存入片上存储,所以不需要进行额外处理。将动态矩阵按照图10自动分块,分块大小为16*M,矩阵行方向不满16则补齐并将掩码(MASK,用于限定相关位是否参与计算)位置为0即该数据不参与计算。按照分块顺序,如图8所示,将分块从右侧注入脉动阵列,即可计算结果。进入步骤S8。
S8、若矩阵计算没有结束,则将部分和C/CT存入片上缓冲,等待下次作为动态矩阵注入。若矩阵计算完毕,则将生成的矩阵Y/YT存入高带宽存储HBM或者全局共享存储GSM中。
为了对本半存储结构和双模加载固定矩阵的方法进行验证,本实施例中对迈动加速器核MZ进行了面积综合,得到片上计算资源与存储资源的开销,通过与TPU中计算资源与存储资源开销的对比,得到本方法在不影响性能的情况下对资源开销的优化。为了评估本方法,利用总线将迈动加速器核MZ嵌入到MT-3000的系统环境并进行评估。迈动加速器核MZ与MT-3000共享HBM与GSM,在不影响原有系统环境和性能的前提下,对迈动加速器核MZ内面积综合,得出具体结果后形成面积百分比数据并与TPU对比,结果如表2所示。
表2:面积开销对比。
参见表2可知,由于迈动加速器核MZ共享全局共享存储GSM,使得片上面向脉动阵列的存储单元得到优化,片上存储只占了整个迈动加速器核MZ的32.00%,而相比于TPU片上存储占的46.03%,得到了优化。而相应的,由于存储开销得到优化,片上的计算资源密度更大了。脉动阵列SA作为计算单元,占迈动加速器核MZ面积的58.03%,相比于TPU片上计算资源占的47.63%密度更高,使其能够更高效地执行计算任务。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种面向HPC/AI应用的增量式矩阵乘加速器,其特征在于,包括HPC核、迈动加速器核MZ、高带宽存储HBM、全局共享存储GSM以及数据总线,所述HPC核、迈动加速器核MZ、高带宽存储HBM、全局共享存储GSM分别与数据总线相连,所述迈动加速器核MZ中包括脉动阵列SA、B缓冲以及C缓冲,所述脉动阵列SA包括多行多列呈网格状布置的处理单元PE,所述B缓冲用于缓存输入脉动阵列SA中的矩阵乘所需的矩阵B,所述C缓冲用于缓存输入脉动阵列SA中的矩阵乘所需的矩阵C,所述全局共享存储GSM中包含用于存储脉动阵列SA中的矩阵乘所需的矩阵A的A缓冲,在HPC核不工作时迈动加速器核MZ单独使用A缓冲中存储的脉动阵列SA中的矩阵乘所需的矩阵A,在HPC核和迈动加速器核MZ均工作时HPC核和迈动加速器核MZ共享使用A缓冲中存储的脉动阵列SA中的矩阵乘所需的矩阵A。
2.根据权利要求1所述的面向HPC/AI应用的增量式矩阵乘加速器,其特征在于,在HPC核和迈动加速器核MZ均工作时迈动加速器核MZ执行的计算模式为HPC任务中的矩阵乘计算任务GEMM;在HPC核不工作时迈动加速器核MZ执行的计算模式为AI任务中的卷积计算任务CONV或者全连接计算任务FC。
3.根据权利要求2所述的面向HPC/AI应用的增量式矩阵乘加速器,其特征在于,当迈动加速器核MZ执行的计算模式为HPC任务中的矩阵乘计算任务GEMM时,迈动加速器核MZ执行的计算方式为YT=BTAT+CT,其中A缓冲用于缓存矩阵A,B缓冲用于缓存矩阵B的转置矩阵BT,C缓冲用于缓冲矩阵C的转置矩阵CT或者最终得到的矩阵Y的转置矩阵YT,且迈动加速器核MZ从A缓冲、B缓冲及C缓冲中读取矩阵时对A缓冲中读取的矩阵A执行转置操作以得到矩阵A的转置矩阵AT。
4.根据权利要求3所述的面向HPC/AI应用的增量式矩阵乘加速器,其特征在于,所述迈动加速器核MZ执行的计算模式为HPC任务中的矩阵乘计算任务GEMM时,包括将矩阵A的转置矩阵AT作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,将矩阵B的转置矩阵BT、矩阵C的转置矩阵CT存进脉动阵列SA的片上缓存以作为动态矩阵以参与计算。
5.根据权利要求2所述的面向HPC/AI应用的增量式矩阵乘加速器,其特征在于,当迈动加速器核MZ执行的计算模式为AI任务中的卷积计算任务CONV时,迈动加速器核MZ执行的计算方式为Y=AB+C,其中A缓冲用于缓存矩阵A,B缓冲用于缓存矩阵B,C缓冲用于缓冲矩阵C或者最终得到的矩阵Y,且迈动加速器核MZ从A缓冲、B缓冲及C缓冲中读取矩阵时均不执行转置操作。
6.根据权利要求5所述的面向HPC/AI应用的增量式矩阵乘加速器,其特征在于,所述迈动加速器核MZ执行的计算模式为AI任务中的卷积计算任务CONV时,包括将矩阵A作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,将矩阵B、矩阵C存进脉动阵列SA的片上缓存以作为动态矩阵以参与计算。
7.根据权利要求2所述的面向HPC/AI应用的增量式矩阵乘加速器,其特征在于,当迈动加速器核MZ执行的计算模式为AI任务中的全连接计算任务FC时,迈动加速器核MZ执行的计算方式为Y=ABT+C,其中A缓冲用于缓存矩阵A,B缓冲用于缓存矩阵B或矩阵B的转置矩阵BT,C缓冲用于缓冲矩阵C或者最终得到的矩阵Y,且迈动加速器核MZ从A缓冲及C缓冲中读取矩阵时均不执行转置操作,从B缓冲中读取矩阵时不执行转置操作或执行转置操作。
8.根据权利要求7所述的面向HPC/AI应用的增量式矩阵乘加速器,其特征在于,所述迈动加速器核MZ执行的计算模式为AI任务中的全连接计算任务FC时,包括将矩阵B或矩阵B的转置矩阵BT作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,将矩阵A、矩阵C存进脉动阵列SA的片上缓存以作为动态矩阵以参与计算。
9.根据权利要求8所述的面向HPC/AI应用的增量式矩阵乘加速器,其特征在于,所述将矩阵B或矩阵B的转置矩阵BT作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中时,若为将矩阵B作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,则加载固定矩阵的过程包括:对固定矩阵按照设定的大小自动分块,若末端的分块大小不足则补全并将掩码位置为0使得该数据不参与计算,然后按照分块顺序,将各个分块从脉动阵列SA的右侧注入脉动阵列SA以实现隐形转置,完成固定矩阵的加载;若为将矩阵B的转置矩阵BT作为固定矩阵预先加载到脉动阵列SA的各个处理单元PE中,则加载固定矩阵的过程包括:对固定矩阵按照设定的大小自动分块,若末端的分块大小不足则补全并将掩码位置为0使得该数据不参与计算,然后按照分块顺序,将分块从脉动阵列SA的上侧注入脉动阵列SA,完成固定矩阵的加载。
10.根据权利要求9所述的面向HPC/AI应用的增量式矩阵乘加速器,其特征在于,所述增量式矩阵乘加速器还包括配置总线,所述HPC核、迈动加速器核MZ分别与配置总线相连。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210847517.9A CN115328439A (zh) | 2022-07-19 | 2022-07-19 | 一种面向hpc/ai应用的增量式矩阵乘加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210847517.9A CN115328439A (zh) | 2022-07-19 | 2022-07-19 | 一种面向hpc/ai应用的增量式矩阵乘加速器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115328439A true CN115328439A (zh) | 2022-11-11 |
Family
ID=83917883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210847517.9A Pending CN115328439A (zh) | 2022-07-19 | 2022-07-19 | 一种面向hpc/ai应用的增量式矩阵乘加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115328439A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115859011A (zh) * | 2022-11-18 | 2023-03-28 | 上海天数智芯半导体有限公司 | 矩阵运算方法、装置及单元、电子设备 |
CN116088773A (zh) * | 2023-04-11 | 2023-05-09 | 南京砺算科技有限公司 | 一种基于隐式gemm卷积的数据加载方法、装置、设备及介质 |
-
2022
- 2022-07-19 CN CN202210847517.9A patent/CN115328439A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115859011A (zh) * | 2022-11-18 | 2023-03-28 | 上海天数智芯半导体有限公司 | 矩阵运算方法、装置及单元、电子设备 |
CN115859011B (zh) * | 2022-11-18 | 2024-03-15 | 上海天数智芯半导体有限公司 | 矩阵运算方法、装置及单元、电子设备 |
CN116088773A (zh) * | 2023-04-11 | 2023-05-09 | 南京砺算科技有限公司 | 一种基于隐式gemm卷积的数据加载方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
KR102492477B1 (ko) | 행렬 곱셈기 | |
CN106940815B (zh) | 一种可编程卷积神经网络协处理器ip核 | |
CN109213962B (zh) | 运算加速器 | |
CN110222818B (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
CN110415157B (zh) | 一种矩阵乘法的计算方法及装置 | |
CN113076521B (zh) | 一种基于gpgpu可重构架构的方法及计算系统 | |
CN115328439A (zh) | 一种面向hpc/ai应用的增量式矩阵乘加速器 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
Wang et al. | Towards memory-efficient allocation of CNNs on processing-in-memory architecture | |
TWI848184B (zh) | 記憶體模組以及用於在記憶體內進行計算的方法 | |
Rajopadhye et al. | Systolic array synthesis by static analysis of program dependencies | |
Andri et al. | Going further with winograd convolutions: Tap-wise quantization for efficient inference on 4x4 tiles | |
CN116710912A (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
WO2023098256A1 (zh) | 神经网络运算方法、装置、芯片、电子设备和存储介质 | |
US11886347B2 (en) | Large-scale data processing computer architecture | |
CN116521611A (zh) | 一种深度学习处理器的泛化架构设计方法 | |
CN113392959B (zh) | 一种在计算系统中重构架构的方法及计算系统 | |
CN113157638B (zh) | 一种低功耗存储器内计算处理器和处理运算方法 | |
CN117828252A (zh) | 一种基于矩阵核心的高性能矩阵向量乘方法 | |
CN116339680A (zh) | 一种实时的多端口并行读写近存处理器 | |
CN113298236B (zh) | 基于数据流结构的低精度神经网络计算装置及加速方法 | |
US11500629B2 (en) | Processing-in-memory (PIM) system including multiplying-and-accumulating (MAC) circuit | |
JPH05324700A (ja) | 行列乗算装置 | |
Bi et al. | Efficiently Running SpMV on Multi-Core DSPs for Block Sparse Matrix |
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 |