一种计算装置及板卡的制作方法

文档序号:17590226发布日期:2019-05-03 21:43阅读:223来源:国知局
一种计算装置及板卡的制作方法

本申请涉及信息处理技术领域,具体涉及一种计算装置及板卡。



背景技术:

随着信息技术的不断发展和人们日益增长的需求,人们对信息及时性的要求越来越高了。目前,终端对信息的获取以及处理均是基于通用处理器获得的。例如通用处理器循环神经网络被广泛应用于语音识别,语言建模,翻译,图片描述等领域,近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。循环神经网络具有时间衰减,为了解决循环神经网络的时间衰减,提出了gru(门控循环单元网络,gatedrecurrentunit)来解决时间衰减的问题。在实践中发现,这种基于通用处理器运行软件程序来运行gru时,效率低,功耗高,而且各个处理器之间的相互通信成为性能的瓶颈。



技术实现要素:

本申请实施例提供了一种计算装置及相关产品,可提升gru的处理速度,提高效率、节省功耗,在mlu上实现gru的运算。

第一方面,本申请实施例提供一种gru的运算方法,所述gru包括:输入层、隐层、重置门、更新门、当前记忆门和输出层,所述运算方法应用于计算装置,所述运算方法包括:

所述计算装置获取输入层t时刻输入的输入数据xt、前一个gru的隐层输入的输出数据ht-1和权值;

所述计算装置从预先封装的函数库中调用预先构造的gru算子;

所述计算装置将输入数据xt、输出数据ht-1、权值输入到所述预先构造的gru算子中,得到输出结果ht。

第二方面,本申请实施例提供一种计算装置,所述计算装置用于执行gru运算,所述gru包括:输入层、隐层、重置门、更新门、当前记忆门和输出层;

所述计算装置,用于获取输入层t时刻输入的输入数据xt、前一个gru的隐层输入的输出数据ht-1和权值;

所述计算装置,用于从预先封装的函数库中调用预先构造的gru算子;

所述计算装置,用于将输入数据xt、输出数据ht-1、权值输入到所述预先构造的gru算子中,得到输出结果ht。

第三方面,本申请实施例提供了一种gru运算装置,其特征在于,所述gru运算装置包括一个或多个第一方面提供的计算装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的gru运算,将执行结果通过i/o接口传递给其他处理装置;

当所述gru装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;

其中,多个所述计算装置通过快速外部设备互连总线pcie总线进行互联并传输数据,以支持更大规模的gru的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。

第四方面,提供一种组合处理装置,所述组合处理装置包括第三方面的gru运算装置,通用互联接口和其他处理装置;

所述gru运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。

第五方面,提供一种神经网络芯片,神经网络芯片包括第一方面提供的计算装置或第三方面提供的gru运算装置或第四方面提供的组合处理装置。

第六方面,提供一种电子设备,所述电子设备包括如第四方面提供的芯片。

第七方面,提供一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及第五方面提供的神经网络芯片;

其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;

所述存储器件,用于存储数据;

所述接口装置,用于实现所述芯片与外部设备之间的数据传输;

所述控制器件,用于对所述芯片的状态进行监控。

在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。

在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为一种gru的结构示意图

图2是本申请实施例提供的一种计算装置的结构示意图。

图2a是本申请实施例提供的一种运算单元的结构示意图。

图3是本申请提供的另一种计算装置的结构示意图。

图3a是本申请提供的主处理电路的结构示意图。

图3b是本申请提供的从处理电路的结构示意图。

图4a是本申请提供的一种树型模块发送端的结构示意图。

图4b是本申请提供的一种树型模块接收端的结构示意图。

图4c是本申请提供的二叉树结构示意图。

图5是本申请一个实施例提供的计算装置的结构图。

图6是本申请一个实施例提供的gru的运算方法的流程示意图。

图7是本申请实施例提供的一种组合处理装置的结构图。

图8是本申请实施例提供的另一种组合处理装置的结构图。

图9是本申请实施例提供的一种板卡的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结果或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

参阅图1,图1为本申请实施例提供的一种gru的示意图,如图1所示,该gru(门控循环单元,gatedrecurrentunit)包括:输入层、隐层、重置门、更新门、当前记忆门和输出层,其中,输入层分别与重置门、更新门和当前记忆门连接,上一个gru单元的隐层分别与当前gru单元重置门、更新门、当前记忆门以及输出层连接,gru为lstm(长短期记忆网络,longshort-termmemory)的一种变形体,图1中重置门的输出结果zt用于控制前一时刻的状态信息被带入到当前状态中的程度,重置门的输出结果rt用于控制前一状态有多少信息被写入到当前记忆门的输出结果nt上,重置的输出结果rt门越小,前一状态的信息被写入的越少,通过重置门和更新门的控制,合适的信息将会被写入输出结果ht中,并保存到gru的隐层中,并传递到下一个gru单元,这样就解决了循环神经网络随着时间衰减的问题。

参阅图2,图2为本申请实施例提供的一种计算装置,该计算装置用于执行gru运算,该gru包括:输入层、隐层、重置门、更新门、当前记忆门和输出层;

所述计算装置,用于获取输入层t时刻输入的输入数据xt、前一个gru的隐层输入的输出数据ht-1和权值;

所述计算装置,用于从预先封装的函数库中调用预先构造的gru算子;

所述计算装置,用于将输入数据xt、输出数据ht-1、权值输入到所述预先构造的gru算子中,得到输出结果ht。

本申请提供的技术方案将gru的运算过程预先编译成对应的算子,从而实现在mlu上执行gru的运算,无需cpu对指令译码以及数据内存的访问,提高了gru的运算速度,提高了运行效率。

可选的,所述计算装置,在将输入数据xt、输出数据ht-1、权值输入到所述预先构造的gru算子中,得到输出结果ht时,具体用于:

将输入数据xt、输出数据ht-1、权值输入到所述gru算子中与重置门对应的算子中,得到重置门的输出结果rt;

将输入数据xt、输出数据ht-1、权值输入到所述gru算子中与更新门对应的算子中,得到更新门的输出结果zt;

