CN114692079A - 一种gpu批量矩阵乘法加速器及其处理方法 - Google Patents

一种gpu批量矩阵乘法加速器及其处理方法 Download PDF

Info

Publication number
CN114692079A
CN114692079A CN202210294486.9A CN202210294486A CN114692079A CN 114692079 A CN114692079 A CN 114692079A CN 202210294486 A CN202210294486 A CN 202210294486A CN 114692079 A CN114692079 A CN 114692079A
Authority
CN
China
Prior art keywords
matrix
batch
kernel function
instance
data
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
Application number
CN202210294486.9A
Other languages
English (en)
Inventor
陆璐
王瑞民
冼允廷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
South China University of Technology SCUT
Zhongshan Institute of Modern Industrial Technology of South China University of Technology
Original Assignee
South China University of Technology SCUT
Zhongshan Institute of Modern Industrial Technology of South China University of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by South China University of Technology SCUT, Zhongshan Institute of Modern Industrial Technology of South China University of Technology filed Critical South China University of Technology SCUT
Priority to CN202210294486.9A priority Critical patent/CN114692079A/zh
Publication of CN114692079A publication Critical patent/CN114692079A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/08Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种GPU批量矩阵乘法加速器,包括由工作组管理器、指令译码处理器、高速存储单元、共享内存单元、计算单元、DMA组成主分支电路,用于对矩阵数据进行批次序优化,得到矩阵分片,将矩阵分片载入到计算单元中;由指令译码处理器、高速存储单元、共享内存单元、计算单元、DMA组成旁分支电路,当不进行批次序优化时,对矩阵数据直接进行内核函数计算,得到矩阵计算结果;本发明可以有效提高计算单元的利用效率并达到各个计算单元任务量的负载均衡,提高运行时的计算密度,达到更高的指令并行性、线程并行性和访存并行性,从而充分发挥硬件的计算能力,达到计算加速的目的。

Description

