CN110865950B - 数据预处理方法、装置、计算机设备和存储介质 - Google Patents

数据预处理方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN110865950B
CN110865950B CN201810987293.5A CN201810987293A CN110865950B CN 110865950 B CN110865950 B CN 110865950B CN 201810987293 A CN201810987293 A CN 201810987293A CN 110865950 B CN110865950 B CN 110865950B
Authority
CN
China
Prior art keywords
target
input data
memory
data
sub
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
CN201810987293.5A
Other languages
English (en)
Other versions
CN110865950A (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
Priority to CN202110016335.2A priority Critical patent/CN112732601B/zh
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201810987293.5A priority patent/CN110865950B/zh
Priority to JP2019568721A priority patent/JP6867518B2/ja
Priority to EP19812653.4A priority patent/EP3640810A4/en
Priority to EP19217269.0A priority patent/EP3757896B1/en
Priority to US16/622,503 priority patent/US11966583B2/en
Priority to KR1020197036813A priority patent/KR102519467B1/ko
Priority to PCT/CN2019/093144 priority patent/WO2020042739A1/zh
Priority to US16/718,874 priority patent/US11243895B2/en
Publication of CN110865950A publication Critical patent/CN110865950A/zh
Application granted granted Critical
Publication of CN110865950B publication Critical patent/CN110865950B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)

Abstract

本申请涉及一种数据预处理方法、装置、计算机设备和存储介质,通过将目标运算操作对应的目标输出数据存储在靠近处理器的第一存储器上,通过减少目标输出数据的读取次数,可以减少运算过程中的I/O读取操作的占用时间,从而可以提高处理器的速度及效率。

Description

