首页> 中国专利> 基于随机数的数据处理方法、随机数生成方法及装置

基于随机数的数据处理方法、随机数生成方法及装置

摘要

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

著录项

  • 公开/公告号CN113296736A

    专利类型发明专利

  • 公开/公告日2021-08-24

    原文格式PDF

  • 申请/专利权人 中科寒武纪科技股份有限公司;

    申请/专利号CN202010112195.4

  • 发明设计人 不公告发明人;

    申请日2020-02-24

  • 分类号G06F7/58(20060101);G06F9/54(20060101);

  • 代理机构11277 北京林达刘知识产权代理事务所(普通合伙);

  • 代理人刘新宇

  • 地址 100190 北京市海淀区科学院南路6号科研综合楼644室

  • 入库时间 2023-06-19 12:19:35

说明书

技术领域

本公开涉及计算机技术领域,尤其涉及一种基于随机数的数据处理方法、随机数生成方法及装置。

背景技术

在人工智能技术领域,神经网络算法是最近非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。用GPU和CPU处理起这些大规模的模型,要花费大量的计算时间,并且耗电量很大。

发明内容

基于此,本公开提出了一种基于随机数的数据处理方法、随机数生成方法及装置的技术方案。

根据本公开的一方面,提供了一种基于随机数的数据处理方法,所述方法应用于第一处理器,所述方法包括:在执行使用随机数进行数据处理的目标算子之前,确定所述目标算子对应的标志位是否处于第一状态,其中,所述第一状态用于指示所述标志位对应的随机数地址中存储有目标随机数且所述目标随机数可用,所述目标随机数是由第二处理器上的随机数生成算子生成的;在所述标志位处于所述第一状态的情况下,使用从所述随机数地址获取的所述目标随机数执行所述目标算子的数据处理运算。

根据本公开的一方面,提供了一种随机数生成方法,所述方法应用于第二处理器,所述第二处理器上包括至少一个随机数生成算子,所述方法包括:依次执行各个随机数生成算子,生成各个随机数生成算子对应的随机数,其中,各个随机数生成算子具有对应的随机数地址和标志位;针对任一个随机数生成算子,将该随机数生成算子生成的随机数存储在该随机数生成算子对应的随机数地址中;将该随机数生成算子对应的标志位的状态确定为第一状态,其中,所述第一状态用于指示该随机数生成算子对应的随机数地址中存储有随机数且该随机数可用。

根据本公开的一方面,提供了一种基于随机数的数据处理装置,所述装置应用于第一处理器,所述装置包括:第一确定模块,用于在执行使用随机数进行数据处理的目标算子之前,确定所述目标算子对应的标志位是否处于第一状态,其中,所述第一状态用于指示所述标志位对应的随机数地址中存储有目标随机数且所述目标随机数可用,所述目标随机数是由第二处理器上的随机数生成算子生成的;数据处理模块,用于在所述标志位处于所述第一状态的情况下,使用从所述随机数地址获取的所述目标随机数执行所述目标算子的数据处理运算。

根据本公开的一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述基于随机数的数据处理方法。

根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述基于随机数的数据处理方法。

根据本公开的一方面,提供了一种随机数生成装置,所述装置应用于第二处理器,所述第二处理器上包括至少一个随机数生成算子,所述装置包括:生成模块,用于依次执行各个随机数生成算子,生成各个随机数生成算子对应的随机数,其中,各个随机数生成算子具有对应的随机数地址和标志位;存储模块,用于针对任一个随机数生成算子,将该随机数生成算子生成的随机数存储在该随机数生成算子对应的随机数地址中;确定模块,用于将该随机数生成算子对应的标志位的状态确定为第一状态,其中,所述第一状态用于指示该随机数生成算子对应的随机数地址中存储有随机数且该随机数可用。

根据本公开的一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述随机数生成方法。

根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述随机数生成方法。