将输入数据xt、输出数据ht-1、权值以及重置门的的输出结果rt输入到所述gru算子中与当前记忆门对应的算子中,得到当前记忆门的输出结果nt;

将更新门的输出结果zt、当前记忆门的输出结果nt以及输出数据ht-1输入到所述gru算子中与输出层对应的算子中,得到输出结果ht。

在一可能的示例中,在t=0时,即xt为第零时刻的输入数据时,输入的输出数据h-1为预先设置的一个初始化值,且在gru为多层gru时,输入的输出数据ht-1为一个初始化的向量,主处理电路在将输入数据xt拆分为多个输入数据块时,需将该输出数据ht-1拆分为多个输出数据块,并将该多个输出数据块分发到与每层gru的对应的从处理电路中,以保证计算每层gru在t=0的输出结果h0时,接收到的输出数据h-1不同;当t>0时,计算本层的gru在t时刻的输出时,在接收到上一个gru的隐层输入的输出数据ht-1后,由于在得到每层gru的输出结果ht,主处理电路会将该层的输出结果ht输入到整形算子和拆分算子中,得到最终输出结果,故本层gru接收到的上一个gru的隐层输入的输出数据ht-1本质上为已经拆分好的多个输出数据块,所以,主处理电路无需对输出数据ht-1进行数据的拆分操作,只需将接收到的输出数据ht-1分发到对应的从处理电路,即可执行本层gru的运算过程。

其中,算子是一个函数空间到另一个函数空间上的映射。

其中,预先构造算子的理由是:由于要在机器学习处理器mlu(machinelearningprocessorunit,mlu)实现gru的运算,该机器学习处理器mlu应用于机器学习运算,其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等,该机器学习处理器mlu具体可以包括npu(neural-networkprocessingunit,神经网络处理器单元)、dsp(digitalsignalprocess,数字信号处理)、现场可编程门阵列(field-programmablegatearray,fpga)芯片的一种或组合。而mlu的数据是封装好的,无法获取到数据的存储地址,故无法像在cpu上通过对指令译码的方式,使用for循环移动指针来实现gru的运算。可以理解,mlu执行的运算往往需要构造算子来完成,mlu上的算子较难复用,故预先将gru的每个运算过程编译成与其对应的算子,得到多个算子,将编译好的多个算子预先封装在函数库中,在执行gru运算时,通过函数接口从预先封装的函数库中调取相应的gru算子,将输入数据输入到调取的gru算子中,执行与gru算子对应的运算过程,得到输出结果。例如,在mlu上执行a和b的加法操作得到c时,需提前构造一个加法算子,将a和b输入到该加法算子中,执行求和操作,得到c,如果需要执行另外一个加法操作,需要再构造一个加法算子。

可选的,gru的运算如下所示:

rt=sigmoid(wir*xt+bir+whr*ht-1+bhr);

zt=sigmoid(wiz*xt+biz+whz*ht-1+bhz);

nt=tanh(win*xt+bin+rt·(whn*ht-1+bhn));

ht=(1-zt)·nt+zt·ht-1。

其中,xt为t时刻的输入数据,ht-1为前一个gru的隐层输入的输出数据,rt表示重置门的输出,zt表示更新门的输出,nt表示当前记忆门的输出,ht表示t时刻的输出结果,wr、wz和wn分别表示与重置门、更新门、当前记忆门对应的权值,br、bz和bn分别表示重置门、更新门、当前记忆门所对应偏置,wir、whr、bir、bhr为分别与重置门对应的第一权值、第二权值、第一偏置、第二偏置,wiz、whz、biz、bhz为分别与更新门对应的第一权值、第二权值、第一偏置、第二偏置,win、whn、bin、bhn为分别与当前记忆门对应的第一权值、第二权值、第一偏置、第二偏置。

现有技术中,在执行gru的运算时,需要先将wir和whr拼接为wr,将wiz和whz拼接为wz,将win和whn拼接为wn,以及将bir和bhr拼接为br,将biz和bhz拼接为bz,将bin和bhn拼接为bn,即wr=[wir,whr],wz=[wiz,whz],wn=[win,whn],br=[bir,bhr],bz=[biz,bhz],bn=[bin,bhn],其中,[]表示向量拼接的拼接算法,得到与重置门、更新门以及当前记忆门对应的权值wr、wz、wn以及偏置br、bz、bn后,再与输入数据xt和输出数据ht-1进行相应的运算,得到输出结果ht,由于本申请中通过构造算子的方式来实现gru的每一步运算过程,如进行向量拼接,则在调用每个算子进行运算时,需将拼接好的权值与偏置拆分,得到每个算子需要的权值与偏置,进行了无效的拼接和拆分过程,影响运算速度,所以本申请在获取输入的权值和偏置后,将权值和偏置预先拆分为成与重置门、更新门以及当前记忆门对应的权值和偏置块,并对各个权值和偏置块添加与各个门、输入数据ht以及输出数据ht-1对应的标识信息,在计算每个门的输出结果时依据标识信息查询到与该门对应的权值和偏置后,直接与对应的输入数据和输出数据进行运算,保证在mlu上执行gru运算的同时,提高gru的运算速度,提高运算效率。

可以理解的,基于上述gru的运算过程,构造下面gru算子实现在mlu上执行gru的运算:

具体来讲,构造与重置门对应的算子,具体为:构造第一乘法算子(wir*xt+bir)、第二乘法算子(whr*ht-1+bhr)、第一加法算子,用于对第一乘法算子和第二乘法算子的输出结果求和,第一激活算子,用于激活第一加法算子的输出结果,得到重置门的输出rt,第一激活算子的激活类型为sigmoid;构造与更新门对应的算子,具体为:构造第三乘法算子wiz*xt+biz、第四乘法算子,whz*ht-1+bhz,第二加法算子,用于对第三乘法算子和第四乘法算子的输出结果求和,第二激活算子,用于激活第二加法算子的输出结果,得到更新门的输出zt,第一激活算子的激活类型为sigmoid;构造与当前记忆门对应的算子,具体为:构造第五乘法算子win*xt+bin和第六乘法算子whn*ht-1+bhn、第一向量乘法算子rt·(whn*ht-1+bhn),即用于对第六乘法算子的输出结果与rt执行点乘,第三加法算子,用于对第五乘法算子和第一向量乘法算子的输出结果求和,第三激活算子,用于激活第三加法算子的输出结果,得到当前记忆门的输出结果nt,第三激活算子的激活类型为tanh;构造与输出层对应的算子,具体为:构造第二向量乘法算子,对zt和nt执行点乘,计算zt·nt第一减法算子,用于对nt和第二向量乘法算子的输出结果执行减法法,计算(nt-zt·nt),即(1-zt)·nt,第三向量乘法算子,对zt和ht-1执行点乘,计算zt·ht-1,第四加法算子,对第三向量乘法算子的输出结果和第一减法算子的输出结果求和,计算(1-zt)·nt+zt·ht-1,得到t时刻的输出结果ht。

可选的,在从预先封装的函数库中调用预先构造的gru算子之前,所述计算装置还用于获取偏置。

可选的,在得到重置门的输出结果时,所述计算装置,具体用于:获取所述gru算子中与重置门对应的第一乘法算子、第二乘法算子、第一加法算子以及第一激活算子,所述第一激活算子的激活类型为sigmoid;将输入数据xt、权值以及偏置输入到所述第一乘法算子中,计算(wir*xt+bir),得到第一运算结果,其中,wir和bir为权值和偏置中分别与重置门对应的第一权值和第一偏置;将输出数据ht-1、权值以及偏置输入到所述第二乘法算子中,计算(whr*ht-1+bhr),得到第二运算结果,其中,whr和bhr为权值和偏置中分别与重置门对应的第二权值和第二偏置;将所述第一运算结果和所述第二运算结果输入到所述第一加法算子中求和,得到第一求和结果;将所述第一求和结果输入到所述第一激活算子中激活,得到重置门的输出结果rt。

可选的,在得到更新门的输出结果时,所述计算装置,具体用于:获取所述gru算子中与更新门对应的第三乘法算子、第四乘法算子、第二加法算子以及第二激活算子,所述第二激活算子的激活类型为sigmoid;将输入数据xt、权值以及偏置输入到所述第三乘法算子中,计算(wiz*xt+biz),得到第三运算结果,其中,wir和bir为权值和偏置中分别与更新门对应的第一权值和第一偏置;将输出数据ht-1、权值以及偏置输入到所述第四乘法算子中,计算(whz*ht-1+bhz),得到第四运算结果,其中,whz和bhz为权值和偏置中分别与更新门对应的第二权值和第二偏置;将所述第三运算结果和所述第四运算结果输入到所述第二加法算子中,得到第二求和结果;将所述第二求和结果输入到所述第二激活算子中激活,得到更新门的输出结果zt。

可选的,在得到当前记忆门的输出结果nt时,所述计算装置,具体用于:获取所述gru算子中与当前记忆门对应的第五乘法算子、第六乘法算子、第一向量乘法算子、第三加法算子、第三激活算子,所述第三激活算子的激活类型为tanh;将输入数据xt、权值以及偏置输入到所述第五乘法算子,计算(win*xt+bin),得到第五运算结果,其中,win和bin为权值和偏置中分别与当前记忆门对应的第一权值和第一偏置;将输出数据ht-1、权值以及偏置输入到所述第六乘法算子,计算和(whn*ht-1+bhn),得到第六运算结果,其中,whn和bhn为权值和偏置中分别与当前记忆门对应的第二权值和第二偏置;将所述第六运算结果以及重置门的输出结果rt输入到所述第一向量乘法算子,对重置门的输出数据rt与所述第六运算结果进行点乘,得到第一点乘结果;将所述第一点乘结果与所述第五运算结果输入到所述第三加法算子中求和,得到第三求和结果;将所述第三求和结果输入到所述第三激活算子激活,得到当前记忆门的输出结果nt。

可选的,所述计算装置,具体用于:获取所述gru算子中与输出层对应的第二向量乘法算子、第一减法算子、第三向量乘法算子、第四加法算子;将更新门的输出结果zt以及当前记忆门的输出结果nt输入到所述第二向量乘法算子,进行点乘运算,得到第二点乘结果;将所述当前记忆门的输出结果nt以及所述第二点乘结果输入到所述第一减法算子,执行减法运算,得到第一差值结果;将更新门的输出结果zt和输出数据ht-1输入到所述第三向量乘法算子,进行点乘运算,得到第三点乘结果;将所述第一差值结果和所述第三点乘结果输入到所述第四加法算子求和,得到输出结果ht。

可选的,如图2所示,上述计算装置具体包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和至少一个从处理电路;

所述控制器单元,用于获取输入层在t时刻的输入数据xt、前一个gru的隐层输入的输出数据ht-1、权值;

所述控制器单元,用于从预先封装的函数库中调用预先构造的gru算子;

所述控制器单元,用于将输入数据xt、输出数据ht-1、权值以及gru算子发送给所述主处理电路;

所述主处理电路,用于将输入数据xt拆分为多个输入数据块、将输出数据ht-1拆分为多个输出数据ht-1,将多个输入数据块、输出数据ht-1分发给从处理电路,将权值以及gru算子中的部分算子广播给从处理电路;

从处理电路,用于将接收到的输入数据块、输出数据ht-1、权值输入到部分算子中与重置门对应的算子中,得到重置门对应的中间结果,将该中间结果发送给主处理电路,主处理电路将该中间结果输入到gru算子中的另一部分算子中与重置门对应的算子中,得到重置门的输出结果rt;

从处理电路,用于将接收到的输入数据块、输出数据ht-1、权值输入到部分算子中与更新门对应的算子中,得到更新门的中间结果,将该中间结果发送给主处理电路,所述主处理电路将该中间结果输入到另一部分算子中与更新门对应的算子中,得到重置门的输出结果rt

所述主处理电路,用于将重置门的输出结果rt分发给从处理电路;

