CN109284823B - 一种运算装置及相关产品 - Google Patents

一种运算装置及相关产品 Download PDF

Info

Publication number
CN109284823B
CN109284823B CN201811011596.XA CN201811011596A CN109284823B CN 109284823 B CN109284823 B CN 109284823B CN 201811011596 A CN201811011596 A CN 201811011596A CN 109284823 B CN109284823 B CN 109284823B
Authority
CN
China
Prior art keywords
vector
instruction
data
unit
vectors
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
CN201811011596.XA
Other languages
English (en)
Other versions
CN109284823A (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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information 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
Priority claimed from CN201710261742.3A external-priority patent/CN108734279B/zh
Priority claimed from CN201710279655.0A external-priority patent/CN108733739B/zh
Priority claimed from CN201710279834.4A external-priority patent/CN108733352B/zh
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Publication of CN109284823A publication Critical patent/CN109284823A/zh
Application granted granted Critical
Publication of CN109284823B publication Critical patent/CN109284823B/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
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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
    • 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
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请提供了一种运算装置及相关产品,所述运算装置用于执行网络模型的计算,所述网络模型包括:神经网络模型和/或非神经网络模型;所述运算装置包括:运算单元、控制器单元以及存储单元,所述存储单元包括:数据输入输出单元、存储介质和标量数据存储单元。本申请提供的技术方案具有计算速度快,节能的优点。

Description

一种运算装置及相关产品
技术领域
本申请涉及人工智能技术领域,具体涉及一种运算装置及相关产品。
背景技术
深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
在实践中发现,现有的深度学习系统通常需要占用大量存储资源及运算资源,尤其对于复杂运算,大大降低了系统运算效率。因此,如何降低深度学习中存储资深及运算资源消耗的问题亟待解决。
申请内容
本申请实施例提供了一种运算装置及相关产品,可降低深度学习中存储资深及运算资源消耗。
本申请实施例第一方面提供了一种运算装置,所述运算装置包括存储单元、运算单元和控制器单元,其中,
所述存储单元,用于存储数据和指令;
所述控制器单元,用于从所述存储单元中提取第一指令以及所述第一指令对应的第一数据,所述第一数据包括输入神经元数据和权值数据,所述第一指令包括排序指令或者稀疏处理指令;
所述运算单元,用于响应所述第一指令,对所述输入神经元数据和所述权值数据执行所述第一指令对应的运算操作,得到运算结果。
第二方面,本申请实施例提供了一种运算方法,应用于运算装置,所述运算装置包括存储单元、运算单元和控制器单元,其中,
所述存储单元存储数据和指令;
所述控制器单元从所述存储单元中提取第一指令以及所述第一指令对应的第一数据,所述第一数据包括输入神经元数据和权值数据,所述第一指令包括排序指令或者稀疏处理指令;
所述运算单元响应所述第一指令,对所述输入神经元数据和所述权值数据执行所述第一指令对应的运算操作,得到运算结果。
第三方面,本申请实施例提供了一种神经网络计算装置,该神经网络计算装置包括一个或者多个第一方面所述的运算装置。该神经网络计算装置用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述神经网络计算装置包含多个所述运算装置时,所述多个所述运算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述运算装置通过快速外部设备互连总线(Peripheral ComponentInterconnect-Express,PCI-E 或PCIe)PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述运算装置共享同一控制系统或拥有各自的控制系统;多个所述运算装置共享内存或者拥有各自的内存;多个所述运算装置的互联方式是任意互联拓扑。
第四方面,本申请实施例提供了一种组合处理装置,该组合处理装置包括如第一方面所述的运算装置、通用互联接口,和其他处理装置。该神经网络计算装置与上述其他处理装置进行交互,共同完成用户指定的操作。
第五方面,本申请实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的运算装置、上述第三方面所述的神经网络计算装置或者上述第四方面所述的组合处理装置。
第六方面,本申请实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第五方面所述的神经网络芯片;
第七方面,本申请实施例提供了一种板卡,该板卡包括上述第六方面所述的神经网络芯片封装结构。
第八方面,本申请实施例提供了一种电子装置,该电子装置包括上述第六方面所述的神经网络芯片或者上述第七方面所述的板卡。
可以看出,在本申请实施例的方案中,存储单元存储数据和指令,控制器单元从存储单元中提取第一指令以及第一指令对应的第一数据,第一数据包括输入神经元数据和权值数据,第一指令为排序指令或者稀疏处理指令,运算单元响应第一指令,对输入神经元数据和权值数据执行第一指令对应的运算操作,得到运算结果,可降低深度学习中存储资深及运算资源消耗,提高了计算效率。
另外,在一些实施例中,所述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种运算装置的结构示意图;
图2为本申请实施例提供的一种运算装置的另一结构示意图;
图3为本申请实施例提供的稀疏模式1的处理过程示意图;
图4为本申请实施例提供的稀疏模式2的处理过程示意图;
图5为本申请实施例提供的稀疏模式3的处理过程示意图;
图6为本申请实施例提供的运算单元及其连接关系的结构示意图;
图7为本申请实施例提供的第1个向量归并单元的结构示意图;
图8为本申请实施例提供的一种运算装置的另一结构示意图;
图9为本申请实施例提供的一种运算装置的另一结构示意图;
图10为本申请实施例提供的主处理电路的结构示意图;
图11为本申请实施例提供的神经网络模型的结构图的示意图;
图12为本申请实施例提供的一种运算装置的另一结构示意图;
图13为本申请实施例提供的一种组合处理装置的结构示意图;
图14为本申请实施例提供的另一种组合处理装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
首先介绍本申请使用的运算装置。参阅图1,提供了一种运算装置,该运算装置包括:存储单元10、控制器单元11和运算单元12,其中,控制器单元11与存储单元10以及运算单元12;其中,
该存储单元10可以包括:数据输入输出单元(数据I/O单元)203,
数据输入输出单元203,用于获取输入数据、权值数据、网络模型以及计算指令;
控制器单元11,用于从所述存储单元提取第一指令,解析该第一指令得到该计算指令的操作码以及操作域,提取该操作域对应的输入数据以及权值数据,将该操作码、输入数据以及权值数据发送给所述运算单元,所述操作码包括以下至少一种:矩阵计算指令的操作码、向量计算指令操作码、激活计算指令操作码、偏置计算指令操作码、卷积计算指令操作码、转换计算指令操作码等等;
运算单元12,用于依据该操作码对该输入数据以及权值数据执行该操作码对应的运算得到第一指令的结果。
可选地,该控制器单元包括:指令缓存单元110、指令处理单元111和存储队列单元113,所述指令缓存单元110用于对指令进行缓存,所述指令处理单元111用于实现译码功能;
指令缓存单元110,用于缓存所述第一指令;
指令处理单元111,用于解析所述第一指令得到该第一指令的操作码以及操作域;
存储队列单元113,用于存储指令队列,所述指令队列包括:按该队列的前后顺序待执行的多个计算指令或操作码。
该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
Figure RE-GDA0001839452110000031
可选的,存储单元还可以包括:寄存器201和缓存202和数据I/O单元。
存储介质201可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据块,该数据块具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2 维数据,即矩阵,如n=3或3以上时,为多维张量。
可选地,上述第一指令可以为向量指令,向量指令可以为以下至少一种:向量加法指令(VA)、向量加标量指令(VAS)、向量减法指令(VS)、向量乘法指令(VMV)、向量乘标量指令(VMS)、向量除法指令(VD)、标量除向量指令(SDV)、向量间与指令(VAV)、向量内与指令(VAND)、向量间或指令(VOV)、向量内或指令(VOR)、向量指数指令(VE)、向量对数指令(VL)、向量大于判定指令(VGT)、向量等于判定指令(VEQ)、向量非指令(VINV)、向量选择合并指令(VMER)、向量最大值指令(VMAX)、标量扩展指令(STV)、标量替换向量指令(STVPN)、向量替换标量指令(VPNTS)、向量检索指令(VR)、向量点积指令(VP)、随机向量指令(RV)、循环移位指令(VCS)、向量加载指令(VLOAD)、向量存储指令(VS)、向量搬运指令(VMOVE)、矩阵乘向量指令(MMV)、向量乘矩阵指令(VMM)、矩阵乘标量指令(VMS)、张量运算指令(TENS)、矩阵加法指令(MA)、矩阵减法指令(MS)、矩阵检索指令(MR)、矩阵加载指令(ML)、矩阵存储指令(MS)、矩阵搬运指令(MMOVE)。
可选地,如图2所示,图2为图1所描述的运算装置的一种变型结构,其与图1相比较,还可以包括:配置解析单元13、映射单元14和稀疏单元15,具体如下:
所述存储单元10,用于存储数据和指令;
所述控制器单元11,用于从所述存储单元中提取第一指令以及所述第一指令对应的第一数据,所述第一数据包括输入神经元数据和权值数据,所述第一指令包括排序指令或者稀疏处理指令;
所述运算单元12,用于响应所述第一指令,对所述输入神经元数据和所述权值数据执行所述第一指令对应的运算操作,得到运算结果。
其中,运算单元12可支持多种数据类型的运算,根据指令要求选择相应的运算器完成对应运算,例如,数据类型可以为16位定点数据或者32位浮点数据等。举例说明下,指令是矩阵加矩阵,选择加法器;指令是矩阵乘矩阵,选择乘法器和加法器,指令是16位定点运算指令,接收该指令进行16位定点运算,等等。
其中,上述数据可以包括以下至少一种数据类型:整型数据、离散型数据、连续型数据、幂次型数据、浮点型数据或者定点型数据,数据表示的长度可为32位长度浮点数据,16位长度定点数据等等;数据可包括以下至少一种:输入神经元数据、权值数据和偏置数据。
可选地,在所述第一指令为所述稀疏处理指令以及所述第一数据还包括预设配置数据时,其中,
所述配置解析单元13,用于根据所述预设配置数据设置映射模式;
所述映射单元14,用于根据所述映射模式对所述输入神经元和所述权值数据进行映射处理,得到输入神经元-权值对,所述输入神经元-权值对为映射处理后的输入神经元数据与权值数据之间的映射关系;
所述指令缓存单元110,用于接收由所述控制器单元发送的目标指令;
所述指令处理单元111,用于将所述目标指令译码为运算指令;由所述运算单元对所述输入神经元-权值对执行运算操作,得到运算结果。
其中,预设配置数据可包括以下至少一种:数据类型,或者,稀疏参数。目标指令为矩阵乘矩阵计算指令,其译码后得到运算指令,该运算指令可以包括乘法运算指令和加法运算指令。第一指令包括至少一个目标指令。
可选地,稀疏单元15,用于依据所述稀疏参数对所述运算结果进行稀疏处理,得到稀疏处理后的运算结果。
可选地,所述稀疏参数包括稀疏模式;所述映射单元13根据所述映射模式对所述输入神经元和所述权值进行映射处理,具体为:
当处于所述稀疏模式为第一稀疏模式时,获取所述第一稀疏模式对应的权值稀疏序列,并依据该权值稀疏序列对所述权值进行映射处理;
当处于所述稀疏模式为第二稀疏模式时,获取所述第二稀疏模式对应的神经元稀疏序列,并依据该神经元稀疏序列对所述输入神经元进行映射处理;
当处于所述稀疏模式为第三稀疏模式时,获取所述第三稀疏模式对应的权值稀疏序列和神经元稀疏序列,并依据该权值稀疏序列和神经元稀疏序列对所述输入神经元和所述权值数据进行映射处理。
可选地,稀疏参数可包括以下至少一种:稀疏标志,稀疏率,稀疏模式等。
其中,稀疏标志用于确定是否进行稀疏处理,例如,可以用0表示不进行稀疏处理,1表示进行稀疏处理,也可以用1表示不进行稀疏处理,0表示进行稀疏处理。可以理解,还可以用根据需求灵活选择稀疏标志的表示方式。在进行稀疏处理的情况下,稀疏率表示每次进行稀疏处理神经元数据和/或权值数据的比例,例如5%,10%,25%等等。稀疏模式表示稀疏处理的具体模式,本申请实施例中,稀疏模式主要至少包括 3种:稀疏模式1,仅权值稀疏处理;稀疏模式2,仅神经元数据稀疏处理;稀疏模式3,权值和神经元数据均稀疏处理,当然,稀疏模式还可以为以上至少两种模式组合,例如,稀疏模式1+稀疏模式2。另外,在未作稀疏处理的情况下,对应的稀疏模式记作模式0。又例如,神经元数据的稀疏率和权值数据的稀疏率还可不一样,例如,本申请实施例提供一种稀疏率的表示方式(A,B),其中,A为神经元数据的稀疏率,B为权值数据的稀疏率,例如为(5%,6%),即神经元数据的稀疏率为5%,权值数据的稀疏率为6%。
可选地,在没有稀疏标志的情况下,至少包括以下四种稀疏模式:稀疏模式0,不做稀疏;稀疏模式1,仅权值数据稀疏;稀疏模式2,仅神经元数据稀疏;稀疏模式3,权值和神经元数据都稀疏。
举例来说,上一层的输出神经元数据作为下一层的输入神经元数据时候,因为输出神经元数据已作稀疏处理,所以在下一层运算里,假如,稀疏的标准不改变,输入神经元数据就不需要重复做稀疏。
其中,所述配置解析单元13由神经网络的配置数据解析获得的稀疏模式进而设置映射单元的处理模式,即根据不同的稀疏模式对应不同的映射模式。
可选地,存储单元中预先存储稀疏模式与映射模式之间的映射关系,进而,依据该映射关系确定与稀疏模式对应的映射模式,在不同的映射模式下,根据神经元稀疏序列和权值稀疏序列做稀疏化,当然,映射关系不一定存储在存储单元中,还可以存储在片外存储器上,或者,还可以存储在其他设备(具备存储器功能的电子装置)上。存储单元中可预先存储权值稀疏序列和/或神经元稀疏序列。
可选地,所述稀疏单元15依据所述稀疏参数对所述运算结果进行稀疏处理,具体为:
对神经元数据的元素绝对值排序,根据稀疏率计算获得需要稀疏的元素个数,根据需要稀疏的元素个数对排序后的神经元数据的元素作稀疏处理,并将稀疏后的稀疏神经元数据和神经元稀疏序列发送至所述控制器单元11。
其中,可对输出神经元的元素绝对值进行排序,根据稀疏率计算获得需要稀疏的元素个数,然后对输出神经元的元素绝对值小于预设阈值的元素作稀疏处理,即置其值为0,预设阈值可由用户自行设置或者系统默认,稀疏率可动态调整。
可选地,所述稀疏单元15依据所述稀疏参数对所述运算结果进行稀疏处理,具体为:
神经元数据为0的元素保持0不变,神经元数据在预设取值区间内的元素置为0。
其中,神经元数据为0的元素保持0不变,神经元数据在预设取值区间内的元素置为0值,预设取值空间可以由用户自行设置或者系统默认。
举例说明下,如图3所示,图3为稀疏模式1的示例图。其中,稀疏权值数据只包括权值中非零的数据只存储w1,w5,w8,w9的权值数据,权值稀疏序列用于索引稀疏权值,如权值稀疏序列为100010011表示w1,w5,w8,w9的权值为非零值,而w2,w3,w4,w6,w7为0。稀疏序列的表示方式并不唯一,可以使用0 表示非稀疏,即数值非零,用1表示稀疏,即数值为零,也可以采用其他可行方式。根据权值稀疏序列,选择对应的输入神经元数据,如图3中选择d1,d5,d8,d9输入神经元数据,通过对输入神经元数据和权值数据的映射,获得对应的输入神经元-权值对。
再举例说明下,如图4所示,图4为本申请实施例提供的稀疏模式2的示例图,其中稀疏神经元数据只包括神经元中非零的数据,如图4只存储d1,d3,d5,d8的神经元数据,神经元稀疏序列用于索引稀疏神经元数据,如神经元稀疏序列101010010表示d1,d3,d5,d8的神经元为非零值,而d2,d4,d6,d7,d9为0。应当认识到,稀疏序列的表示方式并不唯一,可以使用0表示非稀疏,即数值非零,用1表示稀疏,即数值为零,也可以采用其他可行方式。根据神经元稀疏序列,选择对应的权值数据,如图4中选择w1,w3,w5,w8 的权值数据,通过对输入神经元数据和权值数据进行映射处理,得到对应的输入神经元-权值对。
再举例说明下,如图5所示,图5为本申请实施例提供的稀疏模式3的示例图,即根据神经元稀疏序列和权值稀疏序列,选择为非零值的输入神经元数据和权值数据,如图5所示,选择神经元数据d1,d5,d8 和权值数据w1,w5,w8,通过对输入神经元数据和权值数据的映射处理,得到对应的输入神经元-权值对。
可选地,基于上述运算装置,可以实现如下运算方法,具体如下
所述存储单元10存储数据和指令;
所述控制器单元11从所述存储单元10中提取第一指令以及所述第一指令对应的第一数据,所述第一数据包括输入神经元数据和权值数据,所述第一指令包括排序指令或者稀疏处理指令;
所述运算单元12响应所述第一指令,对所述输入神经元数据和所述权值数据执行所述第一指令对应的运算操作,得到运算结果。
进一步可选地,所述控制器单元11包括:指令缓存单元110和指令处理单元111。
进一步可选地,在所述第一指令为所述稀疏处理指令以及所述第一数据还包括预设配置数据时,其中,
所述配置解析单元13根据所述预设配置数据设置映射模式;
所述映射单元14根据所述映射模式对所述输入神经元和所述权值数据进行映射处理,得到输入神经元-权值对,所述输入神经元-权值对为映射处理后的输入神经元数据与权值数据之间的映射关系;
所述指令缓存单元110接收由所述控制器单元发送的目标指令;
所述指令处理单元111将所述目标指令译码为运算指令;由所述运算单元12对所述输入神经元-权值对执行运算操作,得到运算结果。
进一步可选地,所述第一数据还包括稀疏参数;还包括如下步骤:
稀疏单元15依据所述稀疏参数对所述运算结果进行稀疏处理,得到稀疏处理后的运算结果。
进一步可选地,所述稀疏参数包括稀疏模式;
所述映射单元14根据所述映射模式对所述输入神经元和所述权值进行映射处理,具体为:
当处于所述稀疏模式为稀疏模式1时,获取所述稀疏模式1对应的权值稀疏序列,并依据该权值稀疏序列对所述权值进行映射处理;
当处于所述稀疏模式为稀疏模式2时,获取所述稀疏模式2对应的神经元稀疏序列,并依据该神经元稀疏序列对所述输入神经元进行映射处理;
当处于所述稀疏模式为稀疏模式3时,获取所述稀疏模式3对应的权值稀疏序列和神经元稀疏序列,并依据该权值稀疏序列和神经元稀疏序列对所述输入神经元和所述权值数据进行映射处理。
进一步可选地,所述稀疏参数还包括稀疏率,所述稀疏单元15依据所述稀疏参数对所述运算结果进行稀疏处理,具体为:
对神经元数据的元素绝对值排序,根据稀疏率计算获得需要稀疏的元素个数,根据需要稀疏的元素个数对排序后的神经元数据的元素作稀疏处理,并将稀疏后的稀疏神经元数据和神经元稀疏序列发送至所述控制器单元11。
进一步可选地,所述稀疏单元15依据所述稀疏参数对所述运算结果进行稀疏处理,具体为:
神经元数据为0的元素保持0不变,神经元数据在预设取值区间内的元素置为0。
上述本申请所描述的运算装置和方法,支持神经网络的映射处理,可根据不同的实际运用情况,采用不同的映射模式,能够实现节省存储资源和运算资源的目的,另外,支持神经网络的稀疏处理及多种数据表示形式的神经网络,可根据不同的实际运用情况,采用不同的数据表示形式和稀疏处理,进一步节省在神经网络性能与运算和存储资源上提高性能,达到最优效果,对数据做稀疏处理,减小运算单元的运算负荷,加快运算速度。
可选地,图1所描述的运算装置还可以用于实现如下向量排序功能,具体如下:
如所述输入神经元数据为向量;本申请实施例中,所述第一指令包括向量排序指令,以及所述第一数据包括待排序数据向量以及待排序数据向量的中间结果。其中,第一指令可为特指要发射的指令,或者,指令队列中最前列的指令。
所述指令处理单元111,用于将所述向量排序指令译码成所述运算单元12执行的微指令;
所述运算单元12,还具体用于根据所述微指令将所述待排序数据向量或所述中间结果进行排序,得到与所述待排序数据向量等长度的排序后的向量。
可选地,运算单元12可以通过指令配置的方式动态选择排序方法完成向量排序运算。排序方法可以包括以下至少一种:冒泡排序、选择排序、快速排序、归并排序或者二分排序。
可选地,控制器单元11从存储单元10中获取所要执行的第一指令,若所述第一指令为向量排序指令,则根据向量排序类型、待排序数据向量的长度、向量排序指令的源操作数地址、目的操作数地址、向量长度和排序类型生成微指令,由运算单元12响应微指令执行排序操作。
如下表所示,示出了向量排序指令的一种可选地格式,具体如下:
Figure RE-GDA0001839452110000071
其中,操作码OP,长度为k位,例如,具体内容为b1b2…bk,操作码OP用于指明指令所作的操作为向量排序操作,若某一指令的前k位与b1b2…bk不一致,则表明该指令用于实现其他运算操作,若某一指令的前k位于b1b2…bk一致,则表明该指令为向量排序指令。
向量源地址SRC,长度为q位,当操作码为b1b2…bk时,表示待排序数据向量在存储单元中的地址, q大于0;
向量目的地址DST,长度为q位,当操作码为b1b2…bk时,表示排序后的向量在存储单元中的地址, q大于0;
向量长度LEN,长度为r位,当操作码为b1b2…bk时,表示待排序数据向量的长度,r大于0;
排序类型,长度为1位或多位,当操作码为b1b2…bk时,若排序类型的最高位为0,表示由小到大进行排序。若排序类型的最高位为1,表示由大到小进行排序。若排序类型域的长度为a(a>1)位,排序类型的低a-1位指明排序指令所采用的排序方法。
可选地,所述运算单元12根据所述微指令将所述待排序数据向量或所述中间结果进行排序具体为:
步骤A:若排序后得到的为待排序数据向量的中间结果,则将所述待排序数据向量的中间结果写回到存储单元的源地址,并重复执行所述步骤A,直到所述得到待排序数据向量的最后结果,则跳转到步骤B;步骤B:若排序得到的为待排序数据向量的最后结果,将所述待排序数据向量的最后结果根据所述向量排序指令提供的目的操作数地址写回到存储单元的数据I/O单元,操作结束。
可选地,所述运算单元12包括由n个向量归并单元,n为大于等于2的整数;n个向量归并单元每次从所述存储单元10中读取不大于2n个已经归并的子向量或者有序子向量,并进行归并,转存入所述存储单元中,直到已经归并的子向量的长度等于所述待排序数据向量长度,形成排序后的向量。
其中,如图6,图6给出了运算单元12的具体细化结构,运算单元可包含n个向量归并单元,n个向量归并单元从存储单元10中读取不大于2n个已经归并的子向量或者有序子向量,并进行归并,转存入存储单元10中,直到已经归并的子向量的长度等于所述待排序数据向量长度,形成排序后的向量。
如图7所示,向量归并单元的具体结构可参见图7所示的第1个向量归并单元,该向量归并单元包括控制信号CTRL(连接控制器单元11),输入向量D_1和D_2(连接存储单元10),输出数据为OUT(用于连接存储单元10中的数据I/O单元)。其中,CTRL用于设置向量归并单元的操作类型和输入向量D_1 和D_2的长度len_1和len_2。其中,操作类型可以用来描述进行归并的顺序。举例而言,操作类型可以包括0和1,操作类型0可以用来表示向量归并单元根据向量由小到大的顺序进行归并,操作类型1可以用来表示向量归并单元根据向量由大到小的顺序进行归并。在其他实施例中,也可以用操作类型1来表示向量归并单元根据向量由小到大的顺序进行归并,操作类型0来表示向量归并单元根据向量由大到小的顺序进行归并。可以理解,操作类型还可以根据具体需求进行设置。以两个输入向量为例,若其中一个输入向量的长度为0时,则可以直接输出另一个向量。
可选地,所述运算单元12执行步骤A具体为:
步骤A1、初始化归并次数i为1;
步骤A2、由所述n个向量归并单元进行计算,在第i次归并所述待排序数据向量或所述中间结果时,从所述存储单元中获取所述待排序数据向量或所述中间结果,将所述待排序数据向量或中间结果按顺序分成
Figure RE-GDA0001839452110000081
份,对向量进行两两归并,除最后一份外,每个向量长度为2i-1;m为待排序数据向量的长度;
步骤A3、若归并次数
Figure RE-GDA0001839452110000082
则将归并次数加一,并将处理后的中间结果写回到存储单元源地址,重复执行步骤A2-A3,直到
Figure RE-GDA0001839452110000083
则跳转到步骤B;可以理解,当
Figure RE-GDA0001839452110000084
时,则排序得到的为待排序数据向量的最后结果。
所述运算单元12执行步骤B,具体为:
若归并次数
Figure RE-GDA0001839452110000085
若只存在分配后的两份待排序数据向量,则经所述n个向量归并单元中的第一个向量归并单元归并后,得到的向量为已排序向量,将排序后的结果根据所述向量排序指令提供的目的操作数地址写入到数据输出单元中,操作结束。
可选地,所述运算单元12对向量进行两两归并,具体为:
根据所述向量排序指令提供的源操作数地址按顺序编号
Figure RE-GDA0001839452110000086
将编号为2*j-1、2*j的向量分配给第((j-1)mod n)+1个向量归并单元进行处理,其中j>0。
可选地,所述待排序数据向量为预处理阶段测试数据特征矩阵对应的特征值向量和分类结果的概率向量。
举例说明下,当向量D_1和D_2且操作类型为0分别为2、4、6、7和3、3、8、9时,归并的过程如下步骤1-步骤7,具体如下:
步骤1:
D_1:2 4 6 7 len_1:4
D_2:3 3 8 9 len_2:4
输出向量:2
步骤2:
D_1:4 6 7 len_1:3
D_2:3 3 8 9 len_2:4
输出向量:2 3
步骤3:
D_1:4 6 7 len_1:3
D_2:3 8 9 len_2:3
输出向量:2 3 3
步骤4:
D_1:4 6 7 len_1:3
D_2:8 9 len_2:2
输出向量:2 3 3 4
步骤5:
D_1:6 7 len_1:2
D_2:8 9 len_2:2
输出向量:2 3 3 4 6
步骤6:
D_1:7 len_1:1
D_2:8 9 len_2:2
输出向量:2 3 3 4 6 7
步骤7:
D_1: len_1:0
D_2:8 9 len_2:2
输出向量:2 3 3 4 6 7 8 9
向量归并结束。
再举例说明下,对于向量排序指令(sort_op,src,dst,9,0),假设数据存储单元1地址src开始,连续存放的9个数据分别为9、1、5、3、4、2、6、8、7,向量归并单元数量为2。根据排序类型的最高位,进行由小到大的排序,根据排序类型的低m-1位全0,进行排序的类型为归并排序。在运算过程,每次每个向量归并单元对应输入的向量、地址以及输出地址如下所示:
第一次合并:
Figure RE-GDA0001839452110000101
合并后的向量为1 9 3 5 2 4 6 8 7;
第二次合并:
Figure RE-GDA0001839452110000102
合并后的向量为1 3 5 9 2 4 6 8 7;
第三次合并:
Figure RE-GDA0001839452110000111
合并后的向量为:1 2 3 4 5 6 7 8 7
第四次合并:
Figure RE-GDA0001839452110000112
合并后的向量为:1 2 3 4 5 6 7 7 8,并将其送入到数据I/O单元13中。
可选地,基于上述运算装置,可以实现如下运算方法,具体如下
所述指令处理单元111将所述向量排序指令译码成所述运算单元执行的微指令;
所述运算单元12根据所述微指令将所述待排序数据向量或所述中间结果进行排序,得到与所述待排序数据向量等长度的排序后的向量。
可选地,所述运算单元12根据所述微指令将所述待排序数据向量或所述中间结果进行排序具体为:
步骤A:若排序后得到的为待排序数据向量的中间结果,则将所述待排序数据向量的中间结果写回到存储单元的源地址,并重复执行所述步骤A,直到所述得到待排序数据向量的最后结果,则跳转到步骤B;步骤B:若排序得到的为待排序数据向量的最后结果,将所述待排序数据向量的最后结果根据所述向量排序指令提供的目的操作数地址写回到存储单元的数据I/O单元,操作结束。
进一步可选地,所述运算单元12包括n个向量归并单元构成,其中,n为大于等于2的整数,所述n 个向量归并单元用于从所述存储单元中读取不大于2n个已经归并的子向量或者有序子向量,并进行归并,将归并后的结果转存入所述存储单元中,直到已经归并的子向量的长度等于所述待排序数据向量长度,形成排序后的向量。
进一步可选地,所述运算单元12执行步骤A具体为:
步骤A1、初始化归并次数i为1;
步骤A2、由所述n个向量归并单元进行计算,在第i次归并所述待排序数据向量或所述中间结果时,从所述存储单元中获取所述待排序数据向量或所述中间结果,将所述待排序数据向量或中间结果按顺序分成
Figure RE-GDA0001839452110000121
份,对向量进行两两归并,除最后一份外,每个向量长度为2i-1;m为待排序数据向量的长度;
步骤A3、若归并次数
Figure RE-GDA0001839452110000122
则将归并次数加一,并将处理后的中间结果写回到存储单元源地址,重复执行步骤A2-A3,直到
Figure RE-GDA0001839452110000123
则跳转到步骤B;
所述运算单元12执行步骤B,具体为:
若归并次数
Figure RE-GDA0001839452110000124
若只存在分配后的两份待排序数据向量,则经所述n个向量归并单元中的第一个向量归并单元归并后,得到的向量为已排序向量,将排序后的结果根据所述向量排序指令提供的目的操作数地址写入到数据输出单元中,操作结束。
进一步可选地,所述运算单元12对向量进行两两归并,具体为:
根据所述向量排序指令提供的源操作数地址按顺序编号
Figure RE-GDA0001839452110000125
将编号为2*j-1、2*j的向量分配给第((j-1)mod n)+1个向量归并单元进行处理,其中j>0。
进一步可选地,所述待排序数据向量为预处理阶段测试数据特征矩阵对应的特征值向量和分类结果的概率向量。
进一步可选地,所述第一指令包括下述指令中的一个或任意组合:向量间与指令VAV、向量内与指令 VAND、向量间或指令VOV、向量内或指令VOR、向量指数指令VE、向量对数指令VL、向量大于判定指令VGT、向量等于判定指令VEQ、向量非指令VINV、向量选择合并指令VMER、向量最大值指令VMAX、标量扩展指令STV、标量替换向量指令STVPN、向量替换标量指令VPNTS、向量检索指令VR、向量点积指令VP、随机向量指令RV、循环移位指令VCS、向量加载指令VLOAD、向量存储指令VS、向量搬运指令VMOVE、矩阵检索指令MR、矩阵加载指令ML、矩阵存储指令MS、矩阵搬运指令MMOVE。
进一步可选地,所述装置用于稀疏神经网络运算或者稠密神经网络运算。
采用本申请实施例,将向量排序指令译码成运算单元执行的微指令,根据微指令将待排序数据向量或所述中间结果进行排序,得到与待排序数据向量等长度的排序后的向量。相对于现有技术中,相关操作串行执行,很难利用排序算法的可并行性,运算速度较慢,且向量排序算法会被分成译码成一系列的指令序列,译码的开销也很大,本申请可以并行执行排序,且降低译码开销,提升了排序效率。
在一种可选实施例中,图8作为图1所示的运算装置的一种变型结构,其运算单元12如图8所示,可以包括分支处理电路1003;其具体的连接结构如图9所示,其中,
主处理电路1001与分支处理电路1003连接,分支处理电路1003与多个从处理电路1002连接;
分支处理电路1003,用于执行转发主处理电路1001与从处理电路1002之间的数据或指令。
在另一种可选实施例中,运算单元12如图3所示,可以包括一个主处理电路1001和多个从处理电路 1002。在一个实施例里,如图3所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个基础电路为:第1行的n 个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路。
K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
可选的,如图10所示,该主处理电路还可以包括:转换处理电路1010、激活处理电路1011、加法处理电路1012中的一种或任意组合;
转换处理电路1010,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
激活处理电路1011,用于执行主处理电路内数据的激活运算;
加法处理电路1012,用于执行加法运算或累加运算。
所述主处理电路,用于将将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该运算指令的结果,将该运算指令的结果发送给所述控制器单元。
所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路(可选地),用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
本申请提供的计算装置设置了互联单元,此互联单元能够根据运算指令的需要将运算单元内的计算器组合连接得到与该运算指令对应的计算拓扑结构,进而在后续的运算单元运算时无需对计算的中间数据执行存储或提取操作,此结构实现单一指令即能实现一次输入即能够进行多次计算器的运算得到计算结果的优点,提高了计算效率。
其中,数据转换单元16从装置外获取结构图中的部分节点,通过控制器单元11判断节点是否经过运算单元12处理,如果已经处理,将该节点舍弃,不做任何操作;如果没有处理,对该节点进行节点格式的转换,转换完成后,将其写入到存储单元10中。控制器单元11将指令从运算装置外部读入,不经转换,写入到存储单元10中。第一次从装置外获取的结构图(如图11所示,图11给出了一种结构图的示意图) 中节点为源节点s,第i次获取的点为第i-1(i>1)次计算后得到的候选节点的邻接节点且此邻接节点未被运算单元处理。可选地,它将从装置外获取的结构图的节点n转化为如下的格式:
(Addr(before(n)),F(n),n,vis)
其中,before(n)表示节点n的前驱节点,Addr(before(n))表示节点n的前驱节点在存储单元10中的地址,F(n)表示从源节点s到节点n的路径上产生的总代价,n表示节点的属性,用于计算单个节点n所产生的代价,vis表示此节点是否被访问过,例如,未被访问过记作0,被访问过记作1,对于源节点before(n) 为n本身,F(n)和vis都设置为0。
存储单元10,用于从数据转换单元数据转换单元14中获取指令和转换后的数据,为运算单元12提供数据,存储经由运算单元12处理后的数据,得到近似最优路径结果并存储,最后将近似最优路径结果写回到装置外部。
运算单元12,从存储单元10中获取节点信息中vis=0的节点,即未被访问过的节点,将此节点的前驱节点的部分信息整合到此节点构成如下的格式:
(F(before(n)),F(n),n,vis)
其中,F(before(n))表示从源节点s到n的前驱节点的路径对应的代价值,F(n)=0。在运算单元中,基于预设代价函数计算节点n所产生的代价值f(n),然后,得到源节点到节点n的路径对应的总代价值 F(n)=f(n)+F(before(n)).此时送入运算单元12的节点有m个,分别表示为n1,n2,…nm,可计算得到m个路径对应的代价值F(n1),F(n2),…F(nm)。将对应的m个节点按照代价值F(n1),F(n2),…F(nm)从小到大的顺序进行排序得到n1′,n2′,…nm′。判断源节点s到n1′的路径是否构成完整的近似最优路径,如果构成,则对控制器单元11发送运算终止指令,并将n1′对应的节点信息(Addr(before(n)),F(n),n,1)传送到存储单元10中。本申请实施例中的预设代价函数可以为以下至少一种:均方误差代价函数、交叉熵代价函数,或者,神经网络中的代价函数。
可选的,假设运算装置允许最大候选节点数为k。当m≤k时,则可以将对应的m个节点都作为候选节点,将更新后的(Addr(before(n)),F(n),n,1)写入存储单元10中;当m>k时,则可以将n1′,n2′,…nk′对应的节点信息(Addr(before(n)),F(n),n,1)写回到存储单元10中。
运算单元12可以在本单元内部维持一个空的堆栈,在收到控制器单元11发送的整合指令之后,对节点信息(Addr(before(n)),F(n),n,1)进行整合,具体地,将节点n压入堆栈中,然后,从存储单元10中获取该堆栈顶部节点的前驱节点,并压入该堆栈,直到栈顶节点的信息中before(n)为n,即栈顶节点为图的源节点。然后,将堆栈中节点不断出栈,按照顺序送入到存储单元10中,存储单元10中获取的节点序列即为最终得到的近似最优路径。
控制器单元11通过存储单元10获取运算所需的指令,存储单元10读取上一次节点从运算装置外部存入的节点的尚未被运算单元12运算的节点,其控制运算单元12进行数据运算,并接收运算单元12发送的运算终止指令,控制运算单元12与存储单元10之间的数据传输。
请参见图12,图12中运算单元12包括节点分发单元41、代价函数计算单元42、排序单元43和终止判断单元44。
其中,节点分发单元41将存储单元10获取的节点n1,n2,…nm分别分配给L个代价函数计算单元42,并由其计算对应的路径代价,其中,前L-1个代价函数计算单元分别分配
Figure RE-GDA0001839452110000141
个节点,第L个代价函数计算单元分配
Figure RE-GDA0001839452110000142
个节点,其中
Figure RE-GDA0001839452110000143
表示向上取整。
如图12中,图中共计L个代价函数计算单元,每个代价函数计算单元42可以实现独立实现从源节点到对应路径的代价值。每个代价函数计算单元42对由节点分发单元41分配的节点,计算得到对应的节点号-路径代价值对(n1,F(n1)),(n2,F(n2)),…(nm,F(nm)),计算路径代价的函数根据实际需要,由控制器单元11进行设置,然后,将计算得到的节点号-路径代价值对(n1,F(n1)),(n2,F(n2)),…(nm,F(nm))传送到排序单元43中。
可选地,代价函数计算单元可以包括乘法器以及加法器。
排序单元43将从代价函数计算单元32获取的各节点的节点号-路径代价值对(n1,F(n1)),(n2,F(n2)),…(nm,F(nm)),根据路径代价值从小到大进行排序,得到排序后的节点号-路径代价值对(n1′,F(n1))′,(n2′,F(n2))′,…(nm′,F(nm)′),并将传送到终止判断单元34。
终止判断单元44从排序单元43中获取排序后的节点号-路径代价值对,根据(n1′,F(n1))′判断是否已经取得近似最优路径,其中,判断是否已经取得近似最优路径的方法根据实际问题由控制器单元11设置。如果已经取得近似最优路径,则终止判断单元34对控制器单元11发送运算终止指令,并将n1′对应的节点信息(Addr(before(n)),F(n),n,1)传送到结果存储单元10中。否则,假设装置允许的最大候选节点数为k,若m≤k,则将对应的m个节点都作为候选节点将更新后的(Addr(before(n)),F(n),n,1)写回到存储单元10 中,若m>k,则将n1′,n2′,…nk′对应的节点信息(Addr(before(n)),F(n),n,1)写回到存储单元10中。
举例说明下,如下提供了一种最优路径寻找方法,具体如下:
步骤1,从运算装置外部获取运算所需的运算指令,经由数据转换单元16存储到存储单元10中,传输到控制器单元11。
步骤2,从运算装置外部将原始图中部分节点传送到数据转换单元16中,装置外部的结构图可以是邻接表、邻接矩阵、顶点对或者其他形式。其中,第一次传送时只传送源节点s,之后传送时传输到数据转换单元1中节点为上一次经运算单元12筛选得到的候选节点的尚未被运算单元12处理过的邻接节点。在此过程中,由控制器单元11判断对应的节点是否已经被运算单元12处理过。数据转换单元16将传入的节点按照(Addr(before(n)),F(n),n,vis)的格式进行转换,然后送至存储单元10中。
步骤3中,控制器单元11控制运算单元12从存储单元10中获取由数据转换单元16传入的尚未被处理的节点n1,n2,…nm,将各个节点与前驱节点的信息进行整合得到格式为(F(before(n)),F(n),n,vis)的节点。然后,运算单元12基于预设代价函数计算节点n所产生的代价值f(n),得到源节点到节点n的路径对应的总代价值F(n)=f(n)+F(before(n))。分别计算m个路径对应的代价值F(n1),F(n2),…F(nm)。将对应的m 个节点按照代价值F(n1),F(n2),…F(nm)从小到大的顺序进行排序得到n1′,n2′,…nm′。判断源节点s到n1′的路径是否构成完整的近似最优路径,如果构成,则对控制器单元11发送运算终止指令,并将n1′对应的节点信息(Addr(before(n)),F(n),n,1)传送到存储单元10中,转入步骤4。否则,假设装置允许的最大候选节点数为K,若m≤k,则将对应的m个节点都作为候选节点将更新后的(Addr(before(n)),F(n),n,1)写回到存储单元10中,若m>k,则将n1′,n2′,…nk′对应的节点信息(Addr(before(n)),F(n),n,1)写回到存储单元10 中,转入到步骤2中。
步骤4中,控制器单元11在收到来自运算单元12的运算终止指令后,判断结果存储单元10是否已经从运算单元12中获取节点信息,如果没有取得节点信息,则一直循环判断,直到取得为止。结果存储单元11在单元内部维持一个空的堆栈,在取得运算结果后,将收到的来自运算单元12的节点信息 (Addr(before(n)),F(n),n,1)压入堆栈中。然后从存储单元10中获取堆栈顶部节点的前驱节点,并压入堆栈,重复此过程,直到栈顶节点的信息中before(n)为n,即栈顶节点为图的源节点。然后,存储单元10将堆栈中节点不断出栈,按照顺序送入到存储单元10中,存储单元10中获取的节点序列即为最终得到的近似最优路径。
在步骤5中,存储单元10将在控制器单元11的控制下,从存储单元10中获取的近似最优路径,并将其传输到装置外部。
采用本申请实施例,通过对结构图进行搜索,找到一条能够满足条件的近似最优路径,可以有效地减少空间消耗,并提高时间效率,且在计算路径的代价的过程中,采用多个代价函数计算单元同时进行计算,可以提高运算的并行性。
需要说明的是,上述运算装置不仅可以进行稀疏神经网络运算,还可以进行稠密神经网络运算。上述运算装置特别适用于稀疏神经网络的运算,是因为稀疏神经网络里0值数据或者绝对值很小的数据非常多。通过映射单元可以提出这些数据,在保证运算精度的情况下,可提高运算的效率。
需要指出的是,本申请实施例中提到的输入神经元和运算结果(或者输出神经元)并非是指整个神经网络的输入层中的神经元和输出层中的神经元,而是对于神经网络中任意相邻的两层神经元,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为运算结果。以卷积神经网络为例,假设一个卷积神经网络有L层,K=1,2,3…L-1,对于第K层和第K+1层来说,第K层被称为输入层,该层中的神经元为上述输入神经元,第K+1层被称为输入层,该层中的神经元为上述运算结果,即除了顶层之外,每一层都可以作为输入层,其下一层为对应的输出层。
上述各单元可以是硬件电路包括数字电路,模拟电路等等。硬件电路的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。上述神经网络运算模块中的运算单元可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。上述存储单元、指令缓存单元,第一输入缓存单元、第二输入缓存单元和输出缓存单元均可以是任何适当的磁存储介质或者磁光存储介质,比如 RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
在一种可行的实施例中,本申请实施例提供了一种神经网络计算装置,该神经网络计算装置包括一个或多个如上述所示实施例所述的神经网络运算模块,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述神经网络计算装置包含多个所述神经网络运算模块时,所述多个所述神经网络运算模块间可以通过特定的结构进行连接并传输数据;
其中,多个所述运算装置通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述运算装置共享同一控制系统或拥有各自的控制系统;多个所述运算装置共享内存或者拥有各自的内存;多个所述运算装置的互联方式是任意互联拓扑。
该神经网络计算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
在一种可行的实施例中,本申请实施例提供了一种组合处理装置,该组合装置包括如上述神经网络计算装置,通用互联接口和其他处理装置。
上述神经网络计算装置与上述其他处理装置进行交互,共同完成用户指定的操作。参见图13,图13 为本申请实施例提供的一种组合处理装置的结构示意图。如图13所示,该组合处理装置包括上述神经网络计算装置1601、通用互联接口1602和其他处理装置1603。
其中,上述其他处理装置1603包括中央处理器(Central Processing Unit)、图形处理器(Graphics Processing Unit,GPU)、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置1603所包括的处理器数量不做限制。其他处理装置1603作为神经网络计算装置1601与外部数据和控制的接口,包括数据搬运,完成对本神经网络计算装置的开启、停止等基本控制;其他处理装置1603也可以和神经网络计算装置1601协作共同完成运算任务。
上述通用互联接口1602,用于在所述神经网络计算装置1601与其他处理装置1603间传输数据和控制指令。该神经网络计算装置1601从其他处理装置1603中获取所需的输入数据,写入神经网络计算装置1601 片上的存储装置;可以从其他处理装置1603中获取控制指令,写入神经网络计算装置1601片上的控制缓存;也可以读取神经网络计算装置1601的存储装置中的数据并传输给其他处理装置1603。
可选的,如图14所示,上述组合处理装置还包括存储装置1604,用于保存在本运算单元/运算装置或其他运算单元所需要的数据,尤其适用于所需要运算的数据在本神经网络计算装置1601或其他处理装置1603的内部存储中无法全部保存的数据。
上述组合装置可以作为手机、机器人、无人机等智能设备的片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。
在一种可行的实施例中,本申请实施例提供了一种神经网络芯片,该神经网络芯片包括任一所示实施例所述的运算装置,或者上述神经网络计算装置或者上述组合处理装置。
在一种可行的实施例中,本申请实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述神经网络芯片。
在一种可行的实施例中,本申请实施例提供了一种板卡,该板卡包括上述神经网络芯片封装结构。
在一种可行的实施例中,本申请实施例提供了一种电子装置,该电子装置包括上述板卡。
其中,该电子装置包括:数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
上述交通工具包括飞机、轮船和/或车辆;上述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任何一种神经网络运算方法的部分或全部步骤。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (23)

1.一种运算装置,其特征在于,所述运算装置包括存储单元、运算单元和控制器单元,所述控制器单元包括指令处理单元,其中,
所述存储单元,用于存储数据和指令;
所述控制器单元,用于从所述存储单元中提取第一指令以及所述第一指令对应的第一数据,所述第一数据包括输入神经元数据和权值数据,所述第一指令包括排序指令或者稀疏处理指令;
所述运算单元,用于响应所述第一指令,对所述输入神经元数据和所述权值数据执行所述第一指令对应的运算操作,得到运算结果;
其中,如所述输入神经元数据为向量;所述第一指令为向量排序指令,以及所述第一数据为待排序数据向量以及待排序向量的中间结果;
所述指令处理单元,用于将所述向量排序指令译码成所述运算单元执行的微指令;
所述运算单元,还具体用于根据所述微指令将所述待排序数据向量或所述中间结果进行排序,得到与所述待排序数据向量等长度的排序后的向量。
2.根据权利要求1所述的装置,其特征在于,所述控制器单元还包括:指令缓存单元,所述指令缓存单元用于对指令进行缓存。
3.根据权利要求1所述的装置,其特征在于,所述运算单元根据所述微指令将所述待排序数据向量或所述中间结果进行排序具体为:
步骤A:若排序后得到的为待排序数据向量的中间结果,则将所述待排序数据向量的中间结果写回到存储单元的源地址,并重复执行所述步骤A,直到得到待排序数据向量的最后结果,则跳转到步骤B;步骤B:若排序得到的为待排序数据向量的最后结果,将所述待排序数据向量的最后结果根据所述向量排序指令提供的目的操作数地址写回到存储单元的数据I/O单元,操作结束。
4.根据权利要求3所述的装置,其特征在于,所述运算单元包括n个向量归并单元构成,其中,n为大于等于2的整数,所述n个向量归并单元用于从所述存储单元中读取不大于2n个已经归并的子向量或者有序子向量,并进行归并,将归并后的结果转存入所述存储单元中,直到已经归并的子向量的长度等于所述待排序数据向量长度,形成排序后的向量。
5.根据权利要求4所述的装置,其特征在于,所述运算单元执行步骤A具体为:
步骤A1、初始化归并次数i为1;
步骤A2、由所述n个向量归并单元进行计算,在第i次归并所述待排序数据向量或所述中间结果时,从所述存储单元中获取所述待排序数据向量或所述中间结果,将所述待排序数据向量或中间结果按顺序分成
Figure FDA0002500355850000011
份,对向量进行两两归并,除最后一份外,每个向量长度为2i-1;m为待排序数据向量的长度;
步骤A3、若归并次数
Figure FDA0002500355850000012
则将归并次数加一,并将处理后的中间结果写回到存储单元源地址,重复执行步骤A2-A3,直到
Figure FDA0002500355850000013
则跳转到步骤B;
所述运算单元执行步骤B,具体为:
若归并次数
Figure FDA0002500355850000014
若只存在分配后的两份待排序数据向量,则经所述n个向量归并单元中的第一个向量归并单元归并后,得到的向量为已排序向量,将排序后的结果根据所述向量排序指令提供的目的操作数地址写入到数据输出单元中,操作结束。
6.根据权利要求5所述的装置,其特征在于,所述运算单元对向量进行两两归并,具体为:
根据所述向量排序指令提供的源操作数地址按顺序编号
Figure FDA0002500355850000021
将编号为2*j-1、2*j的向量分配给第((j-1)mod n)+1个向量归并单元进行处理,其中j>0。
7.根据权利要求1-6任一项所述的装置,其特征在于,所述待排序数据向量为预处理阶段测试数据特征矩阵对应的特征值向量和分类结果的概率向量。
8.根据权利要求1-6任一项所述的装置,其特征在于,所述第一指令包括下述指令中的一个或任意组合:向量间与指令VAV、向量内与指令VAND、向量间或指令VOV、向量内或指令VOR、向量指数指令VE、向量对数指令VL、向量大于判定指令VGT、向量等于判定指令VEQ、向量非指令VINV、向量选择合并指令VMER、向量最大值指令VMAX、标量扩展指令STV、标量替换向量指令STVPN、向量替换标量指令VPNTS、向量检索指令VR、向量点积指令VP、随机向量指令RV、循环移位指令VCS、向量加载指令VLOAD、向量存储指令VS、向量搬运指令VMOVE、矩阵检索指令MR、矩阵加载指令ML、矩阵存储指令MS、矩阵搬运指令MMOVE。
9.根据权利要求1-6任一项所述的装置,其特征在于,所述装置用于稀疏神经网络运算或者稠密神经网络运算。
10.一种神经网络计算装置,其特征在于,所述神经网络计算装置包括一个或多个如权利要求1-9任一项所述的运算装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述神经网络计算装置包含多个所述运算装置时,所述多个所述运算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述运算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述运算装置共享同一控制系统或拥有各自的控制系统;多个所述运算装置共享内存或者拥有各自的内存;多个所述运算装置的互联方式是任意互联拓扑。
11.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求10所述的神经网络计算装置,通用互联接口和其他处理装置;
所述神经网络计算装置与所述其他处理装置进行交互,共同完成用户指定的操作。
12.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求10所述的神经网络计算装置或如权利要求11所述的组合处理装置。
13.一种板卡,其特征在于,所述板卡包括如权利要求12所述的神经网络芯片。
14.一种电子装置,其特征在于,所述电子装置包括如权利要求12所述的神经网络芯片或者如权利要求13所述的板卡。
15.一种运算方法,其特征在于,应用于运算装置,所述运算装置包括存储单元、运算单元和控制器单元,所述控制器单元包括指令处理单元,其中,
所述存储单元存储数据和指令;
所述控制器单元从所述存储单元中提取第一指令以及所述第一指令对应的第一数据,所述第一数据包括输入神经元数据和权值数据,所述第一指令包括排序指令或者稀疏处理指令;
所述运算单元响应所述第一指令,对所述输入神经元数据和所述权值数据执行所述第一指令对应的运算操作,得到运算结果;
其中,如所述输入神经元数据为向量;所述第一指令为向量排序指令,以及所述第一数据为待排序数据向量以及待排序向量的中间结果;
所述指令处理单元将所述向量排序指令译码成所述运算单元执行的微指令;
所述运算单元根据所述微指令将所述待排序数据向量或所述中间结果进行排序,得到与所述待排序数据向量等长度的排序后的向量。
16.根据权利要求15所述的方法,其特征在于,所述控制器单元还包括:指令缓存单元,所述指令缓存单元用于对指令进行缓存。
17.根据权利要求15所述的方法,其特征在于,所述运算单元根据所述微指令将所述待排序数据向量或所述中间结果进行排序具体为:
步骤A:若排序后得到的为待排序数据向量的中间结果,则将所述待排序数据向量的中间结果写回到存储单元的源地址,并重复执行所述步骤A,直到得到待排序数据向量的最后结果,则跳转到步骤B;步骤B:若排序得到的为待排序数据向量的最后结果,将所述待排序数据向量的最后结果根据所述向量排序指令提供的目的操作数地址写回到存储单元的数据I/O单元,操作结束。
18.根据权利要求17所述的方法,其特征在于,所述运算单元包括n个向量归并单元构成,其中,n为大于等于2的整数,所述n个向量归并单元用于从所述存储单元中读取不大于2n个已经归并的子向量或者有序子向量,并进行归并,将归并后的结果转存入所述存储单元中,直到已经归并的子向量的长度等于所述待排序数据向量长度,形成排序后的向量。
19.根据权利要求18所述的方法,其特征在于,所述运算单元执行步骤A具体为:
步骤A1、初始化归并次数i为1;
步骤A2、由所述n个向量归并单元进行计算,在第i次归并所述待排序数据向量或所述中间结果时,从所述存储单元中获取所述待排序数据向量或所述中间结果,将所述待排序数据向量或中间结果按顺序分成
Figure FDA0002500355850000031
份,对向量进行两两归并,除最后一份外,每个向量长度为2i-1;m为待排序数据向量的长度;
步骤A3、若归并次数
Figure FDA0002500355850000032
则将归并次数加一,并将处理后的中间结果写回到存储单元源地址,重复执行步骤A2-A3,直到
Figure FDA0002500355850000033
则跳转到步骤B;
所述运算单元执行步骤B,具体为:
若归并次数
Figure FDA0002500355850000034
若只存在分配后的两份待排序数据向量,则经所述n个向量归并单元中的第一个向量归并单元归并后,得到的向量为已排序向量,将排序后的结果根据所述向量排序指令提供的目的操作数地址写入到数据输出单元中,操作结束。
20.根据权利要求19所述的方法,其特征在于,所述运算单元对向量进行两两归并,具体为:
根据所述向量排序指令提供的源操作数地址按顺序编号
Figure FDA0002500355850000035
将编号为2*j-1、2*j的向量分配给第((j-1)mod n)+1个向量归并单元进行处理,其中j>0。
21.根据权利要求15-20任一项所述的方法,其特征在于,所述待排序数据向量为预处理阶段测试数据特征矩阵对应的特征值向量和分类结果的概率向量。
22.根据权利要求15-20任一项所述的方法,其特征在于,所述第一指令包括下述指令中的一个或任意组合:向量间与指令VAV、向量内与指令VAND、向量间或指令VOV、向量内或指令VOR、向量指数指令VE、向量对数指令VL、向量大于判定指令VGT、向量等于判定指令VEQ、向量非指令VINV、向量选择合并指令VMER、向量最大值指令VMAX、标量扩展指令STV、标量替换向量指令STVPN、向量替换标量指令VPNTS、向量检索指令VR、向量点积指令VP、随机向量指令RV、循环移位指令VCS、向量加载指令VLOAD、向量存储指令VS、向量搬运指令VMOVE、矩阵检索指令MR、矩阵加载指令ML、矩阵存储指令MS、矩阵搬运指令MMOVE。
23.根据权利要求15-20任一项所述的方法,其特征在于,所述装置用于稀疏神经网络运算或者稠密神经网络运算。
CN201811011596.XA 2017-04-20 2018-04-17 一种运算装置及相关产品 Active CN109284823B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
CN2017102617423 2017-04-20
CN201710261742.3A CN108734279B (zh) 2017-04-20 2017-04-20 一种运算装置和方法
CN201710279655.0A CN108733739B (zh) 2017-04-25 2017-04-25 支持集束搜索的运算装置和方法
CN201710279834.4A CN108733352B (zh) 2017-04-25 2017-04-25 支持向量排序的装置、方法及应用
CN2017102798344 2017-04-25
CN2017102796550 2017-04-25
CN201880000808.6A CN109104876B (zh) 2017-04-20 2018-04-17 一种运算装置及相关产品

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201880000808.6A Division CN109104876B (zh) 2017-04-20 2018-04-17 一种运算装置及相关产品

Publications (2)

Publication Number Publication Date
CN109284823A CN109284823A (zh) 2019-01-29
CN109284823B true CN109284823B (zh) 2020-08-04

Family

ID=63856484

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201811011596.XA Active CN109284823B (zh) 2017-04-20 2018-04-17 一种运算装置及相关产品
CN201880000808.6A Active CN109104876B (zh) 2017-04-20 2018-04-17 一种运算装置及相关产品

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201880000808.6A Active CN109104876B (zh) 2017-04-20 2018-04-17 一种运算装置及相关产品

Country Status (4)

Country Link
US (1) US11977968B2 (zh)
EP (2) EP3699826A1 (zh)
CN (2) CN109284823B (zh)
WO (1) WO2018192492A1 (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111399905B (zh) * 2019-01-02 2022-08-16 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN109754072B (zh) * 2018-12-29 2020-06-23 中科寒武纪科技股份有限公司 网络离线模型的处理方法、人工智能处理装置及相关产品
CN111488976B (zh) * 2019-01-28 2023-06-30 中科寒武纪科技股份有限公司 神经网络计算装置、神经网络计算方法及相关产品
CN111523654B (zh) * 2019-02-03 2024-03-29 上海寒武纪信息科技有限公司 处理装置及方法
CN111723921B (zh) * 2019-03-22 2024-05-14 中科寒武纪科技股份有限公司 人工智能计算装置及相关产品
CN109978160B (zh) * 2019-03-25 2021-03-02 中科寒武纪科技股份有限公司 人工智能处理器的配置装置、方法及相关产品
CN111738429B (zh) * 2019-03-25 2023-10-13 中科寒武纪科技股份有限公司 一种计算装置及相关产品
CN111831207B (zh) * 2019-04-16 2024-06-11 阿里巴巴集团控股有限公司 一种数据处理方法、装置及其设备
CN111915002B (zh) * 2019-05-09 2023-12-19 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN111966325A (zh) * 2019-05-20 2020-11-20 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN111966399B (zh) * 2019-05-20 2024-06-07 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN111966403A (zh) * 2019-05-20 2020-11-20 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN111966400B (zh) * 2019-05-20 2024-07-19 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN110490315B (zh) * 2019-08-14 2023-05-23 中科寒武纪科技股份有限公司 神经网络的反向运算稀疏方法及相关产品
CN111126600A (zh) * 2019-12-20 2020-05-08 上海寒武纪信息科技有限公司 神经网络模型的训练方法、数据处理方法和相关产品
CN113032298B (zh) * 2019-12-24 2023-09-29 中科寒武纪科技股份有限公司 用于保序的计算装置、集成电路装置、板卡及保序方法
CN113032299B (zh) * 2019-12-24 2023-09-26 中科寒武纪科技股份有限公司 用于处理请求的总线系统、集成电路装置、板卡及保序方法
CN111260051B (zh) * 2020-02-01 2024-05-14 上海寒武纪信息科技有限公司 神经网络运算方法及相关装置
WO2021168644A1 (zh) * 2020-02-25 2021-09-02 深圳市大疆创新科技有限公司 数据处理装置、电子设备和数据处理方法
CN113626080B (zh) * 2020-05-08 2023-10-03 安徽寒武纪信息科技有限公司 数据处理装置以及相关产品
CN112152947B (zh) * 2020-08-21 2021-07-20 北京百度网讯科技有限公司 处理器及实现方法、电子设备和存储介质
CN114519167A (zh) * 2020-11-19 2022-05-20 华为技术有限公司 一种算子计算方法、装置、设备及系统
WO2022134873A1 (zh) * 2020-12-25 2022-06-30 中科寒武纪科技股份有限公司 数据处理装置、数据处理方法及相关产品
CN112966182B (zh) * 2021-03-09 2024-02-09 中国民航信息网络股份有限公司 一种项目推荐方法及相关设备
CN112732433A (zh) * 2021-03-30 2021-04-30 骊阳(广东)节能科技股份有限公司 一种可进行优先级调配的数据处理系统
CN115185524A (zh) * 2021-04-01 2022-10-14 北京希姆计算科技有限公司 向量指令的识别方法、装置、电子设备及计算机可读存储介质
CN112988238A (zh) * 2021-05-06 2021-06-18 成都启英泰伦科技有限公司 一种基于可扩展指令集cpu内核的扩展运算装置及方法
CN113920315B (zh) * 2021-10-14 2024-04-30 江南大学 一种基于卷积神经网络的服装属性识别方法
CN117807082B (zh) * 2023-12-20 2024-09-27 中科驭数(北京)科技有限公司 哈希处理方法、装置、设备及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105260776A (zh) * 2015-09-10 2016-01-20 华为技术有限公司 神经网络处理器和卷积神经网络处理器
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
WO2016154440A1 (en) * 2015-03-24 2016-09-29 Hrl Laboratories, Llc Sparse inference modules for deep learning
CN106485321A (zh) * 2015-10-08 2017-03-08 上海兆芯集成电路有限公司 具有架构神经网络执行单元的处理器

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210870A (en) * 1990-03-27 1993-05-11 International Business Machines Database sort and merge apparatus with multiple memory arrays having alternating access
DE19623033C1 (de) * 1996-06-08 1997-10-16 Aeg Electrocom Gmbh Verfahren und Anordnung zur Mustererkennung auf statistischer Basis
GB2456775B (en) * 2008-01-22 2012-10-31 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data
US20120246533A1 (en) * 2011-03-24 2012-09-27 Sparsense, Inc. Scalable hierarchical sparse representations supporting prediction, feedforward bottom-up estimation, and top-down influence for parallel and adaptive signal processing
EP2831691A4 (en) * 2012-03-30 2015-11-25 Intel Corp METHOD AND APPARATUS FOR FUSIONING AND SORTING SMALLER SORTED VECTORS IN LARGER SORTING VECTORS
CN102750131B (zh) * 2012-06-07 2015-10-07 中国科学院计算机网络信息中心 一种面向gpu的双调归并排序方法
US9977676B2 (en) * 2013-11-15 2018-05-22 Qualcomm Incorporated Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods
US10339447B2 (en) 2014-01-23 2019-07-02 Qualcomm Incorporated Configuring sparse neuronal networks
US20160283864A1 (en) * 2015-03-27 2016-09-29 Qualcomm Incorporated Sequential image sampling and storage of fine-tuned features
US10140572B2 (en) * 2015-06-25 2018-11-27 Microsoft Technology Licensing, Llc Memory bandwidth management for deep learning applications
US11423323B2 (en) * 2015-09-02 2022-08-23 Qualcomm Incorporated Generating a sparse feature vector for classification
CN106447034B (zh) 2016-10-27 2019-07-30 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016154440A1 (en) * 2015-03-24 2016-09-29 Hrl Laboratories, Llc Sparse inference modules for deep learning
CN105260776A (zh) * 2015-09-10 2016-01-20 华为技术有限公司 神经网络处理器和卷积神经网络处理器
CN106485321A (zh) * 2015-10-08 2017-03-08 上海兆芯集成电路有限公司 具有架构神经网络执行单元的处理器
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法

Also Published As

Publication number Publication date
WO2018192492A1 (zh) 2018-10-25
EP3579152A4 (en) 2020-04-22
CN109104876B (zh) 2021-06-25
EP3699826A1 (en) 2020-08-26
EP3579152A1 (en) 2019-12-11
EP3579152B1 (en) 2022-09-14
CN109284823A (zh) 2019-01-29
US11977968B2 (en) 2024-05-07
CN109104876A (zh) 2018-12-28
US20200034698A1 (en) 2020-01-30

Similar Documents

Publication Publication Date Title
CN109284823B (zh) 一种运算装置及相关产品
US11481215B2 (en) Calculation method and related product
CN109003132B (zh) 广告推荐方法及相关产品
CN109032669B (zh) 神经网络处理装置及其执行向量最小值指令的方法
CN110163363B (zh) 一种计算装置及方法
CN110163334B (zh) 集成电路芯片装置及相关产品
TW202321999A (zh) 一種計算裝置及方法
CN111626413A (zh) 一种计算装置及方法
CN111047022A (zh) 一种计算装置及相关产品
CN111045728B (zh) 一种计算装置及相关产品
CN111353591A (zh) 一种计算装置及相关产品
CN109711540B (zh) 一种计算装置及板卡
CN112766475B (zh) 处理部件及人工智能处理器
CN111260070B (zh) 运算方法、装置及相关产品
CN111260046B (zh) 运算方法、装置及相关产品
CN111198714B (zh) 重训练方法及相关产品
CN111047024A (zh) 一种计算装置及相关产品
CN111382848A (zh) 一种计算装置及相关产品
CN111258641A (zh) 运算方法、装置及相关产品
CN115237370A (zh) 计算装置、数据处理方法及相关产品
CN111047023A (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