数据预处理方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据预处理方法、装置、计 算机设备和存储介质。
背景技术
随着数据量的爆炸式增长,机器学习等人工智能算法得到了越来越多的应 用。机器是通过分析大量的数据来进行学习,因此,机器学习等大数据运算对 存储器的访存量等需求急剧增大。
为了满足存储器的访存量等需求,目前通常采用多级存储器体系结构,即 使用高速缓冲存储器、主存储器和外存储器的体系结构。其中,高速缓冲存储 器(Cache)、主存储器和外存储器的存取速度依次减小,存储容量依次增大。 但由于计算机设备中的I/O的带宽往往不能满足超大数据量的需求,因此在处理 器执行机器学习运算的过程中,高速缓冲存储器与主存储器之间,和/或主存储 器与外存储器之间需要频繁地进行数据读取操作。例如,在处理器执行运算的 过程中,处理器首先需要从外存储器中读取输入数据,在运算结束后,处理器 需要将运算结果存储至外存储器中,之后再继续从外存储器中读取下一个运算 所需的输入数据。由于I/O带宽的限制,因此在一个运算过程中,至少涉及两次 I/O读写操作,频繁的I/O读写操作占用时间长,导致处理器的处理效率偏低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够数据预处理方法、装置、 计算机设备和存储介质,能够减少运算过程中的I/O读写操作次数,提高处理器 的处理效率。
一种数据预处理方法,所述方法包括如下步骤:
获取第一存储器的可用存储容量及目标运算操作;
根据目标运算操作及第一存储器的可用存储容量,确定所述目标运算操作 对应的目标输入数据;其中,所述目标输入数据为所述目标运算操作对应的全 部输入数据的一部分或全部;
根据所述目标运算操作和所述目标输入数据,确定所述目标运算操作的目 标输出数据;
若所述目标运算操作的目标输出数据为所述目标运算操作之后的其他运算 操作的输入数据时,则将所述目标运算操作的目标输出数据存储在所述第一存 储器上,其中,所述第一存储器靠近处理器设置。
一种数据预处理装置,所述装置包括:
获取模块,用于获取第一存储器的可用存储容量及目标运算操作;
输入确定模块,用于根据所述目标运算操作及所述第一存储器的可用存储 容量,确定所述目标运算操作对应的目标输入数据;
输出确定模块,用于根据所述目标运算操作和所述目标输入数据,确定所 述目标运算操作的目标输出数据;
存储分配模块,用于在所述目标运算操作的目标输出数据为所述目标运算 操作之后的其他运算操作的输入数据时,则将所述目标运算操作的目标输出数 据存储在所述第一存储器上,其中,所述第一存储器靠近处理器设置。
一种计算机设备,包括第一存储器、第二存储器和处理器,所述第一存储 器靠近所述处理器设置,所述第一存储器和所述第二存储器能够进行数据读写; 所述第二存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机 程序时实现上述任一项所述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处 理器执行时实现上述任一项所述的方法的步骤。
上述数据预处理方法、装置、计算机设备和存储介质,当该目标运算操作 的目标输出数据为其之后的其他运算操作的输入数据时,可以将目标运算操作 对应的目标输出数据存储在靠近处理器的第一存储器上,通过减少目标输出数 据的读取次数,可以减少运算过程中的I/O读取操作的占用时间,从而可以提高 处理器的速度及效率。
附图说明
图1为一个实施例中计算机设备的结构示意图;
图2为一个实施例的计算机设备的处理器的结构示意图;
图3为一个实施例的计算机设备的处理器的结构示意图;
图4为一个实施例的计算机设备的处理器的结构示意图;
图5为一个实施例中数据预处理方法的流程示意图;
图6为图5中确定目标输入数据的步骤一实施例的流程示意图;
图7为图5所示的数据预处理方法中确定目标运算操作数量一实施例的流 程示意图;
图8为一个实施例中的待处理运算的示意图;
图9为另一个实施例中的待处理运算的示意图;
图10为另一实施例中数据预处理方法的流程示意图;
图11为图10中确定目标输入数据的步骤一实施例的流程示意图;
图12为一实施例的数据预处理装置的结构框图;
图13为一实施例的数据预处理装置的结构框图;
图14为另一实施例的数据预处理装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅 用以解释本申请,并不用于限定本申请。
如图1所示,本申请实施例的计算机设备可以包括处理器100、第一存储器 200和第二存储器300。其中,第一存储器200可以设置在处理器100的附近, 处理器100可以直接与第一存储器200进行数据交换,即处理器100可以直接 从第一存储器200中读取输入数据,并将根据上述输入数据获得的输出数据写 入该第一存储器200。该第一存储器200可以直接与该第二存储器300进行数据 交换,即该第一存储器200可以从第二存储器300读取数据,也可以向该第二 存储写入数据。进一步地,该第一存储器200的存取速度大于第二存储器300 的存取速度,该第一存储器200的存储容量小于第二存储器300的存储容量。
可选地,该计算机设备可以是手机或平板电脑等移动终端,或台式电脑、 板卡或云端服务器等终端。当然,该计算机设备还可以是云端服务器和手机或 电脑等终端形成的计算机系统。该计算机设备可以应用于机器人、打印机、扫 描仪、行车记录仪、导航仪、相机、摄像机、投影仪、手表、移动存储、可穿 戴设备、交通工具、家用电器、和/或医疗设备。其中,交通工具可以包括飞机、 轮船和/或车辆;家用电器可以包括电视、空调、微波炉、冰箱、电饭煲、加湿 器、洗衣机、电灯、燃气灶、油烟机;医疗设备可以包括核磁共振仪、B超仪和 /或心电图仪等等。
可选地,该第一存储器200可以是内存储器,该第二存储器300可以是外 存储器,如硬盘等等。例如,该如第一存储器200可以为RAM(Random-Access Memory,随机存取第一存储器200)等,第二存储器300可以为DDR(Double Data Rate,双倍速率同步动态随机第一存储器200)等等。可选地,该第一存储 器200可以与该处理器100集成为一体,即该第一存储器200为片上存储器, 如高速缓冲存储器(Cache),该第二存储器300可以是内存储器等片外存储器, 如RAM等等。
可选地,第二存储器300可以用于存储计算机设备执行特定运算所需的数 据及计算机程序等等。进一步地,该数据可以是机器学习数据,如神经网络数 据等等。由于第一存储器200的存储容量较小,因此,当处理器100需要执行 特定运算时,可以将第二存储器300中存储的完成该特定运算所需的数据写入 第一存储器200,处理器100可以从第一存储器200读取该特定运算所需的输入 数据进行运算,并将运算结果写入第一存储器200。
在一个实施例中,如图2所示,该处理器100可以包括控制器单元110和 运算单元120,其中,控制器单元110与运算单元120连接,该运算单元120可 以包括一个主处理电路121和多个从处理电路122,该主处理电路121和从处理 电路122形成主从结构。相应地,该第一存储器200的数量可以为多个,多个 第一存储器200可以形成主从结构的存储体系。例如,多个第一存储器200可 以包括一个主存储器和多个从存储器,其中,该主存储器可以靠近主处理电路 设置,该从存储器可以靠近从处理电路设置。可选地,该主存储器可以是主处 理电路的片上存储器,该从存储器可以是从处理电路的片上存储器。进一步地, 该主存储器的存储容量小于各个从存储器的存储容量。更进一步地,每个从处 理器可以对应设置一个以上地从存储器,此处不做具体限定。
可选地,上述的控制器单元110用于获取数据以及计算指令。该数据具体 可以包括机器学习数据,可选地,该机器学习数据可以为神经网络数据。控制 器单元110还用于解析其获取的计算指令得到运算指令,并将多个运算指令以 及数据发送给主处理电路。主处理电路121用于对数据以及该主处理电路121 与多个从处理电路122之间传输的数据和运算指令执行前序处理。多个从处理 电路122用于依据从主处理电路121传输的数据以及运算指令并行执行中间运 算得到多个中间结果,并将多个中间结果传输给主处理电路121;主处理电路 121还用于对多个中间结果执行后续处理得到计算指令的计算结果。该主处理电 路121和每个从处理电路122上均集成有第一存储器,即多个第一存储器可以 是该主处理电路和从处理电路的片上存储器,第二存储器可以是该处理器的片 外存储器。
可选地,该控制器单元110可以包括指令缓存单元111、指令处理单元112 和存储队列单元114;指令缓存单元111用于存储机器学习数据关联的计算指令; 指令处理单元112用于对计算指令解析得到多个运算指令;存储队列单元114 用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算 指令或计算指令。可选地,该控制器单元110还可以包括依赖关系处理单元113, 用于在具有多个运算指令时,确定第一运算指令与第一运算指令之前的第零运 算指令是否存在关联关系,如第一运算指令与第零运算指令存在关联关系,则 将第一运算指令缓存在指令存储单元内,在第零运算指令执行完毕后,从指令 存储单元提取第一运算指令传输至运算单元。具体地,若依赖关系处理单元113依据第一运算指令提取第一运算指令中所需数据(例如矩阵)的第一存储地址 区间,依据第零运算指令提取第零运算指令中所需矩阵的第零存储地址区间, 如第一存储地址区间与第零存储地址区间具有重叠的区域,则确定第一运算指 令与第零运算指令具有关联关系,如第一存储地址区间与第零存储地址区间不 具有重叠的区域,则确定第一运算指令与第零运算指令不具有关联关系。
在一个实施例中,如图3所示,运算单元120还可以包括分支处理电路123, 其中,主处理电路121与分支处理电路123连接,分支处理电路123与多个从 处理电路122连接;分支处理电路123用于执行转发主处理电路121与从处理 电路122之间的数据或指令。在此实施例中,主处理电路121具体用于将一个 输入神经元分配成多个数据块,将多个数据块中的至少一个数据块、权值以及 多个运算指令中的至少一个运算指令发送给分支处理电路;分支处理电路123 用于转发主处理电路121与多个从处理电路122之间的数据块、权值以及运算 指令;多个从处理电路122用于依据该运算指令对接收到的数据块以及权值执 行运算得到中间结果,并将中间结果传输给分支处理电路123;主处理电路121 还用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果, 将该计算指令的结果发送给所述控制器单元。可选地,每个分支处理电路123 上也集成有第一存储器。
在另一种可选实施例中,如图4所示,运算单元120可以包括一个主处理 电路121和多个从处理电路122。其中,多个从处理电路呈阵列分布;每个从处 理电路与相邻的其他从处理电路连接,主处理电路连接多个从处理电路中的k 个从处理电路,k个从处理电路为:第1行的n个从处理电路、第m行的n个 从处理电路以及第1列的m个从处理电路,需要说明的是,如图4所示的K个 从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第 1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处 理电路连接的从处理电路。K个从处理电路用于在主处理电路以及多个从处理 电路之间的数据以及指令的转发。
本申请提供的处理器将运算单元设置成一主多从结构,对于正向运算的计 算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从 处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省 运算时间,进而降低功耗。
可选地,上述机器学习计算具体可以包括:人工神经网络运算,上述输入 数据具体可以包括:输入神经元数据和权值数据。上述计算结果具体可以为: 人工神经网络运算的结果即输出神经元数据。
对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网 络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下 一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元 进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元), 同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络 的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元 梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行 某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
上述机器学习计算还可以包括支持向量机运算,k-近邻(k-nn)运算,k-均 值(k-means)运算,主成分分析运算等等。为了描述的方便,下面以人工神经 网络运算为例来说明机器学习计算的具体方案。
对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运 算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出 层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神 经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以 卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和 第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元, 第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一 层都可以作为输入层,其下一层为对应的输出层。
在一个实施例中,该第二存储器用于存储计算机程序,该处理器执行上述 计算机程序时,能够实现本申请实施例中的数据预处理方法,从而获得该待处 理运算执行过程中各种数据的存储空间分配规则。具体地,上述的计算机设备 可以用于执行下述的数据预处理方法,对待处理运算(如神经网络等运算等) 进行预处理,获得该待处理运算的输入数据、输出数据及中间计算结果等数据 在第一存储器上的存储空间分配规则。这样,当处理器执行该待处理运算时, 该待处理运算所涉及的数据(输入数据、输出数据及中间计算结果等)可以按 照上述的存储空间分配规则存储在第一存储器上。这样,通过对运算过程中的 存储资源进行预分配,不仅能够合理的利用第一存储器的存储空间,还可以提 高处理的运算速度及准确性。其中,该存储空间分配规则可以包括待处理运算 执行过程中输入数据的存储地址、输出数据的存储地址、中间计算结果的存储 地址以及各个存储空间内存放数据的更新规则等等。具体可参见下文中的描述。
本申请实施例中,为减少运算过程中的数据读写操作(即减少I/O操作次数), 提供了一种数据预处理方法,该数据预处理方法可以应用于上述的计算机设备 中。具体地,如图5所示,该数据预处理方法可以包括如下步骤:
S100、获取第一存储器的可用存储容量及目标运算操作;
具体地,处理器可以根据该第一存储器的配置信息(如该第一存储器的型 号等信息),获得该第一存储器的总存储容量。进一步地,处理器可以根据该第 一存储器的总存储容量及该第一存储器上的已经占用的存储容量,获得该第一 存储器的可用存储容量。
本申请实施例中,处理器可以获取待处理运算,并根据该待处理运算及第 一存储器的可用存储容量确定目标运算操作。其中,该待处理运算可以包括多 个运算操作,该待处理运算可以是神经网络等运算。例如,该待处理运算包含 的运算操作可以是加法操作、减法操作、乘法操作、除法操作、卷积操作、池 化操作(Pooling)及激活操作(Relu)等等,此处不做具体限定。该目标运算 操作可以是待处理运算中一个或多个运算操作的组合。
S200、根据目标运算操作及第一存储器的可用存储容量,确定目标运算操 作对应的目标输入数据;其中,目标输入数据为目标运算操作对应的全部输入 数据的一部分或全部。
具体地,处理器可以根据该目标运算操作,确定完成该目标运算操作所需 的全部输入数据及该全部输入数据的数据容量(即该全部输入数据需占用的存 储空间大小)。进一步地,处理器可以根据第一存储器的可用存储容量和该目标 运算操作的全部输入数据的数据容量,确定该目标运算操作对应的目标输入数 据及其数据容量,该目标输入数据的数据容量小于或等于第一存储器的存储容 量。其中,该目标输入数据为该目标运算操作对应的全部输入数据的一部分或 全部,即该目标输入数据的数据容量小于或等于该目标运算操作对应的全部输 入数据的数据容量。当目标输入数据的数据容量小于该目标运算操作的全部输 入数据的数据容量时,通过仅加载该目标运算操作的全部输入数据的一部分到 第一存储器上,可以在第一存储器上预留一定的存储空间,以供存储该目标运 算操作的目标输出数据及中间计算结果等数据。当目标输入数据的数据容量等 于该目标运算操作的全部输入数据的数据容量时,可以通过存储空间的复用, 以实现存储该目标运算操作的目标输出数据及中间计算结果等数据。
S300、根据目标运算操作和目标输入数据,确定目标运算操作的目标输出 数据。
具体地,由于待处理运算的计算量是静态可分析的,因此,处理器可以根 据该目标运算操作的目标输入数据及该目标运算操作,获得该目标运算操作的 目标输出数据及该目标输出数据的数据容量等信息,即处理器可以获得该目标 运算操作的目标输出数据所需占用的存储空间。
S400、若目标运算操作的目标输出数据为该目标运算操作之后的其他运算 操作的输入数据时,则将该目标输出数据存储在第一存储器上,以减少目标输 出数据的读取次数。
具体地,若该目标运算操作的目标输出数据为该目标运算操作之后的其他 运算操作的输入数据时,即在该目标运算操作之后仍需继续使用该目标输出数 据时,则可以将该目标输出数据存储在所述第一存储器上,以减少目标输出数 据的读取次数,从而可以提高处理器的速度及效率。
传统技术中,当处理器执行该目标运算操作获得上述目标输出数据后,处 理器会将该目标输出数据从第一存储器搬运至第二存储器,从而释放该目标输 出数据在第一存储器上占用的存储空间。若该目标运算操作之后的运算操作需 要继续使用该目标输出数据时,处理器需要再次将该目标输出数据从第二存储 器搬运至第一存储器上,这样方法需要多次执行目标输出数据的I/O读取操作, 容易导致运算时间过长,处理器的效率及速度较低。而本申请实施例的数据预 处理方法,相对于传统技术而言,通过减少目标输出数据的读取次数,可以减 少运算过程中的I/O读取操作的占用时间,从而可以提高处理器的速度及效率。
例如,如图8所示,处理器可以获取当前目标运算操作OP1,该目标运算 操作OP1的全部输入数据为输入数据X(其包括子输入数据X11、X21、X12 和X22,其中,子输入数据X11和X12可以组成输入数据X1,子输入数据X21 和X22可以组成输入数据X2,该输入数据X1和X2可以是向量或矩阵数据等)。 处理器可以根据该目标运算操作OP1和第一存储器的可用存储容量,将子输入 数据X11和X21作为该目标运算操作OP1的目标输入数据。进一步地,该处理 器可以根据目标运算操作OP1和目标输入数据X11和X21,确定出目标输出数 据Y1及该目标输出数据Y1的数据容量。
更进一步地,处理器可以根据预设的运算规则判断该目标输出数据Y1是否 需要被目标运算操作OP1之后的其他运算操作使用,若该目标输出数据Y1需 要被目标运算操作OP1之后的其他运算操作使用,如该目标输出数据Y1为目 标运算操作OP1之后运算操作OP2的输入数据,则将该目标输出数据Y1暂存 于第一存储器上。这样,当运算操作OP2为下一个目标运算操作时,则处理器 在执行下一运算操作OP2之前,仅需要根据预设规则将该运算操作OP2所需的 输入数据Y3从第二存储器搬运至第一存储器上,无需再执行该目标输出数据 Y1的搬运步骤。再进一步地,该目标输出数据Y1为目标运算操作OP1之后运 算操作OP2的输入数据,同时,该目标输出数据Y1为运算操作OP3的输入数 据。此时,可以将该目标输出数据Y1存储在第一存储器上,直至完成运算操作 OP2和OP3之后,可以将该目标输出数据Y1从第一存储器中删除,以释放目 标输出数据Y1在第一存储器上占用的存储空间。
本申请实施例的数据预处理方法,减少了运算操作OP1计算结束后将目标 输出数据Y1从第一存储器搬运至第二存储器的过程,以及在进行运算操作OP2 时再将目标输出数据Y1从第二存储器搬运至第一存储器的过程,从而通过减少 目标输出数据的读取次数,可以减少运算过程中的I/O读取操作的占用时间,从 而可以提高处理器的速度及效率。
可选地,上述的待处理运算可以是包括多个运算层的神经网络运算,如图8 所示,上述的运算操作OP1和OP2可以是神经网络运算中的运算层。上述的输 入数据X可以包括输入神经元数据和权值数据等,其可以包括输入数据X1和X2。可选地,上述的输入数据X1和X2可以分别属于不同的运算层。进一步地, 处理器可以根据该目标运算层OP1和第一存储器的可用存储容量,将子输入数 据X11和X21作为该目标运算层OP1的目标输入数据。更进一步地,该处理器 可以根据目标运算层OP1和目标输入数据X11和X21,确定出目标输出数据Y1 及该目标输出数据Y1的数据容量,该目标输出数据Y1即为运算层OP1的输出 数据的一部分,该输出数据可以包括运算层OP1的输出神经元数据及权值等。
再如,如图9所示,该待处理运算为神经网络运算等运算,该待处理运算 可以包括卷积层、池化层及激活层,上述各个运算层执行顺序依次为卷积运算 操作—池化运算操作—激活运算操作。即卷积运算操作的输出数据为池化运算 操作的输入数据,池化运算操作的输出数据为激活运算操作的输入数据。各个 运算层的输入数据可以包括该运算层对应的输入神经元数据及权值等数据。
若当前目标运算操作为池化运算操作,处理器可以根据第一存储器的可用 存储容量及目标运算操作,获得该池化运算操作对应的目标输入数据为C1—C2 区间内的数据(C1—C2区间内的数据表示卷积运算操作的输出数据,其可以包 括卷积运算操作所对应的输出神经元数据及权值等等)。该目标输入数据C1— C2对应的目标输出数据为B1—B2区间内的数据(其中,B1-B2区间内的目标 输出数据可以包括池化运算操作对应的输出神经元数据及权值等等)。进一步地, 由于该池化运算操作的目标输出数据B1—B2为激活运算操作的输入数据,因此, 可以将该池化运算操作的目标输出数据B1—B2存储于第一存储器上。这样,在 完成池化运算操作之后,无需将目标输出数据B1—B2从第一存储器搬运至第二 存储器上,释放第一存储器上的存储空间。并且,在执行激活运算操作之前, 无需再次将该目标输出数据B1—B2从第二存储器搬运至第一存储器上。
而传统技术中,当处理器运算获得目标输出数据B1-B2之后,会首先将该 目标输出数据B1-B2从第一存储器上搬运至第二存储器上,以释放第一存储器 的存储空间。由于该激活运算操作的输入数据依赖于该池化运算操作的输出数 据,因此在处理器需执行激活运算操作之前,会再次将该池化运算操作对应的 目标输出数据B1-B2这一数据块从第二存储器搬运至第一存储器上。在I/O带 宽有限的情况下,这种频繁的数据读取操作将影响处理器的处理效率。因而, 本申请实施例的数据预处理方法,相较于现有技术而言,通过减少目标输出数 据的读取次数(即减少了目标输出数据的load和store的操作),可以减少运算 过程中的I/O读取操作的占用时间,从而可以提高处理器的速度及效率。
在一个实施例中,上述方法还包括如下步骤:
若目标运算操作的目标输出数据为目标运算操作之后的其他运算操作的输 入数据时(也就是说该目标运算操作的目标输出数据为该待处理运算的中间结 果数据),则将该目标运算操作的目标输出数据存储在第一存储器,或者第一存 储器和第二存储器上。具体地,若目标运算操作的目标输出数据为目标运算操 作之后的其他运算操作的输入数据时,则可以将目标输出数据存储在第一存储 器上,以减少该目标输出数据的重复加载操作(即减少了目标输出数据的load 的操作)。同时,还可以将该目标输出数据从第一存储器上复制到第二存储器上, 从而保证第一存储器和第二存储器上数据的一致性。可选地,是否需要将该目 标运算操作对应的目标输出数据同步存储至第二存储器上,可以根据具体地运 算需求确定。
当无需将该目标输出数据同步存储至第二存储器上时,可以仅仅将该目标 输出数据存储在第一存储上,从而同时减少目标输出数据的load和store的操作。 若需要将该目标输出数据同步存储至第二存储器上时,则可以将目标输出数据 同步存储在第一存储器和第二存储器上,通过减少该目标输出数据的load操作, 以避免数据读取操作过多的占用I/O带宽,影响处理器的处理速度。
如图8所示,若该目标输出数据Y1需要被目标运算操作OP1之后的其他 运算操作使用,如该目标输出数据Y1为目标运算操作OP1之后运算操作OP2 的输入数据,则将该目标输出数据Y1暂存于第一存储器上。这样,当运算操作 OP2为下一个目标运算操作时,则处理器在执行下一运算操作OP2之前,仅需 要根据预设规则将该运算操作OP2所需的输入数据Y3从第二存储器搬运至第 一存储器上,无需再执行该目标输出数据Y1的搬运步骤。进一步地,处理器还 可以将目标输出数据Y1从第一存储器复制到第二存储器中,这样使得第一存储 器和第二存储器上的数据具有一致性。这样,本申请实施例的数据预处理方法, 减少了运算操作OP1计算结束后将目标输出数据Y1从第一存储器搬运至第二 存储器的过程,从而通过减少目标输出数据的读取次数,可以减少运算过程中 的I/O读取操作的占用时间,从而可以提高处理器的速度及效率。
如图9所示,由于该池化运算操作的目标输出数据B1—B2为激活运算操作 的输入数据,因此,可以将该池化运算操作的目标输出数据B1—B2同时存储于 第一存储器和第二存储器上。这样,在执行激活运算操作之前,无需再次将该 目标输出数据B1—B2从第二存储器搬运至第一存储器上。同时,在完成池化运 算操作之后,将目标输出数据B1—B2从第一存储器复制至第二存储器上,可以 保证第一存储器和第二存储器上数据的一致性。本申请实施例的数据预处理方 法,相较于现有技术,减少了将目标输出数据B1—B2从第二存储器再次搬运至 第一存储器上的过程,通过减少目标输出数据的读取次数,可以减少运算过程 中的I/O读取操作的占用时间,从而可以提高处理器的速度及效率。
在一个实施例中,由于待处理运算的每个目标运算操作所需的全部输入数 据的数据容量均较大,因此,处理器可以将各个目标运算操作所涉及的全部输 入数据进行拆分,即可以根据第一存储器的可用存储容量,将该各个目标运算 操作所涉及的全部输入数据(包括输入神经元数据及权值等等)拆分为多个输 入数据块,分别针对每个输入数据块执行该目标运算操作,以获得该目标运算 操作的计算结果。最后,可以通过对各个输入数据块对应的计算结果进行融合, 获得该目标运算操作对应的输出数据。其中,该输入数据块即为上述的目标输 入数据,各个输入数据块对应的输出数据即为上述的目标输出数据。可选地, 上述步骤S200具体包括:
根据第一存储器的可用存储容量和该目标运算操作所需的全部输入数据的 数据容量,确定该目标运算操作对应的输入数据块,并将该输入数据块作为该 目标运算操作对应的目标输入数据。具体地,若该目标运算操作所需的全部输 入数据的数据容量大于该第一存储器的可用存储容量时,处理器可以根据该第 一存储器的可用存储容量确定该目标运算操作对应的输入数据块,该输入数据 块为该目标运算操作的全部输入数据的一部分。若该目标运算操作所需的全部 输入数据的数据容量小于或等于第一存储器的可用存储容量,则可以将该目标 运算操作的全部输入数据作为一个输入数据块,即将给该目标运算操作的全部 输入数据作为其目标输入数据。
例如,如图8所示,处理器可以获取当前目标运算操作OP1,该目标运算 操作OP1的全部输入数据为全部输入数据X(其包括输入数据X1及X2)。处 理器可以根据该目标运算操作OP1和第一存储器的可用存储容量,将该子输入 数据X21和该输入数据的子输入数据X21作为该目标运算操作OP1的目标输入 数据,其中,该子输入数据X21和子输入数据X11的数据容量之和小于第一存 储器的可用存储容量。当然,在其他实施例中,若该目标运算操作对应的全部 输入数据X的数据容量小于第一存储器的可用存储容量时,还可以将该目标运算操作对应的全部输入数据全部加载到第一存储器上。
再如,如图9所示,若当前目标运算操作为池化运算操作,处理器可以根 据第一存储器的可用存储容量及目标运算操作,将C1—C2区间内的数据(C1 —C2区间内的数据表示卷积运算操作的输出数据)作为一个输入数据块,并将 该输入数据块作为该池化运算操作对应的目标输入数据。若当前目标运算操作 为激活运算操作,则处理器可以根据第一存储器的可用存储容量,将B1—B2 区间内的数据作为该激活运算操作的一个输入数据块,并将该输入数据块作为 该激活运算操作的目标输入数据。
在一个实施例中,当将该各个目标运算操作所涉及的全部输入数据拆分为 多个输入数据块,由于各个输入数据块的数据容量小于第一存储器的存储容量, 因此,该目标运算操作能够融合待处理器运算的多个运算操作,以最大限度的 利用的第一存储器的存储空间,并提高运算的效率。可选地,上述的目标运算 操作包括一个以上的运算操作,即该目标运算操作为一个以上的运算操作的组 合。一般地,该目标运算操作中包含的各个运算操作为不同的运算操作,用于 实现不同的运算。此时,处理器可以根据第一存储器的可用存储容量,确定各 个运算操作对应的子目标输入数据,并根据各个运算操作对应的子目标输入数 据确定该目标运算操作对应的目标输入数据。具体地,如图6所示,上述步骤 S200中确定该目标运算操作对应的输入数据块的步骤,还包括如下步骤:
S210、根据第一存储器的可用存储容量及各个运算操作的融合属性,确定 能够融合的运算操作的数量,获得融合数量阈值。其中,各个运算操作的融合 属性可以是包括各个运算操作所涉及输入数据和/或输出数据之间的数据依赖关 系等等。
应当清楚的是,若一个或多个运算操作能够一起被处理器执行时,则认为 该一个或多个运算操作能够被融合,其融合度较高。若一个或多个运算操作不 能一起被处理器执行时,则认为该一个或多个运算操作不能被融合,其融合度 低。各个运算操作之间的融合度可由预设的运算规则确定,此处不做具体地限 定。
S220、将选定数量的能够融合的一个以上的运算操作的组合作为一个目标 运算操作,其中,该选定数量小于或等于融合数量阈值。例如,该选定数量等 于融合数量阈值,即将根据第一存储器的存储容量确定的能够进行融合的多个 运算操作,等效为一个目标运算操作。
S230、将该选定数量的各个运算操作对应的子目标输入数据作为该目标运 算操作对应的目标输入数据。
例如,如图8所示,待处理运算可以包括运算操作OP1和OP2,根据两个 运算操作的融合属性,该运算操作OP1和OP2能够一起被处理器执行,且第一 存储器的可用存储容量能够容纳运算操作OP1的目标输入数据和目标输出数据, 以及运算操作OP2的目标输入数据和目标输出数据时,则可以认为该目标运算 操作能够融合的运算操作的数量为2个,此时可以将该运算操作OP1和OP2作 为一个目标运算操作。同时将该运算操作OP1和OP2对应的子目标输入数据 X11、X21及Y3作为该目标运算操作的目标输入数据。
若运算操作OP1和OP2能够融合,但第一存储器的可用存储容量只能容纳 运算操作OP1的目标输入数据和目标输出数据,无法完全容纳运算操作OP2的 目标输入数据和目标输出数据时,此时,可以任务该目标运算操作能够融合的 运算操作的数量为1个,此时可以将该运算操作OP1作为一个目标运算操作。 同时将该运算操作OP1对应的子目标输入数据X11、X21作为该目标运算操作 的目标输入数据。
当然,在其他实施例中,该目标运算操作包含的运算操作的数量还可以是 两个以上。例如,在该待处理运算的深度方向上,若该运算操作OP2之后还有 其他可以融合的运算操作,且上述能够融合的运算操作对应的目标输入数据和 目标输出数据的数据容量,能够满足该第一存储器的可用存储容量时,则该目 标运算操作包含的运算操作的数量可以是OP1、OP2及OPn(其中,n大于2, n为正整数)。其中,OP1、OP2及OPn对应的目标输入数据及目标输出数据的 数据容量之和小于或等于该第一存储器的可用存储容量。
进一步地,该待处理运算可以是神经网络等运算,该神经网络运算可以包 括多个运算层,每个运算层可以表示一个运算操作。例如,处理器需要对神经 网络等进行运算,神经网络的每个运算层均可以作为一个运算操作,根据该神 经网络的各个运算层的连接关系,可以确定各个运算操作的融合属性,即可以 根据神经网络的各个运算层之间的连接关系,确定哪些运算层进行融合及能够 融合的运算层的数量,并将该能够融合的一个以上的运算层的组合作为一个目 标运算操作。这样,通过在神经网络的深度方向上融合多个运算层作为一个目 标运算操作,可以减少的运算的次数及数据的读取次数,进一步提高处理器的 处理效率。
例如,如图9所示,根据该神经网络的各个运算层的连接关系,可以确定 在该神经网络的深度方向上,卷积运算操作、池化运算操作及激活运算操作能 够进行融合。此时,处理器可以根据第一存储器的可用存储容量,以及各个运 算操作的目标输入数据容量等确定融合数量阈值。具体地,若该第一存储器的 可用存储容量能够容纳池化运算操作的目标输入数据C1-C2,以及激活运算操作 的目标输入数据B1-B2,则可以确定该融合数量阈值为2个,并将该池化运算操 作和激活运算操作等效为一个目标运算操作。此时,该目标运算操作的目标输 入数据可以是C1-C2区间内的数据。在其他实施例中,该目标运算操作还可以是卷积运算操作、池化运算操作及激活运算操作三者的融合。
或者,该激活运算操作之后还需执行其他运算操作时,该目标运算操作还 可以根据第一存储器的可用存储容量,继续融合更多的运算操作。例如,该神 经网络可以包括N个运算层,处理器可以根据该第一存储器的可用存储容量确 定融合阈值为n个(其中,n大于或等于1,且n小于或等于N),并可以将n 个运算层作为一个目标运算操作。此处仅用于举例说明,并不作为具体限定。
更进一步地,当该目标运算操作包含多个运算操作时,还可以将该目标运 算操作执行过程中的中间计算结果存储在第一存储器上。具体地,上述方法还 包括如下步骤:
若该目标运算操作中当前运算操作输出的中间计算结果需作为其之后的其 他运算操作的输入数据,或当前运算操作输出的中间计算结果需作为其他目标 运算操作的输入数据时,处理器可以将该当前运算操作输出的中间计算结果暂 存于第一存储器上。具体地,处理器可以根据该当前运算操作输出的中间结果 的数据容量,在第一存储器上为该当前运算操作输出的中间结果分配一段存储 地址。
若该当前运算操作之后的其他运算操作或其他目标运算操作均不需使用该 当前运算操作输出的中间计算结果,则可以将该当前运算操作输出的中间结果 所占用的存储空间进行重新分配,即可以将该当前运算操作的中间结果所占用 的存储地址分配给其他数据。
例如,如图8所示,该当前运算操作OP1输出的中间计算结果Y1为下一 运算操作OP2的输入数据时,则处理器可以将该当前运算操作输出的中间结果 Y1暂存于第一存储器上。这样,减少了中间计算结果Y1的读取次数,从而可 以提高处理器的处理效率及速度。若该运算操作OP2不需继续使用该中间计算 结果,且该目标运算操作之后的其他目标运算操作均不需要复用该中间计算结 果Y1时,则可以释放该中间计算结果Y1所占用的存储空间,将该中间计算结 果Y1所占用的存储地址分配给其他数据,如将当前目标运算操作之后的其他目 标运算操作的目标输出数据存放在该中间计算结果所占用的存储空间中,以实 现第一存储器上存储空间的复用。
再如,如图9所示,池化运算操作的目标输入数据为C1-C2区间内的数据, 该目标输入数据对应的目标输出数据为B1-B2区间内的数据。且该目标输出数 据B1-B2为激活运算操作的目标输入数据,则处理器可以该中间计算结果B1-B2 暂存于第一存储器上。这样,减少了中间计算结果B1-B2的读取次数,从而可 以提高处理器的处理效率及速度。若激活运算操作无需使用该目标输出数据 B1-B2时,则可以将目标输出数据B1-B2所占用的存储空间分配给其他数据, 以实现第一存储器上存储空间的复用。
在一个实施例中,当目标运算操作的目标输入数据仅为该目标运算操作对 应的全部输入数据的一部分时,该目标运算操作的每个目标输入数据仅用于完 成该目标运算操作的一部分运算。为提高该目标运算操作的处理速度及充分利 用第一存储器的存储空间,该目标运算操作对应的目标输入数据的数量可以为 一个以上,每个目标输入数据为全部输入数据的一部分,即每个目标输入数据 包含全部输入数据的一个以上的输入数据块。也就是说,可以同时将一个以上 的目标输入数据加载到第一存储器上。进一步地,根据该目标输入数据的数量, 可以将该目标运算操作拆分为多个子目标运算操作,可选地,各个子目标运算 操作能够实现相同的运算。具体地,如图7所示,上述方法还包括如下步骤:
S500、分别根据各个所述子目标运算操作对应的目标输入数据容量及目标 输出数据的数据容量,确定各个子目标运算操作所需的目标存储容量;其中, 各个子目标运算操作所需的目标存储容量可以相等,也可以不等。
S510、根据第一存储器的可用存储容量及当前子目标运算操作所需的目标 存储容量,确定第一存储器的剩余存储容量;
S520、根据第一存储器的剩余存储容量以及各个子目标运算操作所需的目 标存储容量,确定所述子目标运算操作的数量。可选地,可以根据该第一存储 器的剩余存储容量以及该当前子目标运算操作之外的其他子目标运算操作的目 标存储容量,确定该第一存储器上还能够容纳多少个子目标运算操作。之后, 根据该当前子目标运算操作及其之外的其他子目标运算操作的数量,可以确定 该子目标运算操作的总数量。
具体地,在当前子目标运算操作的目标输入数据的数据容量和目标输出数 据的数据容量之和小于该第一存储器的可用存储容量时,可以根据该第一存储 器的剩余存储容量判断是否能够执行一个以上的子目标运算操作。若是,则处 理器可以同时处理该一个以上的子目标运算操作对应的目标输入数据。这样, 通过同时处理多段目标输入数据,能够进一步提高该处理器的处理速度及效率。
如图8所示,目标运算操作(图中的左侧的运算操作)可以包括运算操作 OP1和OP2,处理器可以根据确定该目标运算操作的当前子目标运算操作的目 标输入数据X11、X21及Y3的数据容量,并确定该当前子目标运算操作的目标 输出数据Y1和Z1的数据容量,并根据该当前子目标运算操作的目标输入数据 及目标输出数据的数据容量之和,确定当前子目标运算操作所需的目标存储容 量。若该当前子目标运算操作的目标存储容量小于该第一存储器的可用存储容 量时,则可以计算获得该第一存储器的剩余存储容量。该第一存储器的剩余存 储容量等于第一存储器的可用存储容量减去该当前子目标运算操作的目标存储 容量。之后,处理器可以根据该第一存储器的剩余存储容量确定子目标运算操 作的数量。
具体地,若该第一存储器的剩余存储容量还能够容纳另一个子目标运算操 作的目标输入数据X12、X22及Y4,运算操作OP1输出的中间计算结果Y2, 以及运算操作OP2输出的目标输出数据Z2时,则可以确定该目标运算操作的数 量为两个,并可以将该子输入数据X21、X22及Y4作为其中一个目标运算操作 的目标输入数据。这样,通过在该待处理运算的横向方向上,同时加载同一目 标运算操作的多段目标输入数据,使得处理器可以并行处理多个目标输入数据, 能够进一步提高该处理器的处理速度及效率。
进一步地,若该第一存储器的剩余存储容量不仅能够容纳另一个子目标运 算操作的目标输入数据X12、X22及Y4,运算操作OP1输出的中间计算结果 Y2,以及运算操作OP2输出的目标输出数据Z2时,且该第一存储器的剩余存 储容量还能够容纳运算操作OP3的输出数据Y时,则还可以将运算操作OP1、 OP2及OP3进行融合,以通过执行一次运算获得计算结果Y。
再如,如图9所示,该待处理运算为神经网络等运算,该待处理运算可以 包括卷积层、池化层及激活层,上述各个运算层执行顺序依次为卷积运算操作 —池化运算操作—激活运算操作。若该目标运算操作为激活运算操作,则处理 器可以根据第一存储器的存储容量获取当前子目标运算操作的目标输入数据, 该当前子目标运算操作的目标输入数据可以是池化层上B1—B2区间内输入数 据。该当前子目标运算操作的目标输出数据为A1。若该当前子目标运算操作的 目标输入数据的数据容量B1—B2及其对应的目标输出数据的数据容量之和,小 于该第一存储器的存储容量,即该当前子目标运算操作所需的目标存储容量小 于第一存储器的存储容量时,则处理器可以进一步根据该第一存储器的剩余存 储容量确定该子目标运算操作的数量。如,处理器可以根据该第一存储器的剩 余存储容量,确定第一存储器的剩余存储容量能够满足激活运算A1—A2这个 区间的运算量,则确定子目标运算操作的数量为两个,并可以将目标输入数据 B2—B3区间内的数据作为该激活运算操作的一个目标运算操作对应的目标输 入数据。
进一步地,若一个以上的子目标运算操作的目标输入数据相交时,则确定 当前子目标运算操作的目标输入数据与其他子目标运算操作的目标输入数据之 间的交集,将该交集暂存于第一存储器上。即该当前子目标运算操作的目标输 入数据的部分或全部还需作为其他运算操作的目标输入数据时,则可以将该交 集暂存于第一存储器上,以避免该部分数据的多次读取操作,从而可以提高处 理器的处理效率及速度。
例如,如图9所示,若目标运算操作为池化运算操作,且该目标运算操作 的子目标运算操作的数量为两个,相应地,该池化运算操作对应的目标输入数 据的数量可以为两个,其中一个目标输入数据为C1-C2,另一个目标输入数据为 C3-C4。该目标输入数据C1-C2对应的目标输出数据为B1-B2,该目标输入数据 C3-C4对应的目标输出数据为B2-B3。结合附图可以看出,输入数据C3-C2区 间的数据即是目标输入数据C1-C2的一部分,同时也是目标输入数据C3-C4的 一部分,即两个目标输入数据存在交集C3-C2。此时,为减少数据的读取次数, 在完成该目标输入数据C1-C2对应的池化运算操作后,可以将输入数据C3-C2 仍然存储在第一存储器上,以避免该部分数据的多次读取操作,从而可以提高 处理器的处理效率及速度。
在一个实施例中,上述方法还包括如下步骤:
若目标运算操作之后的运算操作与目标运算操作之间的运算间隔在预设范 围内时,则将目标输出数据存储在第一存储器上,以减小目标输出数据的读取 次数。
具体地,若目标运算操作之后的其他运算操作与该目标运算操作之间的运 算间隔在预设范围内,如目标运算操作与其之后的其他运算操作之间的运算间 隔3~5个运算操作时,则可以将该目标输出数据存储在第一存储器上,以减小 目标输出数据的读取次数。若目标运算操作之后的其他运算操作与该目标运算 操作之间的间隔超出预设范围内时,则为避免该目标运算操作的目标输出数据 长时间占用第一存储器的存储空间,可以将该目标输出数据从第一存储器搬运 到第二存储器上。
在一个实施例中,上述方法还包括如下步骤:
根据目标运算操作的目标输入数据的数据容量,确定目标输入数据在第一 存储器上的存储地址;根据目标运算操作的目标输出数据的数据容量,确定目 标输出数据在第一存储器上的存储地址。
具体地,处理器可以根据目标运算操作的目标输入数据的数据容量,在第 一存储器上为该目标输入数据分配一个与之数据容量匹配的存储空间,并将该 存储空间的存储地址分配给该目标输入数据。这样,在实际运算过程中,可以 将目标输入数据加载到第一存储器上的指定存储空间上。同理,处理器可以根 据目标运算操作的目标输出数据的数据容量,在第一存储器上为该目标输入数 据分配一个与之数据容量匹配的存储空间,并将该存储空间的存储地址分配给 该目标输出数据。这样,在实际运算过程中,可以将该目标输出数据存储在第 一存储器上的指定存储空间上。
在一个实施例中,上述方法还包括如下步骤:
若目标运算操作的目标输入数据无需继续使用时,将目标输入数据的存储 地址的部分或全部分配给目标运算操作的目标输出数据。这样,可以通过对同 一块存储空间的多次复用,提高该第一存储器的空间利用率。
可选地,处理器可以记录上述各个目标运算操作的目标输入数据的存储地 址、目标输出数据的存储地址、中间计算结果的存储地址以及第一存储器上各 个存储空间的更新规则等等,根据上述的数据对应的存储地址获得该待处理运 算对应的存储分配规则。当处理器需要执行该待处理运算时,处理器可以获取 该待处理运算对应的存储分配规则,并根据该存储分配规则确定运算过程中各 种数据的读写操作及存储位置等等。
在一个实施例中,上述的数据预处理方法还可以应用于图2至图4所示的 计算机设备中。此时,根据预设运算分配规则,该目标运算操作的一部分需要 由主处理电路执行,该目标运算操作的另一部分需要由从处理电路执行。相应 地,多个第一存储器可以包括主存储器和从存储器,其中,主存储器靠近主处 理电路设置,进一步地,该主存储器还可以是该主处理电路的片上存储器。该 从存储器靠近从处理电路设置,进一步地,该从存储器还可以是该从处理电路 的片上存储器。此时,该目标运算操作对应的目标输入数据一部分需要加载到 该主存储器上由主处理电路执行,该目标运算操作对应的目标输入数据另一部分需要加载到一个以上的从存储器上,由各个从存储器对应的从处理电路执行。 具体地,如图10所示,当图2至图4所示的计算机设备执行上述的数据预处理 方法时,其包括如下步骤:
S600、获取主存储器的可用存储容量、从存储器的可用存储容量以及目标 运算操作;
具体地,处理器可以根据该主存储器的配置信息(如该主存储器的型号等 信息),获得该主存储器的总存储容量。进一步地,处理器可以根据该主存储器 的总存储容量及该主存储器上已经占用的存储容量,获得该主存储器的可用存 储容量。同理,处理器可以根据该从存储器的配置信息,获得从存储器的总存 储容量,并根据该从存储器的总存储容量及该从存储器上已经占用的存储容量, 获得该从存储器的可用存储容量。可选地,该处理器的主处理电路可以获得该 主存储器的可用存储容量,各个从处理电路可以获得对应从存储器的可用存储 容量,并将其对应的从存储器的可用存储容量传送至主处理电路。
同时,处理器的控制器单元可以获取待处理运算,并将该待处理运算的解 析结果等数据发送至主处理电路。该主处理电路可以根据该待处理运算、主存 储器的可用存储容量及从存储器的可用存储容量确定目标运算操作。可选地, 该待处理运算包含的运算操作可以是加法操作、减法操作、乘法操作、除法操 作、卷积操作、池化操作(Pooling)及激活操作(Relu)等等,此处不做具体 限定。该目标运算操作可以是待处理运算中一个或多个运算操作的组合。
S700、根据所述主存储器的可用存储容量、所述从存储器的可用存储容量 以及所述目标运算操作,确定所述目标运算操作对应的目标输入数据;其中, 所述目标输入数据为所述目标运算操作对应的全部输入数据的一部分或全部。
具体地,处理器的主处理电路处理器可以根据该目标运算操作,确定完成 该目标运算操作所需的全部输入数据及该全部输入数据的数据容量(即该全部 输入数据需占用的存储空间大小)。进一步地,主处理电路可以根据主存储器的 可用存储容量、各个从存储器的可用存储容量以及该目标运算操作的全部输入 数据的数据容量,确定该目标运算操作对应的目标输入数据及其数据容量。
S800、根据所述目标运算操作和所述目标输入数据,确定所述目标运算操 作对应的目标输出数据;具体地,由于待处理运算的计算量是静态可分析的, 因此,处理器的主处理电路可以根据该目标运算操作的目标输入数据及该目标 运算操作,获得该目标运算操作的目标输出数据及该目标输出数据的数据容量 等信息,即处理器的主处理电路可以获得该目标运算操作的目标输出数据所需 占用的存储空间。
S900、若所述目标运算操作的目标输出数据为所述目标运算操作之后的其 他运算操作的输入数据时,则将所述目标输出数据对应存储在所述主存储器上。
具体地,主处理电路可以根据预设的运算分配规则,将该目标运算操作对 应的目标输入数据分配至主存储器及从存储器,以便主处理电路和从处理电路 能够协同执行该目标运算操作。在该目标运算操作的执行过程中,从处理电路 可以对其从存储器上的目标输入数据进行处理,得到中间计算结果。从处理电 路还可以将该中间计算结果传送至主处理电路。主处理电路可以根据可以对其 主存储器上的目标输入数据进行处理,并结合各个从处理电路传送的中间计算 结果,获得该目标运算操作的目标输出数据。若该目标运算操作对应的目标输 出数据为其后的其他运算操作的输入数据时,则可以将该目标输出数据存储在 主存储器上,从而减少数据的读取次数,提高处理器的运算速度。
在一个实施例中,如图11所示,上述步骤S700还可以包括:
S710、将所述主存储器的可用存储容量和各个所述从存储器的可用存储容 量进行比较,将最小的可用存储容量作为第一存储器的可用存储容量;
S720、根据该第一存储器的可用存储容量及目标运算操作确定目标运算操 作对应的目标输入数据。
具体地,由于该目标运算操作需主处理电路和从处理电路协同完成,因此, 应当保证主存储器和从存储器同时满足该目标运算操作的目标输入数据的占用 空间。即该目标输入数据的数据容量小于该主存储器的可用存储容量,且该目 标输入数据的数据容量小于该从存储器的可用存储容量。因此,可以根据主存 储器的可用存储容量与各个从存储器的可用存储容量进行比较,并将主存储器 及各个从存储器中最小的可用存储容量作为该处理器的第一存储器的可用存储 容量。之后,主处理电路可以根据该第一存储器的可用存储容量及目标运算操 作,确定该目标运算操作对应的目标输入数据。
在一个实施例中,主处理电路可以根据预设的运算分配规则对该目标输入 数据进行拆分,将该目标输入数据分配为多个数据块,并确定各个数据块对应 的处理电路。其中,该目标输入数据中由主处理电路进行处理的数据块可以记 为第一目标输入数据。该目标输入数据中由从处理电路进行处理的数据块可以 记为第二目标输入数据。进一步地,每个从处理电路对应的第二目标输入数据 的数据容量可以不等,具体由运算分配规则确定。具体地,所述方法还包括如 下步骤:
根据预设的运算分配规则,确定所述主存储器对应的第一目标输入数据, 以及各个所述从存储器对应的第二目标输入数据。具体地,主处理电路可以根 据预设的运算分配规则,确定该目标运算操作的哪些目标输入数据由主处理电 路进行处理,该目标运算操作的哪些目标输入数据由各个从处理电路进行处理。
例如,如图9所示,该当前目标运算操作为池化运算操作,如需要完成池 化层上B1-B2区间的运算时,此时,该目标运算操作所需的目标输入数据为 C1-C2。主处理器可以根据预设的运算分配规则,可以将输入数据C1-C3作为第 二目标输入数据,并将该第二目标输入数据C1-C3存储至从存储器上。将该输 入数据C3-C2作为第一目标输入数据,并将该第一目标输入数据C3-C2存储至 主存储器中。
进一步地,上述方法还可以包括如下步骤:
根据主存储器的可用存储容量和所述第一目标输入数据的数据容量,确定 第一目标输入数据在主存储器上的存储地址;具体地,主处理电路可以根据主 存储器的可用存储容量和第一目标输入数据的数据容量,确定该第一目标输入 数据在主存储器上的存储地址。进一步地,该主处理电路还可以根据该第一目 标输入数据的数据容量及目标运算操作,确定该第一目标输入数据对应的第一 目标输出数据及其数据容量,并确定该第一目标输出数据在主存储器上的存储 地址。
根据从存储器的可用存储容量和所述第二目标输入数据的数据容量,确定 第二目标输入数据在从存储器上的存储地址。具体地,主处理电路以根据各个 从处理电路的可用存储容量及其对应的第二目标输入数据的数据容量,确定各 个第二目标输入数据在其对应的从存储器上的存储地址。进一步地,该主处理 电路还可以根据各个第二目标输入数据的数据容量及目标运算操作,确定各个 第二目标输入数据对应的第二目标输出数据及其数据容量,并确定各个第二目 标输出数据在其对应的从存储器上的存储地址。
更进一步地,各个从处理电路可以将计算获得第二目标输出数据传送至主 处理电路,主处理电路还可以进一步确定该各个第二目标输出数据在主存储器 上的存储地址。
在一个实施例中,若该从处理电路上执行的其他运算操作需要继续其对应 的第二目标输出数据时,则可以将该第二目标输出数据暂存于该从处理电路对 应的从存储器上。这样,可以减少主存储器和从存储器之间的数据读取操作, 进一步提高该处理器的运算速度。
在一个实施例中,上述的目标运算操作包括一个以上的运算操作,即该目 标运算操作为一个以上的运算操作的组合。一般地,该目标运算操作中包含的 各个运算操作为不同的运算操作,用于实现不同的运算。此时,处理器的主处 理电路可以根据第一存储器的可用存储容量,确定各个运算操作对应的子目标 输入数据,并根据各个运算操作对应的子目标输入数据确定该目标运算操作对 应的目标输入数据。具体地,该目标输入数据的确定过程与上述方法中的步骤 S210~S230一致,具体可参见上文中的描述,此处不再赘述。
进一步地,当该目标运算操作包括一个以上的运算操作时,该一个以上的 运算操作可以分为第一目标运算操作和第二目标运算操作。主处理电路可以根 据预设的运算分配规则,将该目标运算操作中的第一目标运算操作分配给主处 理电路,将该目标运算操作中的第二目标运算操作分配给从处理电路。相应地, 主处理电路可以将第一目标运算操作所需的输入数据存储至主存储器上,分别 将该各个第二目标运算操作所需的输入数据存储至对应的从存储器上。
例如,如图9所示,若该第一存储器的可用存储容量能够容纳池化运算操 作的目标输入数据C1-C2,以及激活运算操作的目标输入数据B1-B2,则可以将 该池化运算操作和激活运算操作等效为一个目标运算操作。此时,该目标运算 操作的目标输入数据可以是C1-C2区间内的数据。此时,主处理电路可以根据 预设的运算规则,将激活运算操作作为第一目标运算操作,分配至主处理电路 本身,将池化运算操作作为第二目标运算操作分配至从处理电路。相应地,可 以将池化运算操作所需的输入数据C1-C2加载到从存储器上,将该激活运算操 作所需的输入数据B1-B2加载到主存储器上。由于该池化运算操作与激活运算操作之间存在依赖关系,因此,可以在完成该池化运算操作之后,再将激活运 算操作所需的输入数据B1-B2从存储器上加载到主存储器上。
在一个实施例中,当目标运算操作的目标输入数据仅为该目标运算操作对 应的全部输入数据的一部分时,该目标运算操作的每个目标输入数据仅用于完 成该目标运算操作的一部分运算。为提高该目标运算操作的处理速度及充分利 用第一存储器的存储空间,该目标运算操作对应的目标输入数据的数量可以为 一个以上,每个目标输入数据为全部输入数据的一部分,即每个目标输入数据 包含全部输入数据的一个以上的输入数据块。也就是说,可以同时将一个以上 的目标输入数据加载到第一存储器上。进一步地,根据该目标输入数据的数量, 可以将该目标运算操作拆分为多个子目标运算操作,可选地,各个子目标运算 操作能够实现相同的运算。
该主处理电路可以根据该第一存储器的可用存储容量以及各个目标运算操 作所需的目标存储容量的大小,确定目标运算操作的数量,从而可以同时将一 个以上的目标运算操作的目标输入数据加载到第一存储器上。具体地,该目标 运算操作的数量的确定过程与上述方法中的步骤S500~步骤S520一致,具体可 参见上文中的描述,此处不再赘述。
应该理解的是,虽然图5-7的流程图以及图10-11中的各个步骤按照箭头的 指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非 本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以 以其它的顺序执行。而且,图5-7以及图10-11中的至少一部分步骤可以包括多 个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成, 而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次 进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流 或者交替地执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程, 是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于 一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述 各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、 存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。 非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程 ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可 包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限, RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM (ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus) 直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器 总线动态RAM(RDRAM)等。
在一个实施例中,如图12所示,本申请实施例提供了一种数据预处理装置, 其可以包括获取模块410、输入确定模块420、输出确定模块430以及存储分配 模块440。其中,
获取模块410用于获取第一存储器的可用存储容量及目标运算操作;输入 确定模块420用于根据所述目标运算操作及所述第一存储器的可用存储容量, 确定所述目标运算操作对应的目标输入数据;输出确定模块430用于根据所述 目标运算操作和所述目标输入数据,确定所述目标运算操作的目标输出数据; 存储分配模块440用于在所述目标运算操作的目标输出数据为所述目标运算操 作之后的其他运算操作的输入数据时,则将所述目标运算操作的目标输出数据 存储在所述第一存储器上,其中,所述第一存储器靠近处理器设置。
可选地,所述目标运算操作包含一个以上的运算操作,每个所述运算操作 对应有子目标输入数据。如图13所示,所述输入确定模块420还包括融合确定 单元421和输入确定单元422。其中,融合确定单元421用于根据所述第一存储 器的可用存储容量及所述待处理运算中各个运算操作的融合属性,确定能够融 合的运算操作的数量,获得融合数量阈值。输入确定单元422用于将选定数量 的所述能够融合的运算操作的组合作为所述目标运算操作,所述选定数量小于 或等于所述融合数量阈值;将所述选定数量的各个运算操作对应的子目标输入 数据作为所述目标运算操作对应的目标输入数据。
可选地,所述待处理运算为包含多个运算层的神经网络运算,每个所述运 算层表示一个所述运算操作;所述融合确定单元421还用于根据所述神经网络 运算的各个运算层的连接关系,确定各个所述运算操作的融合属性。
可选地,所述存储分配模块440还用于在所述目标运算操作中当前运算操 作输出的中间计算结果需作为所述目标运算操作中其他运算操作的输入数据, 或所述当前运算操作输出的中间计算结果需作为其他目标运算操作的输入数据 时,则将所述当前运算操作输出的中间计算结果存储于第一存储器上,或将所 述当前运算操作输出的中间计算结果存储于第一存储器和第二存储器上。
可选地,所述目标运算操作包括一个以上的子目标运算操作,每个所述子 目标运算操作对应一个所述目标输入数据;其中,所述目标运算操作对应的全 部输入数据包括多个输入数据块,所述目标运算操作对应的目标输入数据的数 量为一个以上,每个所述目标输入数据包含一个以上的所述输入数据块;输入 确定模块420还用于分别根据各个所述子目标运算操作的目标输入数据容量及 目标输出数据的数据容量,确定各个所述子目标运算操作所需的目标存储容量; 根据所述第一存储器的可用存储容量以及当前子目标运算操作所需的目标存储 容量,确定所述第一存储器的剩余存储容量;根据所述第一存储器的剩余存储 容量,以及所述当前子目标运算操作之外的其他子目标运算操作所需的目标存储容量,确定所述子目标运算操作的数量。
可选地,所述存储分配模块440还用于在一个以上的所述子目标运算操作 的目标输入数据存在交集时,则将所述一个以上的子目标运算操作的目标输入 数据之间的交集存储在所述第一存储器上。
可选地,所述存储分配模块440还用于根据所述目标运算操作的目标输入 数据的数据容量,确定所述目标输入数据在所述第一存储器上的存储地址;根 据所述目标运算操作的目标输出数据的数据容量,确定所述目标输出数据在所 述第一存储器上的存储地址;若所述目标运算操作之后的其他运算操作均不需 使用所述目标运算操作的目标输入数据时,则在完成所述目标运算操作之后, 将所述目标运算操作对应的目标输入数据的存储地址的一部分或全部,分配给 所述目标运算操作的目标输出数据。
在另一个实施例中,如图12所示,获取模块410用于获取主存储器的可用 存储容量、从存储器的可用存储容量以及目标运算操作;输入确定模块420用 于根据所述主存储器的可用存储容量、所述从存储器的可用存储容量以及所述 目标运算操作,确定所述目标运算操作对应的目标输入数据;输出确定模块430 用于根据所述目标运算操作和所述目标输入数据,确定所述目标运算操作对应 的目标输出数据;存储分配模块440用于在所述目标运算操作的目标输出数据 为所述目标运算操作之后的其他运算操作的输入数据时,则将所述目标输出数 据对应存储在所述主存储器上。
可选地,如图14所示,所述数据预处理装置还包括存储容量确定模块450, 用于将所述主存储器的可用存储容量和各个所述从存储器的可用存储容量进行 比较,将最小的可用存储容量作为第一存储器的可用存储容量;输入确定模块 420具体用于根据所述第一存储器的可用存储容量及目标运算操作,确定目标运 算操作对应的目标输入数据。
可选地,所述目标运算操作包含一个以上的运算操作,每个所述运算操作 对应有子目标输入数据;所述输入确定模块420还包括融合确定单元421和输 入确定单元422。其中,融合确定单元421用于根据所述第一存储器的可用存储 容量及所述待处理运算中各个运算操作的融合属性,确定能够融合的运算操作 的数量,获得融合数量阈值。输入确定单元422用于将选定数量的所述能够融 合的运算操作的组合作为所述目标运算操作,所述选定数量小于或等于所述融 合数量阈值;将所述选定数量的各个运算操作对应的子目标输入数据作为所述 目标运算操作对应的目标输入数据。
可选地,所述待处理运算为包含多个运算层的神经网络运算,每个所述运 算层表示一个所述运算操作;所述融合确定单元421还用于根据所述神经网络 运算的各个运算层的连接关系,确定各个所述运算操作的融合属性。
可选地,所述目标运算操作包括一个以上的子目标运算操作,每个所述子 目标运算操作对应一个所述目标输入数据;其中,所述目标运算操作对应的全 部输入数据包括多个输入数据块,所述目标运算操作对应的目标输入数据的数 量为一个以上,每个所述目标输入数据包含一个以上的所述输入数据块。所述 输入确定模块还用于分别根据各个所述子目标运算操作的目标输入数据容量及 目标输出数据的数据容量,确定各个所述子目标运算操作所需的目标存储容量; 根据所述第一存储器的可用存储容量以及当前子目标运算操作所需的目标存储 容量,确定所述第一存储器的剩余存储容量;根据所述第一存储器的剩余存储 容量,以及所述当前子目标运算操作之外的其他子目标运算操作所需的目标存 储容量,确定所述子目标运算操作的数量。
可选地,所述目标输入数据包括第一目标输入数据和第二目标输入数据; 所述输入确定模块420还用于根据预设的运算分配规则,确定所述主存储器对 应的第一目标输入数据以及各个所述从存储器对应的第二目标输入数据;所述 存储分配模块440还用于根据所述主存储器的可用存储容量以及所述第一目标 输入数据的数据容量,确定所述第一目标输入数据在所述主存储器上的存储地 址;分别根据各个所述从存储器的可用存储容量以及对应的所述第二目标输入 数据的数据容量,确定各个所述第二目标输入数据在所述从存储器上的存储地 址。
可选地,所述目标输出数据包括第一目标输出数据和第二目标输出数据; 所述输出确定模块430还用于根据所述目标运算操作及所述第一目标输入数据, 确定所述第一目标输出数据及所述第一目标输出数据在所述主存储器上的存储 地址;根据所述目标运算操作及各个所述第二目标输入数据,确定各个所述第 二目标输出数据及各个所述第二目标输出数据在对应的所述从存储器上的存储 地址;根据各个所述第二目标输出数据,确定各个所述第二目标输出数据在所 述主存储器上的存储地址。
可选地,所述存储分配模块440还用于在所述从处理电路上执行的其他目 标运算操作需要使用所述第二目标输出数据时,则将所述第二目标输出数据存 储在所述从处理电路对应的从存储器上。进一步地,所述存储分配模块440还 用于在所述目标运算操作的目标输出数据为所述目标运算操作之后的其他运算 操作的输入数据时,则将所述目标输出数据对应存储在所述主存储器和所述第 二存储器上。
应当清楚的是,该装置的工作原理与上述方法中各个步骤的执行过程一致, 具体可参见上文中的描述,此处不再赘述。
在一个实施例中,本申请实施例还提供了一种计算机可读存储介质,其上 存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中任一项所 述的方法的步骤。具体地,该计算机程序被处理器执行时,实现如下步骤:
获取第一存储器的可用存储容量及目标运算操作;
根据目标运算操作及第一存储器的可用存储容量,确定所述目标运算操作 对应的目标输入数据;其中,所述目标输入数据为所述目标运算操作对应的全 部输入数据的一部分或全部;
根据所述目标运算操作和所述目标输入数据,确定所述目标运算操作的目 标输出数据;
若所述目标运算操作的目标输出数据为所述目标运算操作之后的其他运算 操作的输入数据时,则将所述目标运算操作的目标输出数据存储在所述第一存 储器上,其中,所述第一存储器靠近处理器设置。
进一步地,该处理器可以是包括主处理电路和从处理电路形成的总从结构, 此时,该处理器在执行上述计算机程序时,具体实现以下步骤:
获取主存储器的可用存储容量、从存储器的可用存储容量以及目标运算操 作;
根据所述主存储器的可用存储容量、所述从存储器的可用存储容量以及所 述目标运算操作,确定所述目标运算操作对应的目标输入数据;其中,所述目 标输入数据为所述目标运算操作对应的全部输入数据的一部分或全部;
根据所述目标运算操作和所述目标输入数据,确定所述目标运算操作对应 的目标输出数据;
若所述目标运算操作的目标输出数据为所述目标运算操作之后的其他运算 操作的输入数据时,则将所述目标输出数据对应存储在所述主存储器上。
应当清楚的是,该处理器执行计算机程序时的过程,与上述方法中各个步 骤的执行过程一致,具体可参见上文中的描述,此处不再赘述。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述 实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特 征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细, 但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的 普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改 进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权 利要求为准。