从处理电路将接收到的输入数据块、输出数据ht-1、权值、输出结果rt输入到部分算子中与当前记忆门对应的算子中,得到当前记忆门的中间结果,将当前记忆门的中间结果发送给主处理电路,所述主处理电路将当前记忆门的中间结果输入到另一部分算子中与当前记忆门对应的算子中,得到当前记忆门的输出结果nt;

所述主处理电路,用于将更新门的输出结果zt、当前记忆门的输出结果nt、输出数据ht-1输入到另一部分算子与输出层对应的算子中,得到输出结果ht。

可选的,上述计算装置还可以包括:存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储计算指令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。

可选的,该控制器单元包括:指令存储单元110、指令处理单元111和存储队列单元113;

指令存储单元110,用于存储gru运算关联的gru算子;

所述指令处理单元111,用于对所述gru算子解析得到多个gru算子;

存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个gru算子。

上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为多维(2维以上)数据。

可选的,该控制器单元还可以包括:

所述依赖关系处理单元108,用于在具有多个gru算子时,确定第一gru算子与所述第一gru算子之前的第零gru算子是否存在关联关系,如所述第一gru算子与所述第零gru算子存在关联关系,则将所述第一gru算子缓存在所述指令存储单元内,在所述第零gru算子执行完毕后,从所述指令存储单元提取所述第一gru算子传输至所述运算单元;

所述确定该第一gru算子与第一gru算子之前的第零运算指令是否存在关联关系包括:

依据所述第一gru算子提取所述第一gru算子中所需数据(例如矩阵)的第一存储地址区间,依据所述第零gru算子提取所述第零gru算子中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一gru算子与所述第零gru算子具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一gru算子与所述第零gru算子不具有关联关系。

在另一种可选实施例中,运算单元12如图3所示,可以包括一个主处理电路101和多个从处理电路102。在一个实施例里,如图3所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图3所示的k个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。

k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的输入数据块、输出数据ht-1、权值、偏置以及中间结果的转发。

可选的,如图3a所示,主处理电路101还可以包括:转换处理电路110、激活处理电路111、加法处理电路112中的一种或任意组合;

转换处理电路110,用于数据执行转换处理,具体为:在执行gru运算之前,转换处理电路110,具体用于:获取主处理电路101接收的整形算子和拆分算子,将主处理电路101接收的输入数据xt、输出数据ht-1权值以及偏置调整为预设的四维张量格式,即执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);在得到输出结果ht时,将输出结果ht输入到另一部分算子中的整形算子和拆分算子,将输出结果ht调整为预设格式(即四维张量格式),得到最终输出结果。

激活处理电路111,用于执行主处理电路内数据的激活运算;

加法处理电路112,用于执行加法运算或累加运算。

可选的,如图3b所示,从处理电路102还可以包括:乘法处理电路120和累加处理电路121中的一种或任意组合;

乘法处理电路120,用于执行从处理电路内数据的乘法运算,如向量和向量的点乘运算、矩阵和矩阵点乘运算、矩阵和矩阵的卷积运算、矩阵和向量的卷积运算,等等;

累加处理电路121,用于执行累加运算。

另一个实施例里,该gru算子中所要执行的计算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。

在一种可选的实施方案中,如图4a所示,所述运算单元包括:树型模块40,所述树型模块包括:一个根端口401和多个支端口404,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;

上述树型模块具有收发功能,如图4a所示,该树型模块即为发送功能,如图4b所示,该树型模块即为接收功能。

所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的输入数据块、输出数据ht-1、权值、偏置以及中间结果。

可选的,该树型模块为计算装置的可选择结果,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。

可选的,该树型模块可以为n叉树结构,例如,如图4c所示的二叉树结构,当然也可以为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图4c所示的倒数第一层的节点。

可选的,运算单元12可以携带单独的缓存,如图2a所示,可以包括:神经元缓存单元,该神经元缓存单元63缓存该从处理电路的输入神经元向量数据和输出神经元值数据。

如图2a,该运算单元还可以包括:权值缓存单元64,用于缓存该从处理电路在计算过程中需要的权值数据。

在一种可选实施例中,运算单元12如图5所示,可以包括分支处理电路103;其具体的连接结构如图5所示,其中,

上述分支处理电路103可以包括存储器,如图5所示,分支处理电路103的存储器的大小可以为在单个从处理电路需要存储的最大数据容量的2到2.5倍之间,这样设置以后,从处理电路即无需设置存储器,相对于一个分支处理电路,其只用设置2.5*r(单个从处理器电路所需的容量值),如果没有分支处理电路,那么需要设置4*r,并且其寄存器的利用率还低,因此该结构可以有效的降低存储器的总容量,降低成本。

所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的输入数据块、输出数据ht-1、权值、偏置以及中间结果。

下面通过一个实际的例子来说明上述输入数据的拆分的方式,对于输出结果与输入数据因为数据类型相同,其拆分的方式基本相同,假设该数据类型为矩阵,该矩阵为h*w,则拆分的方式可以为,如h的数值较小(小于设定阈值,例如100),那么在沿h方向将矩阵h*w拆分成h个向量(每个向量为矩阵h*w的一行),每个向量即为一个输入数据块,并对输入数据块的第一元素的位置标记在输入数据块,即输入数据块h,w,其中,h、w分别为输入数据块h,w的第一元素在h方向以及w方向的值,例如第一输入数据块,该h=1.w=1。从处理电路接收到输入数据块h,w后,将输入数据块h,w与权值每列元素一一对应相乘和累加运算得到输入中间结果w,i,中间结果的w为输入数据块的w值,i为与输入数据块计算的列元素的列数值,主处理电路确定中间结果在隐层输出结果的位置为w、i。例如,输入数据块输入数据块1,1与权值第一列计算得到的输入中间结果1,1,主处理电路将输入中间结果1,1排列在隐层输出结果第一行第一列。

下面详细叙述在mlu上运算gru的过程:

可选的,在得到重置门的输出中间结果时:乘法处理电路120,用于将接收到的输入数据块以及权值和偏置输入到第一乘法算子中,对接收到的输入数据块中的元素值与权值中对应位置的元素值执行乘积运算,并将乘积结果与偏置中对应位置的元素值执行求和运算,得到乘积结果;将接收到的输出数据ht-1以及权值和偏置输入到第二乘法算子,对接收到的输出数据ht-1中的元素值与权值中对应位置的元素值执行乘积运算,并将乘积结果与偏置中对应位置的另元素值执行求和运算,得到另一乘积结果;累加处理电路121,用于将所述乘积结果进行累加运算,得到重置门的输入中间结果(wir*xt+bir),将另一乘积结果进行累加运算,得到重置门的输出中间结果(whr*ht-1+bhr);

其中,第一乘法算子、第二乘法算子为部分算子中与重置门对应的算子,wir、whr、bir、和bhr为权值和偏置中分别与重置门对应的第一权值、第二权值、第一偏置和第二偏置。

可选的,在得到重置门的输出结果rt时,加法处理电路112,用于将重置门的输入中间结果和输出中间结果输入到第一加法算子中,对输入中间结果和输出中间结果执行求和运算,得到第一求和结果;激活处理电路111,用于将第一求和结果输入到第一激活算子中,对第一求和结果执行sigmoid激活运算,得到重置门的输出结果rt;

第一加法算子、第一激活算子为另一部分算子中与重置门对应的算子。

可选的,在得到更新门的输出中间结果时,乘法处理电路120,用于将接收到的输入数据块以及权值和偏置输入到第三乘法算子,对接收到的输入数据块中的元素值与权值中对应位置的元素值执行乘积运算,并将乘积结果与偏置中对应位置的元素值执行求和运算,得到乘积结果;将接收到的输出数据ht-1以及权值和偏置输入到第四乘法算子,对接收到的输出数据ht-1中的元素值与权值中对应位置的元素值执行乘积运算,并将乘积结果与偏置中对应位置的另元素值执行求和运算,得到另一乘积结果;累加处理电路121,用于将该乘积结果进行累加运算,得到更新门的输入中间结果(wiz*xt+biz),将另一乘积结果进行累加运算,得到重置门的输出中间结果(whz*ht-1+bhz);

其中,第三乘法算子、第四乘法算子为部分算子中与更新门对应的算子,wir、whz、bir和bhz为权值和偏置中分别与更新门对应的第一权值、第二权值、第一偏置和第二偏置。

可选的,在得到更新门的输出结果zt时,加法处理电路112,用于将更新门的输入中间结果和输出中间输入到第二加法算子中,对该输入中间结果和输出中间执行求和运算,得到第二求和结果;激活处理电路111,用于将第二求和结果输入到第二激活算子中,对第二求和结果执行sigmoid激活运算,得到更新门的输出结果zt;第二加法算子、第二激活算子为另一部分算子中与更新门对应的算子。

可选的,在得到当前记忆门的输出中间结果时,乘法处理电路120,用于将接收到的输入数据块、权值和偏置输入到第五乘法算子,对接收到的输入数据块中的元素值与权值中对应位置的元素值执行乘积运算,并将乘积结果与偏置中对应位置的元素值执行求和运算,得到乘积结果;将接收到的输出数据ht-1以及权值和偏置输入到第六乘法算子,对接收到的输出数据ht-1中的元素值与权值中对应位置的元素值执行乘积运算,并将乘积结果与偏置中对应位置的另元素值执行求和运算,得到另一乘积结果;累加处理电路121,用于将该乘积结果进行累加运算,得到当前记忆门的输入中间结果(win*xt+bin),将另一乘积结果累加,得到当前记忆门的输出中间结果(wnz*ht-1+bnz);乘法处理电路120,用于将重置门的输出结果rt输入到第一向量乘法算子中,对重置门的输出结果rt与当前记忆门的输出中间结果执行点乘运算,得到第一点乘结果;

其中,第五乘法算子、第六乘法算子、第一向量乘法算子为部分算子中与当前记忆门对应的算子,win、whn、bin和bhn为权值和偏置中分别与当前记忆门对应的第一权值、第二权值、第一偏置和第二偏置。

可选的,在得到当前记忆门的输出结果nt时,加法处理电路112,用于将当前记忆门的输入中间结果和第一点乘结果输入到第三加法算子中,对当前记忆门的输入中间结果和点乘结果执行求和运算,得到第三求和结果;激活处理电路111,用于将第三求和结果输入到第三激活算子中,对第三求和结果执行tanh激活运算,得到当前记忆门的输出结果nt;

第三加法算子、第三激活算子为另一部分算子中与当前记忆门对应的算子。

可选的,在确定输出层的输出结果时,主处理电路101,用于将更新门的输出结果zt、当前记忆门的输出结果nt以及输出数据ht-1发送给从处理电路102;

乘法处理电路120,用于将更新门的输出结果zt以及当前记忆门的输出结果nt输输入到第二向量乘法算子,对更新门的输出结果zt以及当前记忆门的输出结果nt执行点乘,得到第二点乘结果,将接收到的更新门的输出结果zt以及输出数据ht-1输入到第三向量乘法算子,对更新门的输出结果zt以及输出数据ht-1执行点乘,得到第三点乘结果,将第二点乘结果和第三点乘结果发送给主处理电路101;加法处理电路112,用于将当前记忆门的输出结果nt以及第二点乘结果输入到第一减法算子中,对当前记忆门的输出结果nt以及点乘结果执行减法运算,得到第一差值结果,将第三点乘结果以及第一差值结果输入到第四加法算子,对第三点乘结果以及第一差值结果执行求和,得到输出结果ht;

其中,第二向量乘法算子、第三向量乘法算子为部分算子中与输出层对应的算子,第一减法算子、第四减法算子为另一部分算子中与输出层对应的算子。

如图6所示,本申请还提供了一种gru的运算方法,该gru包括:输入层、隐层、重置门、更新门、当前记忆门和输出层,所述运算方法应用于计算装置,所述运算方法包括:

步骤s601:所述计算装置获取输入层t时刻输入的输入数据xt、前一个gru的隐层输入的输出数据ht-1和权值。

步骤s602:所述计算装置从预先封装的函数库中调用预先构造的gru算子。

步骤s603:所述计算装置将输入数据xt、输出数据ht-1、权值输入到所述预先构造的gru算子中,得到输出结果ht。

可选的,所述将输入数据xt、输出数据ht-1、权值输入到所述预先构造的gru算子中,得到输出结果ht具体包括:

将输入数据xt、输出数据ht-1、权值输入到所述gru算子中与重置门对应的算子中,得到重置门的输出结果rt;

将输入数据xt、输出数据ht-1、权值输入到所述gru算子中与更新门对应的算子中,得到更新门的输出结果zt;

将输入数据xt、输出数据ht-1、权值以及重置门的的输出结果rt输入到所述gru算子中与当前记忆门对应的算子中,得到当前记忆门的输出结果nt;

将更新门的输出结果zt、当前记忆门的输出结果nt以及输出数据ht-1输入到所述gru算子中与输出层对应的算子中,得到输出结果ht;

可选的,在在从预先封装的函数库中调用预先构造的gru算子之前,所述方法还包括:

所述计算装置获取偏置。

可选的,所述将输入数据xt、输出数据ht-1、权值输入到所述gru算子中与重置门对应的算子中,得到重置门的输出结果rt具体包括:

获取所述gru算子中与重置门对应的第一乘法算子、第二乘法算子、第一加法算子以及第一激活算子,所述第一激活算子的激活类型为sigmoid;

将输入数据xt、权值以及偏置输入到所述第一乘法算子中,计算(wir*xt+bir),得到第一运算结果,wir和bir为权值和偏置中分别与重置门对应的第一权值和第一偏置;

将输出数据ht-1、权值以及偏置输入到所述第二乘法算子中,计算(whr*ht-1+bhr),得到第二运算结果,whr和bhr为权值和偏置中分别与重置门对应的第二权值和第二偏置;

将所述第一运算结果和所述第二运算结果输入到所述第一加法算子中求和,得到第一求和结果;

将所述第一求和结果输入到所述第一激活算子中激活,得到重置门的输出结果rt。

可选的,所述将输入数据xt、输出数据ht-1、权值输入到所述gru算子中与更新门对应的算子中,得到更新门的输出结果zt具体包括:

获取所述gru算子中与更新门对应的第三乘法算子、第四乘法算子、第二加法算子以及第二激活算子,所述第二激活算子的激活类型为sigmoid;

将输入数据xt、权值以及偏置输入到所述第三乘法算子中,计算(wiz*xt+biz),得到第三运算结果,其中,wir和bir为权值和偏置中分别与更新门对应的第一权值和第一偏置;

将输出数据ht-1、权值以及偏置输入到所述第四乘法算子中,计算(whz*ht-1+bhz),得到第四运算结果,其中,whz和bhz为权值和偏置中分别与更新门对应的第二权值和第二偏置;

将所述第三运算结果和所述第四运算结果输入到所述第二加法算子中,得到第二求和结果;

将所述第二求和结果输入到所述第二激活算子中激活,得到更新门的输出结果zt。

可选的,所述将输入数据xt、输出数据ht-1、权值以及重置门的的输出结果rt输入到所述gru算子中与当前记忆门对应的算子中,得到当前记忆门的输出结果nt具体包括:

获取所述gru算子中与当前记忆门对应的第五乘法算子、第六乘法算子、第一向量乘法算子、第三加法算子、第三激活算子,所述第三激活算子的激活类型为tanh;

将输入数据xt、权值以及偏置输入到所述第五乘法算子,计算(win*xt+bin),得到第五运算结果,其中,win和bin为权值和偏置中分别与当前记忆门对应的第一权值和第一偏置;

将输出数据ht-1、权值以及偏置输入到所述第六乘法算子,计算和(whn*ht-1+bhn),得到第六运算结果,其中,whn和bhn为权值和偏置中分别与当前记忆门对应的第二权值和第二偏置;

将所述第六运算结果以及重置门的输出结果rt输入到所述第一向量乘法算子,对重置门的输出数据rt与所述第六运算结果进行点乘,得到第一点乘结果;

将所述第一点乘结果与所述第五运算结果输入到所述第三加法算子中求和,得到第三求和结果;

将所述第三求和结果输入到所述第三激活算子激活,得到当前记忆门的输出结果nt。

可选的,所述将更新门的输出结果zt、当前记忆门的输出结果nt以及输出数据ht-1输入到所述gru算子中与输出层对应的算子中,得到输出结果ht具体包括:

获取所述gru算子中与输出层对应的第二向量乘法算子、第一减法算子、第三向量乘法算子、第四加法算子;

将更新门的输出结果zt以及当前记忆门的输出结果nt输入到所述第二向量乘法算子,进行点乘运算,得到第二点乘结果;

将所述当前记忆门的输出结果nt以及所述第二点乘结果输入到所述第一减法算子,执行减法运算,得到第一差值结果;

将更新门的输出结果zt和输出数据ht-1输入到所述第三向量乘法算子,进行点乘运算,得到第三点乘结果;

将所述第一差值结果和所述第三点乘结果输入到所述第四加法算子求和,得到输出结果ht。

在一可能的示例中,所述计算装置具体包括:运算单元以及控制器单元;所述运算单元包括:一个主处理电路和从处理电路;所述方法具体包括:

所述控制器单元获取输入层在t时刻的输入数据xt、前一个gru的隐层输入的输出数据ht-1、权值;

所述控制器单元从预先封装的函数库中调用预先构造的gru算子;

所述控制器单元将输入数据xt、输出数据ht-1、权值以及gru算子发送给所述主处理电路;

