一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种DNN算子库动态数据分块方法与流程

2022-03-22 20:20:03 来源:中国专利 TAG:

一种dnn算子库动态数据分块方法
技术领域
1.本发明涉及一种dnn算子库动态数据分块方法,属于深度学习技术领域。


背景技术:

2.近年来,人工智能的迅速发展将深刻改变世界发展模式和人类生活方式,为抢抓人工智能发展重大战略机遇,各国均在构筑先发优势,当前阶段人工智能发展的主流技术路线是以模型学习驱动的数据智能。dnn算子库是针对人工智能深度学习的基础,每一种算子都有多种实现算法,不同的算法在不同的用例参数下各有优势,各架构计算能力强大,但带宽资源还无法满足计算的需求,因此带宽资源显得异常珍贵。如何将众多的算法协调开来,保证用户使用算子时,根据用户参数实时确保任务分块在系统当前状态下最优并能够调用最佳的算法,是充分利用系统带宽资源的关键,对提升算子的性能具有重要的意义。
3.目前,dnn算子库每种算子的优化算法多种多样,用户在使用时,无法实时动态调整任务分块大小,而且不能够实时选取最优的任务分块,只能使用固定大小的任务分块,模糊调用可能最优的算法,导致用户体验差,不够友好,而且不能充分发挥算子的最佳性能。
4.dnn算子库是针对人工智能的底层算力支撑库,对每一种算子都有多种实现算法,且每种算法有多种数据分块选择。用户参数是实时给出的,如何通过用户参数,实现对算子库里众核算法的最合理调用,实现算子效力最大化,是个亟需解决的问题。


技术实现要素:

5.本发明的目的是提供一种dnn算子库动态数据分块方法,其保证了算子性能的最佳发挥,不需要用户担忧众多算法如何抉择的问题,具有良好的用户体验。
6.为达到上述目的,本发明采用的技术方案是:提供一种dnn算子库动态数据分块方法,包括以下步骤:s1、用户调用所需算子,并传入一组由多个整数组成的参数,作为s2的输入;s2、根据s1中获取的参数大小和算法的参数适用范围,将一组参数划分为多组参数,并为各组参数选择不同的算法进行处理,根据算法特点将参数划分为适合各个算法处理的大小,并将参数分配给不同的算法;s3、从s2获得参数,根据算法特点,为参数中各个维度[n,h,w,c]的数据设置优先级,优先级按照在内存中连续存储的方式来决定,优先级关系为:c》w》h》n,增大某个维度的值越有利于提高效率,其优先级越高;s4、计算系统资源剩余量,初始化各个维度数据分块大小,在保证内存充裕的前提下,将[n,h,w,c]按照参数中各个数据的优先级从高到低的顺序,依次增加其分块的大小;s5、将动态选择好的数据分块传递给对应的算法,调用算法,得出结果。
[0007]
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:本发明一种dnn算子库动态数据分块方法,能够根据参数和系统当前内存使用情况,对算子算法进行择优选择,并调整相应的数据分块大小,保证了系统带宽资源的最佳利
用,为计算力强大的众核提供充足的数据,提高了带宽资源的利用率,保证了算子性能的最佳发挥,不需要用户担忧众多算法如何抉择的问题,具有良好的用户体验。
附图说明
[0008]
附图1为动态数据分块示意图。
具体实施方式
[0009]
实施例:本发明提供一种dnn算子库动态数据分块方法,具体包括以下步骤:s1、用户调用所需算子,并传入一组由多个整数组成的参数,作为s2的输入;s2、依据算法自身的特点,不同的算法适合不同的参数范围,因此根据s1中获取的参数大小和算法的参数适用范围,将一组参数划分为多组参数,并为各组参数选择不同的算法进行处理,每种算子的有多种实现算法,整体上分为适合处理参数比较大的方法和参数比较小的方法,根据算法特点将参数划分为适合各个算法处理的大小,并将参数分配给不同的算法,保证了算法的并行性;s3、从s2获得参数,根据算法特点,为参数中各个维度[n,h,w,c]的数据设置优先级,优先级按照在内存中连续存储的方式来决定,优先级关系为:c》w》h》n,增大某个维度的值越有利于提高效率,其优先级越高;因为不同的算子实现了多种算法,每种算法在不同的参数下都具有性能优于其他算法的特点,此步骤保证,能够选择该参数下最优的算法;s4、计算系统资源剩余量,初始化各个维度数据分块大小,在保证内存充裕的前提下,将[n,h,w,c]按照参数中各个数据的优先级从高到低的顺序,依次增加其分块的大小;该步骤确保分块后能够充分利用系统资源,发挥算法的最佳性能;s5、将动态选择好的数据分块传递给对应的算法,调用算法,得出结果。
[0010]
对上述实施例的进一步解释如下:本发明在算子众多实现算法之前,为用户提供一层良好的封装,用户只需指定所需算子并赋予参数,就能够根据用户的参数,选择最佳的算法,并动态选择最优的数据分块,保证实时最大化利用系统的带宽资源,充分发挥算子的最佳性能。
[0011]
针对dnn算子库不同算子算法实现众多的情况,提出了一种动态数据分块方法,将用户参数和算子库众多算法有机结合,能够根据用户参数实时调整分块大小,而且能将参数进行任务划分,将不同的任务根据任务规模及参数特点分配给相应的最佳算法,同一算子的不同算法可以并行执行,相比于将任务分配给单一的算法,本发明提高了算法的并行性,更符合异构众核处理器的架构特点;同时,针对不同的任务参数,本发明能够根据当前系统内存使用状况,最大限度地利用内存资源,实时调整任务分块大小,保证最大化利用系统的带宽资源,为算法的性能提供了可靠保障。
[0012]
1、用户调用所需算子,并传入相关参数。
[0013]
2、根据参数和算法特点进行任务分割,将任务划分为适合算法处理的大小。因为不同的算法适合处理不同的参数,因此,本发明根据参数大小和算法,将一组参数划分为多组参数,然后将各组参数选择不同的算法进行处理,这样保证了算法的并行性。
[0014]
3、根据任务大小,选择最佳的算法。不同的算法适用于不同的参数,因此,需要根据参数大小选择最佳的算法进行计算处理。
[0015]
4、不同的算法具有不同的特点,依据算法特点,根据当前内存使用情况,对数据进行动态分割,保证数据块分块大小最适合当前的系统状态,能够充分利用系统的带宽资源。
[0016]
5、将动态选择好的数据分块传递给对应的算法,调用算法,得出结果。
[0017]
采用上述一种dnn算子库动态数据分块方法时,其能够根据用户参数和系统当前内存使用情况,对算子算法进行择优选择,并调整相应的数据分块大小,保证了系统带宽资源的最佳利用,为计算力强大的众核提供充足的数据,提高了带宽资源的利用率,保证了算子性能的最佳发挥,不需要用户担忧众多算法如何抉择的问题,具有良好的用户体验。
[0018]
为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:算子:实现了某一特定功能的函数。
[0019]
dnn:深度神经网络,是深度学习的基础。
[0020]
dnn算子库:一种实现了dnn常见算子的数学库。
[0021]
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献