CN116382782A - 向量运算方法、向量运算器、电子设备和存储介质 - Google Patents

向量运算方法、向量运算器、电子设备和存储介质 Download PDF

Info

Publication number
CN116382782A
CN116382782A CN202111562099.0A CN202111562099A CN116382782A CN 116382782 A CN116382782 A CN 116382782A CN 202111562099 A CN202111562099 A CN 202111562099A CN 116382782 A CN116382782 A CN 116382782A
Authority
CN
China
Prior art keywords
data
basic
initial
vector
instruction
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
CN202111562099.0A
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.)
Sanechips Technology Co Ltd
Original Assignee
Sanechips Technology Co Ltd
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 Sanechips Technology Co Ltd filed Critical Sanechips Technology Co Ltd
Priority to CN202111562099.0A priority Critical patent/CN116382782A/zh
Priority to PCT/CN2022/136440 priority patent/WO2023116400A1/zh
Publication of CN116382782A publication Critical patent/CN116382782A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

本公开提供一种向量运算方法,包括:对待进行的目标向量运算进行拆分,确定多个满足预定执行顺序的基础运算;按照所述预定执行顺序依次生成实现多个所述基础运算的多个基础运算指令;按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算,其中,在相邻两次基础运算中,后一次基础运算的待运算数据为前一次基础运算的运算结果。本公开还提供一种向量运算器、一种电子设备和一种计算机可读存储介质。

Description