所述主处理电路将输入数据xt拆分为多个输入数据块、将输出数据ht-1拆分为多个输出数据ht-1,将多个输入数据块、多个输出数据ht-1分发给从处理电路,将权值以及gru算子中的部分算子广播给从处理电路;从处理电路将接收到的输入数据块、输出数据ht-1、权值输入到部分算子中与重置门对应的算子中,得到重置门的中间结果,将该中间结果发送给主处理电路,主处理电路将该中间结果输入到gru算子中的另一部分算子中与重置门对应的算子中,得到重置门的输出结果rt;

从处理电路将接收到的输入数据块、输出数据ht-1、权值输入到部分算子中重置门对应的算子中,得到重置门的中间结果,将该中间结果发送给主处理电路,所述主处理电路将该中间结果输入到另一部分算子中与重置门对应的算子中,得到重置门的输出结果rt

所述主处理电路将重置门的输出结果rt分发给从处理电路;

从处理电路将接收到的输入数据块、输出数据ht-1、权值、输出结果rt输入到部分算子中与当前记忆门对应的算子中,得到当前记忆门的中间结果,将当前记忆门的中间结果发送给主处理电路,所述主处理电路将当前记忆门的中间结果输入到另一部分算子中与当前记忆门对应的算子中,得到当前记忆门的输出结果nt;

所述主处理电路将更新门的输出结果zt、当前记忆门的输出结果nt、输出数据ht-1输入到另一部分算子与输出层对应的算子中,得到输出结果ht。

可选的,在所述控制器单元获取输入层在t时刻的输入数据xt、前一个gru的隐层输入的输出数据ht-1、权值时,所述方法还包括:所述控制器单元获取偏置,将偏置发送给所述主处理电路;所述主处理电路将偏置广播给从处理电路。

在上述可能的示例中,在t=0时,即xt为第零时刻的输入数据时,输入的输出数据h-1则为预先设置的一个初始化值,且在gru为多层gru时,输入的输出数据ht-1为一个初始化的向量,主处理电路在将输入数据xt拆分为多个输入数据块时,需将该输出数据ht-1拆分为多个输出数据块,并将该多个输出数据块分发到与每层gru的对应的从处理电路中,以保证计算每层gru在t=0的输出结果h0时,接收到的输出数据h-1不同;当t>0时,计算本层的gru在t时刻的输出时,在接收到上一个gru的隐层输入的输出数据ht-1后,由于在得到每层gru的输出结果ht,主处理电路会将该层的输出结果ht输入到整形算子和拆分算子中,得到最终输出结果,故本层gru接收到的上一个gru的隐层输入的输出数据ht-1本质上为已经拆分好的多个输出数据块,所以,主处理电路无需对输出数据ht-1进行数据的拆分操作,只需将接收到的输出数据ht-1分发到对应的从处理电路,即可执行本层gru的运算过程。

可选的,如所述从处理电路的数量为多个,所述运算单元包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;

所述树型模块转发所述主处理电路与所述多个从处理电路之间的输入数据块、输出数据ht-1、权值、偏置以及中间结果。

可选的,如所述从处理电路的数量为多个,所述运算单元还包括一个或多个分支处理电路,每个分支处理电路连接至少一个从处理电路;

所述分支处理电路转发所述主处理电路与所述多个从处理电路之间的输入数据块、输出数据ht-1、权值、偏置以及中间结果。

可选的,如所述从处理电路的数量为多个,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个基础电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;

所述k个从处理电路在所述主处理电路以及多个从处理电路之间的输入数据块、输出数据ht-1、权值、偏置以及中间结果的转发。

在一可能的示例中,所述从处理电路包括:乘法处理电路和累加处理电路;所述得到重置门的输出中间结果具体包括:

所述乘法处理电路将接收到的输入数据块以及权值和偏置输入到第一乘法算子中,对接收到的输入数据块中的元素值与权值中对应位置的元素值执行乘积运算,并将乘积结果与偏置中对应位置的元素值执行求和运算,得到乘积结果;将接收到的输出数据ht-1以及权值和偏置输入到第二乘法算子,对接收到的输出数据ht-1中的元素值与权值中对应位置的元素值执行乘积运算,并将乘积结果与偏置中对应位置的另元素值执行求和运算,得到另一乘积结果;

所述累加处理电路将所述乘积结果进行累加运算,得到重置门的输入中间结果(wir*xt+bir),将另一乘积结果累加,得到重置门的输出中间结果(whr*ht-1+bhr);

其中,第一乘法算子、第二乘法算子为部分算子中与重置门对应的算子,wir、whr、bir、和bhr为权值和偏置中分别与重置门对应的第一权值、第二权值、第一偏置和第二偏置。

在一可能的示例中,所述主处理电路包括激活处理电路和加法处理电路;所述得到重置门的输出结果rt具体包括:

所述加法处理电路将重置门的输入中间结果和输出中间结果输入到第一加法算子中,对输入中间结果和输出中间结果执行求和运算,得到第一求和结果;

所述激活处理电路将第一求和结果输入到第一激活算子中,对第一求和结果执行sigmoid激活运算,得到重置门的输出结果rt;

第一加法算子、第一激活算子为另一部分算子中与重置门对应的算子。

在一可能的示例中,所述从处理电路包括:乘法处理电路和累加处理电路;所述得到更新门的输出中间结果具体包括:

所述乘法处理电路将接收到的输入数据块以及权值和偏置输入到第三乘法算子,对接收到的输入数据块中的元素值与权值中对应位置的元素值执行乘积运算,并将乘积结果与偏置中对应位置的元素值执行求和运算,得到乘积结果;将接收到的输出数据ht-1以及权值和偏置输入到第四乘法算子,对接收到的输出数据ht-1中的元素值与权值中对应位置的元素值执行乘积运算,并将乘积结果与偏置中对应位置的另元素值执行求和运算,得到另一乘积结果;

所述累加处理电路将该乘积结果进行累加运算,得到更新门的输入中间结果(wiz*xt+biz),将另一乘积结果进行累加运算,得到重置门的输出中间结果(whz*ht-1+bhz);

其中,第三乘法算子、第四乘法算子为部分算子中与更新门对应的算子,wir、whz、bir和bhz为权值和偏置中分别与更新门对应的第一权值、第二权值、第一偏置和第二偏置。