针对第一处理器,在执行使用随机数进行数据处理的目标算子之前,确定目标算子对应的标志位是否处于用于指示该标志位对应的随机数地址中存储有目标随机数且该目标随机数可用的第一状态,该目标随机数是由第二处理器上的随机数生成算子生成的,在该标志位处于第一状态的情况下,使用从该随机数地址获取的该目标随机数执行目标算子的数据处理运算,从而使得在第一处理器中无需执行随机数生成操作的情况下可以执行基于随机数的数据处理操作,节约计算时间,减少能耗。

针对包括至少一个随机数生成算子的第二处理器,依次执行各个随机数生成算子以生成各个随机数生成算子对应的随机数,其中,各个随机数生成算子具有对应的随机数地址和标志位,针对任一个随机数生成算子,将该随机数生成算子生成的随机数存储在该随机数生成算子对应的随机数地址中,将该随机数生成算子对应的标志位的状态确定为第一状态,其中,第一状态用于指示该随机数生成算子对应的随机数地址中存储有随机数且该随机数可用,从而可以实现第二处理器单独执行随机数生成操作,节约计算时间,减少能耗。

根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。

图1示出根据本公开实施例的基于随机数的数据处理方法的处理器的示意图;

图2示出本公开实施例的基于随机数的数据处理方法的流程示意图;

图3示出本公开实施例的第一处理器和第二处理器中的算子的示意图;

图4示出本公开实施例的随机数生成方法的流程示意图;

图5示出本公开实施例的基于随机数的数据处理装置的结构框图;

图6示出本公开实施例的随机数生成装置的结构框图;

图7示出本公开实施例的板卡的结构框图。

具体实施方式

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

应当理解,本公开的权利要求、说明书及附图中的术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