向量运算方法、向量运算器、电子设备和存储介质
技术领域
本公开涉及计算机技术领域,具体地,涉及一种向量运算方法、一种向量运算器、一种电子设备和一种计算机可读存储介质。
背景技术
神经网络的网络层(例如,池化层)在进行运算时,通常需要用到神经网络加速器。在相关技术中,神经网络加速器对神经网络运算的加速采用直接映射的方式,即,涉及具有特定功能的抓好用处理电路对网络层运算进行硬件加速。
但是,通过上述方式对网络层运算进行硬件加速的灵活性不高。
发明内容
本公开实施例提供一种向量运算方法、一种向量运算器、一种电子设备和一种计算机可读存储介质。
作为本公开的一个方面,提供一种向量运算方法,包括:
对待进行的目标向量运算进行拆分,确定多个满足预定执行顺序的基础运算;
按照所述预定执行顺序依次生成实现多个所述基础运算的多个基础运算指令;
按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算,其中,在相邻两次基础运算中,后一次基础运算的待运算数据为前一次基础运算的运算结果。
可选地,在所述按照所述预定执行顺序依次生成与多个所述基础运算对应的多个基础运算指令的步骤中,每生成一个所述基础运算指令,将生成的所述基础运算指令存储在第一寄存器中;
在所述按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算的步骤中,每次执行基础运算指令都包括:
读取所述第一寄存器中的所述基础运算指令;
根据读取到的所述基础运算指令对待运算的数据进行运算。
可选地,生成第i个基础运算指令的步骤与执行第j次基础运算指令的步骤同步进行,其中,i,j均为序号,i,j均为正整数,且i>j;和/或,
针对不同的初始数据,并行地执行所述按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算的步骤。
可选地,在所述对待进行的目标向量运算进行拆分,获得多个满足预定执行顺序的基础运算之前,所述向量运算方法还包括:
将所述初始数据写入缓存中,作为第一个基础运算指令的待运算数据;
在执行最后一次基础运算之前,每次执行基础运算指令都还包括:
将运算结果存储在缓存中,以作为下一次基础运算中的待运算数据;
在所述根据读取到的所述基础运算指令对待运算的数据进行运算之前,每次执行基础运算指令都还包括:
从所述缓存中读取待运算的数据。
可选地,所述按照所述预定执行顺序依次生成与多个所述基础运算对应的多个基础运算指令,包括:
根据所述基础运算依次生成多个初始运算指令,其中,每生成一个初始运算指令则将生成的初始运算指令写入第二寄存器中;
从所述第二寄存器中依次读取各个所述初始运算指令;
分别对各个所述初始运算指令进行编译,获得相应的各个基础运算指令。
可选地,所述第一寄存器和所述第二寄存器均为流水线寄存器,通过所述第一寄存器与所述第二寄存器握手,实现所述从所述第二寄存器中读取所述初始运算指令的步骤。
可选地,所述初始数据满足预定格式,在按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算之前,所述向量运算方法还包括:
获取输入数据;
将所述输入数据转换为满足所述预定格式的所述初始数据。
可选地,满足所述预定格式为12bit的数据;
当所述输入数据的数据类型为FP16时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括指数位、1bit符号位和11bit精度位的所述初始数据;
当所述输入数据的数据类型为INT8时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括5bit符号位和7bit原码精度位的所述初始数据;
当所述输入数据的数据类型为INT12时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括1bit符号位和11bit精度为的所述初始数据。
可选地,所述目标向量运算包括ReLU激活运算,所述初始数据为矩阵数据,
在所述对待进行的目标向量运算进行拆分,获得多个满足预定执行顺序的基础运算的步骤中,满足预定执行顺序的基础运算分别为:
所述初始数据与参照矩阵的比较取最大值的比较大小基础运算,所述参照矩阵的特征图与所述初始数据的元素的特征图相同,且所述参照矩阵的各个元素均为0;以及
将待运算的数据中各个元素点乘以系数K的乘法基础运算。
作为本公开的第二个方面,提供一种向量运算器,包括:
拆分模块,所述拆分模块用于对待进行的目标向量运算进行拆分,确定多个满足预定执行顺序的基础运算;
指令生成模块,所述指令生成模块用于按照所述预定执行顺序依次生成与多个所述基础运算对应的多个基础运算指令;
至少一个运算模块,所述运算模块用于按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算,其中,在相邻两次基础运算中,后一次基础运算的待运算数据为前一次基础运算的运算结果。
可选地,所述指令生成模块包括指令生成单元和第一寄存器,所述指令生成单元用于生成所述基础运算指令,且所述指令生成单元每生成一个所述基础运算指令,则将生成的所述基础运算指令写入所述第一寄存器;
所述运算模块用于从所述第一寄存器中读取基础运算指令,并根据读取到的基础运算指令对待运算的数据进行运算。
可选地,所述指令生成单元生成第i个基础运算指令与所述运算模块执行第j次基础运算指令同步,其中,i,j均为序号,i,j均为正整数,且i>j;和/或
所述向量运算器包括多个所述运算模块,所述多个运算模块能够并行作业。
可选地,所述向量运算器还包括缓存,所述缓存用于存储初始数据,以作为第一个基础运算指令的待运算数据;
所述运算模块还用于在执行最后一次基础运算之前,将每次执行基础运算指令获得的运算结果存储在所述缓存中,以作为下一次基础运算中的待运算数据;
所述运算模块还用于在根据读取到的所述基础运算指令对待运算的数据进行运算之前,从所述缓存中读取所述待运算的数据。
可选地,所述向量计算器还包括初始运算指令生成模块,所述指令生成单元还包括指令获取子单元、第二寄存器和译码子单元,
所述初始运算指令生成模块用于根据所述基础运算依次生成初始运算指令,其中,每生成一个初始运算指令则将生成的初始运算指令写入所述第二寄存器中;
所述指令获取子单元用于从第二寄存器中依次读取各个初始运算指令;
所述译码子单元用于分别对各个所述初始运算指令进行编译,获得相应的各个基础运算指令,并依次将各个基础运算指令写入所述第一寄存器。
可选地,所述第一寄存器和所述第二寄存器均为流水线寄存器,通过所述第一寄存器与所述第二寄存器握手,实现所述从所述第二寄存器中读取所述初始运算指令。
可选地,所述向量运算器还包括:
数据获取模块,用于获取输入数据;和
格式转换模块,用于将所述输入数据转换为满足预定格式的所述初始数据。
可选地,满足所述预定格式为12bit的数据;
当所述输入数据的数据类型为FP16时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括指数位、1bit符号位和11bit精度位的所述初始数据;
当所述输入数据的数据类型为INT8时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括5bit符号位和7bit原码精度位的所述初始数据;
当所述输入数据的数据类型为INT12时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括1bit符号位和11bit精度为的所述初始数据。
可选地,所述目标向量运算包括ReLU激活运算,所述初始数据为矩阵数据,
所述拆分模块用于将所述ReLU激活运算拆分为以下满足预定执行顺序的基础运算:
所述初始数据与参照矩阵的比较取最大值的比较大小基础运算,所述参照矩阵的特征图与所述初始数据的元素的特征图相同,且所述参照矩阵的各个元素均为0;以及
将待运算的数据中各个元素点乘以系数K的乘法基础运算。
作为本公开的第三个方面,提供一种电子设备,包括:
存储模块,其上存储有可执行程序;
一个或多个处理模块,当所述一个或多个处理模块调用所述可执行程序时,能够实现本公开第一个方面所提供的向量运算方法。
作为本公开的第四个方面,提供一种计算机可读存储介质,其上存储有可执行程序,当所述可执行程序被调用时,能够实现本公开第一个方面所提供的向量运算方法。
当所述向量运算方法用于执行AI加速器中的向量运算时,可以对目标向量运算进行拆分,然后对初始数据依次进行多次基础运算指令,即可实现目标向量运算。也就是说,通过本公开所提供的向量运算方法,可以执行多种不同的目标向量运算。与“不同目标向量运算对应不同加速器”的相关技术相比,本公开所提供的向量运算方法更加灵活。
附图说明
图1是本公开所提供的向量运算方法的一种实施方式的流程图;
图2是步骤S130的一种实施方式的流程图;
图3是本公开所提供的向量运算方法的另一种实施方式的流程图;
图4是步骤S120的一种实施方式的流程图;
图5是本公开所提供的向量运算方法的还一种实施方式的流程图;
图6是本公开所提供的向量运算的流水线作业示意图;
图7是利用本公开所提供的向量运算方法执行ReLU激活运算的示意图;
图8是本公开所提供的向量运算器的一种实施方式的模块结构示意图;
图9是本公开所提供的向量运算器中指令生成模块的示意图;
图10是本公开所提供的向量运算器的另一种实施方式的模块结构示意图;
图11是本公开所提供的向量运算器中多个运算模块的示意图。
具体实施方式
为使本领域的技术人员更好地理解本公开的技术方案,下面结合附图对本公开提供的向量运算方法、向量运算器、电子设备和计算机可读存储介质进行详细描述。
在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
作为本公开的第一个方面,提供一种向量运算方法,如图1所示,所述向量运算方法包括:
在步骤S110中,对待进行的目标向量运算进行拆分,确定多个满足预定执行顺序的基础运算;
在步骤S120中,按照所述预定执行顺序依次生成实现多个所述基础运算的多个基础运算指令;
在步骤S130中,按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算,其中,在相邻两次基础运算中,后一次基础运算的待运算数据为前一次基础运算的运算结果。
在本公开中,基础运算可以包括加法运算、减法运算、乘法运算、除法运算、移位、查找表、比较大小等,当然,本公开并不限于此。通过多种基础运算进行组合,可以实现复杂的向量运算。
当所述向量运算方法用于执行AI加速器中的向量运算时,可以对目标向量运算进行拆分,然后对初始数据依次进行多次基础运算指令,即可实现目标向量运算。也就是说,通过本公开所提供的向量运算方法,可以执行多种不同的目标向量运算。与“不同目标向量运算对应不同加速器”的相关技术相比,本公开所提供的向量运算方法更加灵活。
例如,目标向量运算为A,可以拆分成基础运算a和基础运算b。为了实现目标向量运算A,所述向量运算方法可以包括:
对目标向量A进行拆分,确定按照先后顺序执行的基础运算a和基础运算b;
依次生成基础运算a的基础运算指令a’和基础运算b的基础运算指令b’;
对初始数据执行基础运算指令a’,得到基础运算b的待运算数据;
对所述待运算数据执行基础运算指令b’,得到运算结果。
目标向量运算为B,可以拆分成基础运算a和基础运算c。为了实现目标向量运算B,所述向量运算方法可以包括:
对目标向量B进行拆分,确定按照先后顺序执行的基础运算a和基础运算c;
依次生成基础运算a的基础运算指令a’和基础运算c的基础运算指令c’;
对初始数据执行基础运算指令a’,得到基础运算c的待运算数据;
对所述待运算数据执行基础运算指令b’,得到运算结果。
通过上述两个例子可知,通过本公开所提供的向量运算方法可以对不同的目标运算进行运算。
为了提高运算效率,可选地,在所述按照所述预定执行顺序依次生成与多个所述基础运算对应的多个基础运算指令的步骤(即,步骤S120)中,每生成一个所述基础运算指令,将生成的所述基础运算指令存储在第一寄存器中。
相应地,如图2所示,在步骤S130中,每次执行基础运算指令都可以包括:
在步骤S131中,读取所述第一寄存器中的所述基础运算指令;
在步骤S132中,根据读取到的所述基础运算指令对待运算的数据进行运算。
在本公开中,每次执行基础运算指令都可以看做一个周期,也就是说,步骤S130可以包括周期性执行的步骤S131和步骤S132,直至所有的基础运算指令均执行完毕。
作为一种可选实施方式,只有在第一寄存器中的基础运算指令已经被取出调用的情况下,才向该第一寄存器中写入下一个基础运算指令。
在本公开中,对生成各个基础运算指令的步骤、以及执行各个基础运算指令的步骤不做特殊的限定。为了提高运算效率,可选地,生成第i个基础运算指令的步骤与执行第j次基础运算指令的步骤同步进行,其中,i,j均为序号,i,j均为正整数,且i>j。也就是说,生成基础运算指令的步骤、与执行基础运算指令的步骤是并行的。
例如,在生成第二个基础运算指令的同时,可以执行利用第一个基础运算指令对待运算的数据进行运算的步骤。
当然,本公开并不限于此。为了提高运算效率,对于不同的初始数据,并行地执行所述按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算的步骤。
例如,对于初始数据1进行目标向量运算A、对初始数据2进行目标向量运算B而言,
将目标向量运算A拆分为基础运算a和基础运算b、将目标向量运算B拆分为基础运算a和基础运算c之后,可以同步地进行对初始数据1进行基础运算a得到数据1’、以及对初始数据2进行基础运算a得到数据2’的步骤,并且同步地进行对数据1’进行基础运算b、对数据2’进行基础运算c的步骤。
在本公开中,每执行一个步骤S130相当于一个周期,本公开所提供的向量运算方法也可以被看作一种多周期多级流水线握手的运算方法,可以支持神经网络的运算。而相关技术中的加速器依靠单周期多级流水线,不能支持神经网络的运算。
为了进一步提高运算速率,可选地,每次基础运算的待运算数据均写入缓存中。在执行基础运算时,只需要在缓存中调用相应的待运算数据即可。
容易理解的是,所述初始数据是第一个基础运算指令的待运算数据。因此,如图3所示,所述向量运算方法还可以包括:
在步骤S100中,将所述初始数据写入缓存中。
相应地,在执行最后一次基础运算之前,每次执行基础运算指令时,如图3所示,步骤S130都还包括:
在步骤S133中,将运算结果存储在缓存中,以作为下一次基础运算中的待运算数据。
并且,对于每一个基础运算指令,如图3所示,在步骤S132之前,步骤S130都还包括:
在步骤S134中,从所述缓存中读取待运算的数据。
为了提高运算效率,可选地,如图4所示,步骤S120可以包括:
在步骤S121中,根据所述基础运算依次生成多个初始运算指令,其中,每生成一个初始运算指令则将生成的初始运算指令写入第二寄存器中;
在步骤S122中,从所述第二寄存器中依次读取各个所述初始运算指令;
在步骤S123中,分别对各个所述初始运算指令进行编译,获得各个基础运算指令。
作为一种可选实施方式,第一寄存器和第二寄存器均为流水线寄存器,因此,可以通过第一寄存器与第二寄存器握手的方式实现步骤S122。
图6中所示的是本公开所提供的向量运算方法中,步骤S120和步骤S130的示意图。步骤S120和步骤S130构成一个三级流水线。
第一级流水线中的“取指”是指获取步骤S121中生成的初始运算指令,“取指”后的“reg”是指将初始运算指令写入第二寄存器;第二级流水线中的“译码”是指步骤S123,“译码”后的“reg”是指将基础运算指令写入第一寄存器;第三级流水线中的“读buffer”是指从缓存中读取待运算的数据,即,步骤S134,第三级流水线中的“运算”是指根据基础运算指令对待运算数据进行运算,即,步骤S132,第三级流水线中的“写buffer”是指将运算结果写入缓存中,即步骤S133。
在相关技术中,往往一个运算模块只支持具有同一种格式的数据的运算。例如,支持12bit数据格式的运算模块只能够对格式为12bit的数据进行运算。
在本公开中,为了节约计算资源,提出了一种“运算模块复用”的技术方案。具体地如下:
所述初始数据满足预定格式,如图5所示,在按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算之前(即,步骤S120之前),所述向量运算方法还包括:
在步骤S101中,获取输入数据;
在步骤S102中,将所述输入数据转换为满足所述预定格式的所述初始数据。
通过步骤S101和步骤S102,无论输入数据具有何种格式,均能够获得满足预定格式的初始数据。
通过步骤S102,可以实现执行基础运算指令的运算模块(例如,加法器、乘法器等)对不同精度类型的数据的复用。也就是说,通过本申请的步骤S101和步骤S102,可以实现对多种不同精度类型的数据进行处理,不再需要针对各种不同精度类型的数据设计专用的运算模块。
例如,满足所述预定格式为12bit的数据;
当所述输入数据的数据类型为FP16时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括指数位、1bit符号位和11bit精度位的所述初始数据;
当所述输入数据的数据类型为INT8时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括5bit符号位和7bit原码精度位的所述初始数据;
当所述输入数据的数据类型为INT12时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括1bit符号位和11bit精度为的所述初始数据。
在本公开中,对目标向量运算的具体类型不做特殊的限定,对如何对目标向量运算进行拆分也不做特殊的限定。下面以所述目标向量运算为ReLU激活运算为例,对步骤S110进行介绍。
当所述目标向量运算为ReLU激活运算时,可以将ReLU激活运算拆分为先进行“比较大小基础运算”、再进行“乘法基础运算”。具体地,针对ReLU激活运算,所述初始数据为矩阵数据,满足预定执行顺序的基础运算分别为:
所述初始数据与参照矩阵的比较取最大值的比较大小基础运算,所述参照矩阵的特征图与所述初始数据的元素的特征图相同,且所述参照矩阵的各个元素均为0;以及
将待运算的数据中各个元素点乘以系数K的乘法基础运算。
下面结合图7,对ReLU激活运算的拆分方式进行简单介绍。如图所示,初始数据为特征图为4*4的矩阵A。
将针对矩阵A的ReLU激活运算拆分成与参考矩阵B进行比较取最大值的比较大小基础运算,执行过该基础运算后,可以得到中间矩阵C;
针对该中间矩阵C,将该中间矩阵C中的各个元素点乘以系数K,即可得到输出矩阵D。
也就是说,输出矩阵D是对矩阵A进行ReLU激活运算的运算结果。
作为本公开的第二个方面,提供一种向量运算器,如图8所示,向量运算器包括拆分模块210、指令生成模块220和运算模块230。
本公开所提供的向量运算器用于执行本公开第一个方面所提供的向量运算方法,具体地:
拆分模块210用于执行步骤S110,即,拆分模块210用于对待进行的目标向量运算进行拆分,确定多个满足预定执行顺序的基础运算;
指令生成模块220用于执行步骤S120,即,指令生成模块220用于按照所述预定执行顺序依次生成与多个所述基础运算对应的多个基础运算指令。
运算模块230用于执行步骤S130,即,运算模块230用于按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算,其中,在相邻两次基础运算中,后一次基础运算的待运算数据为前一次基础运算的运算结果。
通过所述向量运算器对复杂的目标向量运算进行运算时,先将目标向量运算拆分成多个基础运算,再对初始数据依次进行各个基础运算,从而可以实现目标向量运算。本公开所提供的向量运算器可以执行多种不同的复杂向量运算,具有较高的灵活性。
为了提高运算效率,作为一种可选实施方式,如图9所示,指令生成模块220可以包括指令生成单元221和第一寄存器222,指令生成单元221用于生成所述基础运算指令,且指令生成单元221每生成一个所述基础运算指令,则将生成的所述基础运算指令写入第一寄存器221。
运算模块230用于从第一寄存器222中读取基础运算指令,并根据读取到的基础运算指令对待运算的数据进行运算。
为了进一步提高运算效率,不同的模块可以并行工作。例如,指令生成单元221生成第i个基础运算指令与运算模块230执行第j次基础运算指令同步,其中,i,j均为序号,i,j均为正整数,且i>j。
为了进一步提高运算效率,可选地,如图10所示,所述向量运算器还包括缓存240,该缓存240用于存储初始数据,以作为第一个基础运算指令的待运算数据。
除此之外,运算模块230还用于在执行最后一次基础运算之前,将每次执行基础运算指令获得的运算结果存储在缓存240中,以作为下一次基础运算中的待运算数据。
并且,运算模块230还用于在根据读取到的所述基础运算指令对待运算的数据进行运算之前,从缓存240中读取所述待运算的数据。
可选地,如图10所示,所述向量计算器还包括初始运算指令生成模块250,指令生成单元221可以包括指令获取子单元221a、译码子单元221b和第二寄存器221c。
初始运算指令生成模块250用于根据所述基础运算依次生成初始运算指令,其中,每生成一个初始运算指令则将生成的初始运算指令写入第二寄存器221c中。
指令获取子单元221a用于从第二寄存器221c中依次读取各个初始运算指令,译码子单元221b用于分别对各个所述初始运算指令进行编译,获得相应的各个基础运算指令,并依次将各个基础运算指令写入第一寄存器222。
作为一种可选实施方式,第一寄存器222和第二寄存器221c均为流水线寄存器,通过第一寄存器222与所述第二寄存器握手,实现所述从所述第二寄存器中读取所述初始运算指令。
如上文中所述,为了提高运算效率,可选地,所述指令生成单元生成第i个基础运算指令与所述运算模块执行第j次基础运算指令同步,其中,i,j均为序号,i,j均为正整数,且i>j。
作为另一种可选实施方式,如图11所示,所述向量运算器包括多个运算模块230,多个运算模块230能够并行作业。为了提高运算效率,对于不同的初始数据,可以同时调用多个运算模块230,并行地执行步骤S1230。
在本公开中,每执行一个步骤S130相当于一个周期,本公开所提供的向量运算方法也可以被看作一种多周期多级流水线握手的运算方法,可以支持神经网络的运算。而相关技术中的加速器依靠单周期多级流水线,不能支持神经网络的运算。并且,在同一时刻,可以在多个运算模块中执行多个基础运算指令,从而可以提高运算效率。
在本公开中,对各个运算模块的具体结构、类型不做特殊的限定。例如,向运算模块输入两个16bit的数据可以输出16bit的数据。
可选地,所述向量运算器还包括数据获取模块260和格式转换模块270,数据获取模块260用于获取输入数据;格式转换模块270用于将所述输入数据转换为满足预定格式的所述初始数据。
作为一种可选实施方式,满足所述预定格式为12bit的数据。
当所述输入数据的数据类型为FP16时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括指数位、1bit符号位和11bit精度位的所述初始数据;
当所述输入数据的数据类型为INT8时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括5bit符号位和7bit原码精度位的所述初始数据;
当所述输入数据的数据类型为INT12时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括1bit符号位和11bit精度为的所述初始数据。
在图11中所示的包括128个运算模块的实施方式中,运算模块230支持对FP16、INT8、INT12三种精度的数据进行运算。
可选地,所述目标向量运算包括ReLU激活运算,所述初始数据为矩阵数据。
所述拆分模块用于将所述ReLU激活运算拆分为以下满足预定执行顺序的基础运算:
所述初始数据与参照矩阵的比较取最大值的比较大小基础运算,所述参照矩阵的特征图与所述初始数据的元素的特征图相同,且所述参照矩阵的各个元素均为0;以及
将待运算的数据中各个元素点乘以系数K的乘法基础运算。
作为本公开的第三个方面,提供一种电子设备,包括:
存储模块,其上存储有可执行程序;
一个或多个处理模块,当所述一个或多个处理模块调用所述可执行程序时,能够实现本公开第一个方面所提供的向量运算方法。
作为本公开的第四个方面,提供一种计算机可读存储介质,其上存储有可执行程序,当所述可执行程序被调用时,能够实现本公开第一个方面所提供的向量运算方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其它的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其它传输机制之类的调制数据信号中的其它数据,并且可包括任何信息递送介质。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其它实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。