Claims (20)

1.一种数据预处理方法,其特征在于,所述方法包括如下步骤:
获取第一存储器的可用存储容量及目标运算操作,其中,所述目标运算操作包括一个以上的运算操作,每个所述运算操作对应有子目标输入数据;
根据所述第一存储器的可用存储容量,确定各个所述运算操作对应的子目标输入数据,并根据各个运算操作对应的子目标输入数据确定所述目标运算操作对应的目标输入数据,以实现根据所述目标运算操作及所述第一存储器的可用存储容量,确定所述目标运算操作对应的目标输入数据;
根据所述目标运算操作和所述目标输入数据,确定所述目标运算操作的目标输出数据;
若所述目标运算操作的目标输出数据为所述目标运算操作之后的其他运算操作的输入数据时,则将所述目标运算操作的目标输出数据存储在所述第一存储器上,其中,所述第一存储器靠近处理器设置。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括如下步骤:
若所述目标运算操作的目标输出数据为所述目标运算操作之后的其他运算操作的输入数据时,则将所述目标运算操作的目标输出数据存储在所述第一存储器上和第二存储器上;
其中,所述第二存储器远离所述处理器设置,所述第一存储器的存储容量小于所述第二存储器的存储容量。
3.根据权利要求1所述的方法,其特征在于,所述目标运算操作包含一个以上的运算操作,每个所述运算操作对应有子目标输入数据;所述的根据目标运算操作及第一存储器的可用存储容量,确定所述目标运算操作对应的目标输入数据的步骤,还包括:
根据所述第一存储器的可用存储容量及待处理运算中各个运算操作的融合属性,确定能够融合的运算操作的数量,获得融合数量阈值;
将选定数量的所述能够融合的运算操作的组合作为所述目标运算操作,所述选定数量小于或等于所述融合数量阈值;
将所述选定数量的各个运算操作对应的子目标输入数据作为所述目标运算操作对应的目标输入数据。
4.根据权利要求3所述的方法,其特征在于,所述待处理运算为包含多个运算层的神经网络运算,每个所述运算层表示一个所述运算操作;所述方法还包括如下步骤:
根据所述神经网络运算的各个运算层的连接关系,确定各个所述运算操作的融合属性。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括如下步骤:
若所述目标运算操作中当前运算操作输出的中间计算结果需作为所述目标运算操作中其他运算操作的输入数据,或所述当前运算操作输出的中间计算结果需作为其他目标运算操作的输入数据时,则将所述当前运算操作输出的中间计算结果存储于第一存储器上,或将所述当前运算操作输出的中间计算结果存储于第一存储器和第二存储器上。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述目标运算操作对应的全部输入数据包括多个输入数据块,所述目标运算操作对应的目标输入数据的数量为一个以上,每个所述目标输入数据包含一个以上的所述输入数据块。
7.根据权利要求6所述的方法,其特征在于,所述目标运算操作包括一个以上的子目标运算操作,每个所述子目标运算操作对应一个所述目标输入数据;所述方法还包括如下步骤:
分别根据各个所述子目标运算操作的目标输入数据容量及目标输出数据的数据容量,确定各个所述子目标运算操作所需的目标存储容量;
根据所述第一存储器的可用存储容量以及当前子目标运算操作所需的目标存储容量,确定所述第一存储器的剩余存储容量;
根据所述第一存储器的剩余存储容量,以及所述当前子目标运算操作之外的其他子目标运算操作所需的目标存储容量,确定所述子目标运算操作的数量。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括如下步骤:
若一个以上的所述子目标运算操作的目标输入数据存在交集时,则将所述一个以上的子目标运算操作的目标输入数据之间的交集存储在所述第一存储器上。
9.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括如下步骤:
若所述目标运算操作之后的其他运算操作与所述目标运算操作之间的运算间隔在预设范围内时,则将所述目标输出数据存储在所述第一存储器上。
10.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括如下步骤:
根据所述目标运算操作的目标输入数据的数据容量,确定所述目标输入数据在所述第一存储器上的存储地址;
根据所述目标运算操作的目标输出数据的数据容量,确定所述目标输出数据在所述第一存储器上的存储地址。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括如下步骤:
若所述目标运算操作之后的其他运算操作均不需使用所述目标运算操作的目标输入数据时,则在完成所述目标运算操作之后,将所述目标运算操作对应的目标输入数据的存储地址的一部分或全部,分配给所述目标运算操作的目标输出数据。
12.一种数据预处理装置,其特征在于,所述装置包括:
获取模块,用于获取第一存储器的可用存储容量及目标运算操作,其中,所述目标运算操作包括一个以上的运算操作,每个所述运算操作对应有子目标输入数据;
输入确定模块,用于根据所述第一存储器的可用存储容量,确定各个所述运算操作对应的子目标输入数据,并根据各个运算操作对应的子目标输入数据确定所述目标运算操作对应的目标输入数据,以实现根据所述目标运算操作及所述第一存储器的可用存储容量,确定所述目标运算操作对应的目标输入数据;
输出确定模块,用于根据所述目标运算操作和所述目标输入数据,确定所述目标运算操作的目标输出数据;
存储分配模块,用于在所述目标运算操作的目标输出数据为所述目标运算操作之后的其他运算操作的输入数据时,则将所述目标运算操作的目标输出数据存储在所述第一存储器上,其中,所述第一存储器靠近处理器设置。
13.根据权利要求12所述的数据预处理装置,其特征在于,所述目标运算操作包含一个以上的运算操作,每个所述运算操作对应有子目标输入数据;所述输入确定模块还包括:
融合确定单元,用于根据所述第一存储器的可用存储容量及待处理运算中各个运算操作的融合属性,确定能够融合的运算操作的数量,获得融合数量阈值;
输入确定单元,用于将选定数量的所述能够融合的运算操作的组合作为所述目标运算操作,所述选定数量小于或等于所述融合数量阈值;将所述选定数量的各个运算操作对应的子目标输入数据作为所述目标运算操作对应的目标输入数据。
14.根据权利要求13所述的数据预处理装置,其特征在于,所述待处理运算为包含多个运算层的神经网络运算,每个所述运算层表示一个所述运算操作;所述融合确定单元还用于根据所述神经网络运算的各个运算层的连接关系,确定各个所述运算操作的融合属性。
15.根据权利要求13所述的数据预处理装置,其特征在于,所述存储分配模块还用于在所述目标运算操作中当前运算操作输出的中间计算结果需作为所述目标运算操作中其他运算操作的输入数据,或所述当前运算操作输出的中间计算结果需作为其他目标运算操作的输入数据时,则将所述当前运算操作输出的中间计算结果存储于第一存储器上,或将所述当前运算操作输出的中间计算结果存储于第一存储器和第二存储器上。
16.根据权利要求12-15任一项所述的数据预处理装置,其特征在于,所述目标运算操作包括一个以上的子目标运算操作,每个所述子目标运算操作对应一个所述目标输入数据;其中,所述目标运算操作对应的全部输入数据包括多个输入数据块,所述目标运算操作对应的目标输入数据的数量为一个以上,每个所述目标输入数据包含一个以上的所述输入数据块;所述输入确定模块还用于:
分别根据各个所述子目标运算操作的目标输入数据容量及目标输出数据的数据容量,确定各个所述子目标运算操作所需的目标存储容量;
根据所述第一存储器的可用存储容量以及当前子目标运算操作所需的目标存储容量,确定所述第一存储器的剩余存储容量;
根据所述第一存储器的剩余存储容量,以及所述当前子目标运算操作之外的其他子目标运算操作所需的目标存储容量,确定所述子目标运算操作的数量。
17.根据权利要求16所述的数据预处理装置,其特征在于,所述存储分配模块还用于在一个以上的所述子目标运算操作的目标输入数据存在交集时,则将所述一个以上的子目标运算操作的目标输入数据之间的交集存储在所述第一存储器上。
18.根据权利要求12-15任一项所述的数据预处理装置,其特征在于,所述存储分配模块还用于:
根据所述目标运算操作的目标输入数据的数据容量,确定所述目标输入数据在所述第一存储器上的存储地址;
根据所述目标运算操作的目标输出数据的数据容量,确定所述目标输出数据在所述第一存储器上的存储地址;
若所述目标运算操作之后的其他运算操作均不需使用所述目标运算操作的目标输入数据时,则在完成所述目标运算操作之后,将所述目标运算操作对应的目标输入数据的存储地址的一部分或全部,分配给所述目标运算操作的目标输出数据。
19.一种计算机设备,包括第一存储器、第二存储器和处理器,所述第一存储器靠近所述处理器设置,所述第一存储器和所述第二存储器能够进行数据读写;所述第一存储器或第二存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述方法的步骤。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
CN201810987293.5A 2018-08-28 2018-08-28 数据预处理方法、装置、计算机设备和存储介质 Active CN110865950B (zh)