根据本公开实施例的基于随机数的数据处理方法可应用于处理器中,该处理器可以是通用处理器,例如中央处理器(Central Processing Unit,CPU),也可以是用于执行人工智能运算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括图形处理单元(Graphics Processing Unit,GPU)、神经网络处理单元(Neural-Network Processing Unit,NPU)、数字信号处理单元(Digital Signal Process,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对处理器的具体类型不作限制。

在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。

图1示出本公开实施例的基于随机数的数据处理方法的处理器的示意图。如图1所示,处理器100包括多个处理单元101以及存储单元102,多个处理单元101用于执行指令序列,存储单元102用于存储数据,可包括随机存储器(Random Access Memory,RAM)和寄存器堆。处理器100中的多个处理单元101既可共用部分存储空间,例如共用部分RAM存储空间和寄存器堆,又可同时拥有各自的存储空间。

图2示出本公开实施例的基于随机数的数据处理方法的流程示意图。该方法应用于第一处理器,如图2所示,该方法可以包括:

在步骤S21中:在执行使用随机数进行数据处理的目标算子之前,确定目标算子对应的标志位是否处于第一状态,其中,第一状态用于指示该标志位对应的随机数地址中存储有目标随机数且该目标随机数可用,该目标随机数是由第二处理器上的随机数生成算子生成的。

在步骤S22中:在该标志位处于第一状态的情况下,使用从该随机数地址获取的该目标随机数执行该目标算子的数据处理运算。

在一种可能的实现方式中,第一处理器为人工智能处理器。

例如,第一处理器可以为机器学习处理芯片MLU。需要说明的是,第一处理器除了可以是MLU之外,还可以是其它类型的人工智能处理器,本公开对此不做具体限定。

实际应用中,在第一处理器中执行基于随机数的数据处理操作,也需要在第一处理器中执行随机数生成操作以生成需要的随机数,导致数据处理模型复杂,要花费大量的计算时间。根据本公开的基于随机数的数据处理方法,将随机数生成操作从第一处理器中剥离出来放到第二处理器中执行,并利用共享内存(例如,DDR、HBM)实现第一处理器和第二处理器之间的交互,使得基于随机数的数据处理操作和随机数生成操作可以在第一处理器和第二处理器中并行,从而可以节约计算时间,减少能耗。

在一种可能的实现方式中,该方法还包括:为第二处理器上的各个随机数生成算子分配对应的随机数地址和标志位,其中,第二处理器上包括至少一个随机数生成算子。

图3示出本公开实施例的第一处理器和第二处理器中的算子的示意图。如图3所示,第二处理器中包括随机数生成算子1和随机数生成算子2,第一处理器为随机数生成算子1分配共享内存中对应的随机数地址1和标志位1,以及为随机数生成算子2分配共享内存中对应的随机数地址2和标志位2。如图3所示,第一处理器中包括算子1-算子8,其中,算子3为使用随机数生成算子1生成的随机数进行数据处理的目标算子(以下称为目标算子3),目标算子3与随机数地址1和标志位1之间存在对应关系;第一处理器中的算子7为使用随机数生成算子2生成的随机数进行数据处理的目标算子(以下称为目标算子7),目标算子7与随机数地址2和标志位2之间存在对应关系。其中,第二处理器中随机数生成算子的个数可以根据实际情况(例如,第一处理器中目标算子的个数)进行设置,本公开对此不做具体限定。

在一种可能的实现方式中,该方法还包括:将各个随机数生成算子对应的标志位初始化为第二状态,其中,针对任一个随机数生成算子,该随机数生成算子对应的标志位处于第二状态用于指示该随机数生成算子对应的随机数地址中未存储随机数,或,该随机数生成算子对应的随机数地址中存储的随机数不可用。

仍以上述图3为例,在初始化过程中,即第一处理器和第二处理器均未执行任何数据处理时,将随机数生成算子1对应的标志位1初始化为第二状态,用于指示随机数地址1中未存储随机数或随机数地址1中存储的随机数不可用;将随机数生成算子2对应的标志位2初始化为第二状态,用于指示随机数地址2中未存储随机数或随机数地址1中存储的随机数不可用。例如,第一状态可以用1表示,第二状态可以用0表示。第一状态和第二状态的表示形式除了可以用0/1表示,还可以有其它表示方式,本公开对此不做具体限定。

在一种可能的实现方式中,该方法还包括:为第二处理器上的各个随机数生成算子确定对应的随机数类型和随机种子,其中,第二处理器上包括至少一个随机数生成算子。

仍以上述图3为例,在初始化过程中,即第一处理器和第二处理器均未执行任何数据处理时,为随机数生成算子1确定对应的随机数类型和随机种子,为随机数生成算子2确定对应的随机数类型和随机种子。其中,任一随机数生成算子对应的随机数类型和随机种子是根据该随机数生成算子对应的目标算子的数据处理需求确定的。

在一种可能的实现方式中,目标算子的前序算子为同步算子;在执行使用随机数进行数据处理的目标算子之前,确定目标算子对应的标志位是否处于第一状态,包括:根据同步算子,轮询该标志位是否处于第一状态。

仍以上述图3为例,如图3所示,目标算子3的前序算子2为同步算子(以下称为同步算子2),目标算子7的前序算子6为同步算子(以下称为同步算子6)。在执行到前序算子3时,根据前序算子3,轮询目标算子3对应的标志位1直至确定标志位1处于第一状态,标志位1处于第一状态表示随机数地址1中存储有目标算子3需要使用的目标随机数且该目标随机数可用,进而向下执行目标算子3,从随机数地址1中获取该目标随机数以执行目标算子3的数据处理运算;在执行到前序算子6时,根据前序算子6,轮询目标算子7对应的标志位2直至确定标志位2处于第一状态,标志位2处于第一状态表示随机数地址2中存储有目标算子7需要使用的目标随机数且该目标随机数可用,进而向下执行目标算子7,从随机数地址2中获取该目标随机数以执行目标算子7的数据处理运算。

在一种可能的实现方式中,该方法还包括:在根据该随机数地址获取目标随机数之后,将该标志位的状态更新为第二状态,其中,第二状态用于指示该随机数地址中未存储目标随机数,或,该随机数地址中存储的目标随机数不可用。

仍以上述图3为例,目标算子3从随机数地址1中获取目标随机数以执行目标算子3的数据处理运算之后,将标志位1的状态更新为第二状态,以指示随机数地址1中未存储目标随机数或随机数地址1中存储的目标随机数不可用;目标算子7从随机数地址2中获取目标随机数以执行目标算子7的数据处理运算之后,将标志位2的状态更新为第二状态,以指示随机数地址2中未存储目标随机数或随机数地址2中存储的目标随机数不可用。

针对第一处理器,在执行使用随机数进行数据处理的目标算子之前,确定目标算子对应的标志位是否处于用于指示该标志位对应的随机数地址中存储有目标随机数且该目标随机数可用的第一状态,该目标随机数是由第二处理器上的随机数生成算子生成的,在该标志位处于第一状态的情况下,使用从该随机数地址获取的该目标随机数执行目标算子的数据处理运算,从而使得在第一处理器中无需执行随机数生成操作的情况下可以执行基于随机数的数据处理操作,节约计算时间,减少能耗。

图4示出本公开实施例的随机数生成方法的流程示意图。该方法应用于第二处理器,第二处理器上包括至少一个随机数生成算子,如图4所示,该方法可以包括:

在步骤S41中:依次执行各个随机数生成算子,生成各个随机数生成算子对应的随机数,其中,各个随机数生成算子具有对应的随机数地址和标志位。

在步骤S42中:针对任一个随机数生成算子,将该随机数生成算子生成的随机数存储在该随机数生成算子对应的随机数地址中。

在步骤S43中:将该随机数生成算子对应的标志位的状态确定为第一状态,其中,第一状态用于指示该随机数生成算子对应的随机数地址中存储有随机数且该随机数可用。

在一种可能的实现方式中,第二处理器为ARM处理器。

需要说明的是,第二处理器除了可以是ARM之外,还可以是其它能够执行随机数生成算子的处理器,本公开对此不做具体限定。

仍以上述图3为例,第一处理器为随机数生成算子1分配共享内存中对应的随机数地址1和标志位1,以及为随机数生成算子2分配共享内存中对应的随机数地址2和标志位2,且初始化过程中,标志位1和标志位2都被初始化为第二状态,以及为随机数生成算子1和随机数生成算子2确定了对应的随机数类型和随机种子。在第二处理器中依次执行各个随机数生成算子。执行随机数生成算子1,并将随机数生成算子1生成的随机数存储在随机数地址1中,以及将标志位1的状态更新为第一状态;执行随机数生成算子2,并将随机数生成算子2生成的随机数存储在随机数地址2中,以及将标志位2的状态更新为第一状态。其中,随机数生成算子只有输出没有输入,可以和其它算子一同构成融合算子。

针对包括至少一个随机数生成算子的第二处理器,依次执行各个随机数生成算子以生成各个随机数生成算子对应的随机数,其中,各个随机数生成算子具有对应的随机数地址和标志位,针对任一个随机数生成算子,将该随机数生成算子生成的随机数存储在该随机数生成算子对应的随机数地址中,将该随机数生成算子对应的标志位的状态确定为第一状态,其中,第一状态用于指示该随机数生成算子对应的随机数地址中存储有随机数且该随机数可用,从而可以实现第二处理器单独执行随机数生成操作,节约计算时间,减少能耗。

图5示出本公开实施例的基于随机数的数据处理装置的结构框图。如图5所示的装置50应用于第一处理器,装置50包括:

第一确定模块51,用于在执行使用随机数进行数据处理的目标算子之前,确定所述目标算子对应的标志位是否处于第一状态,其中,第一状态用于指示该标志位对应的随机数地址中存储有目标随机数且目标随机数可用,目标随机数是由第二处理器上的随机数生成算子生成的;

数据处理模块52,用于在该标志位处于第一状态的情况下,使用从该随机数地址获取的目标随机数执行目标算子的数据处理运算。

在一种可能的实现方式中,该目标算子的前序算子为同步算子;

第一确定模块51具体用于:

根据该同步算子,轮询该标志位是否处于第一状态。

在一种可能的实现方式中,装置50还包括:

状态更新模块,用于在根据该随机数地址获取目标随机数之后,将该标志位的状态更新为第二状态,其中,第二状态用于指示该随机数地址中未存储目标随机数,或,该随机数地址中存储的目标随机数不可用。

在一种可能的实现方式中,装置50还包括:

分配模块,用于为第二处理器上的各个随机数生成算子分配对应的随机数地址和标志位,其中,第二处理器上包括至少一个随机数生成算子。

在一种可能的实现方式中,装置50还包括:

初始化模块,用于将各个随机数生成算子对应的标志位初始化为第二状态,其中,针对任一个随机数生成算子,该随机数生成算子对应的标志位处于第二状态用于指示该随机数生成算子对应的随机数地址中未存储随机数,或,该随机数生成算子对应的随机数地址中存储的随机数不可用。

在一种可能的实现方式中,装置50还包括:

第二确定模块,用于为第二处理器上的各个随机数生成算子确定对应的随机数类型和随机种子,其中,第二处理器上包括至少一个随机数生成算子。

在一种可能的实现方式中,第一处理器为人工智能处理器。

本公开提供的基于随机数的数据处理装置50能够实现图2所示方法实施例中的各个步骤,并实现相同的技术效果,为避免重复,这里不再赘述。

图6示出本公开实施例的随机数生成装置的结构框图。如图6所示的装置60应用于第二处理器,第二处理器上包括至少一个随机数生成算子,装置60包括:

生成模块61,用于依次执行各个随机数生成算子,生成各个随机数生成算子对应的随机数,其中,各个随机数生成算子具有对应的随机数地址和标志位;

存储模块62,用于针对任一个随机数生成算子,将该随机数生成算子生成的随机数存储在该随机数生成算子对应的随机数地址中;

确定模块63,用于将该随机数生成算子对应的标志位的状态确定为第一状态,其中,第一状态用于指示该随机数生成算子对应的随机数地址中存储有随机数且该随机数可用。

本公开提供的随机数生成装置60能够实现图4所示方法实施例中的各个步骤,并实现相同的技术效果,为避免重复,这里不再赘述。

应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。

另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(ResistiveRandom Access Memory)、动态随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器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)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述基于随机数的数据处理装置和/或随机数生成装置。