Claims (20)

1.一种向量运算方法,包括:
对待进行的目标向量运算进行拆分,确定多个满足预定执行顺序的基础运算;
按照所述预定执行顺序依次生成实现多个所述基础运算的多个基础运算指令;
按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算,其中,在相邻两次基础运算中,后一次基础运算的待运算数据为前一次基础运算的运算结果。
2.根据权利要求1所述的向量运算方法,其中,在所述按照所述预定执行顺序依次生成与多个所述基础运算对应的多个基础运算指令的步骤中,每生成一个所述基础运算指令,将生成的所述基础运算指令存储在第一寄存器中;
在所述按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算的步骤中,每次执行基础运算指令都包括:
读取所述第一寄存器中的所述基础运算指令;
根据读取到的所述基础运算指令对待运算的数据进行运算。
3.根据权利要求2所述的向量运算方法,其中,生成第i个基础运算指令的步骤与执行第j次基础运算指令的步骤同步进行,其中,i,j均为序号,i,j均为正整数,且i>j;和/或,
针对不同的初始数据,并行地执行所述按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算的步骤。
4.根据权利要求2所述的向量运算方法,其中,在所述对待进行的目标向量运算进行拆分,获得多个满足预定执行顺序的基础运算之前,所述向量运算方法还包括:
将所述初始数据写入缓存中,作为第一个基础运算指令的待运算数据;
在执行最后一次基础运算之前,每次执行基础运算指令都还包括:
将运算结果存储在缓存中,以作为下一次基础运算中的待运算数据;
在所述根据读取到的所述基础运算指令对待运算的数据进行运算之前,每次执行基础运算指令都还包括:
从所述缓存中读取待运算的数据。
5.根据权利要求4所述的向量运算方法,其中,所述按照所述预定执行顺序依次生成与多个所述基础运算对应的多个基础运算指令,包括:
根据所述基础运算依次生成多个初始运算指令,其中,每生成一个初始运算指令则将生成的初始运算指令写入第二寄存器中;
从所述第二寄存器中依次读取各个所述初始运算指令;
分别对各个所述初始运算指令进行编译,获得相应的各个基础运算指令。
6.根据权利要求5所述的向量运算方法,其中,所述第一寄存器和所述第二寄存器均为流水线寄存器,通过所述第一寄存器与所述第二寄存器握手,实现所述从所述第二寄存器中读取所述初始运算指令的步骤。
7.根据权利要求1至6中任意一项所述的向量运算方法,其中,所述初始数据满足预定格式,在按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算之前,所述向量运算方法还包括:
获取输入数据;
将所述输入数据转换为满足所述预定格式的所述初始数据。
8.根据权利要求7所述的向量运算方法,其中,满足所述预定格式为12bit的数据;
当所述输入数据的数据类型为FP16时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括指数位、1bit符号位和11bit精度位的所述初始数据;
当所述输入数据的数据类型为INT8时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括5bit符号位和7bit原码精度位的所述初始数据;
当所述输入数据的数据类型为INT12时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括1bit符号位和11bit精度为的所述初始数据。
9.根据权利要求1至6中任意一项所述的向量运算方法,其中,所述目标向量运算包括ReLU激活运算,所述初始数据为矩阵数据,
在所述对待进行的目标向量运算进行拆分,获得多个满足预定执行顺序的基础运算的步骤中,满足预定执行顺序的基础运算分别为:
所述初始数据与参照矩阵的比较取最大值的比较大小基础运算,所述参照矩阵的特征图与所述初始数据的元素的特征图相同,且所述参照矩阵的各个元素均为0;以及
将待运算的数据中各个元素点乘以系数K的乘法基础运算。
10.一种向量运算器,包括:
拆分模块,所述拆分模块用于对待进行的目标向量运算进行拆分,确定多个满足预定执行顺序的基础运算;
指令生成模块,所述指令生成模块用于按照所述预定执行顺序依次生成与多个所述基础运算对应的多个基础运算指令;
至少一个运算模块,所述运算模块用于按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算,其中,在相邻两次基础运算中,后一次基础运算的待运算数据为前一次基础运算的运算结果。
11.根据权利要求10所述的向量运算器,其中,所述指令生成模块包括指令生成单元和第一寄存器,所述指令生成单元用于生成所述基础运算指令,且所述指令生成单元每生成一个所述基础运算指令,则将生成的所述基础运算指令写入所述第一寄存器;
所述运算模块用于从所述第一寄存器中读取基础运算指令,并根据读取到的基础运算指令对待运算的数据进行运算。
12.根据权利要求11所述的向量运算器,其中,所述指令生成单元生成第i个基础运算指令与所述运算模块执行第j次基础运算指令同步,其中,i,j均为序号,i,j均为正整数,且i>j;和/或
所述向量运算器包括多个所述运算模块,所述多个运算模块能够并行作业。
13.根据权利要求11所述的向量运算器,其中,所述向量运算器还包括缓存,所述缓存用于存储初始数据,以作为第一个基础运算指令的待运算数据;
所述运算模块还用于在执行最后一次基础运算之前,将每次执行基础运算指令获得的运算结果存储在所述缓存中,以作为下一次基础运算中的待运算数据;
所述运算模块还用于在根据读取到的所述基础运算指令对待运算的数据进行运算之前,从所述缓存中读取所述待运算的数据。
14.根据权利要求11所述的向量运算器,其中,所述向量计算器还包括初始运算指令生成模块,所述指令生成单元还包括指令获取子单元、第二寄存器和译码子单元,
所述初始运算指令生成模块用于根据所述基础运算依次生成初始运算指令,其中,每生成一个初始运算指令则将生成的初始运算指令写入所述第二寄存器中;
所述指令获取子单元用于从第二寄存器中依次读取各个初始运算指令;
所述译码子单元用于分别对各个所述初始运算指令进行编译,获得相应的各个基础运算指令,并依次将各个基础运算指令写入所述第一寄存器。
15.根据权利要求14所述的向量运算器,其中,所述第一寄存器和所述第二寄存器均为流水线寄存器,通过所述第一寄存器与所述第二寄存器握手,实现所述从所述第二寄存器中读取所述初始运算指令。
16.根据权利要求10至15中任意一项所述的向量运算器,其中,所述向量运算器还包括:
数据获取模块,用于获取输入数据;和
格式转换模块,用于将所述输入数据转换为满足预定格式的所述初始数据。
17.根据权利要求16所述的向量运算器,其中,满足所述预定格式为12bit的数据;
当所述输入数据的数据类型为FP16时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括指数位、1bit符号位和11bit精度位的所述初始数据;
当所述输入数据的数据类型为INT8时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括5bit符号位和7bit原码精度位的所述初始数据;
当所述输入数据的数据类型为INT12时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括1bit符号位和11bit精度为的所述初始数据。
18.根据权利要求10至15中任意一项所述的向量运算器,其中,所述目标向量运算包括ReLU激活运算,所述初始数据为矩阵数据,
所述拆分模块用于将所述ReLU激活运算拆分为以下满足预定执行顺序的基础运算:
所述初始数据与参照矩阵的比较取最大值的比较大小基础运算,所述参照矩阵的特征图与所述初始数据的元素的特征图相同,且所述参照矩阵的各个元素均为0;以及
将待运算的数据中各个元素点乘以系数K的乘法基础运算。
19.一种电子设备,包括:
存储模块,其上存储有可执行程序;
一个或多个处理模块,当所述一个或多个处理模块调用所述可执行程序时,能够实现权利要求1至9中任意一项所述的向量运算方法。
20.一种计算机可读存储介质,其上存储有可执行程序,当所述可执行程序被调用时,能够实现权利要求1至9中任意一项所述的向量运算方法。
CN202111562099.0A 2021-12-20 2021-12-20 向量运算方法、向量运算器、电子设备和存储介质 Pending CN116382782A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111562099.0A CN116382782A (zh) 2021-12-20 2021-12-20 向量运算方法、向量运算器、电子设备和存储介质
PCT/CN2022/136440 WO2023116400A1 (zh) 2021-12-20 2022-12-05 向量运算方法、向量运算器、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111562099.0A CN116382782A (zh) 2021-12-20 2021-12-20 向量运算方法、向量运算器、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN116382782A true CN116382782A (zh) 2023-07-04

