一种矩阵乘分片配置选择方法及系统技术方案

技术编号:32827938 阅读:18 留言:0更新日期:2022-03-26 20:33
本发明专利技术涉及一种矩阵乘分片配置选择方法及系统,首先,根据硬件特性罗列出线程块所有可能的分片配置方案;然后,将各分片配置方案中的线程块分成M方向和N方向的多个线程,并根据数据复用性能对各分片配置方案进行初步筛选;接着,从保留方案中选择出能够充分利用硬件计算资源的分片配置方案;然后,进一步选择出具有最大计算访存比的分片配置方案;最后,找出具有最小核函数发射次数的分片配置方案作为最佳分片配置方案。相比于现有技术,本发明专利技术根据芯片的硬件资源使用情况和输入矩阵的尺寸决定分片方案,平台可移植性强;且能够实时动态的选择分片方案,对调用矩阵乘算法的上层用户更友好、便捷。便捷。便捷。

【技术实现步骤摘要】
一种矩阵乘分片配置选择方法及系统


[0001]本专利技术属于高性能计算
,具体涉及一种矩阵乘分片配置选择方法及系统。

技术介绍

[0002]矩阵乘法运算应用非常广泛,如在深度学习、科学计算、图像处理中扮演重要角色。矩阵乘法的性能受计算规模、计算用例的尺寸、硬件计算资源和数据复用等诸多因素影响,因此也有许多的参数配置方案。
[0003]现有的矩阵乘分片解决方案有些在方案设计的时候使用了经验值,但由于软硬件平台的变化(如编译器升级、更换新一代芯片),该方法会出现明显的失效或者分片不准确的情况。此外,对于卷积推理和训练中的变体矩阵乘,由于使用的共享内存和寄存器等硬件资源明显不同,经验阈值也会明显不同,因此这样的方案不便于推广。还有些矩阵乘分片方案是通过性能测试将每种分片方案的时间测试出来,再由人工选择最优的配置方案,然而实际应用中,矩阵乘的尺寸会不断变化,通过性能测试人工获得最佳配置的方法严重浪费了时间和人力。

技术实现思路

