System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种执行虚拟指令集的方法及系统技术方案_技高网

一种执行虚拟指令集的方法及系统技术方案

技术编号:43689714 阅读:5 留言:0更新日期:2024-12-18 21:08
本发明专利技术公开一种执行虚拟指令集的方法,以构建算子库以实现深度学习加速器,解决跨代兼容问题。该方法提供虚拟指令集执行单元、即虚拟指令集,然后由编译器将虚拟指令集编译成向量指令和/或专用指令,最后由虚拟指令集执行单元执行所述向量指令和/或专用指令。其中虚拟指令集执行单元用于执行虚拟指令集,其包括通用向量计算单元及专用指令集计算单元,通用向量计算单元用于执行向量指令集,专用指令集计算单元用于执行专用指令集。虚拟指令集则包括第一C++模板及第二C++模板,第一C++模板定义第一C++函数,第一C++函数能够被编译器编译成向量指令集中的向量指令,第二C++模板定义第二C++函数,第二C++函数能够被编译器编译成专用指令集中的专用指令。

【技术实现步骤摘要】

本专利技术涉及深度学习,特别涉及一种执行虚拟指令集的方法及系统


技术介绍

1、深度学习是人工智能领域的核心技术之一,但是深度学习模型的复杂性及计算量较大,传统的计算设备往往难以满足其高效运行的需求,因此,多采用深度学习加速器对深度学习计算进行加速。深度学习计算器通过优化深度学习模型中的关键计算过程,提供高效的计算资源。具体而言,深度学习加速器可利用并行计算特性,同时处理多个计算任务,此外,还针对深度学习计算需求进行了定制化设计,提供特定的指令集以及硬件优化,以加速矩阵运算、卷积操作等常用的深度学习计算操作。

2、现有的深度学习加速器主要包括三大类:深度学习专用加速器as i c、基于张量指令的可编程深度学习加速器、以及基于向量指令的可编程深度学习加速器。其中深度学习专用加速器as i c根据深度学习定制设计硬件指令,其指令的操作粒度比较粗,比如conv2d是一条指令,l ayernorm是一条指令,从数据粒度来说,支持张量的操作语义,属于粗粒度的指令。深度学习专用加速器as i c指令集的可编程性和通用性交差,当算法出现变化时,硬件无法支持。基于张量指令的可编程深度学习加速器根据深度学习定制设计硬件指令,其细化了部分指令的操作粒度,例如提供gemm加速,而不是cov2d,提供add sub di v mu l等基本操作,而不是l ayernorm,s i gmod等粗粒度算子。细化的i sa操作相比传统cpu中的simd指令,可以支持多维度的张量语义,从数据粒度上说,比传统一维simd指令,粒度更粗。张量语义的i sa通常难以做到完全的图灵完备,可编程但编程难度较大,指令存在大量张量语义的参数,用户难以掌握,可编程性差,通过ai编译器自动生成这些张量指令的难度较高,商业落地这样的ai编译器也耗费大量的人力和时间资源。基于向量指令的可编程深度学习加速器则根据深度学习定制设计矩阵加速指令,使用dsp或者cpu核的simd指令来支持深度学习、机器学习。当前simd的dlen一般不会超过2048b it或者1024b it,是一种细粒度的数据并行,操作的角度来说,也是比较细粒度的,不是类似onnx这种粗粒度的算子操作。但是向量指令集在数据粒度和操作粒度的维度,又失去了ml、ai的领域语义,软件和编译器要能够高效的利用simd i sa存在较大挑战。此外,深度学习专用加速器as i c指令集及张量指令集对于在张量指令上不可编程或者性能较差的程序,需要依赖soc中其他可编程的核来支持,或者依赖host cpu来支持,对于模型编译来说,需要支持异构的模型部署,异构核之间的通信开销会影响模型整体的性能。同时,现有的指令集软件和硬件深度耦合,因此硬件演进后,会对软件造成较大影响。


技术实现思路

1、针对现有技术中的部分或全部问题,本专利技术第一方面提供一种执行虚拟指令集的方法,包括:

2、提供虚拟指令集执行单元,所述虚拟指令集执行单元用于执行虚拟指令集,且所述虚拟指令集执行单元包括:

3、通用向量计算单元,其用于执行向量指令集;以及

4、专用指令集计算单元,其用于执行专用指令集;

5、提供虚拟指令集,其中所述虚拟指令集包括:

6、第一c++模板,其中第一c++模板定义第一c++函数,所述第一c++函数能够被编译器编译成向量指令集中的向量指令;以及

7、第二c++模板,其中在所述c++模板定义第二c++函数,所述第二c++函数能够被编译器编译成专用指令集中的专用指令;