在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及人工智能芯片;其中,人工智能芯片与存储器件、控制器件以及接口装置分别连接;存储器件,用于存储数据;接口装置,用于实现人工智能芯片与外部设备之间的数据传输;控制器件,用于对人工智能芯片的状态进行监控。

图7示出本公开实施例的板卡的结构框图。如图7所示,板卡除了包括人工智能芯片71以外,还可以包括其它的配套部件,该配套部件包括但不限于:存储器件72、接口装置73和控制器件74;

存储器件72与人工智能芯片71通过总线连接,用于存储数据。存储器件72可以包括多组存储单元721。每一组存储单元721与人工智能芯片72通过总线连接。可以理解,每一组存储单元721可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。

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

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

所述接口装置与所述人工智能芯片电连接。所述接口装置用于实现所述人工智能芯片71与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,接口装置73可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,接口装置73还可以是其它的接口,本公开并不限制上述其它的接口的具体表现形式,接口单元721能够实现转接功能即可。另外,人工智能芯片71的计算结果仍由接口装置73传送回外部设备(例如服务器)。

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

在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。交通工具包括飞机、轮船和/或车辆;家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、B超仪和/或心电图仪。

本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述基于随机数的数据处理方法和/或随机数生成方法。计算机可读存储介质可以是非易失性计算机可读存储介质。

