面向GPU的批量可变尺寸矩阵乘法自适应计算方法与流程
本技术涉及人工智能,特别是涉及一种面向gpu的批量可变尺寸矩阵乘法自适应计算方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术:
1、随着深度学习与高性能并行计算的飞速发展,gpu加速的批量矩阵乘法在图像处理、科学仿真、推荐系统等领域的应用日益广泛。批量矩阵乘法作为这些应用的核心运算,已从固定尺寸的规整计算扩展到可变尺寸的通用矩阵乘法,使得算法能够灵活处理不同大小的数据批次。然而,在实际应用中,面对一批尺寸各异的矩阵乘法实例,存在gpu计算单元利用率低下、各计算单元负载不均衡等问题,尤其在矩阵尺寸极端变化或边界不对齐的场景下,传统内核调度方法难以满足高效、高吞吐量的计算需求。
2、相关技术中,gpu内核通常采用固定的tile尺寸划分策略对所有实例统一处理,这种方式缺乏对不规则尺寸的自适应能力,一旦遇到矩阵维度无法被tile整除的边界情况,即会导致大量线程闲置、计算单元空转,致使gpu计算资源无法得到充分利用;同时,传统方法对批量实例的执行顺序不做优化,当不同计算量的实例混合执行时,易出现部分计算单元繁忙而其他单元等待的忙闲不均状况,致使批量矩阵乘法的整体并行效率与吞吐量受限。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种面向gpu的批量可变尺寸矩阵乘法自适应计算方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
2、第一方面,本技术提供了一种面向gpu的批量可变尺寸矩阵乘法自适应计算方法,包括:
3、接收批量可变尺寸矩阵乘法问题,获取批次中各矩阵计算实例的尺寸信息,对每个所述矩阵计算实例,基于尺寸信息从预设的多个tile划分方案中确定目标tile划分方案;
4、对所述批次中的矩阵计算实例的执行顺序进行排序,以改善gpu计算单元的负载均衡;
5、根据所述矩阵计算实例的尺寸信息和目标tile划分方案,评估gpu的工作组利用率,并在评估结果满足预设条件时,对至少部分矩阵计算实例的tile划分方案进行调整,以增加有效工作组数量;
6、按照调整后的执行顺序和各实例的目标tile划分方案,启动gpu内核函数对所述批次中的矩阵计算实例进行并行计算,并将计算结果回传至主机内存。
7、在其中一个实施例中,对每个所述矩阵计算实例,基于尺寸信息从预设的多个tile划分方案中确定目标tile划分方案,包括:
8、获取所述矩阵计算实例的尺寸,包括矩阵乘法的m、n、k维度值;
9、遍历预设的细粒度tile划分方案集合中的每一组(tm, tn, tk, workitems)参数组合,其中,tm与tn取值范围为{16, 32, 64},tk取值范围为{4, 8, 16},workitems取值范围为{128, 256};
10、针对每组参数组合,计算沿m维度的tile个数pm=ceil(m/tm)、沿n维度的tile个数pn=ceil(n/tn),并以pm×pn作为总调度工作组数量;
11、对位于m维度边界和n维度边界的tile,根据剩余尺寸与tm、tn的关系确定每个工作组内的有效工作项数量,将有效工作项占比超过预设比例阈值的工作组计入有效工作组数量;
12、计算该参数组合下的工作组利用率,所述工作组利用率为有效工作组数量与所述总调度工作组数量的比值;
13、选取满足工作组利用率大于第一阈值且有效工作组数量最大的参数组合作为目标tile划分方案;若存在多个组合同时满足,则选择其中workitems参数取值最小的组合,若仍存在多个组合,则选择其中tm与tn参数取值乘积最大的组合。
14、在其中一个实施例中,对所述批次中的矩阵计算实例的执行顺序进行排序,以改善gpu计算单元的负载均衡,包括:
15、获取每个矩阵计算实例的k维度值kᵢ,以及该实例对应的目标tile划分方案中的tmᵢ和tnᵢ;
16、以kᵢ值和tmᵢ×tnᵢ值为排序依据,对所述批次中的矩阵计算实例进行两轮排序,获得调整后的执行顺序;所述两轮排序使得计算负载量更大的实例优先执行,且使得tile尺寸乘积值较小的实例延后执行。
17、在其中一个实施例中,所述两轮排序包括:
18、第一轮排序,以各矩阵计算实例的kᵢ值为排序键进行降序排序,时间复杂度为o(blog b),其中b为批次中矩阵计算实例的数量;
19、第二轮排序,以各矩阵计算实例的tmᵢ×tnᵢ值为排序键,对经过第一轮排序得到的实例序列进行降序排序,且所述第二轮排序采用基数排序算法,时间复杂度为o(b)。
20、在其中一个实施例中,根据所述矩阵计算实例的尺寸信息和目标tile划分方案,评估gpu的工作组利用率,并在评估结果满足预设条件时,对至少部分矩阵计算实例的tile划分方案进行调整,以增加有效工作组数量,包括:
21、获取批次中各矩阵计算实例的尺寸,包括m维度值mᵢ和n维度值nᵢ,以及各实例已确定的所述目标tile划分方案中的tmᵢ和tnᵢ;
22、根据下式计算判断参数θ:
23、θ = c·μ·n_cu / σᵢ ( (mᵢ × nᵢ) / (tmᵢ × tnᵢ) )
24、其中,c为与单工作组包含的workitem数量及计算单元simd结构相关的常数,μ为大于1的硬件相关并行性因子,n_cu为目标gpu中计算单元的总数,σᵢ表示对所述批次中所有矩阵计算实例求和;
25、将θ与1进行比较:当θ ≤ 1时,判定当前各实例的总调度工作组数量已能够充分占用gpu计算单元,工作组利用率满足预设条件,保持各实例的所述目标tile划分方案不变;当θ > 1时,判定工作组利用率不足,增加有效工作组数量,并对至少部分实例的tile划分方案进行调整。
26、在其中一个实施例中,对至少部分实例的tile划分方案进行调整,包括:
27、按照经所述执行顺序排序后得到的实例序列从后向前遍历,优先选取tile尺寸乘积tmᵢ×tnᵢ较小且k维度值kᵢ较小的实例,将其当前的所述目标tile划分方案替换为预设tile划分方案集合中tile尺寸更小的一组参数组合,每次替换后重新计算所述判断参数θ,直至θ ≤ 1为止,完成对极端数据输入的适应性调整。
28、第二方面,本技术还提供了一种面向gpu的批量可变尺寸矩阵乘法自适应计算装置,包括:
29、目标划分模块,用于接收批量可变尺寸矩阵乘法问题,获取批次中各矩阵计算实例的尺寸信息,对每个所述矩阵计算实例,基于尺寸信息从预设的多个tile划分方案中确定目标tile划分方案;
30、执行排序模块,用于对所述批次中的矩阵计算实例的执行顺序进行排序,以改善gpu计算单元的负载均衡;
31、方案调整模块,用于根据所述矩阵计算实例的尺寸信息和目标tile划分方案,评估gpu的工作组利用率,并在评估结果满足预设条件时,对至少部分矩阵计算实例的tile划分方案进行调整,以增加有效工作组数量;
32、实例计算模块,用于按照调整后的执行顺序和各实例的目标tile划分方案,启动gpu内核函数对所述批次中的矩阵计算实例进行并行计算,并将计算结果回传至主机内存。
33、第三方面,本技术还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
34、接收批量可变尺寸矩阵乘法问题,获取批次中各矩阵计算实例的尺寸信息,对每个所述矩阵计算实例,基于尺寸信息从预设的多个tile划分方案中确定目标tile划分方案;
35、对所述批次中的矩阵计算实例的执行顺序进行排序,以改善gpu计算单元的负载均衡;
36、根据所述矩阵计算实例的尺寸信息和目标tile划分方案,评估gpu的工作组利用率,并在评估结果满足预设条件时,对至少部分矩阵计算实例的tile划分方案进行调整,以增加有效工作组数量;
37、按照调整后的执行顺序和各实例的目标tile划分方案,启动gpu内核函数对所述批次中的矩阵计算实例进行并行计算,并将计算结果回传至主机内存。
38、第四方面,本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
39、接收批量可变尺寸矩阵乘法问题,获取批次中各矩阵计算实例的尺寸信息,对每个所述矩阵计算实例,基于尺寸信息从预设的多个tile划分方案中确定目标tile划分方案;
40、对所述批次中的矩阵计算实例的执行顺序进行排序,以改善gpu计算单元的负载均衡;
41、根据所述矩阵计算实例的尺寸信息和目标tile划分方案,评估gpu的工作组利用率,并在评估结果满足预设条件时,对至少部分矩阵计算实例的tile划分方案进行调整,以增加有效工作组数量;
42、按照调整后的执行顺序和各实例的目标tile划分方案,启动gpu内核函数对所述批次中的矩阵计算实例进行并行计算,并将计算结果回传至主机内存。
43、第五方面,本技术还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
44、接收批量可变尺寸矩阵乘法问题,获取批次中各矩阵计算实例的尺寸信息,对每个所述矩阵计算实例,基于尺寸信息从预设的多个tile划分方案中确定目标tile划分方案;
45、对所述批次中的矩阵计算实例的执行顺序进行排序,以改善gpu计算单元的负载均衡;
46、根据所述矩阵计算实例的尺寸信息和目标tile划分方案,评估gpu的工作组利用率,并在评估结果满足预设条件时,对至少部分矩阵计算实例的tile划分方案进行调整,以增加有效工作组数量;
47、按照调整后的执行顺序和各实例的目标tile划分方案,启动gpu内核函数对所述批次中的矩阵计算实例进行并行计算,并将计算结果回传至主机内存。
48、上述面向gpu的批量可变尺寸矩阵乘法自适应计算方法、装置、计算机设备、存储介质和计算机程序产品,通过遍历细粒度tile划分方案,结合有效工作项占比和工作组利用率阈值筛选目标方案,并对利用率不足的情况动态调整tile划分,确保尽可能多的工作组成为有效工作组,解决了不规则尺寸导致大量线程闲置、计算单元空转的问题,使gpu的计算资源得到更充分地利用。随后,通过各矩阵实例的计算量和tile粒度为排序依据,进行k值降序优先、tm×tn降序后置的两轮排序,使得计算量大的实例优先执行以提前释放资源,tile乘积小的实例延后执行以平滑尾部负载,从而改善了不同尺寸任务混合时各计算单元忙闲不均的状况,提升了整体并行效率与吞吐量。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com