一种GPU批量矩阵乘法加速器及其处理方法
技术领域
本发明涉及高性能计算的研究领域,特别涉及一种GPU批量矩阵乘法加速器及其处理方法。
背景技术
Basic Linear Algebra Subprograms(基本线性代数子程序,BLAS)是一系列基本线性代数运算函数的接口标准,被广泛用于科学计算和工业界的各个领域。更高级的一些语言和计算库中也是通过调用BLAS接口实现的(R语言、Matlab、Numpy、Lapack等)。如今随着BLAS的发展,出现了各种基于不同平台和硬件架构的BLAS库实现,如CuBLAS、RocBLAS、MKL、MAGMA、OpenBLAS等,并对现代科学领域和工业发展起到了至关重要的作用。
经典BLAS应用场景针对大型输入(大型的矩阵、向量操作)往往有较好的性能表现;然而对于问题规模较小,而问题数量较大的场景下会由于单个问题较小导致资源利用不充分,极大的影响了性能和效率。然而,随着目前高性能计算领域、机器学习等领域的不断发展,这类型的问题常常出现并已经成为了一种新兴趋势,这迫使经典BLAS需要顺应发展进行优化和扩展。
为了解决上面的挑战,近年来提出了批量BLAS(Batch BLAS)的概念和初步实现。它通过将多个子问题同时并行批量处理的思路,解决以往经典BLAS中对于这种场景表现较差的窘境。在这些批量BLAS的例程之中,批量矩阵乘法作为最常用的线性代数操作得到广泛的关注和研究,业界也迫切需要高性能的批量矩阵乘法实现来推动发展。然而,目前已有的批量BLAS的相关实现与功能上依然较为初级。对于批量矩阵相乘而言,目前基于GPU的BLAS库(CuBLAS、RocBLAS)只支持固定尺寸的问题输入,而不支持可变尺寸矩阵计算,极大的限制了其应用场景。
为了提高批量矩阵相关计算的适用性和计算效率,目前业界内最先进的MAGMA计算库提出了vbatch方法来支持可变尺寸的矩阵计算。其中,最受关注的便是xgemm_vbatched的一类API。相比于当前CUDA、ROCm平台中求解可变尺寸的批量矩阵乘法时必须要循环调用xgemm例程来依次求解每个计算实例的方式,它能够同时将所有的计算实例统一载入到GPU端进行并行计算,减少了由于单个实例过小导致的GPU资源空闲和过多的重复调度资源开销,极大地提高了算法执行效率与计算并行性,从而得到了非常可观的加速。
然而,在可变尺寸的矩阵计算操作时,不同的计算实例之间不同的内核函数同时调用会导致计算时硬件内部出现不规整;另外,由于各个实例之间互相不同的内核函数划分策略生成的工作组也因为Round-robin调度算法,在载入计算单元时导致各个计算单元的工作量不平衡,引起GPU计算资源之间的分配不均,进而对计算并行性和计算密度造成了很大的损害。
现有技术中,存在以下问题:在已有的基于GPU的批量矩阵乘法计算库在求解可变尺寸的大批量矩阵乘法时,可变尺寸的矩阵输入分布与工作组调度算法的共同作用会导致计算单元之间出现严重的负载不均衡与内部不规整,影响了计算流水线的执行效率,使得GPU不能够很好的发挥硬件的并行能力,从而降低了最终算法计算速率。
发明内容
本发明的主要目的在于克服现有技术的缺点与不足,提供一种GPU批量矩阵乘法加速器及其处理方法,此加速器嵌入在大批量的矩阵输入计算过程中,可以分析矩阵输入内部的分布特性,并根据分析得到的输入性质,通过对批次序进行优化调整之后,再将调整后的矩阵输入加载到内核函数中进行并行计算,并得到最终的计算结果。在批次序优化中,矩阵的批次顺序会结合GPU的硬件调度特性,通过特定的算法进行重新调整,可以有效提高计算单元的利用效率并达到各个计算单元任务量的负载均衡,提高运行时的计算密度,达到更高的指令并行性、线程并行性和访存并行性,从而充分发挥硬件的计算能力,达到计算加速的目的。
本发明的第一目的在于提供一种GPU批量矩阵乘法加速器;
本发明的第二目的在于提供一种GPU批量矩阵乘法加速处理方法。
本发明的第一目的通过以下的技术方案实现:
一种GPU批量矩阵乘法加速器,包括:
指令译码处理器,将CPU端提交至指令队列的DMA传输包读取并译码,并将译码后的结果传输给DMA引擎进而将矩阵数据从CPU端载入;
计算单元,用于将载入的矩阵分片进行并行执行计算,通过内核函数并行计算矩阵分片中的分片计算结果;
共享内存单元,用于存储矩阵分片的中间计算过程的矩阵部分;
高速存储单元,用于存储相关数据;
工作组管理器,用于各单元之间的工作管理;
由工作组管理器、指令译码处理器、高速存储单元、共享内存单元、计算单元、DMA组成主分支电路,用于对矩阵数据进行批次序优化,得到矩阵分片,将矩阵分片载入到计算单元中;
由指令译码处理器、高速存储单元、共享内存单元、计算单元、DMA组成旁分支电路,当不进行批次序优化时,对矩阵数据直接进行内核函数计算,得到矩阵计算结果。
进一步地,所述工作组管理器根据配置信息对网格进行划分,拆分出多个工作组,并将多个工作组数据发送到计算单元中进行计算,并管理调度执行运算的工作组的顺序。
进一步地,所述存储相关数据,具体为:相关数据包括输入矩阵尺寸信息、批大小信息、矩阵元素与指针、批次序信息、策略桶、网格配置信息、输出矩阵。
进一步地,当批量矩阵乘法问题实例输入至加速器时,加速器通过批次矩阵信息判断是否进入主分支电路,在主分支中统计每个矩阵乘法问题实例的工作量并对其进行粗排序,结合内核函数的尺寸大小与计算单元配置对所述问题实例采取最佳划分分片大小,并对该问题实例规模进行细排序以优化最终批次序,将并将优化后的矩阵数据载入至计算单元中进行计算,得出的最终结果返回至指令译码处理器;若不进入优化分支,则进入旁分支电路,直接将矩阵数据载入至计算单元中来使用内核函数进行计算,并将结果返回。
本发明的第二目的通过以下技术方案实现:
一种GPU批量矩阵乘法加速处理方法,包括以下步骤:
将矩阵数据输入到加速器中,对矩阵数据进行判断,根据判断结果选择是否进行批次序优化;
如需要进行批次序优化,对矩阵数据的矩阵尺寸进行统计分析,得到统计分析结果;
根据内核函数的分片大小对矩阵数据进行匹配划分,得到划分结果;
根据矩阵数据指针进行分类,得到分类结果;
依据统计分析结果、划分结果、分类结果重排数据数据输入的批次序;
根据重排后的顺序结合内核函数进行重新调用和计算,得到最终运算结果;
如不需要进行批次序优化,则直接通过内核函数计算,得到最终运算结果。
进一步地,所述批次序优化,具体为:对当前矩阵数据输入进行分析;遍历矩阵数据输入中各个实例的矩阵大小,统计记录各个实例完成计算所需工作量,以及各个实例对应内核函数的分片大小,将符合该实例的内核函数进行标记并将其内核函数转换为当前实例的索引,将各个实例的索引进行记录与分类;对所有实例记录分类后,再次遍历所有实例索引,得到最终的批次序,并将排序好的实例指针重新回写,得到优化后的矩阵数据,将优化后的矩阵数据载入到GPU进行并行计算。
进一步地,所述对所有实例记录分类,具体为:遍历整个批次序矩阵数据输入的所有实例,分析所有实例对应的M、N、K,M为实例矩阵中矩阵A与矩阵C的行数,N为实例矩阵中矩阵B与矩阵C的列数,K为实例矩阵中矩阵A的列数与矩阵B的行数;将K值作为内核函数内循环的所需工作量,并作为粗略排序的主键进行排序;再次对每个实例采用分类方式结合当前实例对应的M、N来计算当前实例的内核函数,并对该内核函数进行索引标记,将各个实例按其对应的不同内核函数的尺寸进行分类。
进一步地,所述进行排序,具体为:使用各个实例的K值作为主键进行粗排序,即所有实例的顺序按内核函数的工作量大小进行从小到大排序,对所有实例使用基于运算的排序算法,将各个标记好的索引对象存放到与内核函数对应的策略桶中,并提取各个策略桶中存放的所有索引标记,以获得最终排序后的实例次序。
进一步地,所述将各个实例按其对应的不同内核函数的尺寸进行分类,具体为:
计算当前实例中矩阵C的可选划分策略,待选策略满足以下要求:
Figure BDA0003562749460000041
其中,Mi是当前计算实例的对应的矩阵A和矩阵C的行数,Ni是是对应的矩阵B和矩阵C的列数;TMj是是当前内核函数划分策略的矩阵A和矩阵C的子矩阵的行数,TNj是对应的矩阵B和矩阵C的子矩阵的列数;
得到多个待选策略后,选择满足以下要求的划分策略作为当前计算实例的最佳划分策略,此时最佳划分策略有最高的并行性,要求为:
max{TMj×TNj}
将当前选择的最佳划分策略的所索引j作为该实例分类的标记索引,并将其放入到对应的策略桶中,并将当前的最佳划分策略作为该实例使用内核函数的对应依据。
进一步地,所述将排序好的实例指针重新回写,具体为:使用排序后的实例次序遍历,并对各个实例的内存指针、维度指针、先导维指针和标量指针次序进行重新调整并回写到矩阵数据输入的指针数组中,供在进行计算时的API接口可以直接调用。
本发明与现有技术相比,具有如下优点和有益效果:
1、本发明能够在CUDA和ROCm等主流的科学高性能计算平台上实现并原生执行,极大的增加了软件的通用性和适用范围,涵盖了NVIDIA与AMD的各种支持通用计算的并行计算卡和图形处理器。
2、本发明是内核函数调用执行的优化部件,能够有效地减少已有批量可变尺寸矩阵乘法库在求解过程中,因实例工作量不一致与硬件调度算法共同导致的计算单元内部资源总量不平衡的问题,提高计算资源的负载均衡,在减少资源浪费的同时提高计算的密度和并行性,进而提高计算的效率和速度。
3、本发明针对的可变尺寸的批量矩阵乘法,在高性能计算场景和机器学习,人工智能场景中应用非常广泛,更是当下高性能异构系统的优化重点之一。该发明对这些场景的相关应用设计构建、高级算法组合都具有很大的意义,可以加速相关领域的应用和算法的执行效率。
附图说明
图1是本发明所述一种GPU批量矩阵乘法加速器的结构框图;
图2是本发明所述一种GPU批量矩阵乘法加速处理方法的流程图;
图3是本发明所述一种GPU批量矩阵乘法加速器的计算流程图;
图4是本发明所述一种GPU批量矩阵乘法加速器的内部流程图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例1
一种GPU批量矩阵乘法加速器,如图1所示,包括:
指令译码处理器,将CPU端提交至指令队列的DMA传输包读取并译码,并将译码后的结果传输给DMA引擎进而将矩阵数据从CPU端载入;
计算单元,用于将载入的矩阵分片进行并行执行计算,通过内核函数并行计算矩阵分片中的分片计算结果;
共享内存单元,用于存储矩阵分片的中间计算过程的矩阵部分;
高速存储单元,用于存储相关数据;
工作组管理器,用于各单元之间的工作管理;
由工作组管理器、指令译码处理器、高速存储单元、共享内存单元、计算单元、DMA组成主分支电路,用于对矩阵数据进行批次序优化,得到矩阵分片,将矩阵分片载入到计算单元中;
由指令译码处理器、高速存储单元、共享内存单元、计算单元、DMA组成旁分支电路,当不进行批次序优化时,对矩阵数据直接进行内核函数计算,得到矩阵计算结果。
进一步地,所述工作组管理器根据配置信息对网格进行划分,拆分出多个工作组,并将多个工作组数据发送到计算单元中进行计算,并管理调度执行运算的工作组的顺序。
进一步地,所述存储相关数据,具体为:相关数据包括输入矩阵尺寸信息、批大小信息、矩阵元素与指针、批次序信息、策略桶、网格配置信息、输出矩阵。
该加速器的实施步骤如图2所示,结合CPU端和GPU端如图3所示,其加速器具体内部流程图如图4所示:
步骤一:先根据当前矩阵输入情况进行判断,如果批次本身已经是优化后的次序,或者显性指定不需要进行次序优化,则进入旁路分支,直接进入内核函数调用来进行运算。否则,进入批次序优化流程。
步骤二:若进入批次序优化流程,则先对当前矩阵输入进行分析,遍历输入中各个实例的矩阵大小,以统计记录各个实例对应的工作组所需的工作量。工作量由K,即矩阵A的列数和矩阵B的行数决定。
步骤三:将各个实例以K为主键进行首轮粗排序,将批次中所有的实例按其生成的工作组对应的工作量从大到小排列,此时批中所有实例对应的内核函数依然未规整,需要进一步优化。
步骤四:创建与内核函数划分策略同样数量的临时策略桶用以对每个实例进行再次细排序。
步骤五:对每个实例计算其最优内核函数与用于分类的标记索引,并将索引放入到对应的策略桶中。最优内核函数与标记索引由以下步骤得到:
①计算当前计算实例中矩阵C的可选划分策略,待选策略满足以下要求:
Figure BDA0003562749460000071
其中,Mi是当前计算实例的对应的矩阵A和矩阵C的行数,Ni是是对应的矩阵B和矩阵C的列数;TMj是是当前内核函数划分策略的矩阵A和矩阵C的子矩阵的行数,TNj是对应的矩阵B和矩阵C的子矩阵的列数;
②得到多个待选策略后,选择满足以下要求的划分策略作为当前计算实例的最佳划分策略。由于①中已经筛选出当前实例所有可行的划分策略,此时使用处理元素量最大的划分策略作为最佳划分策略,以增加单个工作组所处理的矩阵元素数量,同时更大的划分策略方案能够有更高的共享内存利用率,同时指令密度和计算密度最大。即满足以下条件的策略作为最优的划分策略:
max{TMj×TNj}
将当前选择的策略的索引j作为该实例分类的标记索引,并将其放入到对应的策略桶中,并将当前策略作为该实例使用内核函数的对应依据。
步骤六:遍历所有的策略桶及桶中所有标记索引以得到调整后的批次序,并将索引对应的实例的内存指针、维度指针、先导维指针和标量指针回写到原始输入的对应指针数组之中,以便于计算时API直接调用。
步骤七:对优化批次序后的输入,同时并行调用标记好的内核函数以计算最终的运算结果。结果按修改后的内存指针进行存放,保证数据的一致性与正确性。
步骤八:内核函数将计算结果整合并回传至内存,整体计算完毕。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (10)