8、由编译器将虚拟指令集编译成向量指令和/或专用指令;以及由虚拟指令集执行单元执行所述向量指令和/或专用指令。

9、进一步地,所述专用指令集包括下列各项中的一个或多个:

10、张量指令集、以及深度学习专用加速器as i c指令集。

11、进一步地,提供虚拟指令集包括:

12、使用下列各项中的一个或多个来定义运算符:

13、onnx、stab l ehlo、以及pr imtorch。

14、进一步地,由编译器将虚拟指令集编译成向量指令和/或专用指令包括:

15、根据硬件的sram规格、算子开发者或者ai编译器对数据的切分、以及算子融合的形态来确定张量的数据粒度。

16、进一步地,所述专用指令集计算单元包括ai处理器中的加速单元,所述加速单元被配置为执行各项中的一个或多个:

17、数据搬移、矩阵运算、以及卷积运算。

18、进一步地,由编译器将虚拟指令集编译成向量指令和/或专用指令还包括:

19、在编译器中生成基于虚拟指令集的算子或模型;以及

20、由编译器基于算子或模型的指令粒度来进行指令调度以优化所述算子或模型的性能。

21、进一步地,所述方法还包括:

22、通过替换或修改第一c++模板和/或第二c++模板来适应不同的虚拟指令集执行单元,所述虚拟指令集执行单元包括arm neon、以及dsp simd,例如t i、ceva等商业dspip。

23、本专利技术第二方面提供一种执行虚拟指令集的系统,包括:

24、虚拟指令集执行单元,其用于执行虚拟指令集,所述虚拟指令集执行单元包括:

25、通用向量计算单元,其用于执行向量指令集;以及

26、专用指令集计算单元,其用于执行专用指令集;

27、虚拟指令集,其包括:

28、第一c++模板,其中第一c++模板定义第一c++函数,所述第一c++函数能够被编译器编译成向量指令集中的向量指令;以及

29、第二c++模板,其中在所述c++模板定义第二c++函数,所述第二c++函数能够被编译器编译成专用指令集中的专用指令;以及

30、编译器,其被配置为将虚拟指令集编译成向量指令和/或专用指令。

31、本专利技术提供的一种执行虚拟指令集的方法及系统,通过提供和执行虚拟指令集实现a i加速器等深度学习任务。具体而言,是以通用向量处理器硬件形态的向量指令集为基础,构建领域专用软件形态的虚拟指令集,保证了硬件的通用性和可编程性,同时,虚拟指令集通过接口的设计对外体现专用,保证了效率。通过固定虚拟指令集合,上层ai编译器或者算子库可以构建虚拟指令集之上,进而解耦软件和硬件,因此硬件演进不会对软件造成较大影响,软件也可以对虚拟指令集进行扩展,以满足对更多专用场景的加速支持。此外,通过对粗粒度的虚拟指令进行编译时刻的编排和运行时的动态调度,可以优化模型的执行效率。编译时刻的编排由a i编译器或者编写算子库完成。动态调度的支持需要硬件支持对虚拟指令的管理和调度,调度单位是一个通用向量指令集合所构成的函数,这种函数就是虚拟指令。动态调度的支持,可以进一步降低用户的编程负担,提升可编程性。

本文档来自技高网...

【技术保护点】

1.一种执行虚拟指令集的方法,其特征在于,包括步骤:

2.如权利要求1所述的方法,其特征在于,所述专用指令集包括下列各项中的一个或多个:

3.如权利要求1所述的方法,其特征在于,提供虚拟指令集包括:

4.如权利要求1所述的方法,其特征在于,由编译器将虚拟指令集编译成向量指令和/或专用指令包括步骤:

5.如权利要求1所述的方法,其特征在于,所述专用指令集计算单元包括AI处理器中的加速单元,所述加速单元被配置为执行各项中的一个或多个:

6.如权利要求4所述的方法,其特征在于,由编译器将虚拟指令集编译成向量指令和/或专用指令还包括步骤:

7.如权利要求1所述的方法,其特征在于,还包括步骤:

8.一种执行虚拟指令集的系统,其特征在于,包括:

【技术特征摘要】

1.一种执行虚拟指令集的方法,其特征在于,包括步骤:

2.如权利要求1所述的方法,其特征在于,所述专用指令集包括下列各项中的一个或多个:

3.如权利要求1所述的方法,其特征在于,提供虚拟指令集包括:

4.如权利要求1所述的方法,其特征在于,由编译器将虚拟指令集编译成向量指令和/或专用指令包括步骤:

5.如权利要求...

【专利技术属性】
技术研发人员:淡孝强王成科管健健
申请(专利权)人:奕行智能科技广州有限公司
类型:发明
国别省市:

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

1