[0004]本专利技术针对现有技术中的不足,提供一种矩阵乘分片配置选择方法及系统,采用以下技术方案:
[0005]一种矩阵乘分片配置选择方法,包括以下步骤:
[0006]步骤1:根据硬件特性,罗列出线程块所有可能的分片配置方案;
[0007]步骤2:将各分片配置方案中的线程块分成M方向和N方向的多个线程,并根据数据复用性能对各分片配置方案进行初步筛选;
[0008]步骤3:从初步筛选保留下来的分片配置方案中,选择出能够充分利用硬件计算资源的分片配置方案并保留;
[0009]步骤4:计算步骤3中保留的各分片配置方案的计算访存比,选择出具有最大计算访存比的分片配置方案并保留;
[0010]步骤5:计算步骤4中保留的各分片配置方案的核函数发射次数,找出具有最小核函数发射次数的分片配置方案作为最佳分片配置方案。
[0011]进一步地,所述步骤2中,若采用通用乘加指令做矩阵乘运算,则M方向和N方向的线程个数满足以下条件:
[0012]16≤(block_m_threads,block_n_threads)≤max(block_m_threads)/16;
[0013]若采用矩阵乘硬件加速单元做矩阵乘运算,则M方向和N方向的线程个数满足以下条件:
[0014][0015]其中,block_m_threads和block_n_threads分别表示M方向的线程个数和N方向的线程个数,TCUmin shapesize表示矩阵乘加速单元TCU支持的M方向和N方向的最小线程个数。
[0016]进一步地,所述步骤2中,根据数据复用性能对各分片配置方案进行初步筛选的方法为:
[0017]通过寄存器使用量将活跃线程数量少于设定阈值的分片配置方案排除;
[0018]或先罗列出分片配置方案的数据复用方案,然后通过多种尺寸的矩阵乘测试用例进行性能测试,排除在所有测试中性能表现低于设定阈值的数据复用方案。
[0019]进一步地,所述步骤3具体包括以下步骤:
[0020]S1、分别获取各分片配置方案将硬件计算资源占满所需的最少线程块数min_theory_block_num;
[0021]S2、对于m*k的左矩阵与k*n的右矩阵间的矩阵乘,输入矩阵乘的尺寸(m,k,n)并计算各分片配置方案下的线程块数Thread_Blocks,
[0022][0023]其中,m_tiles和n_tiles分别表示M方向和N方向的数据复用次数;
[0024]S3、若Thread_Blocks不小于min_theory_block_num,则保留该分片配置方案;若所有分片配置方案的Thread_Blocks均小于min_theory_block_num,则说明输入矩阵乘的尺寸太小,无法充分利用起计算资源,将所有分片配置方案中的数据复用次数设置为1后保留。
[0025]进一步地,步骤4中所述计算访存比TLP的计算公式为:
[0026][0027]其中,m*k的左矩阵的分片形状是(block_m_threads*m_tiles,block_k_threads),k*n的右矩阵的分片形状是(block_k_threads,block_n_threads*m_tiles),block_k_threads表示K方向的分片长度。
[0028]进一步地,步骤5中所述核函数发射次数Launch_kernel_times的计算公式为:
[0029][0030]其中,block_per_cu表示每个计算单元上可以同时并行存在的线程块数,且
[0031][0032]max available register num of a thread表示,由于芯片硬件限制,每个线程可以使用的最大的寄存器数;num of registers actuaily used表示每个线程实际使用的寄存器数,maxshared memory sizeof a SM表示每个流处理器簇可以使用的最大的共享内存的大小,shared memory sizeused by per thread block表示每个线程块实际使用的共享内存的大小。
[0033]一种矩阵乘分片配置选择系统,包括输入模块、编译模块和所述矩阵乘分片配置选择方法的实现模块,输入模块用于输入矩阵乘的尺寸,编译模块用于将各分片配置方案
的配置参数作为矩阵乘kernel函数的模板参数并编译生成所有分片配置方案的kernel函数;运行时,输入矩阵乘的尺寸,通过矩阵乘分片配置选择方法的实现模块选择出最佳的分片配置方案及对应的kernel函数,以执行矩阵乘运算。
[0034]本专利技术的有益效果是:本专利技术根据芯片的硬件资源使用情况和输入矩阵的尺寸决定分片方案,不采用经验值,分片准确且平台可移植性强;相比于通过性能测试在人工选择的方式,本专利技术能够实时动态的选择分片方案,对调用矩阵乘算法的上层用户更友好、便捷。
附图说明
[0035]图1为常规分块矩阵乘示意图;
[0036]图2为本专利技术提出的分块矩阵乘示意图;
[0037]图3为本专利技术矩阵乘分片配置选择方法的流程示意图。
具体实施方式
[0038]现在结合附图对本专利技术作进一步详细的说明。
[0039]如图1所示,常规分块矩阵乘中,每个线程块计算一个TILE_WIDTH
×
TILE_WIDTH的子块Pb,每个线程处理子块中的一个元素。本专利技术提出的分块矩阵乘如图2所示,每个线程块计算m
×
n个TILE_WIDTH
×
TILE_WIDTH的子块Pb,这样可以更进一步地进行数据复用、减少访存次数,从而提高矩阵乘的运算性能。
[0040]本专利技术提出的矩阵乘分片方法的主要流程如图3所示:
[0041]首先,根据硬件特性罗列出线程块的所有分片配置方案,这些配置方案有较少的寄存器和共享内存使用量,可以确本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种矩阵乘分片配置选择方法,其特征在于,包括以下步骤:步骤1:根据硬件特性,罗列出线程块所有可能的分片配置方案;步骤2:将各分片配置方案中的线程块分成M方向和N方向的多个线程,并根据数据复用性能对各分片配置方案进行初步筛选;步骤3:从初步筛选保留下来的分片配置方案中,选择出能够充分利用硬件计算资源的分片配置方案并保留;步骤4:计算步骤3中保留的各分片配置方案的计算访存比,选择出具有最大计算访存比的分片配置方案并保留;步骤5:计算步骤4中保留的各分片配置方案的核函数发射次数,找出具有最小核函数发射次数的分片配置方案作为最佳分片配置方案。2.如权利要求1所述的一种矩阵乘分片配置选择方法,其特征在于,所述步骤2中,若采用通用乘加指令做矩阵乘运算,则M方向和N方向的线程个数满足以下条件:16≤(block_m_threads,block_n_threads)≤max(block_m_threads)/16;若采用矩阵乘硬件加速单元做矩阵乘运算,则M方向和N方向的线程个数满足以下条件:其中,block_m_threads和block_n_threads分别表示M方向的线程个数和N方向的线程个数,TCUmin shape size表示矩阵乘加速单元TCU支持的M方向和N方向的最小线程个数。3.如权利要求2所述的一种矩阵乘分片配置选择方法,其特征在于,所述步骤2中,根据数据复用性能对各分片配置方案进行初步筛选的方法为:通过寄存器使用量将活跃线程数量少于设定阈值的分片配置方案排除;或先罗列出分片配置方案的数据复用方案,然后通过多种尺寸的矩阵乘测试用例进行性能测试,排除在所有测试中性能表现低于设定阈值的数据复用方案。4.如权利要求2所述的一种矩阵乘分片配置选择方法,其特征在于,所述步骤3具体包括以下步骤:S1、分别获取各分片配置方案将硬件计算资源占满所需的最少线程块数min_theory_block_num;S2、对于m*k的左矩阵与k*n的右矩阵间的矩阵乘,输入矩阵乘的尺寸(m,k,n)并计算各分片配置方案下的线程块数Thread_Blocks,其中,m_tiles和n_tiles分别表示M方向和N方...

【专利技术属性】
技术研发人员:方宝辉石加圣单天逸
申请(专利权)人:上海天数智芯半导体有限公司
类型:发明
国别省市:

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

1