CN111723917B - 运算方法、装置及相关产品 - Google Patents

运算方法、装置及相关产品 Download PDF

Info

Publication number
CN111723917B
CN111723917B CN201910216313.3A CN201910216313A CN111723917B CN 111723917 B CN111723917 B CN 111723917B CN 201910216313 A CN201910216313 A CN 201910216313A CN 111723917 B CN111723917 B CN 111723917B
Authority
CN
China
Prior art keywords
dimension
data
lowest
input data
input
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.)
Active
Application number
CN201910216313.3A
Other languages
English (en)
Other versions
CN111723917A (zh
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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201910216313.3A priority Critical patent/CN111723917B/zh
Priority to US16/824,298 priority patent/US20200301704A1/en
Priority to EP20164393.9A priority patent/EP3712785B1/en
Publication of CN111723917A publication Critical patent/CN111723917A/zh
Application granted granted Critical
Publication of CN111723917B publication Critical patent/CN111723917B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • G06F9/3802Instruction prefetching
    • 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
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Image Processing (AREA)
  • User Interface Of Digital Computer (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开涉及一种运算方法、装置及相关产品,所述产品包括控制器单元,所述控制器单元包括:指令缓存单元、指令处理单元和存储队列单元;所述指令缓存单元,用于存储所述人工神经网络运算关联的计算指令;所述指令处理单元,用于对所述计算指令解析得到多个运算指令;所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。通过以上方法,本公开可以提高相关产品在进行神经网络模型的运算时的运算效率。

Description

运算方法、装置及相关产品
技术领域
本公开涉及信息处理技术领域,尤其涉及一种运算方法、装置及相关产品。
背景技术
在人工智能技术领域,神经网络算法是最近非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。用GPU和CPU处理起这些大规模的模型,要花费大量的计算时间,并且耗电量很大。在这种情况下,新的人工智能处理器被提出以提高神经网络模型的运算速度,节约运算时间,降低功耗。然而,当前对新的人工智能处理器的算法支持却远远不够。
发明内容
有鉴于此,本公开提出了一种输入数据处理方法及装置,提高运算单元的运算性能,提高了处理器的处理效率。
根据本公开的一方面,提供了一种输入数据处理方法,所述方法包括:
根据输入数据的维度以及第一处理器的运算单元的个数确定第一数据维度和第二数据维度;其中,第一数据维度和第二数据维度中的至少一者小于所述运算单元的个数;
根据所述第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度;其中,第一维度和第二维度的乘积为所述个数的倍数,第一维度和第二维度中小于所述个数的维度为所述个数的约数;
根据所述第一维度、所述第二维度、第一数据维度以及第二数据维度对所述输入数据进行补齐处理。
在一种可能的实现方式中,根据所述第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度,包括:
根据第一数据维度和第二数据维度中的较小者以及所述个数确定第一维度,其中,所述第一维度为所述个数的约数,所述第一维度大于或等于第一数据维度和第二数据维度中的较小者;
根据第一数据维度和第二数据维度中的较大者、第一维度以及所述个数确定第二维度,其中,所述第二维度大于或等于第一数据维度和第二数据维度中的较大者。
在一种可能的实现方式中,所述第一数据维度为所述输入数据的维度中的最低维度,所述第二数据维度为所述输入数据的维度中的次低维度,其中,所述次低维度为所述输入数据的维度中仅高于最低维度的维度。
在一种可能的实现方式中,根据所述第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度,包括:
根据所述最低维度以及所述个数确定第一维度,其中,所述第一维度大于或等于所述最低维度,所述第一维度为所述个数的约数;
根据所述第一维度、所述个数和所述次低维度确定第二维度;其中,所述第二维度大于或等于所述次低维度。
在一种可能的实现方式中,根据所述第一维度、所述第二维度、第一数据维度以及第二数据维度对所述输入数据进行补齐处理,包括:
根据所述第一维度和所述最低维度的关系、以及所述第二维度和所述次低维度的关系对所述输入数据进行补齐处理。
在一种可能的实现方式中,所述第一维度为所述个数的约数中大于或等于所述最低维度的最小约数。
在一种可能的实现方式中,所述第二维度大于或等于所述次低维度,并且所述第二维度与第一维度的乘积为所述个数的最小倍数。
在一种可能的实现方式中,根据所述第一维度和所述最低维度的关系、以及所述第二维度和所述次低维度的关系对所述输入数据进行补齐处理,包括:
在所述第一维度大于所述最低维度时,在最低维度方向将输入数据补齐到第一维度;
在所述第二维度大于所述次低维度时,在次低维度方向上将输入数据补齐到第二维度。
在一种可能的实现方式中,所述方法还包括:
沿次低维度方向依次取所述最低维度方向的输入数据输入到第一处理器的运算单元中。
在一种可能的实现方式中,所述输入数据为图像数据。
根据本公开的另一方面,提供了一种输入数据处理装置,所述装置包括:
第一确定模块,用于根据输入数据的维度以及第一处理器的运算单元的个数确定第一数据维度和第二数据维度;其中,第一数据维度和第二数据维度中的至少一者小于所述运算单元的个数;
第二确定模块,用于根据所述第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度;其中,第一维度和第二维度的乘积为所述个数的倍数,第一维度和第二维度中小于所述个数的维度为所述个数的约数;
补齐模块,用于根据所述第一维度、所述第二维度、第一数据维度以及第二数据维度对所述输入数据进行补齐处理。
在一种可能的实现方式中,所述第二确定模块还用于根据第一数据维度和第二数据维度中的较小者以及所述个数确定第一维度,其中,所述第一维度为所述个数的约数,所述第一维度大于或等于第一数据维度和第二数据维度中的较小者;根据第一数据维度和第二数据维度中的较大者、第一维度以及所述个数确定第二维度,其中,所述第二维度大于或等于第一数据维度和第二数据维度中的较大者。
在一种可能的实现方式中,所述第一数据维度为所述输入数据的维度中的最低维度,所述第二数据维度为所述输入数据的维度中的次低维度,其中,所述次低维度为所述输入数据的维度中仅高于最低维度的维度。
在一种可能的实现方式中,所述第二确定模块还用于根据所述最低维度以及所述个数确定第一维度,其中,所述第一维度大于或等于所述最低维度,所述第一维度为所述个数的约数;根据所述第一维度、所述个数和所述次低维度确定第二维度;其中,所述第二维度大于或等于所述次低维度。
在一种可能的实现方式中,所述补齐模块还用于根据所述第一维度和所述最低维度的关系、以及所述第二维度和所述次低维度的关系对所述输入数据进行补齐处理。
在一种可能的实现方式中,所述第一维度为所述个数的约数中大于或等于所述最低维度的最小约数。
在一种可能的实现方式中,所述第二维度大于或等于所述次低维度,并且所述第二维度与第一维度的乘积为所述个数的最小倍数。
在一种可能的实现方式中,所述补齐模块包括:
第一补齐单元,用于在所述第一维度大于所述最低维度时,在最低维度方向将输入数据补齐到第一维度;
第二补齐单元,用于在所述第二维度大于所述次低维度时,在次低维度方向上将输入数据补齐到第二维度。
在一种可能的实现方式中,所述装置还包括:
数据获取模块,用于沿次低维度方向依次取所述最低维度方向的输入数据输入到运算单元中。
在一种可能的实现方式中,所述输入数据为图像数据。
根据本公开的另一方面,提供了一种输入数据处理方法,所述方法包括:
在输入数据的第一数据维度小于第一处理器的运算单元的个数时,根据输入数据的第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度;其中,第一维度和第二维度的乘积为所述个数的倍数,第一维度和第二维度中小于所述个数的维度为所述个数的约数;
根据所述第一维度、所述第二维度、第一数据维度以及第二数据维度对所述输入数据进行补齐处理;
其中,所述第一数据维度为读写输入数据时首先被读写的维度方向,第二数据维度为读写输入数据时第二被读写的维度方向。
在一种可能的实现方式中,根据输入数据的第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度,包括:
根据第一数据维度以及所述个数确定第一维度;
根据第二数据维度、第一维度以及所述个数确定第二维度。
在一种可能的实现方式中,所述第一维度为所述个数的最小约数,所述第一维度和第二维度的乘积为所述个数的最小倍数。
在一种可能的实现方式中,根据所述第一维度、所述第二维度、第一数据维度以及第二数据维度对所述输入数据进行补齐处理,包括:
在所述第一维度大于所述第一数据维度的维度数时,在第一数据维度方向将输入数据补齐到第一维度;
在所述第二维度大于所述第二数据维度的维度数时,在第二数据维度方向上将输入数据补齐到第二维度。
根据本公开的另一方面,提供了一种输入数据处理置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
通过确定输入数据的维度中小于第一处理器的运算单元的个数的一个数据维度,并根据确定的数据维度以及运算单元的个数确定需要将输入数据补齐到的维度:第一维度和第二维度,然后根据第一维度、第二维度、第一数据维度以及第二数据维度对输入数据进行补齐处理。在将输入数据输入到运算单元时,可以根据第一维度和第二维度从输入数据中取数据,相当于将输入数据进行了降维处理,提高运算单元的运算性能,提高了处理器的处理效率。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的输入数据处理方法的流程图。
图2示出根据本公开一实施例的输入数据处理方法的流程图。
图3示出根据本公开一实施例的步骤S131的方法的流程图。
图4示出根据本公开一实施例的输入数据处理方法的流程图。
图5示出根据本公开一实施例的输入数据处理装置的框图。
图6示出根据本公开一实施例的输入数据处理装置的框图。
图7示出根据本公开一实施例的第一处理器的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
对于拥有多个运算单元的人工智能处理器,若要使人工处理器的运算性能达到最好,对于某一运算程序而言,务必需要尽量多的使多个运算单元都参与有效运算,方能达到提高运算性能的效果,而对于人工智能处理器而言,一轮计算只计算输入数据的一行某一维度的数据。比如说,输入数据可以是采用NHWC(batch,height,width,channels)格式描述图像的数据,其中,N代表数量,C代表通道数(例如,RGB),H代表高度,W代表宽度。一轮计算只计算输入数据的一行C维度的数据。
如果输入数据的一行该维度的数据的个数小于运算单元的个数,那么就有一部分运算单元不参与运算的过程,或者,在该维度的方向用0进行补齐,补齐到该维度方向的维度与运算单元的个数相同,这样,就有一部分运算单元进行的是无效运算。以上过程中,运算单元的运算性能并没有得到很好的发挥,运算效率较低。
为了解决上述技术问题,本公开提供了一种输入数据处理方法。
图1示出根据本公开一实施例的输入数据处理方法的流程图。该方法可以应用于处理器,所述处理器可以为通用处理器,例如,处理器可以为中央处理单元CPU(CentralProcessing Unit)、图形处理单元GPU(Graphics Processing Unit)等。所述处理器还可以为用于执行人工智能运算的人工智能处理器,人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括NPU(Neural-Network Processing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。人工智能处理器可以包括多个运算单元,多个运算单元可以并行执行运算。
如图1所示,该方法可以包括:
步骤S11,根据输入数据的维度以及第一处理器的运算单元的个数确定第一数据维度和第二数据维度;其中,第一数据维度和第二数据维度中的至少一者小于所述运算单元的个数;
步骤S12,根据所述第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度;其中,第一维度和第二维度的乘积为所述个数的倍数,第一维度和第二维度中小于所述个数的维度为所述个数的约数;
步骤S13,根据所述第一维度、所述第二维度、第一数据维度以及第二数据维度对所述输入数据进行补齐处理。
这样,通过确定输入数据的维度中小于第一处理器的运算单元的个数的一个数据维度,并根据确定的数据维度以及运算单元的个数确定需要将输入数据补齐到的维度:第一维度和第二维度,然后根据第一维度、第二维度、第一数据维度以及第二数据维度对输入数据进行补齐处理。在将输入数据输入到运算单元时,可以根据第一维度和第二维度从输入数据中取数据,相当于将输入数据进行了降维处理,提高运算单元的运算性能,提高了处理器的处理效率。
上述输入数据可以是图像数据,例如,彩色图像数据或者灰度图像数据;输入数据还可以为音频或者视频数据,等等,本公开实施例对输入数据描述的实际物理含义不作限定。
在一种可能的实现方式中,输入数据可以是采用多维张量描述实际物理量的数据,比如说,输入数据可以是采用NHWC格式描述图像的数据,其中,C代表通道数(例如,RGB),也可以是采用多维张量(例如,MFCC特征,Mel-Frequency Cepstral Coefficients特征)描述声音的数据。
以输入数据为采用(R,G,B)描述图像的数据为例,图像数据包含多个像素,通常是以矩阵形式排列的多个像素,矩阵的高和宽的维度可以表示图像的分辨率,每个像素的信息可以通过(R,G,B)表示。
在一个示例中,假设每个像素的R、G、B值相等,如表1所示,那么一张图片的输入数据可以包含3组如表1所示的数据:
表1一张图片的R(G或者B)值
1 2 3 4 5 6 7
8 9 ..
13 15 17 19
对于这样图片的输入数据,NHWC格式表示的维度为(N×9×7×3),本公开的方法不涉及N维度方向的处理,主要讨论HWC维度。
第一处理器是包括多个运算单元的处理器,例如,可以是如上所述的用于执行人工智能运算的人工智能处理器。假设第一处理器的运算单元的个数为9,以上述图片数据为例,那么第一数据维度和第二数据维度可以为3和7,或者,3和9,或者7和9。
在输入数据的维度都大于第一处理器中运算单元的个数时,直接根据读写数据时首先被读写的维度方向的维度数和运算单元的个数的差值对输入数据进行补齐即可。举例来说,若运算单元的个数为4个,而输入数据的读写数据时首先被读写的维度方向的数据个数为7个,那么,运算单元需要分两次处理一行最低维度的数据,第一次处理4个数据,第二次处理4个数据,在第二次处理的4个数据中的最后一个可以是补齐的0。比如说,输入数据的一行最低维度的数据为(1,2,3,4,5,6,7),补齐后为(1,2,3,4,5,6,7,0),然后输入到运算单元进行运算。
在输入数据的最低维度等于运算单元的个数时,每个运算单元都参与有效运算,运算性能得到最大发挥,直接进行运算即可,不需要对输入数据进行补齐处理。
因此,本公开实施方式的输入数据处理方法获取输入数据的维度中至少一个小于运算单元的个数的数据维度,然后获取的数据维度对输入数据进行补齐处理,可以提高运算单元的运算性能。
在一种可能的实现方式中,所述第一数据维度为所述输入数据的维度中的最低维度,所述第二数据维度为所述输入数据的维度中的次低维度,其中,最低维度可以为输入数据的维度中数字最小的维度,所述次低维度为所述输入数据的维度中仅高于最低维度的维度。
在另一种可能的实现方式中,所述第一数据维度和所述第二数据维度都小于所述运算单元的个数,所述第一数据维度和所述第二数据维度可以是所述输入数据的维度中最近接所述运算单元的个数的维度。
或者,在另一种可能的实现方式中,所述第一数据维度也可以为读写输入数据时首先被读写的维度,而第二数据维度可以为读写输入数据时第二被读写的维度。例如,在NHWC格式中,N代表数量,C代表通道数,H代表高度,W代表宽度,C维度为读写数据时首先被读写的维度方向,W维度为读写数据时第二被读写的维度方向。在这个示例中,本公开的方法也可以不包括步骤S11。本公开的输入数据处理方法可以包括:在输入数据的第一数据维度小于第一处理器的运算单元的个数时,根据输入数据的第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度;其中,第一维度为所述个数的约数,且第一维度大于或等于第一数据维度的维度数,第一维度和第二维度的乘积为所述个数的倍数,第二维度大于或等于所述第二数据维度的维度数;根据所述第一维度、所述第二维度、第一数据维度以及第二数据维度对所述输入数据进行补齐处理。以上仅仅是确定第一数据维度和第二数据维度的一些示例,不以任何方式限制本公开,只需要满足第一数据维度和第二数据维度中至少一个小于运算单元的个数即可。
在一种可能的实现方式中,对于步骤S12,可以先根据第一数据维度和第二数据维度中的较小者以及所述个数确定第一维度,然后,根据第一数据维度和第二数据维度中的较大者、第一维度以及所述个数确定第二维度。
其中,所述第一维度为所述个数的约数,所述第一维度大于或等于第一数据维度和第二数据维度中的较小者,所述第二维度大于或等于第一数据维度和第二数据维度中的较大者。在一种可能的实现方式中,所述第一维度可以为所述个数的最小约数,且所述第一维度大于或等于第一数据维度和第二数据维度中的较小者。所述第一维度和第二维度的乘积可以为所述个数的最小倍数,且所述第二维度大于或等于第一数据维度和第二数据维度中的较大者。将第一维度和第二维度确定为满足上述条件的最小的数据,可以最大程度的提升运算单元的运算性能,尽可能提高处理器的处理效率。
以上过程是本公开实施方式的一个示例,若第一数据维度和第二数据维度都小于所述个数,则也可以根据其中的任意一者以及所述个数确定第一维度,然后确定第二维度,本公开对具体确定第一维度和第二维度的过程不作限定,只需满足第一维度和第二维度的乘积为所述个数的倍数,第一维度和第二维度中小于所述个数的维度为所述个数的约数即可。
在一种可能的实现方式中,如果所述第一数据维度为读写输入数据时首先被读写的维度方向,而第二数据维度为读写输入数据时第二被读写的维度方向,对于步骤S12,可以先根据第一数据维度以及所述个数确定第一维度,然后,根据第二数据维度、第一维度以及所述个数确定第二维度。其中,所述第一维度为所述个数的约数,且第一维度大于或等于第一数据维度的维度数,第一维度和第二维度的乘积为所述个数的倍数,第二维度大于或等于所述第二数据维度的维度数。
在一种可能的实现方式中,所述第一维度可以为所述个数的最小约数,所述第一维度和第二维度的乘积可以为所述个数的最小倍数。
举例来说,仍然以上述示例为例,第一数据维度和第二数据维度可以为3和7,运算单元的个数为9,那么可以确定第一维度为3、第二维度为9,第一维度3为个数9的约数,第一维度和第二维度的乘积为27,是个数9的倍数。
在一种可能的实现方式中,对于步骤S13,可以包括:根据第一数据维度和第二数据维度中的较小者,与第一维度之间的关系对输入数据进行补齐处理;根据第一数据维度和第二数据维度中的较大者,与第二维度之间的关系对输入数据进行补齐处理。
比如,若第一数据维度和第二数据维度中的较小者小于第一维度,则在第一数据维度和第二数据维度中的较小者的维度方向上补齐到第一维度;若第一数据维度和第二数据维度中的较大者小于第二维度,则在第一数据维度和第二数据维度中的较大者的维度方向上补齐到第二维度。
若第一数据维度和第二数据维度中的较小者等于第一维度相等,则不需要补齐处理,若第一数据维度和第二数据维度中的较大者等于第二维度,则不需要补齐处理。
在另一种可能的实现方式中,如果所述第一数据维度为读写输入数据时首先被读写的维度方向,而第二数据维度为读写输入数据时第二被读写的维度方向,对于步骤S13,可以包括:
在所述第一维度大于所述第一数据维度的维度数时,在第一数据维度方向将输入数据补齐到第一维度;
在所述第二维度大于所述第二数据维度的维度数时,在第二数据维度方向上将输入数据补齐到第二维度。
若第一维度等于第一数据维度的维度数,则在第一数据维度方向不需要进行补齐处理;同样的,若第二维度等于第二数据维度的维度数,则在第二数据维度方向不需要进行补齐处理。
举例来说,在以上示例中,在第二数据维度方向上补齐到9维即可,补齐所采用的数据可以为0,补齐后的输入数据可以包含3组如下表所示的数据:
表2补齐后的R(G或者B)值
1 2 3 4 5 6 7 0 0
8 9 .. 0 0
0 0
0 0
0 0
0 0
0 0
0 0
13 15 17 19 0
那么,在进行运算时,依次取数据(1,1,1,2,2,2,3,3,3)输入到9个运算单元中进行运算,然后再取(4,4,4,5,5,5,6,6,6)输入到9个运算单元中进行运算,然后再去(7,7,7,0,0,0,0,0,0)输入到9个运算单元中进行运算。
若采用现有技术的方式进行运算,则需要进行7次才能完成第一行数据的运算,采用本公开实施例的输入数据处理方法对输入数据进行处理后,只需要3次即可完成第一行数据的运算。相当于将原来的7维降维到3维,运算效率提升2倍多。
以上内容中的数据仅仅是本公开的一些示例,不以任何方式限制本公开。
为了理解本公开实施例的方法,下文中将以第一数据维度为输入数据的维度中的最低维度,第二数据维度为输入数据的维度中的次低维度为例对本公开实施例的方法进行进一步说明。
图2示出根据本公开一实施例的输入数据处理方法的流程图。如图2所示,步骤S12可以包括:
步骤S121,根据所述最低维度以及所述个数确定第一维度,其中,所述第一维度大于或等于所述最低维度,所述第一维度为所述个数的约数;
步骤S122,根据所述第一维度、所述个数和所述次低维度确定第二维度,其中,所述第二维度大于或等于所述次低维度。
步骤S13可以包括:
步骤S131,根据所述第一维度和所述最低维度的关系、以及所述第二维度和所述次低维度的关系对所述输入数据进行补齐处理。
这样,通过输入数据的最低维度与运算单元的个数之间的关系确定第一维度,并根据第一维度、运算单元的个数以及输入数据的次低维度确定第二维度,根据第一维度和第二维度对输入数据进行补齐处理。由于运算单元的个数是第一维度的倍数,并且第二维度与第一维度的乘积为运算单元的个数的倍数,相当于将原来的次低维度方向的数据进行了降维处理,提高运算单元的运算性能,提高了处理器的处理效率。最低维度小于运算单元的个数,执行步骤S121中的“根据所述最低维度以及所述个数确定第一维度”,第一维度需要满足的条件为:第一维度大于或等于最低维度,运算单元的个数为第一维度的倍数,也就是说第二维度为运算单元的个数的约数。
举例来说,假设运算单元的个数为16个,如上所示的图片的示例,输入数据的最低维度为3,那么,第一维度可以为4,或者,第一维度也可以为8。
对于步骤S122,在第一维度确定后,还可以根据第一维度、运算单元的个数以及次低维度确定第二维度。第二维度需要满足的条件为:第二维度大于或等于次低维度,并且第二维度与第一维度的乘积为运算单元的个数的倍数。
举例来说,仍然以上述示例为例,运算单元的个数为16个,最低维度为3,次低维度为7,假设确定的第一维度为4。那么,第二维度可以为8或者12,等等。
需要说明的是,第一数据维度和第二数据维度也可以不是最低维度和次低维度,举例来说,若运算单元的个数为16个,对于上述(3×7×9)的输入数据,确定的第一数据维度和第二数据维度也可以为7和9。那么,确定的第一维度和第二维度可以分别为8和10,或者,16和9。
对于步骤S131,若第一维度等于最低维度,则在最低纬度方向不需要进行补齐处理;同样的,若第二维度等于次低维度,则在次低维度方向不需要进行补齐处理。在进行运算时,沿次低维度方向依次取所述最低维度方向的输入数据输入到运算单元中。
举例来说,假设运算单元的个数为9个,仍然以上述图片的输入数据为例进行说明,输入数据的最低维度为3、次低维度为7,那么第一维度可以为3,第二维度可以为9。在最低维度方向上,不需要进行补齐处理,在次低维度方向上补齐到9维即可,补齐所采用的数据可以为0,补齐后的输入数据可以包含3组如表2所示的数据:
表2补齐后的R(G或者B)值
1 2 3 4 5 6 7 0 0
8 9 .. 0 0
0 0
0 0
0 0
0 0
0 0
0 0
13 15 17 19 0 0
那么,在进行运算时,依次取数据(1,1,1,2,2,2,3,3,3)输入到9个运算单元中进行运算,然后再取(4,4,4,5,5,5,6,6,6)输入到9个运算单元中进行运算,然后再去(7,7,7,0,0,0,0,0,0)输入到9个运算单元中进行运算。
若采用现有技术的方式进行运算,则需要进行7次才能完成第一行数据的运算,采用本公开实施例的输入数据处理方法对输入数据进行处理后,只需要3次即可完成第一行数据的运算。相当于将原来的7维降维到3维,运算效率提升2倍多。
根据以上分析可知,根据本公开实施例的输入数据处理方法,提高运算单元的运算性能,提高了处理器的处理效率。
图3示出根据本公开一实施例的步骤S131的方法的流程图。如图3所示,步骤S131可以包括:
步骤S141,在所述第一维度大于所述最低维度时,在最低维度方向将输入数据补齐到第一维度;
步骤S142,在所述第二维度大于所述次低维度时,在次低维度方向上将输入数据补齐到第二维度。
在一种可能的实现方式中,补齐采用的数据可以为0。
以上述图片的示例为例,假设确定的第一维度为4,第二维度为8。那么,第一维度大于最低维度3,在最低维度方向将输入数据补齐到第一维度,经过步骤S141处理后的输入数据包含:3组如表1所示的数据和1组(9×7)(9行7列)的全0矩阵;第二维度大于次低维度7,在次低维度方向将输入数据补齐后第二维度,经过步骤S142处理后的输入数据包含:3组如表3所示的数据和1组(9×8)的全0矩阵。
表3步骤S142补齐后的R(G或者B)值
1 2 3 4 5 6 7 0
8 9 .. 0
0
0
0
0
0
0
13 15 17 19 0
需要说明的是,以上示例说明同样适用于第一数据维度为读写输入数据时首先被读写的维度方向,而第二数据维度为读写输入数据时第二被读写的维度方向的示例,具体过程类似,本公开不在赘述。
图4示出根据本公开一实施例的输入数据处理方法的流程图。如图4所示,本公开实施例的输入数据处理方法还可以包括:
步骤S14,沿次低维度方向依次取所述最低维度方向的输入数据输入到运算单元中。
或者,沿读写输入数据时第二被读写的维度方向(简称第二方向)依次取所述读写输入数据时首先被读写的维度方向(简称第一方向)的输入数据输入到运算单元中,也就是说,沿第二方向依次取第一方向的输入数据输入到运算单元中,举例来说,在NHWC格式中,沿W维度方向依次取C维度方向的输入数据输入到运算单元中,具体过程如下文中的示例性说明。
具体过程在步骤S13的示例中已经进行了介绍,下面以“3组如表3所示的数据和1组(9×8)的全0矩阵”的输入数据为例进行进一步说明。
在进行运算时,依次取数据(1,1,1,0,2,2,2,0,3,3,3,0,4,4,4,0)输入到16个运算单元中,然后取数据(5,5,5,0,6,6,6,0,7,7,7,0,0,0,0,0)输入到16个运算单元中。
若采用现有技术的方式进行运算,则需要进行7次才能完成第一行数据的运算,采用本公开实施例的输入数据处理方法对输入数据进行处理后,只需要2次即可完成第一行数据的运算。相当于将原来的7维降维到2维,运算效率提升3倍多。
在一种可能的实现方式中,所述第一维度可以为所述个数的约数中大于或等于所述最低维度的最小约数。举例来说,如上所示的例子,第一维度可以为4,或者,第一维度也可以为8,确定第一维度为4,可以补入较少个数的0,将运算性能提到最高。下面对第一维度为4和第一维度为8的情况进行比较说明。
第一维度为4上文中已经进行了介绍,第一维度为8、第二维度为8时,补齐后的输入数据为:3组如表3所示的数据和5组(9×8)的全0矩阵。
在进行运算时,依次取数据(1,1,1,0,0,0,0,0,2,2,2,0,0,0,0,0)输入到16个运算单元中,然后取数据(3,3,3,0,0,0,0,0,4,4,4,0,0,0,0,0)输入到16个运算单元中,然后取数据(5,5,5,0,0,0,0,0,6,6,6,0,0,0,0,0)输入到16个运算单元中,然后取数据(7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0)输入到16个运算单元中。
若采用现有技术的方式进行运算,则需要进行7次才能完成第一行数据的运算,采用上述实施例的输入数据处理方法对输入数据进行处理后,第一维度为8时,只需要4次即可完成第一行数据的运算。相当于将原来的7维降维到4维,运算效率提升接近2倍。相比于现有技术,第一维度为8时运算性能提升明显,第一维度为4时运算效率提升更加明显。
在一种可能的实现方式中,所述第二维度大于或等于所述次低维度,并且所述第二维度与第一维度的乘积可以为所述个数的最小倍数。
具体过程可以参见关于第一维度的说明,不在赘述。
将第一维度和第二维度确定为满足上述条件的最小的数据,可以最大程度的提升运算单元的运算性能,尽可能提高处理器的处理效率。
需要说明的是,本公开上文中所采用的图片的数据仅仅是本公开的一个示例,不以任何方式限制本公开。上述示例中输入数据的维度较小,仅仅为了举例方便,尤其是次低维度在实际应用中通常是很大的,根据本公开实施例的输入数据处理方法进行处理后,运算单元的运算性能提升更加明显。
图5示出根据本公开一实施例的输入数据处理装置的框图。该装置可以应用于处理器。
如图5所示,该装置可以包括:
第一确定模块31,用于根据输入数据的维度以及第一处理器的运算单元的个数确定第一数据维度和第二数据维度;其中,第一数据维度和第二数据维度中的至少一者小于所述运算单元的个数;
第二确定模块32,用于根据所述第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度;其中,第一维度和第二维度的乘积为所述个数的倍数,第一维度和第二维度中小于所述个数的维度为所述个数的约数;
补齐模块33,用于根据所述第一维度、所述第二维度、第一数据维度以及第二数据维度对所述输入数据进行补齐处理。
这样,通过确定输入数据的维度中小于第一处理器的运算单元的个数的一个数据维度,并根据确定的数据维度以及运算单元的个数确定需要将输入数据补齐到的维度:第一维度和第二维度,然后根据第一维度、第二维度、第一数据维度以及第二数据维度对输入数据进行补齐处理。在将输入数据输入到运算单元时,可以根据第一维度和第二维度从输入数据中取数据,相当于将输入数据进行了降维处理,提高运算单元的运算性能,提高了处理器的处理效率。
图6示出根据本公开一实施例的输入数据处理装置的框图。如图6所示,在一种可能的实现方式中,所述补齐模块33可以包括:
第一补齐单元331,用于在所述第一维度大于所述最低维度时,在最低维度方向将输入数据补齐到第一维度;
第二补齐单元332,用于在所述第二维度大于所述次低维度时,在次低维度方向上将输入数据补齐到第二维度。
在一种可能的实现方式中,所述装置还可以包括:
数据获取模块34,用于沿次低维度方向依次取所述最低维度方向的输入数据输入到运算单元中。
在一种可能的实现方式中,所述第二确定模块还用于根据第一数据维度和第二数据维度中的较小者以及所述个数确定第一维度,其中,所述第一维度为所述个数的约数,所述第一维度大于或等于第一数据维度和第二数据维度中的较小者;根据第一数据维度和第二数据维度中的较大者、第一维度以及所述个数确定第二维度,其中,所述第二维度大于或等于第一数据维度和第二数据维度中的较大者。
在一种可能的实现方式中,所述第一数据维度为所述输入数据的维度中的最低维度,所述第二数据维度为所述输入数据的维度中的次低维度,其中,所述次低维度为所述输入数据的维度中仅高于最低维度的维度。
在一种可能的实现方式中,所述第二确定模块还用于根据所述最低维度以及所述个数确定第一维度,其中,所述第一维度大于或等于所述最低维度,所述第一维度为所述个数的约数;根据所述第一维度、所述个数和所述次低维度确定第二维度;其中,所述第二维度大于或等于所述次低维度。
在一种可能的实现方式中,所述补齐模块还用于根据所述第一维度和所述最低维度的关系、以及所述第二维度和所述次低维度的关系对所述输入数据进行补齐处理。
在一种可能的实现方式中,所述第一维度为所述个数的约数中大于或等于所述最低维度的最小约数。
在一种可能的实现方式中,所述第二维度大于或等于所述次低维度,并且所述第二维度与第一维度的乘积为所述个数的最小倍数。
在一种可能的实现方式中,所述输入数据为图像数据。
图7示出根据本公开一实施例的第一处理器的框图。
参阅图7,该第一处理器用于执行机器学习计算,该第一处理器包括:控制器单元141和运算单元142,其中,控制器单元141与运算单元142连接,第一处理器可以包括多个运算单元142,该多个运算单元142包括:一个主处理电路和多个从处理电路;
控制器单元141,用于获取输入数据以及计算指令。该输入数据可以是经过第一处理器进行补齐处理后的数据。
在一种可选方案中,一个主处理电路和多个从处理电路可以为树型结构、H型结构或者脉冲阵列机结构,本公开对主处理电路和从处理电路之前的连接方式不作限定。
在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
控制器单元141,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;
主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
可选的,上述机器学习计算具体可以包括:人工神经网络运算,上述输入数据具体可以包括:输入神经元数据和权值数据。上述计算结果具体可以为:人工神经网络运算的结果即输出神经元数据。
对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
上述机器学习计算还可以包括支持向量机运算,k-近邻(k-nn)运算,k-均值(k-means)运算,主成分分析运算等等。为了描述的方便,下面以人工神经网络运算为例来说明机器学习计算的具体方案。
对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
可选的,上述第一处理器还可以包括:该存储单元140和直接内存访问单元50,存储单元140可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。
可选的,该控制器单元包括:指令存储单元410、指令处理单元411和存储队列单元413;
指令存储单元410,用于存储所述人工神经网络运算关联的计算指令;
所述指令处理单元411,用于对所述计算指令解析得到多个运算指令;
存储队列单元413,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该计算指令的结构可以如下表所示。
操作码 寄存器或立即数 寄存器/立即数
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
Figure BDA0002002197690000191
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
可选的,该控制器单元还可以包括:
所述依赖关系处理单元412,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
本公开可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (24)

1.一种输入数据处理方法,其特征在于,所述方法包括:
根据输入数据的维度以及第一处理器的运算单元的个数确定第一数据维度和第二数据维度;其中,第一数据维度和第二数据维度中的至少一者小于所述运算单元的个数;
根据所述第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度;其中,第一维度和第二维度的乘积为所述个数的倍数,第一维度和第二维度中小于所述个数的维度为所述个数的约数;
根据所述第一维度、所述第二维度、第一数据维度以及第二数据维度对所述输入数据进行补齐处理;
所述根据所述第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度,包括:
根据第一数据维度和第二数据维度中的较小者以及所述个数确定第一维度,其中,所述第一维度为所述个数的约数,所述第一维度大于或等于第一数据维度和第二数据维度中的较小者;
根据第一数据维度和第二数据维度中的较大者、第一维度以及所述个数确定第二维度,其中,所述第二维度大于或等于第一数据维度和第二数据维度中的较大者。
2.根据权利要求1所述的方法,其特征在于:所述第一数据维度为所述输入数据的维度中的最低维度,所述第二数据维度为所述输入数据的维度中的次低维度,其中,所述次低维度为所述输入数据的维度中仅高于最低维度的维度。
3.根据权利要求2所述的方法,其特征在于,根据所述第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度,包括:
根据所述最低维度以及所述个数确定第一维度,其中,所述第一维度大于或等于所述最低维度,所述第一维度为所述个数的约数;
根据所述第一维度、所述个数和所述次低维度确定第二维度;其中,所述第二维度大于或等于所述次低维度。
4.根据权利要求2或3所述的方法,其特征在于,根据所述第一维度、所述第二维度、第一数据维度以及第二数据维度对所述输入数据进行补齐处理,包括:
根据所述第一维度和所述最低维度的关系、以及所述第二维度和所述次低维度的关系对所述输入数据进行补齐处理。
5.根据权利要求2或3所述的方法,其特征在于,所述第一维度为所述个数的约数中大于或等于所述最低维度的最小约数。
6.根据权利要求2或3所述的方法,其特征在于,
所述第二维度大于或等于所述次低维度,并且所述第二维度与第一维度的乘积为所述个数的最小倍数。
7.根据权利要求4所述的方法,其特征在于,根据所述第一维度和所述最低维度的关系、以及所述第二维度和所述次低维度的关系对所述输入数据进行补齐处理,包括:
在所述第一维度大于所述最低维度时,在最低维度方向将输入数据补齐到第一维度;
在所述第二维度大于所述次低维度时,在次低维度方向上将输入数据补齐到第二维度。
8.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
沿次低维度方向依次取最低维度方向的输入数据输入到第一处理器的运算单元中。
9.根据权利要求1或3任意一项所述的方法,其特征在于,所述输入数据为图像数据。
10.一种输入数据处理装置,其特征在于,所述装置包括:
第一确定模块,用于根据输入数据的维度以及第一处理器的运算单元的个数确定第一数据维度和第二数据维度;其中,第一数据维度和第二数据维度中的至少一者小于所述运算单元的个数;
第二确定模块,用于根据所述第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度;其中,第一维度和第二维度的乘积为所述个数的倍数,第一维度和第二维度中小于所述个数的维度为所述个数的约数;
补齐模块,用于根据所述第一维度、所述第二维度、第一数据维度以及第二数据维度对所述输入数据进行补齐处理;
所述第二确定模块还用于根据第一数据维度和第二数据维度中的较小者以及所述个数确定第一维度,其中,所述第一维度为所述个数的约数,所述第一维度大于或等于第一数据维度和第二数据维度中的较小者;根据第一数据维度和第二数据维度中的较大者、第一维度以及所述个数确定第二维度,其中,所述第二维度大于或等于第一数据维度和第二数据维度中的较大者。
11.根据权利要求10所述的装置,其特征在于,所述第一数据维度为所述输入数据的维度中的最低维度,所述第二数据维度为所述输入数据的维度中的次低维度,其中,所述次低维度为所述输入数据的维度中仅高于最低维度的维度。
12.根据权利要求11所述的装置,其特征在于,所述第二确定模块还用于根据所述最低维度以及所述个数确定第一维度,其中,所述第一维度大于或等于所述最低维度,所述第一维度为所述个数的约数;根据所述第一维度、所述个数和所述次低维度确定第二维度;其中,所述第二维度大于或等于所述次低维度。
13.根据权利要求11或12所述的装置,其特征在于,所述补齐模块还用于根据所述第一维度和所述最低维度的关系、以及所述第二维度和所述次低维度的关系对所述输入数据进行补齐处理。
14.根据权利要求11或12所述的装置,其特征在于,所述第一维度为所述个数的约数中大于或等于所述最低维度的最小约数。
15.根据权利要求11或12所述的装置,其特征在于,
所述第二维度大于或等于所述次低维度,并且所述第二维度与第一维度的乘积为所述个数的最小倍数。
16.根据权利要求13所述的装置,其特征在于,所述补齐模块包括:
第一补齐单元,用于在所述第一维度大于所述最低维度时,在最低维度方向将输入数据补齐到第一维度;
第二补齐单元,用于在所述第二维度大于所述次低维度时,在次低维度方向上将输入数据补齐到第二维度。
17.根据权利要求11或12所述的装置,其特征在于,所述装置还包括:
数据获取模块,用于沿次低维度方向依次取最低维度方向的输入数据输入到运算单元中。
18.根据权利要求10或12任意一项所述的装置,其特征在于,所述输入数据为图像数据。
19.一种输入数据处理方法,其特征在于,所述方法包括:
在输入数据的第一数据维度小于第一处理器的运算单元的个数时,根据输入数据的第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度;其中,第一维度为所述个数的约数,且第一维度大于或等于第一数据维度的维度数,第一维度和第二维度的乘积为所述个数的倍数,第二维度大于或等于所述第二数据维度的维度数;
根据所述第一维度、所述第二维度、第一数据维度以及第二数据维度对所述输入数据进行补齐处理;
其中,所述第一数据维度为读写输入数据时首先被读写的维度,第二数据维度为读写输入数据时第二被读写的维度。
20.根据权利要求19所述的方法,其特征在于,根据输入数据的第一数据维度、第二数据维度以及所述个数确定第一维度和第二维度,包括:
根据第一数据维度以及所述个数确定第一维度;
根据第二数据维度、第一维度以及所述个数确定第二维度。
21.根据权利要求19或20所述的方法,其特征在于,所述第一维度为所述个数的最小约数,所述第一维度和第二维度的乘积为所述个数的最小倍数。
22.根据权利要求19所述的方法,其特征在于,根据所述第一维度、所述第二维度、第一数据维度以及第二数据维度对所述输入数据进行补齐处理,包括:
在所述第一维度大于所述第一数据维度的维度数时,在第一数据维度方向将输入数据补齐到第一维度;
在所述第二维度大于所述第二数据维度的维度数时,在第二数据维度方向上将输入数据补齐到第二维度。
23.一种输入数据处理装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述指令实现权利要求1-9任意一项所述方法。
24.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至9中任意一项所述的方法。
CN201910216313.3A 2019-03-21 2019-03-21 运算方法、装置及相关产品 Active CN111723917B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201910216313.3A CN111723917B (zh) 2019-03-21 2019-03-21 运算方法、装置及相关产品
US16/824,298 US20200301704A1 (en) 2019-03-21 2020-03-19 Operation method, apparatus and related product
EP20164393.9A EP3712785B1 (en) 2019-03-21 2020-03-20 Operation method, apparatus and related products

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910216313.3A CN111723917B (zh) 2019-03-21 2019-03-21 运算方法、装置及相关产品

Publications (2)

Publication Number Publication Date
CN111723917A CN111723917A (zh) 2020-09-29
CN111723917B true CN111723917B (zh) 2022-11-01

Family

ID=70475942

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910216313.3A Active CN111723917B (zh) 2019-03-21 2019-03-21 运算方法、装置及相关产品

Country Status (3)

Country Link
US (1) US20200301704A1 (zh)
EP (1) EP3712785B1 (zh)
CN (1) CN111723917B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116108902B (zh) * 2023-02-22 2024-01-05 成都登临科技有限公司 采样操作实现***、方法、电子设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8583896B2 (en) * 2009-11-13 2013-11-12 Nec Laboratories America, Inc. Massively parallel processing core with plural chains of processing elements and respective smart memory storing select data received from each chain
JP6699738B2 (ja) * 2016-01-29 2020-05-27 日本電気株式会社 情報処理装置、情報処理方法、及び、コンピュータプログラム
US9875104B2 (en) * 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
CN106940815B (zh) * 2017-02-13 2020-07-28 西安交通大学 一种可编程卷积神经网络协处理器ip核
US10354733B1 (en) * 2017-10-17 2019-07-16 Xilinx, Inc. Software-defined memory bandwidth reduction by hierarchical stream buffering for general matrix multiplication in a programmable IC
CN107832842B (zh) * 2017-11-28 2020-05-22 南京地平线机器人技术有限公司 针对折叠特征数据执行卷积运算的方法和装置
CN108804684B (zh) * 2018-06-13 2020-11-03 北京搜狗科技发展有限公司 一种数据处理方法和装置

Also Published As

Publication number Publication date
EP3712785B1 (en) 2022-05-18
EP3712785A3 (en) 2020-10-14
EP3712785A2 (en) 2020-09-23
US20200301704A1 (en) 2020-09-24
CN111723917A (zh) 2020-09-29

Similar Documents

Publication Publication Date Title
Huang et al. Flowformer: A transformer architecture for optical flow
US11568258B2 (en) Operation method
US20170372202A1 (en) Tensor processing using low precision format
CN109711539B (zh) 运算方法、装置及相关产品
EP3944157A1 (en) Device and method for performing training of convolutional neural network
KR101298393B1 (ko) 그래픽 처리 유닛 상에서 콘볼루션 신경망을 트레이닝하는방법
US20230214652A1 (en) Method and apparatus with bit-serial data processing of a neural network
JP2020513637A (ja) データ管理のためのシステム及び方法
JP2020533691A (ja) Simd命令を用いた効率的な直接畳み込み
CN111160485B (zh) 基于回归训练的异常行为检测方法、装置及电子设备
CN111465943B (zh) 一种集成电路和用于神经网络处理的方法
US20210295168A1 (en) Gradient compression for distributed training
CN106855952B (zh) 基于神经网络的计算方法及装置
US11983616B2 (en) Methods and apparatus for constructing digital circuits for performing matrix operations
US11967043B2 (en) Gaming super resolution
US11775832B2 (en) Device and method for artificial neural network operation
US20190205728A1 (en) Method for visualizing neural network models
US20230196113A1 (en) Neural network training under memory restraint
CN111695682A (zh) 运算方法、装置及相关产品
US10747845B2 (en) System, method and apparatus for computationally efficient data manipulation
CN111723917B (zh) 运算方法、装置及相关产品
US11435941B1 (en) Matrix transpose hardware acceleration
US11636569B1 (en) Matrix transpose hardware acceleration
CN109375952B (zh) 用于存储数据的方法和装置
CN112651420A (zh) 训练图像分类模型的***及方法和对图像进行分类的方法

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
GR01 Patent grant
GR01 Patent grant