1.一种GPU批量矩阵乘法加速器,其特征在于,包括:
指令译码处理器,将CPU端提交至指令队列的DMA传输包读取并译码,并将译码后的结果传输给DMA传输引擎进而将矩阵数据从CPU端载入;
计算单元,用于将载入的矩阵分片进行并行执行计算,通过内核函数并行计算矩阵分片中的分片计算结果;
共享内存单元,用于存储矩阵分片的中间计算过程的矩阵部分;
高速存储单元,用于存储相关数据;
工作组管理器,用于各单元之间的工作管理;
由工作组管理器、指令译码处理器、高速存储单元、共享内存单元、计算单元、DMA组成主分支电路,用于对矩阵数据进行批次序优化,得到矩阵分片,将矩阵分片载入到计算单元中;
由指令译码处理器、高速存储单元、共享内存单元、计算单元、DMA组成旁分支电路,当不进行批次序优化时,对矩阵数据直接进行内核函数计算,得到矩阵计算结果。
2.根据权利要求1所述的一种GPU批量矩阵乘法加速器,其特征在于,所述工作组管理器根据配置信息对网格进行划分,拆分出多个工作组,并将多个工作组数据发送到计算单元中进行计算,并管理调度执行运算的工作组的顺序。
3.根据权利要求1所述的一种GPU批量矩阵乘法加速器,其特征在于,所述存储相关数据,具体为:相关数据包括输入矩阵尺寸信息、批大小信息、矩阵元素与指针、批次序信息、策略桶、网格配置信息、输出矩阵。
4.根据权利要求1所述的一种GPU批量矩阵乘法加速器,其特征在于,当批量矩阵乘法问题实例输入至加速器时,加速器通过批次矩阵信息判断是否进入主分支电路,在主分支中统计每个矩阵乘法问题实例的工作量并对其进行粗排序,结合内核函数的尺寸大小与计算单元配置对所述问题实例采取最佳划分分片大小,并对该问题实例规模进行细排序以优化最终批次序,将并将优化后的矩阵数据载入至计算单元中进行计算,得出的最终结果返回至指令译码处理器;若不进入优化分支,则进入旁分支电路,直接将矩阵数据载入至计算单元中来使用内核函数进行计算,并将结果返回。
5.一种GPU批量矩阵乘法加速处理方法,其特征在于,包括以下步骤:
将矩阵数据输入到加速器中,对矩阵数据进行判断,根据判断结果选择是否进行批次序优化;
如需要进行批次序优化,对矩阵数据的矩阵尺寸进行统计分析,得到统计分析结果;
根据内核函数的分片大小对矩阵数据进行匹配划分,得到划分结果;
根据矩阵数据指针进行分类,得到分类结果;
依据统计分析结果、划分结果、分类结果重排数据数据输入的批次序;
根据重排后的顺序结合内核函数进行重新调用和计算,得到最终运算结果;
如不需要进行批次序优化,则通过内核函数计算,得到最终运算结果。
6.根据权利要求5所述的一种GPU批量矩阵乘法加速处理方法,其特征在于,所述批次序优化,具体为:对当前矩阵数据输入进行分析;遍历矩阵数据输入中各个实例的矩阵大小,统计记录各个实例完成计算所需工作量,以及各个实例对应内核函数的分片大小,将符合该实例的内核函数进行标记并将其内核函数转换为当前实例的索引,将各个实例的索引进行记录与分类;对所有实例记录分类后,再次遍历所有实例索引,得到最终的批次序,并将排序好的实例指针重新回写,得到优化后的矩阵数据,将优化后的矩阵数据载入到GPU进行并行计算。
7.根据权利要求6所述的一种GPU批量矩阵乘法加速处理方法,其特征在于,所述对所有实例记录分类,具体为:遍历整个批次序矩阵数据输入的所有实例,分析所有实例对应的M、N、K,M为实例矩阵中矩阵A与矩阵C的行数,N为实例矩阵中矩阵B与矩阵C的列数,K为实例矩阵中矩阵A的列数与矩阵B的行数;将K值作为内核函数内循环的所需工作量,并作为粗略排序的主键进行排序;再次对每个实例采用分类方式结合当前实例对应的M、N来计算当前实例的内核函数,并对该内核函数进行索引标记,将各个实例按其对应的不同内核函数的尺寸进行分类。
8.根据权利要求7所述的一种GPU批量矩阵乘法加速处理方法,其特征在于,所述进行排序,具体为:使用各个实例的K值作为主键进行粗排序,即所有实例的顺序按内核函数的工作量大小进行从小到大排序,对所有实例使用基于运算的排序算法,将各个标记好的索引对象存放到与内核函数对应的策略桶中,并提取各个策略桶中存放的所有索引标记,以获得最终排序后的实例次序。
9.根据权利要求7所述的一种GPU批量矩阵乘法加速处理方法,其特征在于,所述将各个实例按其对应的不同内核函数的尺寸进行分类,具体为:
计算当前实例中矩阵C的可选划分策略,待选策略满足以下要求:
Figure FDA0003562749450000031
其中,Mi是当前计算实例的对应的矩阵A和矩阵C的行数,Ni是是对应的矩阵B和矩阵C的列数;TMj是是当前内核函数划分策略的矩阵A和矩阵C的子矩阵的行数,TNj是对应的矩阵B和矩阵C的子矩阵的列数;
得到多个待选策略后,选择满足以下要求的划分策略作为当前计算实例的最佳划分策略,此时最佳划分策略有最高的并行性,要求为:
max{TMj×TNj}
将当前选择的最佳划分策略的所索引j作为该实例分类的标记索引,并将其放入到对应的策略桶中,并将当前的最佳划分策略作为该实例使用内核函数的对应依据。
10.根据权利要求6所述的一种GPU批量矩阵乘法加速处理方法,其特征在于,所述将排序好的实例指针重新回写,具体为:使用排序后的实例次序遍历,并对各个实例的内存指针、维度指针、先导维指针和标量指针次序进行重新调整并回写到矩阵数据输入的指针数组中,供在进行计算时的API接口可以直接调用。
CN202210294486.9A 2022-03-24 2022-03-24 一种gpu批量矩阵乘法加速器及其处理方法 Pending CN114692079A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210294486.9A CN114692079A (zh) 2022-03-24 2022-03-24 一种gpu批量矩阵乘法加速器及其处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210294486.9A CN114692079A (zh) 2022-03-24 2022-03-24 一种gpu批量矩阵乘法加速器及其处理方法

