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

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

Info

Publication number
CN112765539B
CN112765539B CN201911061078.3A CN201911061078A CN112765539B CN 112765539 B CN112765539 B CN 112765539B CN 201911061078 A CN201911061078 A CN 201911061078A CN 112765539 B CN112765539 B CN 112765539B
Authority
CN
China
Prior art keywords
data
sub
transformation
result
unit
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
CN201911061078.3A
Other languages
English (en)
Other versions
CN112765539A (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 CN201911061078.3A priority Critical patent/CN112765539B/zh
Priority to PCT/CN2020/113160 priority patent/WO2021082722A1/zh
Publication of CN112765539A publication Critical patent/CN112765539A/zh
Application granted granted Critical
Publication of CN112765539B publication Critical patent/CN112765539B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/15Correlation function computation including computation of convolution operations
    • 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
    • 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/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

Abstract

本公开涉及一种运算装置、方法及相关产品,该装置包括:主控制单元、从控制单元、存储单元、主运算单元、以及从运算单元。本公开能够有效提升深度学习网络在硬件架构上的能效比和运算速度,提高深度学习网络的性能。

Description

运算装置、方法及相关产品
技术领域
本公开涉及计算机技术领域,尤其涉及一种运算装置、方法及相关产品。
背景技术
伴随着大数据、机器学习等新兴技术的成熟,越来越多的任务中包含了各种各样的矩阵运算,而矩阵运算的速度决定了计算机算法的运算速度。
目前,热门的深度学习网络中就包含着大量的矩阵乘运算。在深度学习网络的全连接层中,输出神经元的运算表达式为y=f(wx+b),其中w是权值矩阵,x是输入向量,b是偏置向量,计算输出矩阵y的过程为矩阵w与向量x相乘,加上向量b,然后对得到的向量进行激活函数运算(即对矩阵中的每个元素进行激活函数运算)。在这个过程中,矩阵乘向量运算的复杂度远高于之后的加偏置和做激活的操作,高效的实现前者对于整个运算过程有着最重要的影响。
但是,在硬件实现过程中,原始卷积的乘法运算开销大,使得深度学习网络的能效比低,运算时间长。
发明内容
本公开提供一种运算装置、方法及相关产品,以提升深度学习网络在硬件架构上的能效比和运算速度,提高深度学习网络的性能。
第一方面,本公开提供了一种运算装置,包括:主控制单元、从控制单元、存储单元、主运算单元、以及从运算单元;
所述主控制单元,用于发送第一控制指令,所述第一控制指令用于指示所述主运算单元进行winograd卷积运算中的正变换运算,以及指示所述从控制单元发送第二控制指令,所述第二控制指令用于指示所述从运算单元进行winograd卷积运算中的乘加运算和逆变换运算;
所述存储单元,用于存储用于winograd卷积运算的数据;
所述主运算单元,用于响应所述第一控制指令,从所述存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;其中,所述正变换运算被拆解为求和运算;
所述从运算单元,用于响应所述第二控制指令,从所述主运算单元中获取正变换运算结果,以及从所述存储单元中提取数据,并进行winograd卷积运算中的乘加运算和逆变换运算,得到winograd卷积运算结果;其中,所述逆变换运算被拆解为求和运算。
第二方面,本公开提供了一种神经网络运算装置,所述神经网络运算装置包括一个或者多个如第一方面中所述的运算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过I/O接口传递给其他处理装置;
当所述神经网络运算装置包含多个所述运算装置时,多个所述运算装置通过特定的结构进行连接并传输数据;
其中,多个所述运算装置通过快速外部设备互连总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述运算装置共享同一控制系统或拥有各自的控制系统;多个所述运算装置共享内存或者拥有各自的内存;多个所述运算装置的互联方式是任意互联拓扑。
第三方面,本公开提供了一种人工智能芯片,所述芯片包括如第一方面中任意一项所述的运算装置。
第四方面,本公开提供了一种电子设备,所述电子设备包括如第三方面所述的人工智能芯片。
第五方面,本公开提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如第三方面所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
第六方面,本公开提供了一种运算方法,应用于运算装置,所述运算装置包括:主控制单元、从控制单元、存储单元、主运算单元、以及从运算单元;所述方法包括:
所述主控制单元发送第一控制指令,所述第一控制指令用于指示所述主运算单元进行winograd卷积运算中的正变换运算,以及指示所述从控制单元发送第二控制指令,所述第二控制指令用于指示所述从运算单元进行winograd卷积运算中的乘加运算和逆变换运算;
所述存储单元存储用于winograd卷积运算的数据;
所述主运算单元响应所述第一控制指令,从所述存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;其中,所述正变换运算被拆解为求和运算;
所述从运算单元响应所述第二控制指令,从所述主运算单元中获取正变换运算结果,以及从所述存储单元中提取数据,并进行winograd卷积运算中的乘加运算和逆变换运算,得到winograd卷积运算结果;其中,所述逆变换运算被拆解为求和运算。
本公开提供的运算装置、方法及相关产品,运算装置中设置有主控制单元、从控制单元、存储单元、主运算单元、以及从运算单元;主控制单元发送第一控制指令,第一控制指令用于指示主运算单元进行winograd卷积运算中的正变换运算,以及指示从控制单元发送第二控制指令,第二控制指令用于指示从运算单元进行winograd卷积运算中的乘加运算和逆变换运算;存储单元存储用于winograd卷积运算的数据;主运算单元响应第一控制指令,从存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;其中,正变换运算被拆解为求和运算;从运算单元响应第二控制指令,从主运算单元中获取正变换运算结果,以及从存储单元中提取数据,并进行winograd卷积运算中的乘加运算和逆变换运算,得到winograd卷积运算结果;其中,逆变换运算被拆解为求和运算。从而能够有效提升深度学习网络在硬件架构上的能效比和运算速度,提高深度学习网络的性能。
本公开可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1为本申请一实施例提供的运算装置的结构示意图;
图2为本申请另一实施例提供的运算装置的结构示意图;
图3为本申请又一实施例提供的运算装置的流水时序图;
图4为本申请又一实施例提供的运算方法的流程示意图;
图5为根据本公开实施例的运算方法的处理系统的示意图;
图6为根据本公开实施例的板卡的结构框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了清楚理解本申请的技术方案,下面对现有技术和本申请实施例中涉及的技术术语进行解释:
卷积运算:卷积运算是指从图像的左上角开始,开一个与模板同样大小的活动窗口,活动窗口对应一个窗口图像,该窗口图像为卷积核,窗口图像与图像中的像素对应起来相乘再相加,并用计算结果作为卷积运算后新图像的第一个像素值。然后,活动窗口向右移动一列,并作同样的运算。以此类推,从左到右、从上到下,即可得到一幅新图像。
winograd卷积:Winograd卷积是一种基于多项式插值算法的卷积加速实现方式。它通过对卷积操作的两个输入:第一目标矩阵和第二目标矩阵分别进行winograd卷积正变换,再将正变换后的第一目标矩阵和第二目标矩阵进行对位乘法,最后对对位乘法结果再次进行winograd卷积逆变换,得到与原卷积操作等价的卷积结果。
卷积神经网络:卷积神经网络技术是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。在卷积神经网络技术中的卷积层,全连接层等网络层中均需要神经元与卷积核进行卷积运算,得到特征数据。
图1为本申请一实施例提供的运算装置的结构示意图,如图1所示,本实施例中的装置可以包括:主控制单元、从控制单元、存储单元、主运算单元、以及从运算单元;主控制单元,用于发送第一控制指令,第一控制指令用于指示主运算单元进行winograd卷积运算中的正变换运算,以及指示从控制单元发送第二控制指令,第二控制指令用于指示从运算单元进行winograd卷积运算中的乘加运算和逆变换运算;存储单元,用于存储用于winograd卷积运算的数据;主运算单元,用于响应第一控制指令,从存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;其中,正变换运算被拆解为求和运算;从运算单元,用于响应第二控制指令,从主运算单元中获取正变换运算结果,以及从存储单元中提取数据,并进行winograd卷积运算中的乘加运算和逆变换运算,得到winograd卷积运算结果;其中,逆变换运算被拆解为求和运算。
本实施例中,主控制单元和从控制单元接收运算控制信号,并对该运算控制信号进行译码处理,得到相应的第一控制指令和第二控制指令,然后主控制单元将第一控制指令发送给主运算单元,将第二控制指令发送给从运算单元;主运算单元响应第一控制指令,从存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;从运算单元响应第二控制指令,从主运算单元中获取正变换运算结果,以及从存储单元中提取数据,并进行winograd卷积运算中的乘加运算和逆变换运算,得到winograd卷积运算结果。
本实施例中,通过在运算装置中设置有主控制单元、从控制单元、存储单元、主运算单元、以及从运算单元;主控制单元发送第一控制指令,第一控制指令用于指示主运算单元进行winograd卷积运算中的正变换运算,以及指示从控制单元发送第二控制指令,第二控制指令用于指示从运算单元进行winograd卷积运算中的乘加运算和逆变换运算;存储单元存储用于winograd卷积运算的数据;主运算单元响应第一控制指令,从存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;从运算单元响应第二控制指令,从主运算单元中获取正变换运算结果,以及从存储单元中提取数据,并进行winograd卷积运算中的乘加运算和逆变换运算,得到winograd卷积运算结果。由于主运算单元的正变换运算被拆解为求和运算,从运算单元的逆变换运算被拆解为求和运算;从而能够有效提升深度学习网络在硬件架构上的能效比和运算速度,提高深度学习网络的性能。
图2为本申请另一实施例提供的运算装置的结构示意图,如图2所示,本实施例中的装置可以包括:主控制单元、从控制单元、主存储单元、从存储单元主运算单元,以及从运算单元。
在第一种可选的实施方式中,主存储单元,用于接收特征数据并存储;从存储单元,用于接收权值数据的正变换数据并存储。
本实施例中,主运算单元从主存储单元获取特征数据,并将特征数据拆解为多个子张量;对多个子张量进行变换运算并求和,根据求和运算的结果得到特征数据的正变换数据。
可选地,主运算单元从特征数据解析得到多个子张量,其中,特征数据为多个子张量之和,多个子张量的个数与特征数据中非0元素的个数相同,每个子张量中有单个非0元素,且在子张量中的非0元素与在特征数据中对应位置的非0元素相同。主运算单元获取各子张量对应的元子张量的winograd变换结果,其中,元子张量是将子张量的非0元素置为1的张量;将子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到特征数据的正变换数据。主运算单元对于每一个子张量,将子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到元子张量的winograd变换结果,其中,左乘矩阵和右乘矩阵都是由子张量的规模以及winograd变换类型确定的,其中winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
本实施例中,从运算单元还可以将winograd卷积运算结果存储到存储单元的预设地址空间中。这种方式可以实现运算结果的定向存储,充分利用存储空间。
本实施例中,主运算单元与多个从运算单元通信连接,不同的从运算单元负责对不同正变换运算结果的运算。这种设计方式可以提高运算能力和运算效率,实现异步运算。
本实施例中,从运算单元从从存储单元获取权值数据的正变换数据,然后将特征数据的正变换数据和权值数据的正变换数据进行对位乘法运算,得到乘法运算结果;将乘法运算结果拆解为多个子张量;对多个子张量进行变换运算并求和,得到winograd卷积运算结果。
可选地,从运算单元从乘法运算结果解析得到多个子张量,其中,乘法运算结果为多个子张量之和,多个子张量的个数与乘法运算结果中非0元素的个数相同,每个子张量中有单个非0元素,且在子张量中的非0元素与在乘法运算结果中对应位置的非0元素相同。
本实施例中,从运算单元获取各子张量对应的元子张量的winograd变换结果,其中,元子张量是将子张量的非0元素置为1的张量;将子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到winograd卷积运算结果。从运算单元对于每一个子张量,将子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到元子张量的winograd变换结果,其中,左乘矩阵和右乘矩阵都是由子张量的规模以及winograd变换类型确定的,其中winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
在第二种可选的实施方式中,主存储单元,用于接收特征数据并存储;从存储单元,用于接收权值数据并存储。
本实施例中,主运算单元从主存储单元中获取特征数据,并将特征数据拆解为多个子张量;对多个子张量进行变换运算并求和,根据求和运算的结果得到特征数据的正变换数据。
可选地,主运算单元从特征数据解析得到多个子张量,其中,特征数据为多个子张量之和,多个子张量的个数与特征数据中非0元素的个数相同,每个子张量中有单个非0元素,且在子张量中的非0元素与在特征数据中对应位置的非0元素相同。主运算单元获取各子张量对应的元子张量的winograd变换结果,其中,元子张量是将子张量的非0元素置为1的张量;将子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到特征数据的正变换数据。
本实施例中,主运算单元对于每一个子张量,将子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到元子张量的winograd变换结果,其中,左乘矩阵和右乘矩阵都是由子张量的规模以及winograd变换类型确定的,其中winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
本实施例中,从运算单元从从存储单元中获取权值数据,并将权值数据拆解为多个子张量;对多个子张量进行变换运算并求和,根据求和运算的结果得到权值数据的正变换数据。从运算单元将特征数据的正变换数据和权值数据的正变换数据进行对位乘法运算,得到乘法运算结果;将乘法运算结果拆解为多个子张量;对多个子张量进行变换运算并求和,得到winograd卷积运算结果。
可选地,从运算单元从乘法运算结果解析得到多个子张量,其中,乘法运算结果为多个子张量之和,多个子张量的个数与乘法运算结果中非0元素的个数相同,每个子张量中有单个非0元素,且在子张量中的非0元素与在乘法运算结果中对应位置的非0元素相同。从运算单元获取各子张量对应的元子张量的winograd变换结果,其中,元子张量是将子张量的非0元素置为1的张量;将子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到winograd卷积运算结果。
本实施例中,从运算单元对于每一个子张量,将子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到元子张量的winograd变换结果,其中,左乘矩阵和右乘矩阵都是由子张量的规模以及winograd变换类型确定的,其中winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
在第三种可选的实施方式中,主存储单元,用于接收特征数据和权值数据并存储;从存储单元,用于接收权值数据的正变换数据并存储。
本实施例中,主运算单元从主存储单元中获取特征数据,并将特征数据拆解为多个子张量;对多个子张量进行变换运算并求和,根据求和运算的结果得到特征数据的正变换数据。
可选地,主运算单元从特征数据解析得到多个子张量,其中,特征数据为多个子张量之和,多个子张量的个数与特征数据中非0元素的个数相同,每个子张量中有单个非0元素,且在子张量中的非0元素与在特征数据中对应位置的非0元素相同。
本实施例中,主运算单元获取各子张量对应的元子张量的winograd变换结果,其中,元子张量是将子张量的非0元素置为1的张量;将子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到特征数据的正变换数据。主运算单元对于每一个子张量,将子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到元子张量的winograd变换结果,其中,左乘矩阵和右乘矩阵都是由子张量的规模以及winograd变换类型确定的,其中winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
本实施例中,主运算单元将权值数据拆解为多个子张量;对多个子张量进行变换运算并求和,根据求和运算的结果得到权值数据的正变换数据;将权值数据的正变换数据发送给从存储单元。从运算单元从从存储单元中获取权值数据的正变换数据,并将特征数据的正变换数据和权值数据的正变换数据进行对位乘法运算,得到乘法运算结果;将乘法运算结果拆解为多个子张量;对多个子张量进行变换运算并求和,得到winograd卷积运算结果。
可选地,从运算单元从乘法运算结果解析得到多个子张量,其中,乘法运算结果为多个子张量之和,多个子张量的个数与乘法运算结果中非0元素的个数相同,每个子张量中有单个非0元素,且在子张量中的非0元素与在乘法运算结果中对应位置的非0元素相同。从运算单元获取各子张量对应的元子张量的winograd变换结果,其中,元子张量是将子张量的非0元素置为1的张量;将子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到winograd卷积运算结果。从运算单元对于每一个子张量,将子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到元子张量的winograd变换结果,其中,左乘矩阵和右乘矩阵都是由子张量的规模以及winograd变换类型确定的,其中winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
在第四种可选的实施方式中,主运算单元包括:主处理模块和缓存;主处理模块,用于响应第一控制指令,从存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;缓存,用于存储正变换运算结果。
本实施例中,可以在缓存存储的正变换运算结果累积到预设数量时,向从运算单元发送正变换运算结果。这种设计方式可以整合从运算单元的处理数据,避免从运算单元一直处于运算状态。
在第五种可选的实施方式中,主运算单元和从运算单元的运算过程为并行运算,在主运算单元对特征数据的正变换数据计算完成之前,从运算单元针对已计算出的特征数据的正变换数据的元素位置和对应的权值数据的正变换数据的元素位置进行对位乘法运算,直至计算出各元素位置的对位乘法运算值,获得乘法运算结果。
本实施例中,主存储单元中存储的特征数据被划分为多个用于winograd卷积运算的第一数据,第一数据的尺寸根据卷积核的尺寸确定;从存储单元中存储的权值数据的正变换数据被划分为多个用于winograd卷积运算的第二数据,第二数据的尺寸根据第一数据的尺寸确定;主运算单元的主处理模块,响应主控制单元发送的第一控制指令,从主存储单元中依次获取第一数据,对第一数据进行正变换运算得到第一数据的正变换结果,并将第一数据的正变换结果存储在缓存中;当缓存中的第一数据的正变换结果达到预设数量时,主运算单元的主处理模块将缓存中的第一数据的正变换结果依次发送给从运算单元;从运算单元响应从控制单元发送的第二控制指令,从从存储单元中获取第二数据,将第一数据的正变换结果与第二数据进行对位乘运算,得到对位乘运算结果,并对对位乘运算结果进行逆变换运算,得到逆变换结果;从运算单元根据逆变换结果得到winograd卷积运算结果,并将winograd卷积运算结果发送给主存储单元进行存储。
图3为本申请又一实施例提供的运算装置的流水时序图;如图3所示,从功能单元、主处理模块为运算模块;缓存、主处理内存、从处理内存为存储模块。主处理内存和从处理内存中预先存储的输入数据是进行切分之后的数据。主功能单元to主处理内存,表示主处理内存向主功能单元发送特征数据。具体地,以输入规模4x4,卷积核规模3x3,stride=1,输出规模2x2的卷积为例进行详细说明。假设m表示沿高度和宽度方向切分的特征数据块数,n表示沿Cout方向切分的权值数据块数;k<=4,表示Cin方向的切分数目,res(0,0)…(1,0)表示输出的运算结果。bd(i,j)表示bottom_data切分后的沿高度和宽度方向的第i个,沿Cin方向的第j个数据块;其中,数据块的大小为16*16*512bit,即syn_reuse_iter个kernel大小的块,syn_reuse_iter表示权值复用次数,kernel表示winograd变换的最基本单元。Wino_bd(i,j)表示winograd变换后的winograd域的bottom_data块。Wino_w(i,j)表示经过变换的winograd域weight的Cout方向的第i个,Cin方向的第j个数据块,且数据块大小为64*16*512bit,与特征数据块相对应,总数据块的数量为n*k,n=Cout/64,k<=4。bd(i,j)表示经过主处理模块计算后得到bottom_data变换结果Wino_bd(i1,j1),然后将变换结果向从功能单元发送,并与相应的Wino_w(i2,j2)进行对位乘法运算,以及逆变换运算,得到运算结果。
需要说明的是,当缓存To从功能单元与从处理内存To从功能单元过程中,若发送数据块的编号变化时,会反映出相关的数据复用关系。另外,从功能单元To主处理内存的输出为间隔输出,即在Cin方向可以累加的数据会暂存在从功能单元中。上述过程,需要按照块为单位进行循环,循环最低维为Cin,即沿Cin方向将变换后的块进行运算。Cin方向计算过程中,在从功能单元缓存的输出结果时不立刻进行输出,而是等待Cin方向累加结束后进行输出。其中Cin方向的循环次数<=4,否则需要进行重复变换。主功能单元bottom_data变换后的结果不需要在特征数据块完成正变换之后再向从功能单元发送。从功能单元逆变换后的结果也可以在部分运算完成后直接进行输出,而不用等待整个kernel的结果都变换完成之后再输出。上述设计方式,可以减小数据运算的延时,提高运算速率。
本实施例中,通过在运算装置中设置有主控制单元、从控制单元、主存储单元、从存储单元、主运算单元、以及从运算单元;主控制单元发送第一控制指令,第一控制指令用于指示主运算单元进行winograd卷积运算中的正变换运算,以及指示从控制单元发送第二控制指令,第二控制指令用于指示从运算单元进行winograd卷积运算中的乘加运算和逆变换运算;存储单元存储用于winograd卷积运算的数据;主运算单元响应第一控制指令,从主存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;从运算单元响应第二控制指令,从主运算单元中获取正变换运算结果,以及从从存储单元中提取数据,并进行winograd卷积运算中的乘加运算和逆变换运算,得到winograd卷积运算结果。由于主运算单元的正变换运算被拆解为求和运算,从运算单元的逆变换运算被拆解为求和运算;从而能够有效提升深度学习网络在硬件架构上的能效比和运算速度,提高深度学习网络的性能。
本公开提供了一种神经网络运算装置,神经网络运算装置包括一个或者多个如图1、图2中的运算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过I/O接口传递给其他处理装置;当神经网络运算装置包含多个运算装置时,多个运算装置通过特定的结构进行连接并传输数据;其中,多个运算装置通过快速外部设备互连总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个运算装置共享同一控制系统或拥有各自的控制系统;多个运算装置共享内存或者拥有各自的内存;多个运算装置的互联方式是任意互联拓扑。
图4为本申请又一实施例提供的运算方法的流程示意图,如图4所示,本实施例中的方法应用于图1、图2所示的运算装置中,方法可以包括:
步骤S101、主控制单元发送第一控制指令,第一控制指令用于指示主运算单元进行winograd卷积运算中的正变换运算,以及指示从控制单元发送第二控制指令,第二控制指令用于指示从运算单元进行winograd卷积运算中的乘加运算和逆变换运算。
步骤S102、主运算单元响应第一控制指令,从存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;其中,正变换运算被拆解为求和运算。
步骤S103、从运算单元响应第二控制指令,从主运算单元中获取正变换运算结果,以及从存储单元中提取数据,并进行winograd卷积运算中的乘加运算和逆变换运算,得到winograd卷积运算结果;其中,逆变换运算被拆解为求和运算。
在一种可能的设计中,存储单元包括:主存储单元和从存储单元;
主存储单元,用于接收特征数据并存储;
从存储单元,用于接收权值数据的正变换数据并存储。
在一种可能的设计中,主运算单元,具体用于将特征数据拆解为多个子张量;对多个子张量进行变换运算并求和,根据求和运算的结果得到特征数据的正变换数据。
在一种可能的设计中,主运算单元,具体用于从特征数据解析得到多个子张量,其中,特征数据为多个子张量之和,多个子张量的个数与特征数据中非0元素的个数相同,每个子张量中有单个非0元素,且在子张量中的非0元素与在特征数据中对应位置的非0元素相同。
在一种可能的设计中,主运算单元,具体用于获取各子张量对应的元子张量的winograd变换结果,其中,元子张量是将子张量的非0元素置为1的张量;将子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到特征数据的正变换数据。
在一种可能的设计中,主运算单元,具体用于对于每一个子张量,将子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到元子张量的winograd变换结果,其中,左乘矩阵和右乘矩阵都是由子张量的规模以及winograd变换类型确定的,其中winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
在一种可能的设计中,从运算单元,具体用于将特征数据的正变换数据和权值数据的正变换数据进行对位乘法运算,得到乘法运算结果;
将乘法运算结果拆解为多个子张量;对多个子张量进行变换运算并求和,得到winograd卷积运算结果。
在一种可能的设计中,从运算单元,具体用于从乘法运算结果解析得到多个子张量,其中,乘法运算结果为多个子张量之和,多个子张量的个数与乘法运算结果中非0元素的个数相同,每个子张量中有单个非0元素,且在子张量中的非0元素与在乘法运算结果中对应位置的非0元素相同。
在一种可能的设计中,从运算单元,具体用于获取各子张量对应的元子张量的winograd变换结果,其中,元子张量是将子张量的非0元素置为1的张量;将子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到winograd卷积运算结果。
在一种可能的设计中,从运算单元,具体用于对于每一个子张量,将子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到元子张量的winograd变换结果,其中,左乘矩阵和右乘矩阵都是由子张量的规模以及winograd变换类型确定的,其中winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
在一种可能的设计中,存储单元包括:主存储单元和从存储单元;
主存储单元,用于接收特征数据并存储;
从存储单元,用于接收权值数据并存储。
在一种可能的设计中,从运算单元,还用于将权值数据拆解为多个子张量;对多个子张量进行变换运算并求和,根据求和运算的结果得到权值数据的正变换数据。
在一种可能的设计中,存储单元包括:主存储单元和从存储单元;
主存储单元,用于接收特征数据和权值数据并存储;
从存储单元,用于接收权值数据的正变换数据并存储。
在一种可能的设计中,主运算单元,还用于将权值数据拆解为多个子张量;对多个子张量进行变换运算并求和,根据求和运算的结果得到权值数据的正变换数据;
将权值数据的正变换数据发送给从存储单元。
在一种可能的设计中,主运算单元包括:主处理模块和缓存;
主处理模块,用于响应第一控制指令,从存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;
缓存,用于存储正变换运算结果。
在一种可能的设计中,缓存还用于在存储的正变换运算结果累积到预设数量时,向从运算单元发送正变换运算结果。
在一种可能的设计中,从运算单元还用于,将winograd卷积运算结果存储到存储单元的预设地址空间中。
在一种可能的设计中,主运算单元与多个从运算单元通信连接,不同的从运算单元负责对不同正变换运算结果的运算。
在一种可能的设计中,主运算单元和从运算单元的运算过程为并行运算,在主运算单元对特征数据的正变换数据计算完成之前,从运算单元针对已计算出的特征数据的正变换数据的元素位置和对应的权值数据的正变换数据的元素位置进行对位乘法运算,直至计算出各元素位置的对位乘法运算值,获得乘法运算结果。
在一种可能的设计中,主存储单元中存储的特征数据被划分为多个用于winograd卷积运算的第一数据,第一数据的尺寸根据卷积核的尺寸确定;
从存储单元中存储的权值数据的正变换数据被划分为多个用于winograd卷积运算的第二数据,第二数据的尺寸根据第一数据的尺寸确定;
主运算单元的主处理模块,响应主控制单元发送的第一控制指令,从主存储单元中依次获取第一数据,对第一数据进行正变换运算得到第一数据的正变换结果,并将第一数据的正变换结果存储在缓存中;
当缓存中的第一数据的正变换结果达到预设数量时,主运算单元的主处理模块将缓存中的第一数据的正变换结果依次发送给从运算单元;
从运算单元响应从控制单元发送的第二控制指令,从从存储单元中获取第二数据,将第一数据的正变换结果与第二数据进行对位乘运算,得到对位乘运算结果,并对对位乘运算结果进行逆变换运算,得到逆变换结果;
从运算单元根据逆变换结果得到winograd卷积运算结果,并将winograd卷积运算结果发送给主存储单元进行存储。
根据本公开实施例的运算方法可应用于包括多个处理器(多核)的处理系统(例如人工智能芯片)的任意一个处理器中。该处理器可以是通用处理器,例如CPU(CentralProcessing Unit,中央处理器),也可以是用于执行人工智能运算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括GPU(GraphicsProcessing Unit,图形处理单元)、NPU(Neural-Network Processing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对处理器的具体类型不作限制。此外,处理系统中的多个处理器的类型可以相同或不同,本公开对此不作限制。
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。
图5为根据本公开实施例的运算方法的处理系统的示意图。如图5所示,处理系统10包括多个处理器11以及存储器12,多个处理器11用于执行指令序列,存储器12用于存储数据,可包括随机存储器(RAM,Random Access Memory)和寄存器堆。处理系统10中的多个处理器11既可共用部分存储空间,例如共用部分RAM存储空间和寄存器堆,又可同时拥有各自的存储空间。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random AccessMemory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述运算装置。
在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,人工智能芯片与存储器件、控制器件以及接口装置分别连接;存储器件,用于存储数据;接口装置,用于实现人工智能芯片与外部设备之间的数据传输;控制器件,用于对人工智能芯片的状态进行监控。
图6为根据本公开实施例的板卡的结构框图,参阅图6,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
存储器件390与人工智能芯片通过总线连接,用于存储数据。存储器件可以包括多组存储单元393。每一组存储单元与人工智能芯片通过总线连接。可以理解,每一组存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,存储装置可以包括4组存储单元。每一组存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,人工智能芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在芯片中设置控制DDR的控制器,用于对每个存储单元的数据传输与数据存储的控制。
接口装置与人工智能芯片电连接。接口装置用于实现人工智能芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,接口单元能够实现转接功能即可。另外,人工智能芯片的计算结果仍由接口装置传送回外部设备(例如服务器)。
控制器件与人工智能芯片电连接。控制器件用于对人工智能芯片的状态进行监控。具体的,人工智能芯片与控制器件可以通过SPI接口电连接。控制器件可以包括单片机(Micro Controller Unit,MCU)。如人工智能芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,人工智能芯片可以处于多负载和轻负载等不同的工作状态。通过控制装置可以实现对人工智能芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
交通工具包括飞机、轮船和/或车辆;家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、B超仪和/或心电图仪。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
条款1、一种运算装置,装置用于进行winograd卷积运算,包括:主控制单元、从控制单元、存储单元、主运算单元、以及从运算单元;
主控制单元,用于发送第一控制指令,第一控制指令用于指示主运算单元进行winograd卷积运算中的正变换运算,以及指示从控制单元发送第二控制指令,第二控制指令用于指示从运算单元进行winograd卷积运算中的乘加运算和逆变换运算;
存储单元,用于存储用于winograd卷积运算的数据;
主运算单元,用于响应第一控制指令,从存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;其中,正变换运算被拆解为求和运算;
从运算单元,用于响应第二控制指令,从主运算单元中获取正变换运算结果,以及从存储单元中提取数据,并进行winograd卷积运算中的乘加运算和逆变换运算,得到winograd卷积运算结果;其中,逆变换运算被拆解为求和运算。
条款2、根据条款1的运算装置,存储单元包括:主存储单元和从存储单元;
主存储单元,用于接收特征数据并存储;
从存储单元,用于接收权值数据的正变换数据并存储。
条款3、根据条款2的运算装置,
主运算单元,具体用于将特征数据拆解为多个子张量;对多个子张量进行变换运算并求和,根据求和运算的结果得到特征数据的正变换数据。
条款4、根据条款3的运算装置,
主运算单元,具体用于从特征数据解析得到多个子张量,其中,特征数据为多个子张量之和,多个子张量的个数与特征数据中非0元素的个数相同,每个子张量中有单个非0元素,且在子张量中的非0元素与在特征数据中对应位置的非0元素相同。
条款5、根据条款4的运算装置,
主运算单元,具体用于获取各子张量对应的元子张量的winograd变换结果,其中,元子张量是将子张量的非0元素置为1的张量;将子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到特征数据的正变换数据。
条款6、根据条款5的运算装置,主运算单元,具体用于对于每一个子张量,将子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到元子张量的winograd变换结果,其中,左乘矩阵和右乘矩阵都是由子张量的规模以及winograd变换类型确定的,其中winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
条款7、根据条款2的运算装置,
从运算单元,具体用于将特征数据的正变换数据和权值数据的正变换数据进行对位乘法运算,得到乘法运算结果;
将乘法运算结果拆解为多个子张量;对多个子张量进行变换运算并求和,得到winograd卷积运算结果。
条款8、根据条款7的运算装置,
从运算单元,具体用于从乘法运算结果解析得到多个子张量,其中,乘法运算结果为多个子张量之和,多个子张量的个数与乘法运算结果中非0元素的个数相同,每个子张量中有单个非0元素,且在子张量中的非0元素与在乘法运算结果中对应位置的非0元素相同。
条款9、根据条款8的运算装置,
从运算单元,具体用于获取各子张量对应的元子张量的winograd变换结果,其中,元子张量是将子张量的非0元素置为1的张量;将子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到winograd卷积运算结果。
条款10、根据条款9的运算装置,从运算单元,具体用于对于每一个子张量,将子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到元子张量的winograd变换结果,其中,左乘矩阵和右乘矩阵都是由子张量的规模以及winograd变换类型确定的,其中winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
条款11、根据条款1的运算装置,存储单元包括:主存储单元和从存储单元;
主存储单元,用于接收特征数据并存储;
从存储单元,用于接收权值数据并存储。
条款12、根据条款11的运算装置,
从运算单元,还用于将权值数据拆解为多个子张量;对多个子张量进行变换运算并求和,根据求和运算的结果得到权值数据的正变换数据。
条款13、根据条款1的运算装置,存储单元包括:主存储单元和从存储单元;
主存储单元,用于接收特征数据和权值数据并存储;
从存储单元,用于接收权值数据的正变换数据并存储。
条款14、根据条款13的运算装置,
主运算单元,还用于将权值数据拆解为多个子张量;对多个子张量进行变换运算并求和,根据求和运算的结果得到权值数据的正变换数据;
将权值数据的正变换数据发送给从存储单元。
条款15、根据条款1-14中任一项的运算装置,主运算单元包括:主处理模块和缓存;
主处理模块,用于响应第一控制指令,从存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;
缓存,用于存储正变换运算结果。
条款16、根据条款15的运算装置,缓存还用于在存储的正变换运算结果累积到预设数量时,向从运算单元发送正变换运算结果。
条款17、根据条款1-14中任一项的运算装置,从运算单元还用于,将winograd卷积运算结果存储到存储单元的预设地址空间中。
条款18、根据条款1-14中任一项的装置,主运算单元与多个从运算单元通信连接,不同的从运算单元负责对不同正变换运算结果的运算。
条款19、根据条款7的装置,主运算单元和从运算单元的运算过程为并行运算,在主运算单元对特征数据的正变换数据计算完成之前,从运算单元针对已计算出的特征数据的正变换数据的元素位置和对应的权值数据的正变换数据的元素位置进行对位乘法运算,直至计算出各元素位置的对位乘法运算值,获得乘法运算结果。
条款20、根据条款19的装置,
主存储单元中存储的特征数据被划分为多个用于winograd卷积运算的第一数据,第一数据的尺寸根据卷积核的尺寸确定;
从存储单元中存储的权值数据的正变换数据被划分为多个用于winograd卷积运算的第二数据,第二数据的尺寸根据第一数据的尺寸确定;
主运算单元的主处理模块,响应主控制单元发送的第一控制指令,从主存储单元中依次获取第一数据,对第一数据进行正变换运算得到第一数据的正变换结果,并将第一数据的正变换结果存储在缓存中;
当缓存中的第一数据的正变换结果达到预设数量时,主运算单元的主处理模块将缓存中的第一数据的正变换结果依次发送给从运算单元;
从运算单元响应从控制单元发送的第二控制指令,从从存储单元中获取第二数据,将第一数据的正变换结果与第二数据进行对位乘运算,得到对位乘运算结果,并对对位乘运算结果进行逆变换运算,得到逆变换结果;
从运算单元根据逆变换结果得到winograd卷积运算结果,并将winograd卷积运算结果发送给主存储单元进行存储。
条款21、一种人工智能芯片,芯片包括如条款1-20中任意一项的运算装置。
条款22、一种电子设备,电子设备包括如条款21的人工智能芯片。
条款23、一种板卡,板卡包括:存储器件、接口装置和控制器件以及如条款21的人工智能芯片;
其中,人工智能芯片与存储器件、控制器件以及接口装置分别连接;
存储器件,用于存储数据;
接口装置,用于实现人工智能芯片与外部设备之间的数据传输;
控制器件,用于对人工智能芯片的状态进行监控。
条款24、根据条款23的板卡,存储器件包括:多组存储单元,每一组存储单元与人工智能芯片通过总线连接,存储单元为:DDR SDRAM;
芯片包括:DDR控制器,用于对每个存储单元的数据传输与数据存储的控制;
接口装置为:标准PCIE接口。
条款25、一种运算方法,应用于运算装置,运算装置包括:主控制单元、从控制单元、存储单元、主运算单元、以及从运算单元;方法包括:
主控制单元发送第一控制指令,第一控制指令用于指示主运算单元进行winograd卷积运算中的正变换运算,以及指示从控制单元发送第二控制指令,第二控制指令用于指示从运算单元进行winograd卷积运算中的乘加运算和逆变换运算;
存储单元存储用于winograd卷积运算的数据;
主运算单元响应第一控制指令,从存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;其中,正变换运算被拆解为求和运算;
从运算单元响应第二控制指令,从主运算单元中获取正变换运算结果,以及从存储单元中提取数据,并进行winograd卷积运算中的乘加运算和逆变换运算,得到winograd卷积运算结果;其中,逆变换运算被拆解为求和运算。
上述方案能够有效提高芯片的处理效率,但由于winograd卷积正变换和winograd卷积逆变换中仍然进行了矩阵乘,在硬件实现过程中仍然具有很大的开销,所以为了进一步提高处理效率,本申请实施例还提出了一种winograd卷积运算方法。该winograd卷积运算方法可应用在卷积神经网络的硬件实现过程中。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上,本说明书内容不应理解为对本公开的限制。

Claims (22)

1.一种运算装置,所述装置用于进行winograd卷积运算,其特征在于,包括:主控制单元、从控制单元、存储单元、主运算单元、以及从运算单元;
所述主控制单元,用于发送第一控制指令,所述第一控制指令用于指示所述主运算单元进行winograd卷积运算中的正变换运算,以及指示所述从控制单元发送第二控制指令,所述第二控制指令用于指示所述从运算单元进行winograd卷积运算中的乘加运算和逆变换运算;
所述存储单元,用于存储用于winograd卷积运算的数据;
所述主运算单元,用于响应所述第一控制指令,从所述存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;其中,所述正变换运算被拆解为求和运算;
所述从运算单元,用于响应所述第二控制指令,从所述主运算单元中获取正变换运算结果,以及从所述存储单元中提取数据,并进行winograd卷积运算中的乘加运算和逆变换运算,得到winograd卷积运算结果;其中,所述逆变换运算被拆解为求和运算;
所述存储单元包括:主存储单元和从存储单元;
所述主存储单元,用于接收特征数据并存储;
所述从存储单元,用于接收权值数据的正变换数据并存储;
所述主运算单元,具体用于将所述特征数据拆解为多个子张量;对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述特征数据的正变换数据;
所述主运算单元,具体用于从所述特征数据解析得到多个子张量,其中,所述特征数据为所述多个子张量之和,所述多个子张量的个数与所述特征数据中非0元素的个数相同,每个所述子张量中有单个非0元素,且在所述子张量中的非0元素与在所述特征数据中对应位置的非0元素相同。
2.根据权利要求1所述的运算装置,其特征在于,
所述主运算单元,具体用于获取各子张量对应的元子张量的winograd变换结果,其中,所述元子张量是将所述子张量的非0元素置为1的张量;将所述子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到所述子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到所述特征数据的正变换数据。
3.根据权利要求2所述的运算装置,其特征在于,所述主运算单元,具体用于对于每一个所述子张量,将所述子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到所述元子张量的winograd变换结果,其中,所述左乘矩阵和所述右乘矩阵都是由所述子张量的规模以及winograd变换类型确定的,其中所述winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
4.根据权利要求1所述的运算装置,其特征在于,
所述从运算单元,具体用于将所述特征数据的正变换数据和所述权值数据的正变换数据进行对位乘法运算,得到乘法运算结果;
将所述乘法运算结果拆解为多个子张量;对所述多个子张量进行变换运算并求和,得到所述winograd卷积运算结果。
5.根据权利要求4所述的运算装置,其特征在于,
所述从运算单元,具体用于从所述乘法运算结果解析得到多个子张量,其中,所述乘法运算结果为所述多个子张量之和,所述多个子张量的个数与所述乘法运算结果中非0元素的个数相同,每个所述子张量中有单个非0元素,且在所述子张量中的非0元素与在所述乘法运算结果中对应位置的非0元素相同。
6.根据权利要求5所述的运算装置,其特征在于,
所述从运算单元,具体用于获取各子张量对应的元子张量的winograd变换结果,其中,所述元子张量是将所述子张量的非0元素置为1的张量;将所述子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到所述子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到所述winograd卷积运算结果。
7.根据权利要求6所述的运算装置,其特征在于,所述从运算单元,具体用于对于每一个所述子张量,将所述子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到所述元子张量的winograd变换结果,其中,所述左乘矩阵和所述右乘矩阵都是由所述子张量的规模以及winograd变换类型确定的,其中所述winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
8.根据权利要求1所述的运算装置,其特征在于,所述存储单元包括:主存储单元和从存储单元;
所述主存储单元,用于接收特征数据并存储;
所述从存储单元,用于接收权值数据并存储。
9.根据权利要求8所述的运算装置,其特征在于,
所述从运算单元,还用于将所述权值数据拆解为多个子张量;对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述权值数据的正变换数据。
10.根据权利要求1所述的运算装置,其特征在于,所述存储单元包括:主存储单元和从存储单元;
所述主存储单元,用于接收特征数据和权值数据并存储;
所述从存储单元,用于接收权值数据的正变换数据并存储。
11.根据权利要求10所述的运算装置,其特征在于,
所述主运算单元,还用于将所述权值数据拆解为多个子张量;对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述权值数据的正变换数据;
将所述权值数据的正变换数据发送给所述从存储单元。
12.根据权利要求1-11中任一项所述的运算装置,其特征在于,所述主运算单元包括:主处理模块和缓存;
所述主处理模块,用于响应所述第一控制指令,从所述存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;
所述缓存,用于存储所述正变换运算结果。
13.根据权利要求12所述的运算装置,其特征在于,所述缓存还用于在存储的正变换运算结果累积到预设数量时,向所述从运算单元发送正变换运算结果。
14.根据权利要求1-11中任一项所述的运算装置,其特征在于,所述从运算单元还用于,将所述winograd卷积运算结果存储到所述存储单元的预设地址空间中。
15.根据权利要求1-11中任一项所述的装置,其特征在于,主运算单元与多个从运算单元通信连接,不同的从运算单元负责对不同正变换运算结果的运算。
16.根据权利要求4所述的装置,其特征在于,所述主运算单元和所述从运算单元的运算过程为并行运算,在所述主运算单元对所述特征数据的正变换数据计算完成之前,所述从运算单元针对已计算出的所述特征数据的正变换数据的元素位置和对应的所述权值数据的正变换数据的元素位置进行对位乘法运算,直至计算出各元素位置的对位乘法运算值,获得乘法运算结果。
17.根据权利要求16所述的装置,其特征在于,
所述主存储单元中存储的所述特征数据被划分为多个用于winograd卷积运算的第一数据,所述第一数据的尺寸根据卷积核的尺寸确定;
所述从存储单元中存储的所述权值数据的正变换数据被划分为多个用于winograd卷积运算的第二数据,所述第二数据的尺寸根据所述第一数据的尺寸确定;
所述主运算单元的主处理模块,响应所述主控制单元发送的第一控制指令,从所述主存储单元中依次获取所述第一数据,对所述第一数据进行正变换运算得到所述第一数据的正变换结果,并将所述第一数据的正变换结果存储在缓存中;
当所述缓存中的所述第一数据的正变换结果达到预设数量时,所述主运算单元的主处理模块将所述缓存中的所述第一数据的正变换结果依次发送给所述从运算单元;
所述从运算单元响应所述从控制单元发送的第二控制指令,从所述从存储单元中获取所述第二数据,将所述第一数据的正变换结果与所述第二数据进行对位乘运算,得到对位乘运算结果,并对所述对位乘运算结果进行逆变换运算,得到逆变换结果;
所述从运算单元根据所述逆变换结果得到winograd卷积运算结果,并将所述winograd卷积运算结果发送给所述主存储单元进行存储。
18.一种人工智能芯片,其特征在于,所述芯片包括如权利要求1-17中任意一项所述的运算装置。
19.一种电子设备,其特征在于,所述电子设备包括如权利要求18所述的人工智能芯片。
20.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求18所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
21.根据权利要求20所述的板卡,其特征在于,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述人工智能芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
22.一种运算方法,应用于运算装置,其特征在于,所述运算装置包括:主控制单元、从控制单元、存储单元、主运算单元、以及从运算单元;所述方法包括:
所述主控制单元发送第一控制指令,所述第一控制指令用于指示所述主运算单元进行winograd卷积运算中的正变换运算,以及指示所述从控制单元发送第二控制指令,所述第二控制指令用于指示所述从运算单元进行winograd卷积运算中的乘加运算和逆变换运算;
所述存储单元存储用于winograd卷积运算的数据;
所述主运算单元响应所述第一控制指令,从所述存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果;其中,所述正变换运算被拆解为求和运算;
所述从运算单元响应所述第二控制指令,从所述主运算单元中获取正变换运算结果,以及从所述存储单元中提取数据,并进行winograd卷积运算中的乘加运算和逆变换运算,得到winograd卷积运算结果;其中,所述逆变换运算被拆解为求和运算;
所述存储单元包括:主存储单元和从存储单元;
所述主存储单元接收特征数据并存储;
所述从存储单元接收权值数据的正变换数据并存储;
所述主运算单元响应所述第一控制指令,从所述存储单元中提取数据进行winograd卷积运算中的正变换运算,得到正变换运算结果,包括:
所述主运算单元将所述特征数据拆解为多个子张量;对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述特征数据的正变换数据;
所述主运算单元将所述特征数据拆解为多个子张量,包括:
所述主运算单元从所述特征数据解析得到多个子张量,其中,所述特征数据为所述多个子张量之和,所述多个子张量的个数与所述特征数据中非0元素的个数相同,每个所述子张量中有单个非0元素,且在所述子张量中的非0元素与在所述特征数据中对应位置的非0元素相同。
CN201911061078.3A 2019-11-01 2019-11-01 运算装置、方法及相关产品 Active CN112765539B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201911061078.3A CN112765539B (zh) 2019-11-01 2019-11-01 运算装置、方法及相关产品
PCT/CN2020/113160 WO2021082722A1 (zh) 2019-11-01 2020-09-03 运算装置、方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911061078.3A CN112765539B (zh) 2019-11-01 2019-11-01 运算装置、方法及相关产品

Publications (2)

Publication Number Publication Date
CN112765539A CN112765539A (zh) 2021-05-07
CN112765539B true CN112765539B (zh) 2024-02-02

Family

ID=75692126

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911061078.3A Active CN112765539B (zh) 2019-11-01 2019-11-01 运算装置、方法及相关产品

Country Status (2)

Country Link
CN (1) CN112765539B (zh)
WO (1) WO2021082722A1 (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018107383A1 (zh) * 2016-12-14 2018-06-21 上海寒武纪信息科技有限公司 神经网络的卷积运算方法、装置及计算机可读存储介质
CN108229656A (zh) * 2016-12-14 2018-06-29 上海寒武纪信息科技有限公司 神经网络运算装置及方法
CN108229654A (zh) * 2016-12-14 2018-06-29 上海寒武纪信息科技有限公司 神经网络卷积运算装置及方法
CN109325591A (zh) * 2018-09-26 2019-02-12 中国科学院计算技术研究所 面向Winograd卷积的神经网络处理器
CN109359730A (zh) * 2018-09-26 2019-02-19 中国科学院计算技术研究所 面向固定输出范式Winograd卷积的神经网络处理器
CN110147249A (zh) * 2018-02-12 2019-08-20 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN110163349A (zh) * 2018-02-12 2019-08-23 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055063B2 (en) * 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
US10482155B2 (en) * 2016-12-30 2019-11-19 Intel Corporation Winograd algorithm on a matrix processing architecture
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
US10372787B2 (en) * 2017-12-12 2019-08-06 Facebook, Inc. Hardware accelerator pre-configured with coefficients for matrix-transform operations
US11586907B2 (en) * 2018-02-27 2023-02-21 Stmicroelectronics S.R.L. Arithmetic unit for deep learning acceleration

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018107383A1 (zh) * 2016-12-14 2018-06-21 上海寒武纪信息科技有限公司 神经网络的卷积运算方法、装置及计算机可读存储介质
CN108229656A (zh) * 2016-12-14 2018-06-29 上海寒武纪信息科技有限公司 神经网络运算装置及方法
CN108229654A (zh) * 2016-12-14 2018-06-29 上海寒武纪信息科技有限公司 神经网络卷积运算装置及方法
CN110147249A (zh) * 2018-02-12 2019-08-20 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN110163349A (zh) * 2018-02-12 2019-08-23 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN109325591A (zh) * 2018-09-26 2019-02-12 中国科学院计算技术研究所 面向Winograd卷积的神经网络处理器
CN109359730A (zh) * 2018-09-26 2019-02-19 中国科学院计算技术研究所 面向固定输出范式Winograd卷积的神经网络处理器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种在GPU上高精度大型矩阵快速运算的实现;苏畅;付忠良;谭雨辰;;计算机应用(04);1177-1179、1192 *

Also Published As

Publication number Publication date
CN112765539A (zh) 2021-05-07
WO2021082722A1 (zh) 2021-05-06

Similar Documents

Publication Publication Date Title
CN109522052B (zh) 一种计算装置及板卡
US20230026006A1 (en) Convolution computation engine, artificial intelligence chip, and data processing method
CN110647722B (zh) 数据处理方法及装置以及相关产品
CN109670581B (zh) 一种计算装置及板卡
CN110059797B (zh) 一种计算装置及相关产品
WO2021083101A1 (zh) 数据处理方法、装置及相关产品
CN111124995A (zh) 通过人工智能处理器处理一维复数数组的方法和设备
WO2021114903A1 (zh) 数据处理方法、装置、计算机设备和存储介质
CN112765539B (zh) 运算装置、方法及相关产品
CN111143766A (zh) 人工智能处理器处理二维复数矩阵的方法和设备
WO2021082723A1 (zh) 运算装置
WO2021223642A1 (zh) 数据处理方法及装置以及相关产品
WO2021082746A1 (zh) 运算装置及相关产品
US20220414183A1 (en) Winograd convolution operation method, apparatus, and device, and storage medium
CN112784207B (zh) 运算方法及相关产品
CN111340202B (zh) 运算方法、装置及相关产品
CN112784951B (zh) Winograd卷积运算方法及相关产品
CN111738428B (zh) 计算装置、方法及相关产品
CN111061507A (zh) 运算方法、装置、计算机设备和存储介质
CN112766473B (zh) 运算装置及相关产品
WO2021223644A1 (zh) 数据处理方法及装置以及相关产品
WO2021223645A1 (zh) 数据处理方法及装置以及相关产品
CN113626083B (zh) 数据处理装置以及相关产品
WO2021223638A1 (zh) 数据处理方法及装置以及相关产品
CN111339060B (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