本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为调用存储器存储的指令,以执行上述基于随机数的数据处理方法和/或随机数生成方法。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

依据以下条款可更好地理解前述内容:

条款A1,一种基于随机数的数据处理方法,所述方法应用于第一处理器,所述方法包括:

在执行使用随机数进行数据处理的目标算子之前,确定所述目标算子对应的标志位是否处于第一状态,其中,所述第一状态用于指示所述标志位对应的随机数地址中存储有目标随机数且所述目标随机数可用,所述目标随机数是由第二处理器上的随机数生成算子生成的;

在所述标志位处于所述第一状态的情况下,使用从所述随机数地址获取的所述目标随机数执行所述目标算子的数据处理运算。

条款A2,根据条款A1所述的方法,所述目标算子的前序算子为同步算子;

在执行使用随机数进行数据处理的目标算子之前,确定所述目标算子对应的标志位是否处于第一状态,包括:

根据所述同步算子,轮询所述标志位是否处于所述第一状态。

条款A3,根据条款A1所述的方法,所述方法还包括:

在根据所述随机数地址获取所述目标随机数之后,将所述标志位的状态更新为第二状态,其中,所述第二状态用于指示所述随机数地址中未存储所述目标随机数,或,所述随机数地址中存储的所述目标随机数不可用。