Priority Applications (9)

Application Number Priority Date Filing Date Title
CN201810987293.5A CN110865950B (zh) 2018-08-28 2018-08-28 数据预处理方法、装置、计算机设备和存储介质
CN202110016335.2A CN112732601B (zh) 2018-08-28 2018-08-28 数据预处理方法、装置、计算机设备和存储介质
EP19812653.4A EP3640810A4 (en) 2018-08-28 2019-06-27 DATA PRE-PROCESSING PROCESS AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIA
EP19217269.0A EP3757896B1 (en) 2018-08-28 2019-06-27 Method and device for pre-processing data in a neural network
JP2019568721A JP6867518B2 (ja) 2018-08-28 2019-06-27 データ前処理方法、装置、コンピュータ機器及び記憶媒体
US16/622,503 US11966583B2 (en) 2018-08-28 2019-06-27 Data pre-processing method and device, and related computer device and storage medium
KR1020197036813A KR102519467B1 (ko) 2018-08-28 2019-06-27 데이터 전처리 방법, 장치, 컴퓨터 설비 및 저장 매체
PCT/CN2019/093144 WO2020042739A1 (zh) 2018-08-28 2019-06-27 数据预处理方法、装置、计算机设备和存储介质
US16/718,874 US11243895B2 (en) 2018-08-28 2019-12-18 Data pre-processing method and device, and related computer device and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810987293.5A CN110865950B (zh) 2018-08-28 2018-08-28 数据预处理方法、装置、计算机设备和存储介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202110016335.2A Division CN112732601B (zh) 2018-08-28 2018-08-28 数据预处理方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN110865950A CN110865950A (zh) 2020-03-06
CN110865950B true CN110865950B (zh) 2021-01-12