Publications (1)

Publication Number Publication Date
CN114692079A true CN114692079A (zh) 2022-07-01

Family

ID=82138588

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210294486.9A Pending CN114692079A (zh) 2022-03-24 2022-03-24 一种gpu批量矩阵乘法加速器及其处理方法

Country Status (1)

Country Link
CN (1) CN114692079A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115567166A (zh) * 2022-11-10 2023-01-03 商飞软件有限公司 一种利用gpu进行总线数据并行计算译码的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115567166A (zh) * 2022-11-10 2023-01-03 商飞软件有限公司 一种利用gpu进行总线数据并行计算译码的方法
CN115567166B (zh) * 2022-11-10 2023-03-17 商飞软件有限公司 一种利用gpu进行总线数据并行计算译码的方法

Similar Documents

Publication Publication Date Title
Lu et al. SpWA: An efficient sparse winograd convolutional neural networks accelerator on FPGAs
CN106775594B (zh) 一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法
CN112465110B (zh) 一种卷积神经网络计算优化的硬件加速装置
CN107908536B (zh) Cpu-gpu异构环境中对gpu应用的性能评估方法及系统
CN112380003B (zh) 一种gpu处理器上的k-nn的高性能并行实现装置
CN112668708B (zh) 一种提高数据利用率的卷积运算装置
Rui et al. Efficient join algorithms for large database tables in a multi-GPU environment
CN109426484A (zh) 一种数据排序装置、方法及芯片
CN105468439A (zh) 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法
CN110413776A (zh) 一种基于cpu-gpu协同并行的文本主题模型lda高性能计算方法
CN111176831B (zh) 基于多线程共享内存通信的动态线程映射优化方法及装置
Chen et al. Improving GPGPU performance via cache locality aware thread block scheduling
CN111258535A (zh) 一种用于fpga实现的排序方法
CN114692079A (zh) 一种gpu批量矩阵乘法加速器及其处理方法
Man et al. An efficient parallel sorting compatible with the standard qsort
CN115168014A (zh) 一种作业调度方法及装置
CN115130672A (zh) 一种软硬件协同优化卷积神经网络计算的方法及装置
Guo et al. In-memory join algorithms on gpus for large-data
CN112732634A (zh) 面向边缘计算的arm-fpga协同硬件资源局部动态重构处理方法
Cheng et al. Towards Network-aware Query Execution Systems in Large Datacenters
Sharma et al. S-ARRAY: highly scalable parallel sorting algorithm
US20240169019A1 (en) PERFORMANCE IN SPARSE MATRIX VECTOR (SpMV) MULTIPLICATION USING ROW SIMILARITY
Zhong et al. Parallel multisets sorting using aperiodic multi-round distribution strategy on heterogeneous multi-core clusters
Zhong et al. Efficient and scalable parallel algorithm for sorting multisets on multi-core systems
CN111443947B (zh) 基于众核平台上面向二代测序数据的序列比对方法及系统

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