CN115098262B - 一种多神经网络任务处理方法及装置 - Google Patents

一种多神经网络任务处理方法及装置 Download PDF

Info

Publication number
CN115098262B
CN115098262B CN202210741395.5A CN202210741395A CN115098262B CN 115098262 B CN115098262 B CN 115098262B CN 202210741395 A CN202210741395 A CN 202210741395A CN 115098262 B CN115098262 B CN 115098262B
Authority
CN
China
Prior art keywords
vertex
calculation
block
graph
core
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
CN202210741395.5A
Other languages
English (en)
Other versions
CN115098262A (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.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN202210741395.5A priority Critical patent/CN115098262B/zh
Publication of CN115098262A publication Critical patent/CN115098262A/zh
Application granted granted Critical
Publication of CN115098262B publication Critical patent/CN115098262B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开涉及一种多神经网络任务处理方法及装置,所述方法包括获取计算图集;针对任意一个计算图,将所述计算图包括的多个顶点划分为多个顶点块,所述多个顶点块之间存在先后执行顺序,任意一个顶点块中的顶点不基于执行顺序在本顶点块之后的顶点块中的顶点的执行结果,任意一个顶点块能够由众核芯片中的一个计算核执行;在满足第一预设条件的情况下,将第一计算图中的第一顶点块与第二计算图中的第二顶点块映射到所述众核芯片的同一个计算核中;基于各个计算图中每个顶点块与所述众核芯片的多个计算核之间的映射关系,生成所述众核芯片的配置文件。本公开实施例可提升硬件资源利用率以及提高执行任务的效率。

Description

一种多神经网络任务处理方法及装置
技术领域
本公开涉及众核技术领域,尤其涉及一种多神经网络任务处理方法及装置。
背景技术
随着人工智能算法和非冯诺依曼硬件架构研究深入,出现了诸多新型硬件及系统,例如迅速迭代发展的图像处理器(Graphics Processing Unit,GPU)、多核芯片、众核芯片、深度学习加速器、神经形态芯片以及通用类脑计算芯片等。区别于传统的中央处理器(Central Processing Unit,CPU)、GPU等具有中心化特征的通用处理器,以众核架构为特点的神经形态芯片具有典型的去中心化特征。这使得神经形态芯片在用于脑仿真、神经工程学建模与神经网络加速时具有重要的优势,这类处理器的特点也为多模态脑机接口算法的支持提供了优化空间。
然而,高度灵活众核芯片在提升了并行优化空间的同时,也为任务映射带来了严峻的挑战。与此同时,随着人工智能技术研究的深入,越来越多的人工智能任务需要多个神经网络协调完成,而非单一神经网络独立完成,这也为利用众核芯片进行神经网络优化进一步带来了挑战。
目前,神经网络的调度和映射算法多是基于CPU和GPU等传统的中央处理器,或者基于张量处理器(Tensor Processing Unit,TPU)和Shi-Diannao(一种深度学习处理器)等典型的神经网络加速器的。而硬件设备的可扩展性决定了上述处理器对应映射算法主要关注的都是有限资源下的任务调度问题。而在众核芯片大量兴起的今日,其可扩展性使得资源限制不再是最重要的考虑因素,如何充分利用硬件资源,使得任务的执行更加高效成为当前亟待解决的问题。
发明内容
本公开提出了一种多神经网络任务处理方法及装置,能够提升硬件资源利用率以及提高执行任务的效率。
根据本公开的一方面,提供了一种多神经网络任务的处理方法,所述方法包括:
获取计算图集,所述计算图集中包括多个计算图,每个计算图代表一个神经网络计算任务,每个计算图包括多个顶点,每个顶点对应一个或多个原语;
针对任意一个计算图,将所述计算图包括的多个顶点划分为多个顶点块,所述多个顶点块之间存在先后执行顺序,任意一个顶点块中的顶点不基于执行顺序在本顶点块之后的顶点块中的顶点的执行结果,任意一个顶点块能够由众核芯片中的一个计算核执行;
在满足第一预设条件的情况下,将第一计算图中的第一顶点块与第二计算图中的第二顶点块映射到所述众核芯片的同一个计算核中,所述第一计算图表示所述多个计算图中的任意一个计算图,所述第二计算图表示所述多个计算图中除所述第一计算图以外的任意一个计算图;
基于各个计算图中每个顶点块与所述众核芯片的多个计算核之间的映射关系,生成所述众核芯片的配置文件,所述配置文件用于指示所述众核芯片中各计算核执行的原语以及执行原语的顺序。
在一种可能的实现方式中,所述将所述计算图包括的多个顶点划分为多个顶点块,包括:
将所述计算图包括的多个顶点中处于一个循环上的顶点划分至一个顶点块中;
基于所述计算图中顶点的执行顺序,遍历所述计算图包括的多个顶点中未被划分至顶点块的顶点;
针对当前遍历到的目标顶点:
在存在与所述目标顶点连接的第三顶点块且所述目标顶点的计算量与所述第三顶点块的计算量之和小于或者等于第一阈值的情况下,将所述目标顶点划分至所述第三顶点块中;
在不存在与所述目标顶点连接的第三顶点块或者存在所述与所述目标顶点连接的第三顶点块但目标顶点的计算量与所述第三顶点块的计算量之和大于所述第一阈值的情况下,创建第四顶点块,并将所述目标顶点划分至所述第四顶点块中。
在一种可能的实现方式中,所述方法还包括:
根据所述众核芯片中一个计算核的内存,确定所述第一阈值。
在一种可能的实现方式中,所述满足第一预设条件包括:
第一运行时间小于第二运行时间,所述第一运行时间表示在所述第一顶点块与所述第二顶点块共享计算核的情况下所述众核芯片完成所述多神经网络任务的时间,所述第二运行时间表示在所述第一顶点块与所述第二顶点块映射到不同计算核的情况下所述众核芯片完成所述多神经网络任务的时间;
或者,
所述第一运行时间小于所述第二运行时间,且在将所述第一顶点块与所述第二顶点块映射到所述众核芯片的同一个计算核后,优化计时器未达到优化时间阈值,其中,所述优化计时器以第一次判断是否满足第一预设条件的时刻为起始时刻。
在一种可能的实现方式中,所述方法还包括:
从所述计算图集中随机选取第一计算图和第二计算图;
将当前时刻所述众核芯片完成所述多神经网络任务的时间,确定为所述第二运行时间;
在所述第一计算图中的第一顶点块与所述第二计算图中的第二顶点块能够共享一个计算核资源,且所述第一顶点块对应的部分原语与所述第二顶点块对应的部分原语之间不存在数据依赖,则调整所述第一顶点块与所述第二顶点块对应的原语参数和原语顺序;
将调整后所述众核芯片完成所述多神经网络任务的时间,确定为所述第一运行时间。
在一种可能的实现方式中,所述基于各个计算图中每个顶点块与所述众核芯片的多个计算核之间的映射关系,生成所述众核芯片的配置文件,包括:
遍历各计算图;
针对当前遍历到的目标计算图:
基于所述映射关系,确定所述目标计算图中每个顶点块对应的计算核;
将所述计算图中每个顶点块包括的各顶点对应的一个或多个原语,添加至对应计算核当前原语之后。
根据本公开的一方面,提供了一种多神经网络任务的处理装置,所述装置包括:
获取模块,用于获取计算图集,所述计算图集中包括多个计算图,每个计算图代表一个神经网络计算任务,每个计算图包括多个顶点,每个顶点对应一个或多个原语;
划分模块,用于针对任意一个计算图,将所述计算图包括的多个顶点划分为多个顶点块,所述多个顶点块之间存在先后执行顺序,任意一个顶点块中的顶点不基于执行顺序在本顶点块之后的顶点块中的顶点的执行结果,任意一个顶点块能够由众核芯片中的一个计算核执行;
映射模块,用于在满足第一预设条件的情况下,将第一计算图中的第一顶点块与第二计算图中的第二顶点块映射到所述众核芯片的同一个计算核中,所述第一计算图表示所述多个计算图中的任意一个计算图,所述第二计算图表示所述多个计算图中除所述第一计算图以外的任意一个计算图;
生成模块,用于基于各个计算图中每个顶点块与所述众核芯片的多个计算核之间的映射关系,生成所述众核芯片的配置文件,所述配置文件用于指示所述众核芯片中各计算核执行的原语以及执行原语的顺序。
在一种可能的实现方式中,所述划分模块还用于:
将所述计算图包括的多个顶点中处于一个循环上的顶点划分至一个顶点块中;
基于所述计算图中顶点的执行顺序,遍历所述计算图包括的多个顶点中未被划分至顶点块的顶点;
针对当前遍历到的目标顶点:
在存在与所述目标顶点连接的第三顶点块且所述目标顶点的计算量与所述第三顶点块的计算量之和小于或者等于第一阈值的情况下,将所述目标顶点划分至所述第三顶点块中;
在不存在与所述目标顶点连接的第三顶点块或者存在所述与所述目标顶点连接的第三顶点块但目标顶点的计算量与所述第三顶点块的计算量之和大于所述第一阈值的情况下,创建第四顶点块,并将所述目标顶点划分至所述第四顶点块中。
在一种可能的实现方式中,所述装置还包括:
确定模块,用于根据所述众核芯片中一个计算核的内存,确定所述第一阈值。
在一种可能的实现方式中,所述满足第一预设条件包括:
第一运行时间小于第二运行时间,所述第一运行时间表示在所述第一顶点块与所述第二顶点块共享计算核的情况下所述众核芯片完成所述多神经网络任务的时间,所述第二运行时间表示在所述第一顶点块与所述第二顶点块映射到不同计算核的情况下所述众核芯片完成所述多神经网络任务的时间;
或者,
所述第一运行时间小于所述第二运行时间,且在将所述第一顶点块与所述第二顶点块映射到所述众核芯片的同一个计算核后,优化计时器未达到优化时间阈值,其中,所述优化计时器以第一次判断是否满足第一预设条件的时刻为起始时刻。
在一种可能的实现方式中,所述装置还包括:
选取模块,用于从所述计算图集中随机选取第一计算图和第二计算图;
第一确定模块,用于将当前时刻所述众核芯片完成所述多神经网络任务的时间,确定为所述第二运行时间;
调整模块,用于在所述第一计算图中的第一顶点块与所述第二计算图中的第二顶点块能够共享一个计算核资源,且所述第一顶点块对应的部分原语与所述第二顶点块对应的部分原语之间不存在数据依赖,则调整所述第一顶点块与所述第二顶点块对应的原语参数和原语顺序;
第二确定模块,用于将调整后所述众核芯片完成所述多神经网络任务的时间,确定为所述第一运行时间。
在一种可能的实现方式中,所述生成模块还用于:
遍历各计算图;
针对当前遍历到的目标计算图:
基于所述映射关系,确定所述目标计算图中每个顶点块对应的计算核;
将所述计算图中每个顶点块包括的各顶点对应的一个或多个原语,添加至对应计算核当前原语之后。
根据本公开的一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述方法。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
在本公开实施例中,结合众核芯片的硬件架构特点,一方面通过将计算图包括的多个点点划分为多个顶点块,使得任意一个顶点块中的顶点不基于执行顺序在本顶点块之后的顶点块中的顶点的执行结果,任意一个顶点块能够由众核芯片中的一个计算核执行低了死锁的概率,减少通信开销,提高了计算资源的利用率;另一方面,通过将不同计算图的顶点块映射到同一个计算核中,使得不同计算图的顶点块之间共享计算核,进一步提高了计算资源的利用率。这样从计算图的独立优化以及多个计算图的整体优化两个方面,有效地提升了硬件资源利用率以及执行任务的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1示出本公开实施例的处理器的示意图。
图2示出本公开实施例提供的多神经网络任务的处理方法的流程图。
图3示出本公开实施例提供的多神经网络任务的处理方法的应用过程示意图。
图4示出根据本公开实施例的多神经网络任务的处理装置的框图。
图5示出根据本公开实施例的一种电子设备800的框图。
图6示出根据本公开实施例的一种电子设备1900的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出本公开实施例的处理器的示意图。所述处理器包括多个计算核。
在一种可能的实现方式中,如图1所示,所述计算核包括处理部件及存储部件。所述处理部件包括树突单元、轴突单元、胞体单元、路由单元。所述存储部件包括多个存储单元。
在一种可能的实现方式中,多个处理器可以集成在一个类脑计算芯片中,类脑计算芯片即存算一体的神经形态电路,以大脑的处理模式为参考,通过模拟大脑中神经元对信息的传递与处理,提升处理效率并降低功耗。每个处理器可包括多个计算核,计算核之间可独立处理不同的任务,或并行处理同一任务,以提升处理效率。计算核之间可通过计算核内的路由单元进行核间信息传输。
在计算核之内,可以设置有处理部件和存储部件。处理部件可以包括树突单元、轴突单元、胞体单元和路由单元。处理部件可以模拟大脑的神经元对信息的处理模式,其中,树突单元用于接收信号,轴突单元用于发送尖峰信号,胞体单元用于信号的集成变换,路由单元用于同其它计算核进行信息传输。计算核内的处理部件可以对存储部件的多个存储单元进行读写访问,以与计算核内的存储部件进行数据交互,并可分别承担各自的数据处理任务和/或数据传输任务,以获得数据处理结果,或者与其他计算核进行通信。其中,与其他计算核进行通信包括与本处理器内的其他计算核进行通信,以及与其他处理器内的计算核通信。
在一种可能的实现方式中,膜电位(Membrane Potential)为以膜相隔的两溶液之间产生的电位差。利用膜电位可以在神经细胞间通讯。类脑计算芯片内的各个计算核,可以模拟大脑中神经细胞利用膜电位对信息传递与处理的模式。
在一种可能的实现方式中,存储单元可以为静态随机存取存储器(Static RandomAccess Memory,SRAM)。例如,可以包括读写宽度为16B,容量为12KB的SRAM。其中,第三存储单元MEM2可以接收胞体单元读取运算参数以进行非线性运算,或者可接收路由单元读取路由表,以进行数据通信。本公开对存储单元的读写宽度和容量不做限制。
多神经网络任务可以表示需要多个神经网络协调完成的任务。多神经网络任务可以为图像处理、语音识别等人工智能任务等,多神经网络任务中涉及的神经网络可以为卷积神经网络(CNN)、脉冲神经网络(SNN)、循环神经网络(RNN)等形式的神经网络。多神经网络中涉及的神经网络可以通过深度学习框架编写。其中,深度学习框架包括但不限于Keras、PyTorch和TensorFlow等。本公开实施例中对多神经网络任务处理的问题、多神经网络任务中涉及的神经网络的形式以及神经网络的编写框架不做限制。
本公开实施例提供了一种多神经网络任务的处理方法,结合众核芯片的硬件架构特点进行神经网络与众核芯片中计算核的映射,有效地提升了硬件资源利用率以及执行任务的效率。
图2示出本公开实施例提供的多神经网络任务的处理方法的流程图。所述方法可以由众核芯片的外部控制电路执行,或者所述方法可以由配备有众核芯片的电子设备执行。所述电子设备可以为终端设备或者服务器。在一个示例中,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、个人数字助理(Personal DigitalAssistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等如图2所示,该方法可以包括:
步骤S201,获取计算图集。
一个多神经网络任务需要多个神经网络协调完成,因此,一个多神经网络任务对应于多个神经网络计算任务。在本公开实施例中,可以通过开放神经网络交换(OpenNeural Network Exchange,ONNX)将一个神经网络翻译成一个计算图,以解耦神经网络编程和映射。在本步骤中,计算图集(记为S(G))中可以包括多个计算图(记为Gi),每个计算图代表多神经网络任务对应的一个神经网络计算任务。每个计算图包括多个顶点(记为Vi)和多条边(记为Ei)。其中,顶点代表运算符,边代表数据流。每个顶点对应一个或多个原语(可以称为原语栈)。其中,原语一般指由若干条指令组成的程序段,原语是众核芯片中计算核处理计算任务的基本单位,在执行过程中不可被中断。
需要说明的是,将神经网络转换为计算图的过程以及将顶点翻译成原语的过程可以根据不同众核芯片的指令集或原语集进行适配,在不同平台上各有差异,可以参考相关技术,本公开实施例中不做赘述以及限制。
步骤S202,针对任意一个计算图,将所述计算图包括的多个顶点划分为多个顶点块。
其中,所述多个顶点块之间存在先后执行顺序,任意一个顶点块中的顶点不基于执行顺序在本顶点块之后的顶点块中的顶点的执行结果,任意一个顶点块能够由众核芯片中的一个计算核执行。
在本公开实施例中,首先对每个计算图进行独立的优化。整个计算图的优化过程被控制在一个循环内,该循环内对整个计算图集内的各个计算图进行遍历,并通过步骤S202针对性地对每个计算图进行优化。具体的,针对每个计算图,将计算图包括的多个顶点进行分块。由于一个计算图中包括的多个顶点之间存在先后执行顺序,因此一个计算图中包括的多个顶点划分成的多个顶点块之前也存在先后执行顺序,且顶点块的先后执行顺序与顶点的先后执行顺序一致。举例来说,计算图中包括执行顺序依次为顶点1、顶点2、顶点3、顶点4和顶点5的五个顶点,顶点1和顶点2划分至顶点块1中,顶点3、顶点4和顶点5划分至顶点块2中,则顶点块的执行顺序依次为顶点块1和顶点块2。
在一种可能的实现方式中,步骤S202可以包括:将所述计算图包括的多个顶点中处于一个循环上的顶点划分至一个顶点块中;基于所述计算图中顶点的执行顺序,遍历所述计算图包括的多个顶点中未被划分至顶点块的顶点;针对当前遍历到的目标顶点:在存在与所述目标顶点连接的第三顶点块且所述目标顶点的计算量与所述第三顶点块的计算量之和小于或者等于第一阈值的情况下,将所述目标顶点划分至所述第三顶点块中;在不存在与所述目标顶点连接的第三顶点块或者存在所述与所述目标顶点连接的第三顶点块但目标顶点的计算量与所述第三顶点块的计算量之和大于所述第一阈值的情况下,创建第四顶点块,并将所述目标顶点划分至所述第四顶点块中。
考虑到神经网络中常用的反馈会在计算图中产生,这不仅给一些需要有向无环图的算法带来困难,而且存在潜在的死锁危险。因此,在对一个计算图包括的多个顶点进行分块时,首先将处于一个循环上的顶点划分至一个顶点块中,从而使得整个计算图称为一个可偏序化的计算图,此时的计算图也被进行了层次化。可以理解的是,在将处于一个循环上的顶点划分至一个顶点块中之后,任意一个顶点块中顶点都不会基于执行顺序在该顶点块之后的顶点块中的顶点的执行结果。
另外,从资源优化的角度考虑,在众核芯片中一个计算核的内存在下足以让一个计算核容纳多个顶点的计算的情况下,将这多个顶点划分至一个顶点块中,以映射到同一个计算核中进行处理,一方面可以减少通信开销,另一方面提高了计算资源的利用率。
在本公开实施例中,可以基于计算图中顶点的执行顺序,依次遍历计算图中包括的多个顶点中未被划分至顶点块的顶点。
目标顶点可以表示当前遍历到的计算图包括的多个顶点中未被划分至顶点块的顶点。第三顶点块可以表示与目标顶点连接的顶点块。第一阈值可以用于判断一个计算核是否能够满足一个顶点块的计算要求。在一个示例中,可以根据所述众核芯片中一个计算核的内存,确定所述第一阈值。例如,可以将一个计算核的内存或者一个计算核的内存的95%或者一个计算核的内存的98%等设置为第一阈值。
在遍历到目标顶点时,首先确定是否存在与目标顶点连接的第三顶点块。在存在与目标顶点连接的第三顶点块的情况下,可以判断目标顶点的计算量和第三顶点块的计算量(即当前第三顶点块包括的各顶点的计算量之和)之和是否小于或者等于第一阈值。若目标顶点的计算量和第三顶点块的计算量之和小于或者等于第一阈值,表明一个计算核的内存足以容纳目标顶点与第三顶点块的计算,为了减少通信开销,以及充分利用计算资源,可以将目标顶点划分至该第三顶点块中。若目标顶点的计算量和第三顶点块的计算量之和大于第一阈值,表明一个计算核的内存无法同时容纳目标顶点与第三顶点块的计算,因此不能将目标顶点划分至第三顶点块中,此时可以创建新的顶点块(即第四顶点块),并将目标顶点划分至新创建的顶点块中。在不存在与目标顶点连接的第三顶点块的情况下,同样可以创建新的顶点块(即第四顶点块),并将目标顶点划分至新创建的顶点块中。这样,目标顶点由未被划分至顶点块的顶点变成了已划分了顶点块的顶点。
在完成计算图包括的多个顶点中所有未被划分至顶点块的顶点的遍历后,计算图中包括的所有顶点均被划分至了某个顶点块。此时,计算图包括的多个顶点就划分成了多个顶点块。任意一个顶点块中的顶点不基于执行顺序在本顶点块之后的顶点块中的顶点的执行结果,任意一个顶点块能够由众核芯片中的一个计算核执行。在此基础上,一个计算图对应的每个顶点块可以映射到众核芯片中的一个计算核进行处理。
在上述步骤S202中针对各个计算图完成了独立优化,而后续步骤S203则致力于对多个计算图进行整体优化。
步骤S203,在满足第一预设条件的情况下,将第一计算图中的第一顶点块与第二计算图中的第二顶点块映射到所述众核芯片的同一个计算核中。
第一计算图可以表示所述多个计算图中的任意一个计算图,第二计算图可以表示所述多个计算图中除所述第一计算图以外的任意一个计算图。也就是说,第一计算图和第二计算图是计算图集中两个不同的计算图。考虑到众核芯片中的计算核具有并行能力,因此在不同的计算图对应的顶点块之间不存在数据依赖的情况下,不同计算图对应的顶点块可以共享计算核以充分利用计算核的计算资源。在本公开实施例中,可以通过不同计算图的顶点块进行计算核的共享来实现多个计算图的整体优化。
其中,第一预设条件可以用于判断是否进行计算核共享。第一预设条件根据需要进行设置,举例来说,第一预设条件包括但不限于低延迟、低功耗和高吞吐量等。在第一预设条件不同时,计算核的共享情况不同,达到的优化效果也不同。
在一种可能的实现方式中,满足第一预设条件可以包括:第一运行时间小于第二运行时间。
其中,第一运行时间可以表示在第一顶点块与第二顶点块共享计算核的情况下所述众核芯片完成所述多神经网络任务的时间,第二运行时间可以表示在第一顶点块与第二顶点块映射到不同计算核的情况下所述众核芯片完成所述多神经网络任务的时间。
在第一运行时间小于第二运行时间的情况下,表明第一顶点块和第二顶点块进行计算核共享时,能够缩短众核芯片完成所述多神经网络任务的时间,提高效率。同时,由于不同计算图的顶点块之间进行了计算核共享,又提高了资源利用率。
在一个示例中,可以首先从计算图集中随机选取第一计算图和第二计算图;将当前时刻所述众核芯片完成所述多神经网络任务的时间,确定为所述第二运行时间;在所述第一计算图中的第一顶点块与所述第二计算图中的第二顶点块能够共享一个计算核资源,且所述第一顶点块对应的部分原语与所述第二顶点块对应的部分原语之间不存在数据依赖,则调整所述第一顶点块与所述第二顶点块对应的原语参数和原语顺序;将调整后所述众核芯片完成所述多神经网络任务的时间,确定为所述第一运行时间。
在第一顶点块的计算量和第二顶点块的计算量之和小于第二阈值的情况下,表明第一顶点块与第二顶点块能够共享一个计算核资源。第二阈值可以根据众核芯片中一个计算核的内存确定,例如可以将众核芯片中一个计算核的内存或者众核芯片中一个计算核的内存的98%确定为第二阈值。第二阈值可以与第一阈值相同,也可以与第一阈值不同。在一个示例中,第二阈值可以大于第一阈值。
在第一顶点块对应的部分原语与第二顶点块对应的部分原语之间不存在数据依赖的情况下,表明第一顶点块对应的部分原语与第二顶点块对应的部分原语可以由计算核进行并行处理,此时可以调整第一顶点块与第二顶点块对应的原语参数和原语顺序,以便于计算核进行并行处理,从而进一步缩短运行时间。原语参数是指原语中涉及的参数,原语顺序是指原语的执行顺序。调整原语参数和原语顺序的方式需要根据具体原语进行确定,本公开实施例不做限制。
需要说明的是,在本公开实施例中,可以重复随选第一计算图和第二计算图,以实现更多的计算块之间的计算核共享,进一步提高资源利用率和缩短运行时间。
考虑到实际工程应用中,想要穷举所有的策略可能性(即找到所有可以进行计算核共享的计算块)是困难的,因此在本公开实施例中,采用贪心算法进行在资源利用率和系统计算延迟中间寻求一个平衡。在一种可能的实现方式中,满足第一预设条件可以包括:所述第一运行时间小于所述第二运行时间,且在将所述第一顶点块与所述第二顶点块映射到所述众核芯片的同一个计算核后,优化计时器未达到优化时间阈值。
其中,优化计时器可以用于判断整体优化过程的时长是否过长(可以理解的是,若整体优化过程的时长过长则会造成系统计算延迟较大),以平衡资源利用率和系统计算延迟。优化计时器以第一次判断是否满足第一预设条件的时刻为起始时刻。也就是说,在本公开实施例中,可以在第一次判断是否满足第一预设条件的时刻启动优化计时器,在每次确定第一顶点块与第二顶点块可以映射到众核芯片的同一个计算核后,判断优化计时器是否达到了优化时间阈值。若优化计时器达到了优化时间阈值,则不再选取第一计算图和第二计算图,也不在进行下一次是否满足第一预设条件的判断。若优化计时器未达到优化时间阈值,则继续选取第一计算图和第二计算图,进行下一次是否满足第一预设条件的判断。优化时间阈值可以根据需要进行设置,例如可以设置为10秒、20秒等,对此本公开实施例不做限制。
这样,通过将整体优化过程的时长限制在优化时间阈值内,可以实现资源利用率和系统计算延迟之间的平衡。
需要说明的是,以上仅为第一预设条件的示例性说明,第一预设条件还可以为其他条件,对此本公开实施例不做限制。在本公开实施例中,可以基于第一预设条件可调节地实现在低延迟、低功耗和高吞吐的不同需求间寻求一个可行解。
在本公开实施例中,通过乱序压缩(即不同计算图的顶点块之间共享计算核),提升了众核芯片的资源利用率,将碎片化的执行过程集中化,对每个计算核而言,又通过第一阈值限制了计算量,为Power-Gating等低功耗技术提供了软件上的支持。
步骤S204,基于各个计算图中每个顶点块与所述众核芯片的多个计算核之间的映射关系,生成所述众核芯片的配置文件。
在本公开实施例中,对于未与其他顶点块进行计算核共享的任意一个顶点块,将其映射到众核芯片中一个独立的计算核中,具体映射方式,可以参照相关技术,这里不再赘述。对于与其他顶点块进行计算核共享的任意一个顶点块,通过步骤S203,将共享同一个计算核的顶点块均映射到了同一个计算块中。这样,各个计算图中每个顶点块均映射到了众核芯片中的一个计算核中。
配置文件可以用于指示所述众核芯片中各计算核执行的原语以及执行原语的顺序。该配置文件可直接转译为众核芯片进行处理和运算的指令序列文件,由众核芯片直接执行。
在一种可能的实现方式中,步骤S205可以包括:遍历各计算图;针对当前遍历到的目标计算图:基于所述映射关系,确定所述目标计算图中每个顶点块对应的计算核;将所述计算图中每个顶点块包括的各顶点对应的一个或多个原语,添加至对应计算核当前原语之后。
其中,目标计算图可以表示当前遍历到的计算图。在一个示例中,计算图1对应的顶点块11和计算图2对应的顶点块12均被分配至了计算核1。假设在遍历到计算图1时,已经将顶点块11对应的原语1已经被添加至计算核1的原语中,则在遍历到计算图2时,可以顶点块12对应的原语2和原语3添加至顶点块11对应的原语1之后。这样,计算核1中执行的原语依次为原语1、原语2和原语3。当然,如果在判断是否满足第一预设条件时,进行了原语参数和原语顺序的调整,则在本步骤中,添加原语之后,也要做同样的调整,以进一步缩短运行时间。
在本公开实施例中,结合众核芯片的硬件架构特点,一方面通过将计算图包括的多个点点划分为多个顶点块,使得任意一个顶点块中的顶点不基于执行顺序在本顶点块之后的顶点块中的顶点的执行结果,任意一个顶点块能够由众核芯片中的一个计算核执行低了死锁的概率,减少通信开销,提高了计算资源的利用率;另一方面,通过将不同计算图的顶点块映射到同一个计算核中,使得不同计算图的顶点块之间共享计算核,进一步提高了计算资源的利用率。这样从计算图的独立优化以及多个计算图的整体优化两个方面,有效地提升了硬件资源利用率以及执行任务的效率。
另外,本公开实施例中,充分考虑到了单神经网络任务和多神经网络任务优化过程差异,对于更多复杂化的神经网络任务在众核芯片上的静态映射优化具有普适性和通用性。
图3示出本公开实施例提供的多神经网络任务的处理方法的应用过程示意图。如图3所示,神经网络经过ONNX后转换为计算图,计算图中包括多个顶点,每个顶点对应一个原语栈(由一个或多个原语组成)。经过步骤S202对计算图进行独立优化之后,将计算图中的顶点划分成多个顶点块。经过步骤S203和步骤S203进行整体优化后,将计算图中各个顶点块映射到众核芯片不同的计算核中。如图3所示,计算图左上角的两个输入顶点映射到了众核芯片上标记了“I”的计算核上,计算图右下角的一个输出顶点映射到了众核芯片上标记了“O”的计算核上。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了多神经网络任务的处理装置、电子设备、计算机可读存储介质、程序,上述均可用来实现本公开提供的任一种多神经网络任务的处理方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
图4示出根据本公开实施例的多神经网络任务的处理装置的框图。如图4所示,所述装置400可以包括:
获取模块401,用于获取计算图集,所述计算图集中包括多个计算图,每个计算图代表一个神经网络计算任务,每个计算图包括多个顶点,每个顶点对应一个或多个原语;
划分模块402,用于针对任意一个计算图,将所述计算图包括的多个顶点划分为多个顶点块,所述多个顶点块之间存在先后执行顺序,任意一个顶点块中的顶点不基于执行顺序在本顶点块之后的顶点块中的顶点的执行结果,任意一个顶点块能够由众核芯片中的一个计算核执行;
映射模块403,用于在满足第一预设条件的情况下,将第一计算图中的第一顶点块与第二计算图中的第二顶点块映射到所述众核芯片的同一个计算核中,所述第一计算图表示所述多个计算图中的任意一个计算图,所述第二计算图表示所述多个计算图中除所述第一计算图以外的任意一个计算图;
生成模块404,用于基于各个计算图中每个顶点块与所述众核芯片的多个计算核之间的映射关系,生成所述众核芯片的配置文件,所述配置文件用于指示所述众核芯片中各计算核执行的原语以及执行原语的顺序。
在一种可能的实现方式中,所述划分模块还用于:
将所述计算图包括的多个顶点中处于一个循环上的顶点划分至一个顶点块中;
基于所述计算图中顶点的执行顺序,遍历所述计算图包括的多个顶点中未被划分至顶点块的顶点;
针对当前遍历到的目标顶点:
在存在与所述目标顶点连接的第三顶点块且所述目标顶点的计算量与所述第三顶点块的计算量之和小于或者等于第一阈值的情况下,将所述目标顶点划分至所述第三顶点块中;
在不存在与所述目标顶点连接的第三顶点块或者存在所述与所述目标顶点连接的第三顶点块但目标顶点的计算量与所述第三顶点块的计算量之和大于所述第一阈值的情况下,创建第四顶点块,并将所述目标顶点划分至所述第四顶点块中。
在一种可能的实现方式中,所述装置还包括:
确定模块,用于根据所述众核芯片中一个计算核的内存,确定所述第一阈值
在一种可能的实现方式中,所述满足第一预设条件包括:
第一运行时间小于第二运行时间,所述第一运行时间表示在所述第一顶点块与所述第二顶点块共享计算核的情况下所述众核芯片完成所述多神经网络任务的时间,所述第二运行时间表示在所述第一顶点块与所述第二顶点块映射到不同计算核的情况下所述众核芯片完成所述多神经网络任务的时间;
或者,
所述第一运行时间小于所述第二运行时间,且在将所述第一顶点块与所述第二顶点块映射到所述众核芯片的同一个计算核后,优化计时器未达到优化时间阈值,其中,所述优化计时器以第一次判断是否满足第一预设条件的时刻为起始时刻。
在一种可能的实现方式中,所述装置还包括:
选取模块,用于从所述计算图集中随机选取第一计算图和第二计算图;
第一确定模块,用于将当前时刻所述众核芯片完成所述多神经网络任务的时间,确定为所述第二运行时间;
调整模块,用于在所述第一计算图中的第一顶点块与所述第二计算图中的第二顶点块能够共享一个计算核资源,且所述第一顶点块对应的部分原语与所述第二顶点块对应的部分原语之间不存在数据依赖,则调整所述第一顶点块与所述第二顶点块对应的原语参数和原语顺序;
第二确定模块,用于将调整后所述众核芯片完成所述多神经网络任务的时间,确定为所述第一运行时间。
在一种可能的实现方式中,所述生成模块还用于:
遍历各计算图;
针对当前遍历到的目标计算图:
基于所述映射关系,确定所述目标计算图中每个顶点块对应的计算核;
将所述计算图中每个顶点块包括的各顶点对应的一个或多个原语,添加至对应计算核当前原语之后。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
电子设备可以被提供为终端、服务器或其它形态的设备。
图5示出根据本公开实施例的一种电子设备800的框图。例如,电子设备800可以是用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等终端设备。
参照图5,电子设备800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/O)接口812,传感器组件814,以及通信组件816。
处理组件802通常控制电子设备800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在电子设备800的操作。这些数据的示例包括用于在电子设备800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件806为电子设备800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为电子设备800生成、管理和分配电力相关联的组件。
多媒体组件808包括在所述电子设备800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当电子设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当电子设备800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件814包括一个或多个传感器,用于为电子设备800提供各个方面的状态评估。例如,传感器组件814可以检测到电子设备800的打开/关闭状态,组件的相对定位,例如所述组件为电子设备800的显示器和小键盘,传感器组件814还可以检测电子设备800或电子设备800一个组件的位置改变,用户与电子设备800接触的存在或不存在,电子设备800方位或加速/减速和电子设备800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如互补金属氧化物半导体(CMOS)或电荷耦合装置(CCD)图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件816被配置为便于电子设备800和其他设备之间有线或无线方式的通信。电子设备800可以接入基于通信标准的无线网络,如无线网络(Wi-Fi)、第二代移动通信技术(2G)、第三代移动通信技术(3G)、第四代移动通信技术(4G)、通用移动通信技术的长期演进(LTE)、第五代移动通信技术(5G)或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器804,上述计算机程序指令可由电子设备800的处理器820执行以完成上述方法。
图6示出根据本公开实施例的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器或终端设备。参照图6,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如微软服务器操作系统(Windows ServerTM),苹果公司推出的基于图形用户界面操作系统(Mac OSXTM),多用户多进程的计算机操作系统(UnixTM),自由和开放原代码的类Unix操作系统(LinuxTM),开放原代码的类Unix操作系统(FreeBSDTM)或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (6)

1.一种多神经网络任务的处理方法,其特征在于,所述方法包括:
获取计算图集,所述计算图集中包括多个计算图,每个计算图代表一个神经网络计算任务,每个计算图包括多个顶点,每个顶点对应一个或多个原语;
针对任意一个计算图,将所述计算图包括的多个顶点划分为多个顶点块,所述多个顶点块之间存在先后执行顺序,任意一个顶点块中的顶点不基于执行顺序在本顶点块之后的顶点块中的顶点的执行结果,任意一个顶点块能够由众核芯片中的一个计算核执行;
在满足第一预设条件的情况下,将第一计算图中的第一顶点块与第二计算图中的第二顶点块映射到所述众核芯片的同一个计算核中,所述第一计算图表示所述多个计算图中的任意一个计算图,所述第二计算图表示所述多个计算图中除所述第一计算图以外的任意一个计算图;
基于各个计算图中每个顶点块与所述众核芯片的多个计算核之间的映射关系,生成所述众核芯片的配置文件,所述配置文件用于指示所述众核芯片中各计算核执行的原语以及执行原语的顺序;
所述将所述计算图包括的多个顶点划分为多个顶点块,包括:
将所述计算图包括的多个顶点中处于一个循环上的顶点划分至一个顶点块中;
基于所述计算图中顶点的执行顺序,遍历所述计算图包括的多个顶点中未被划分至顶点块的顶点;
针对当前遍历到的目标顶点:
在存在与所述目标顶点连接的第三顶点块且所述目标顶点的计算量与所述第三顶点块的计算量之和小于或者等于第一阈值的情况下,将所述目标顶点划分至所述第三顶点块中;
在不存在与所述目标顶点连接的第三顶点块或者存在所述与所述目标顶点连接的第三顶点块但目标顶点的计算量与所述第三顶点块的计算量之和大于所述第一阈值的情况下,创建第四顶点块,并将所述目标顶点划分至所述第四顶点块中;
根据所述众核芯片中一个计算核的内存,确定所述第一阈值;
所述满足第一预设条件包括:
第一运行时间小于第二运行时间,所述第一运行时间表示在所述第一顶点块与所述第二顶点块共享计算核的情况下所述众核芯片完成所述多神经网络任务的时间,所述第二运行时间表示在所述第一顶点块与所述第二顶点块映射到不同计算核的情况下所述众核芯片完成所述多神经网络任务的时间;
或者,
所述第一运行时间小于所述第二运行时间,且在将所述第一顶点块与所述第二顶点块映射到所述众核芯片的同一个计算核后,优化计时器未达到优化时间阈值,其中,所述优化计时器以第一次判断是否满足第一预设条件的时刻为起始时刻;
从所述计算图集中随机选取第一计算图和第二计算图;
将当前时刻所述众核芯片完成所述多神经网络任务的时间,确定为所述第二运行时间;
在所述第一计算图中的第一顶点块与所述第二计算图中的第二顶点块能够共享一个计算核资源,且所述第一顶点块对应的部分原语与所述第二顶点块对应的部分原语之间不存在数据依赖,则调整所述第一顶点块与所述第二顶点块对应的原语参数和原语顺序;
将调整后所述众核芯片完成所述多神经网络任务的时间,确定为所述第一运行时间。
2.根据权利要求1所述的方法,其特征在于,所述基于各个计算图中每个顶点块与所述众核芯片的多个计算核之间的映射关系,生成所述众核芯片的配置文件,包括:
遍历各计算图;
针对当前遍历到的目标计算图:
基于所述映射关系,确定所述目标计算图中每个顶点块对应的计算核;
将所述计算图中每个顶点块包括的各顶点对应的一个或多个原语,添加至对应计算核当前原语之后。
3.一种多神经网络任务的处理装置,其特征在于,所述装置包括:
获取模块,用于获取计算图集,所述计算图集中包括多个计算图,每个计算图代表一个神经网络计算任务,每个计算图包括多个顶点,每个顶点对应一个或多个原语;
划分模块,用于针对任意一个计算图,将所述计算图包括的多个顶点划分为多个顶点块,所述多个顶点块之间存在先后执行顺序,任意一个顶点块中的顶点不基于执行顺序在本顶点块之后的顶点块中的顶点的执行结果,任意一个顶点块能够由众核芯片中的一个计算核执行;
映射模块,用于在满足第一预设条件的情况下,将第一计算图中的第一顶点块与第二计算图中的第二顶点块映射到所述众核芯片的同一个计算核中,所述第一计算图表示所述多个计算图中的任意一个计算图,所述第二计算图表示所述多个计算图中除所述第一计算图以外的任意一个计算图;
生成模块,用于基于各个计算图中每个顶点块与所述众核芯片的多个计算核之间的映射关系,生成所述众核芯片的配置文件,所述配置文件用于指示所述众核芯片中各计算核执行的原语以及执行原语的顺序;
所述划分模块还用于:
将所述计算图包括的多个顶点中处于一个循环上的顶点划分至一个顶点块中;
基于所述计算图中顶点的执行顺序,遍历所述计算图包括的多个顶点中未被划分至顶点块的顶点;
针对当前遍历到的目标顶点:
在存在与所述目标顶点连接的第三顶点块且所述目标顶点的计算量与所述第三顶点块的计算量之和小于或者等于第一阈值的情况下,将所述目标顶点划分至所述第三顶点块中;
在不存在与所述目标顶点连接的第三顶点块或者存在所述与所述目标顶点连接的第三顶点块但目标顶点的计算量与所述第三顶点块的计算量之和大于所述第一阈值的情况下,创建第四顶点块,并将所述目标顶点划分至所述第四顶点块中;
确定模块,用于根据所述众核芯片中一个计算核的内存,确定所述第一阈值;
所述满足第一预设条件包括:
第一运行时间小于第二运行时间,所述第一运行时间表示在所述第一顶点块与所述第二顶点块共享计算核的情况下所述众核芯片完成所述多神经网络任务的时间,所述第二运行时间表示在所述第一顶点块与所述第二顶点块映射到不同计算核的情况下所述众核芯片完成所述多神经网络任务的时间;
或者,
所述第一运行时间小于所述第二运行时间,且在将所述第一顶点块与所述第二顶点块映射到所述众核芯片的同一个计算核后,优化计时器未达到优化时间阈值,其中,所述优化计时器以第一次判断是否满足第一预设条件的时刻为起始时刻;
选取模块,用于从所述计算图集中随机选取第一计算图和第二计算图;
第一确定模块,用于将当前时刻所述众核芯片完成所述多神经网络任务的时间,确定为所述第二运行时间;
调整模块,用于在所述第一计算图中的第一顶点块与所述第二计算图中的第二顶点块能够共享一个计算核资源,且所述第一顶点块对应的部分原语与所述第二顶点块对应的部分原语之间不存在数据依赖,则调整所述第一顶点块与所述第二顶点块对应的原语参数和原语顺序;
第二确定模块,用于将调整后所述众核芯片完成所述多神经网络任务的时间,确定为所述第一运行时间。
4.根据权利要求3所述的装置,其特征在于,所述生成模块还用于:
遍历各计算图;
针对当前遍历到的目标计算图:
基于所述映射关系,确定所述目标计算图中每个顶点块对应的计算核;
将所述计算图中每个顶点块包括的各顶点对应的一个或多个原语,添加至对应计算核当前原语之后。
5.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器存储的指令,以执行权利要求1至2中任意一项所述的方法。
6.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至2中任意一项所述的方法。
CN202210741395.5A 2022-06-27 2022-06-27 一种多神经网络任务处理方法及装置 Active CN115098262B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210741395.5A CN115098262B (zh) 2022-06-27 2022-06-27 一种多神经网络任务处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210741395.5A CN115098262B (zh) 2022-06-27 2022-06-27 一种多神经网络任务处理方法及装置

Publications (2)

Publication Number Publication Date
CN115098262A CN115098262A (zh) 2022-09-23
CN115098262B true CN115098262B (zh) 2024-04-23

Family

ID=83295067

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210741395.5A Active CN115098262B (zh) 2022-06-27 2022-06-27 一种多神经网络任务处理方法及装置

Country Status (1)

Country Link
CN (1) CN115098262B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116720560B (zh) * 2023-07-13 2023-12-01 中电海康集团有限公司 基于众核处理单元的类脑系统及数据处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111339027A (zh) * 2020-02-25 2020-06-26 中国科学院苏州纳米技术与纳米仿生研究所 可重构的人工智能核心与异构多核芯片的自动设计方法
CN111723900A (zh) * 2019-03-18 2020-09-29 北京灵汐科技有限公司 一种基于众核处理器的神经网络的映射方法及计算设备
CN112114942A (zh) * 2019-06-21 2020-12-22 北京灵汐科技有限公司 一种基于众核处理器的流式数据处理方法及计算设备
CN112835718A (zh) * 2021-02-10 2021-05-25 北京灵汐科技有限公司 任务处理的方法和装置、众核系统、计算机可读介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080022401A1 (en) * 2006-07-21 2008-01-24 Sensory Networks Inc. Apparatus and Method for Multicore Network Security Processing
US20120019541A1 (en) * 2010-07-20 2012-01-26 Advanced Micro Devices, Inc. Multi-Primitive System

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111723900A (zh) * 2019-03-18 2020-09-29 北京灵汐科技有限公司 一种基于众核处理器的神经网络的映射方法及计算设备
CN112114942A (zh) * 2019-06-21 2020-12-22 北京灵汐科技有限公司 一种基于众核处理器的流式数据处理方法及计算设备
CN111339027A (zh) * 2020-02-25 2020-06-26 中国科学院苏州纳米技术与纳米仿生研究所 可重构的人工智能核心与异构多核芯片的自动设计方法
CN112835718A (zh) * 2021-02-10 2021-05-25 北京灵汐科技有限公司 任务处理的方法和装置、众核系统、计算机可读介质

Also Published As

Publication number Publication date
CN115098262A (zh) 2022-09-23

Similar Documents

Publication Publication Date Title
CN109543200B (zh) 一种文本翻译方法及装置
CN108900770A (zh) 一种控制摄像头旋转的方法、装置、智能手表及移动终端
CN111443917B (zh) 神经网络运行优化方法、装置及相关产品
WO2021128737A1 (zh) 资源调度方法及装置、电子设备和存储介质
JP2021517282A (ja) ネットワークモジュール、割り当て方法及び装置、電子機器並びに記憶媒体
CN110796248A (zh) 数据增强的方法、装置、设备及存储介质
CN110188871B (zh) 运算方法、装置及相关产品
CN114968594B (zh) 任务处理方法、装置、电子设备和存储介质
CN115543535B (zh) 安卓容器系统、安卓容器构建方法及装置、电子设备
CN115205925A (zh) 表情系数确定方法、装置、电子设备及存储介质
CN115098262B (zh) 一种多神经网络任务处理方法及装置
CN111753498A (zh) 文本处理方法、装置、设备及存储介质
CN113138560A (zh) 终端控制方法、装置、设备及可读存储介质
CN114035902A (zh) 应用程序开发平台及方法、电子设备和存储介质
CN112269595A (zh) 图像处理方法、装置、计算机设备及存储介质
CN114510911B (zh) 文本处理方法、装置、计算机设备及存储介质
WO2022188551A1 (zh) 信息处理方法与装置、主控设备和受控设备
CN112151017B (zh) 语音处理方法、装置、系统、设备及存储介质
CN116432737A (zh) 基于深度学习的模型压缩训练的方法、装置和设备
CN113297128B (zh) 数据处理方法、装置、计算机设备和存储介质
CN116579380A (zh) 一种数据处理方法以及相关设备
CN111259675B (zh) 基于神经网络计算的方法和装置
CN113918246A (zh) 功能控制方法、功能控制装置、存储介质与电子设备
CN115086232B (zh) 任务处理及数据流生成方法和装置
CN112988194A (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