Family

ID=69651394

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110016335.2A Active CN112732601B (zh) 2018-08-28 2018-08-28 数据预处理方法、装置、计算机设备和存储介质
CN201810987293.5A Active CN110865950B (zh) 2018-08-28 2018-08-28 数据预处理方法、装置、计算机设备和存储介质

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202110016335.2A Active CN112732601B (zh) 2018-08-28 2018-08-28 数据预处理方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (2) CN112732601B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946538B (zh) * 2021-09-23 2024-04-12 南京大学 一种基于行缓存机制的卷积层融合存储装置及方法
CN114610457A (zh) * 2022-03-08 2022-06-10 北京地平线机器人技术研发有限公司 用于多处理单元的数据协同处理方法及装置
CN116804915B (zh) * 2023-08-28 2023-12-15 腾讯科技(深圳)有限公司 基于存储器的数据交互方法、处理器、设备以及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1503958A (zh) * 2001-04-19 2004-06-09 艾利森电话股份有限公司 自适应存储器分配
EP1276040A3 (en) * 2001-07-10 2008-01-23 Hitachi, Ltd. Operation method of storage and storage and remote storage used therein
CN101276637A (zh) * 2007-03-29 2008-10-01 澜起科技(上海)有限公司 寄存器读取机构
CN107003988A (zh) * 2014-12-19 2017-08-01 英特尔公司 用于执行卷积运算的存储设备和方法
CN107451654A (zh) * 2017-07-05 2017-12-08 深圳市自行科技有限公司 卷积神经网络的加速运算方法、服务器及存储介质
CN108241890A (zh) * 2018-01-29 2018-07-03 清华大学 一种可重构神经网络加速方法及架构

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10282100B2 (en) * 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
US10083395B2 (en) * 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
CN115100019A (zh) * 2015-06-10 2022-09-23 无比视视觉技术有限公司 用于处理图像的图像处理器和方法
US10699186B2 (en) * 2015-12-02 2020-06-30 Google Llc Determining orders of execution of a neural network
CN107506828B (zh) * 2016-01-20 2020-11-03 中科寒武纪科技股份有限公司 用于稀疏连接的人工神经网络计算装置和方法
CN106292432B (zh) * 2016-08-17 2020-07-17 深圳地平线机器人科技有限公司 信息处理方法、装置和电子设备
US9959498B1 (en) * 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
KR102224510B1 (ko) * 2016-12-09 2021-03-05 베이징 호라이즌 인포메이션 테크놀로지 컴퍼니 리미티드 데이터 관리를 위한 시스템들 및 방법들
CN106874219B (zh) * 2016-12-23 2018-11-02 深圳云天励飞技术有限公司 一种卷积神经网络的数据调度方法、系统及计算机设备
CN106649890B (zh) * 2017-02-07 2020-07-14 税云网络科技服务有限公司 数据存储方法和装置
CN106951962B (zh) * 2017-03-22 2020-09-01 南京地平线机器人技术有限公司 用于神经网络的复合运算单元、方法和电子设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1503958A (zh) * 2001-04-19 2004-06-09 艾利森电话股份有限公司 自适应存储器分配
EP1276040A3 (en) * 2001-07-10 2008-01-23 Hitachi, Ltd. Operation method of storage and storage and remote storage used therein
CN101276637A (zh) * 2007-03-29 2008-10-01 澜起科技(上海)有限公司 寄存器读取机构
CN107003988A (zh) * 2014-12-19 2017-08-01 英特尔公司 用于执行卷积运算的存储设备和方法
CN107451654A (zh) * 2017-07-05 2017-12-08 深圳市自行科技有限公司 卷积神经网络的加速运算方法、服务器及存储介质
CN108241890A (zh) * 2018-01-29 2018-07-03 清华大学 一种可重构神经网络加速方法及架构

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
IMPLEMENTING A NEURAL PROCESSOR FOR ACCELERATING DEEP LEARNING;Sreejith R Warrier 等;《9th ICCCNT 2018》;20180712;第1-4页 *
一种Zynq SoC片内硬件加速的二维傅里叶变换;陈龙 等;《单片机与嵌入式系统》;20180201;第36-40页 *