在一可能的示例中,所述主处理电路包括激活处理电路和加法处理电路;所述得到更新门的输出结果zt具体包括:

所述加法处理电路将更新门的输入中间结果和输出中间输入到第二加法算子中,对该输入中间结果和输出中间执行求和运算,得到第二求和结果;

所述激活处理电路将第二求和结果输入到第二激活算子中,对第二求和结果执行sigmoid激活运算,得到更新门的输出结果zt;

第二加法算子、第二激活算子为另一部分算子中与更新门对应的算子。

在一可能的示例中,所述从处理电路包括:乘法处理电路和累加处理电路;所述得到当前记忆门的输出中间结果具体包括:

所述乘法处理电路将接收到的输入数据块、权值和偏置输入到第五乘法算子,对接收到的输入数据块中的元素值与权值中对应位置的元素值执行乘积运算,并将乘积结果与偏置中对应位置的元素值执行求和运算,得到乘积结果;将接收到的输出数据ht-1、权值和偏置输入到第六乘法算子,对接收到的输出数据ht-1中的元素值与权值中对应位置的元素值执行乘积运算,并将乘积结果与偏置中对应位置的另元素值执行求和运算,得到另一乘积结果;

所述累加处理电路将该乘积结果进行累加运算,得到当前记忆门的输入中间结果(win*xt+bin),将另一乘积结果进行累加运算,得到当前记忆门的输出中间结果(wnz*ht-1+bnz);

所述乘法处理电路将重置门的输出结果rt输入到第一向量乘法算子中,对重置门的输出结果rt与当前记忆门的输出中间结果执行点乘运算,得到第一点乘结果;

其中,第五乘法算子、第六乘法算子、第一向量乘法算子为部分算子中与当前记忆门对应的算子,win、whn、bin和bhn为权值和偏置中分别与当前记忆门对应的第一权值、第二权值、第一偏置和第二偏置。

在一可能的示例中,所述主处理电路包括激活处理电路和加法处理电路;所述得到当前记忆门的输出结果nt具体包括:

所述加法处理电路将当前记忆门的输入中间结果和第一点乘结果输入到第三加法算子中,对当前记忆门的输入中间结果和第一点乘结果执行求和运算,得到第三求和结果;

所述激活处理电路将第三求和结果输入到第三激活算子中,对第三求和结果执行tanh激活运算,得到当前记忆门的输出结果nt;

第三加法算子、第三激活算子为另一部分算子中与当前记忆门对应的算子。

在一可能的示例中,所述主处理电路包括加法处理电路,所述从处理电路包括乘法处理电路;所述确定输出层的输出结果具体包括:

所述主处理电路将更新门的输出结果zt、当前记忆门的输出结果nt以及输出数据ht-1发送给从处理电路;

所述乘法处理电路将更新门的输出结果zt以及当前记忆门的输出结果nt输输入到第二向量乘法算子,对更新门的输出结果zt以及当前记忆门的输出结果nt执行点乘,得到第二点乘结果,将接收到的更新门的输出结果zt以及输出数据ht-1输入到第三向量乘法算子,对更新门的输出结果zt以及输出数据ht-1执行点乘,得到第三点乘结果,将第二点乘结果和第三点乘结果发送给主处理电路;

所述加法处理电路将当前记忆门的输出结果nt以及第二点乘结果输入到第一减法算子中,对当前记忆门的输出结果nt以及点乘结果执行减法运算,得到第一差值结果,将第三点乘结果以及第一差值结果输入到第四加法算子,对第二点乘结果以及第一差值结果执行求和,得到输出结果ht;

其中,第二向量乘法算子、第三向量乘法算子为部分算子中与输出层对应的算子,第一减法算子、第四加法算子为另一部分算子中与输出层对应的算子。

在一可能的示例中,主处理电路包括转换处理电路;

所述转换处理电路将输出结果ht输入到另一部分算子中的整形算子和拆分算子,将输出结果ht的数据格式调整为预设格式,得到最终输出结果。

本申请还揭露了一个gru装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的gru运算,执行结果通过i/o接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过pcie总线进行互联并传输数据,以支持更大规模的卷积神经网络训练的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。

该gru装置具有较高的兼容性,通过pcie接口与各种类型的服务器相连接。

本申请还揭露了一个组合处理装置,其包括上述的gru装置,通用互联接口,和其他处理装置。gru运算装置与其他处理装置进行交互,共同完成用户指定的操作。图7为组合处理装置的示意图。

其他处理装置,包括中央处理器cpu、图形处理器gpu、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为gru运算装置与外部数据和控制的接口,包括数据搬运,完成对本gru运算装置的开启、停止等基本控制;其他处理装置也可以和gru运算装置协作共同完成运算任务。

通用互联接口,用于在所述gru装置与其他处理装置间传输数据和控制指令。该gru装置从其他处理装置中获取所需的输入数据,写入gru装置片上的存储装置;可以从其他处理装置中获取控制指令,写入gru装置片上的控制缓存;也可以读取gru装置的存储模块中的数据并传输给其他处理装置。

可选的,该结构如图8所示,还可以包括存储装置,存储装置分别与所述gru装置和所述其他处理装置连接。存储装置用于保存在所述gru装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本gru装置或其他处理装置的内部存储中无法全部保存的数据。

该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的soc片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。

在一些实施例里,还申请了一种芯片,其包括了上述gru装置或组合处理装置。

在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。

在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。参阅图9,图9提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;

所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是ddrsdram(英文:doubledataratesdram,双倍速率同步动态随机存储器)。

ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个ddr4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。可以理解,当每一组所述存储单元中采用ddr4-3200颗粒时,数据传输的理论带宽可达到25600mb/s。

在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在所述芯片中设置控制ddr的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。

所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至所述芯片,实现数据转移。优选的,当采用pcie3.0x16接口传输时,理论带宽可达到16000mb/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。

所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过spi接口电连接。所述控制器件可以包括单片机(microcontrollerunit,mcu)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。

在一些实施例里,申请了一种电子设备,其包括了上述板卡。

电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。

所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1