条款A4,根据条款A1所述的方法,所述方法还包括:

为所述第二处理器上的各个随机数生成算子分配对应的随机数地址和标志位,其中,所述第二处理器上包括至少一个随机数生成算子。

条款A5,根据条款A4所述的方法,所述方法还包括:

将各个随机数生成算子对应的标志位初始化为第二状态,其中,针对任一个随机数生成算子,该随机数生成算子对应的标志位处于第二状态用于指示该随机数生成算子对应的随机数地址中未存储随机数,或,该随机数生成算子对应的随机数地址中存储的随机数不可用。

条款A6,根据条款A1所述的方法,所述方法还包括:

为所述第二处理器上的各个随机数生成算子确定对应的随机数类型和随机种子,其中,所述第二处理器上包括至少一个随机数生成算子。

条款A7,根据条款A1至A6中任一项所述的方法,所述第一处理器为人工智能处理器。

条款A8,一种随机数生成方法,所述方法应用于第二处理器,所述第二处理器上包括至少一个随机数生成算子,所述方法包括:

依次执行各个随机数生成算子,生成各个随机数生成算子对应的随机数,其中,各个随机数生成算子具有对应的随机数地址和标志位;

针对任一个随机数生成算子,将该随机数生成算子生成的随机数存储在该随机数生成算子对应的随机数地址中;

将该随机数生成算子对应的标志位的状态确定为第一状态,其中,所述第一状态用于指示该随机数生成算子对应的随机数地址中存储有随机数且该随机数可用。

条款A9,根据条款A8所述的方法,所述第二处理器为ARM处理器。

条款A10,一种基于随机数的数据处理装置,所述装置应用于第一处理器,所述装置包括:

第一确定模块,用于在执行使用随机数进行数据处理的目标算子之前,确定所述目标算子对应的标志位是否处于第一状态,其中,所述第一状态用于指示所述标志位对应的随机数地址中存储有目标随机数且所述目标随机数可用,所述目标随机数是由第二处理器上的随机数生成算子生成的;

数据处理模块,用于在所述标志位处于所述第一状态的情况下,使用从所述随机数地址获取的所述目标随机数执行所述目标算子的数据处理运算。

条款A11,一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为调用所述存储器存储的指令,以执行条款A1至A7中任意一项所述的方法。

条款A12,一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款A1至A7中任意一项所述的方法。

条款A13,一种随机数生成装置,所述装置应用于第二处理器,所述第二处理器上包括至少一个随机数生成算子,所述装置包括:

生成模块,用于依次执行各个随机数生成算子,生成各个随机数生成算子对应的随机数,其中,各个随机数生成算子具有对应的随机数地址和标志位;

存储模块,用于针对任一个随机数生成算子,将该随机数生成算子生成的随机数存储在该随机数生成算子对应的随机数地址中;

确定模块,用于将该随机数生成算子对应的标志位的状态确定为第一状态,其中,所述第一状态用于指示该随机数生成算子对应的随机数地址中存储有随机数且该随机数可用。

条款A14,一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为调用所述存储器存储的指令,以执行条款A8或A9所述的方法。

条款A15,一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款A8或A9所述的方法。

以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号