Also Published As

Publication number Publication date
CN112732601A (zh) 2021-04-30
CN110865950A (zh) 2020-03-06
CN112732601B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
KR102519467B1 (ko) 데이터 전처리 방법, 장치, 컴퓨터 설비 및 저장 매체
CN109492241B (zh) 转换方法、装置、计算机设备和存储介质
CN110197270B (zh) 集成电路芯片装置及相关产品
CN109102065B (zh) 一种基于PSoC的卷积神经网络加速器
US20210117810A1 (en) On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system
CN110865950B (zh) 数据预处理方法、装置、计算机设备和存储介质
EP3825841A1 (en) Method and device for parallel computation of a network model
TWI798618B (zh) 記憶體分配方法、裝置、及電子設備
CN110750351B (zh) 多核任务调度器、多核任务调度方法、装置及相关产品
CN114580606A (zh) 数据处理方法、装置、计算机设备和存储介质
CN116893904B (zh) 神经网络模型的内存管理方法、装置、设备、介质及产品
CN113837922A (zh) 计算装置、数据处理方法及相关产品
CN112970037B (zh) 用于实施神经网络应用的多芯片系统、适用于多芯片系统的数据处理方法、和非暂时性计算机可读介质
CN110865792B (zh) 数据预处理方法、装置、计算机设备和存储介质
CN116152520B (zh) 用于神经网络加速器的数据处理方法、芯片及电子设备
CN114118348A (zh) 加速器、操作加速器的方法以及包括加速器的电子装置
CN109685203B (zh) 数据处理方法、装置、计算机系统及存储介质
CN110197265B (zh) 集成电路芯片装置及相关产品
CN109558565B (zh) 运算方法、装置及相关产品
CN109542837B (zh) 运算方法、装置及相关产品
CN110197275B (zh) 集成电路芯片装置及相关产品
CN110826704B (zh) 一种用于防止神经网络过拟合的处理装置及系统
CN109543836B (zh) 运算方法、装置及相关产品
CN118132230A (zh) 众核架构下的神经形态芯片的数据拆分处理方法和处理器
CN113469333A (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