Family

ID=86901204

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111562099.0A Pending CN116382782A (zh) 2021-12-20 2021-12-20 向量运算方法、向量运算器、电子设备和存储介质

Country Status (2)

Country Link
CN (1) CN116382782A (zh)
WO (1) WO2023116400A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117608861A (zh) * 2024-01-18 2024-02-27 上海芯联芯智能科技有限公司 一种中央处理器cpu装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10754649B2 (en) * 2018-07-24 2020-08-25 Apple Inc. Computation engine that operates in matrix and vector modes
CN112840356B (zh) * 2018-10-09 2023-04-11 华为技术有限公司 运算加速器、处理方法及相关设备
CN109919311B (zh) * 2019-03-13 2020-04-10 北京地平线机器人技术研发有限公司 生成指令序列的方法、执行神经网络运算的方法和装置
CN110503199A (zh) * 2019-08-14 2019-11-26 北京中科寒武纪科技有限公司 运算节点的拆分方法和装置、电子设备和存储介质
CN112540946B (zh) * 2020-12-18 2024-06-28 清华大学 可重构处理器及其上多种神经网络激活函数计算方法

Also Published As

Publication number Publication date
WO2023116400A1 (zh) 2023-06-29

Similar Documents

Publication Publication Date Title
US11640316B2 (en) Compiling and scheduling transactions in neural network processor
KR102447636B1 (ko) 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법
RU2656730C2 (ru) Процессоры, способы, системы и команды для сложения трех операндов-источников с плавающей запятой
EP3407182B1 (en) Vector computing device
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
CN117349584A (zh) 实行16位浮点矩阵点积指令的系统和方法
CN111656367A (zh) 神经网络加速器的系统和体系结构
CN111465924A (zh) 用于将矩阵输入转换为矩阵处理器的向量化输入的系统和方法
CN111651205B (zh) 一种用于执行向量内积运算的装置和方法
WO2010105887A2 (en) Processing array data on simd multi-core processor architectures
CN105607890A (zh) 用于处理文本串的指令和逻辑
CN104919416A (zh) 用于提供矢量地址冲突检测功能的方法、装置、指令和逻辑
CN102053819A (zh) 信息处理设备和信息处理设备的指令解码器
US8959501B2 (en) Type and length abstraction for data types
US8707013B2 (en) On-demand predicate registers
CN110007963A (zh) 用于无符号双字的矢量乘法和累加的设备和方法
WO2023116400A1 (zh) 向量运算方法、向量运算器、电子设备和存储介质
EP3447690A1 (en) Maxout layer operation apparatus and method
US20230161555A1 (en) System and method performing floating-point operations
WO1997042565A1 (en) A digital signal processor employing a register file between a plurality of memories and a plurality of functional units
EP4455871A1 (en) Vector operation method, vector operator, electronic device and storage medium
US11036506B1 (en) Memory systems and methods for handling vector data
US11221826B2 (en) Parallel rounding for conversion from binary floating point to binary coded decimal
JP2021174558A (ja) Int9量子化のためのシステム及び方法
US10540183B2 (en) Accelerated execution of execute instruction target

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
CB02 Change of applicant information

Country or region after: China

Address after: 518055, 2nd Floor, ZTE Industrial Park, No. 2 Chuangyan Road, Xili Community, Xili Street, Nanshan District, Shenzhen City, Guangdong Province, China

Applicant after: SANECHIPS TECHNOLOGY Co.,Ltd.

Address before: 518055 Zhongxing Industrial Park, Liuxian Avenue, Xili street, Nanshan District, Shenzhen City, Guangdong Province

Applicant before: SANECHIPS TECHNOLOGY Co.,Ltd.

Country or region before: China

CB02 Change of applicant information