CN108351805B - 计算图的基于流的加速器处理 - Google Patents

计算图的基于流的加速器处理 Download PDF

Info

Publication number
CN108351805B
CN108351805B CN201680063365.6A CN201680063365A CN108351805B CN 108351805 B CN108351805 B CN 108351805B CN 201680063365 A CN201680063365 A CN 201680063365A CN 108351805 B CN108351805 B CN 108351805B
Authority
CN
China
Prior art keywords
node
operations
flow
computational graph
nodes
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
CN201680063365.6A
Other languages
English (en)
Other versions
CN108351805A (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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Priority to CN202211570829.6A priority Critical patent/CN115840643A/zh
Publication of CN108351805A publication Critical patent/CN108351805A/zh
Application granted granted Critical
Publication of CN108351805B publication Critical patent/CN108351805B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

方法、系统和装置,包括被编码在计算机存储介质上的计算机程序,用于由计算图系统接收处理计算图的请求;获得表示所述计算图的子图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应的操作,其中每个有向边将相应的第一节点连接到相应的第二节点,所述子图由所述计算图系统中的布放器指派给第一设备;确定所述第一设备包括具有多个流的硬件加速器;响应于确定而生成指令,所述指令当由所述第一设备执行时使所述第一设备:将由所述子图中的每个节点表示的所述操作指派给相应流;并且根据所述指派来执行由所述子图中的所述节点表示的所述操作。

Description

计算图的基于流的加速器处理
背景技术
本说明书涉及通过将子图指派给具有多个流的加速器设备(例如,图形处理单元(GPU))来处理表示神经网络的计算图并且/或者涉及将这种经处理的计算图用于处理模型输入。
神经网络是采用模型的一个或多个层来针对接收到的输入生成输出(例如,一个或多个分类)的机器学习模型。一些神经网络除了包括输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中的下一个层(即,网络的下一个隐藏层或输出层)的输入。网络的每个层根据用于层的相应的参数集合的当前值来从接收到的输入生成输出。
在存在的系统中,计算图的操作可由个别设备处理。在一些实施方式中,设备是GPU。设备可具有执行操作(例如,在一层处从输入生成输出)并且将来自操作的输出存储在存储器中的处理器。由于在计算图中生成输出通常所需要的操作的大数目和大小,一个设备可花费大量时间来处理图的操作。
发明内容
一般而言,本说明书描述一种用于使用基于流的加速器设备(例如,GPU)来处理计算图的子图的系统或方法。
一般而言,本说明书中描述的主题的一个创新方面可用包括以下各项的动作的方法加以具体实现:接收处理计算图的请求;获得表示所述计算图的子图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应的操作,其中每个有向边将相应的第一节点连接到相应的第二节点,所述相应的第二节点表示接收由所述相应的第一节点表示的操作的输出作为输入的操作,所述子图由所述计算图系统中的布放器指派给第一设备;确定所述第一设备包括具有多个流的硬件加速器;响应于确定所述第一设备包括具有多个流的图形处理单元而生成指令,所述指令当由所述第一设备执行时使所述第一设备:将由所述子图中的每个节点表示的所述操作指派给所述图形处理单元的多个流中的相应流;并且根据所述指派来执行由所述子图中的所述节点表示的所述操作;以及将所述指令和所述数据提供给所述第一设备。这个方面的方法可以是计算机实现的方法。这个方面的方法可以由一个或多个计算设备执行,例如由包括计算图系统的一个或多个计算设备执行。
实施方式可包括以下特征中的一个或多个。所述请求指定识别来自所述子图中的一个或多个相应节点的一个或多个特定输出,进一步包括:从所述第一设备接收所述一个或多个特定输出;以及将所述一个或多个特定输出提供给所述客户端。所述指令进一步使所述第一设备将所述一个或多个特定输出存储在所述第一设备的存储器中。针对所述子图的所述操作包括针对神经网络的部分推理或训练计算。分析所述子图以在链结构中识别所述子图中的节点组;其中,所述指令使所述第一设备将该节点组指派给一个流。所述指派包括:分析所述子图以识别所述子图中的第一节点具有作为输出的多个有向边;其中所述指令使所述第一设备针对所述有向边中的每一个有向边来将该有向边指向的节点指派给所述图形处理单元的唯一流。所述指令使所述第一设备针对每个节点来基于到该节点的所述有向边确定通过由该节点表示的所述操作消耗的所述图形处理单元中的相应的存储器资源量,其中,所述指派至少基于所述相应的存储器资源量。所述指令使所述第一设备确定由节点表示的特定操作已在特定流处结束;响应于确定所述特定操作已结束:确定将被释放的通过所述特定操作消耗的第一存储器量;针对未指派节点组中的每一个未指派节点来确定由该未指派节点消耗的相应的估计存储器量;从所述未指派节点组中确定具有使所述第一存储器量的使用最大化的所述估计存储器量的第一未指派节点;并且将由所述第一未指派节点表示的操作指派给所述特定流。
在一个实施方式中所述方法进一步包括:接收模型输入;以及由所述硬件加速器根据由所述子图中的所述节点表示的操作来处理所述模型输入。
在另一方面中,本说明书中描述的主题可以用可以包括以下各项的动作的方法加以具体实现:提供与通过所述第一方面的方法获得的经处理的计算图相对应的机器学习模型;以及使用所述机器学习模型来处理模型输入。
在另一方面中,本说明书中描述的主题可以用可以包括以下各项的动作的方法加以具体实现:由硬件加速器执行通过所述第一方面的方法获得的经处理的计算图的子图。
在这些方面中所述计算图可以是诸如例如神经网络的机器学习模型的表示。
另一创新方面包括以下各项的动作:由具有多个流的图形处理单元接收表示所述计算图的子图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应的操作,其中每个有向边将相应的第一节点连接到相应的第二节点,所述相应的第二节点表示接收由所述相应的第一节点表示的操作的输出作为输入的操作,所述子图由计算图系统中的布放器指派给图形处理单元;将由所述子图中的每个节点表示的所述操作指派给图形处理单元的多个流中的相应流;以及根据所述指派来执行由所述子图中的所述节点表示的所述操作。
实施方式可包括以下特征中的一个或多个。接收识别来自所述子图的一个或多个相应节点的一个或多个特定输出的请求;以及将所述一个或多个特定输出提供给所述客户端。接收在链结构中识别所述子图中的节点组的数据;以及将该节点组指派给一个流。所述指派包括:接收识别在所述子图中具有多个有向边作为输出的第一节点的数据;以及针对所述有向边中的每一个有向边来将该有向边指向的节点指派给所述图形处理单元的唯一流。针对每个节点来基于到该节点的所述有向边确定通过由该节点表示的所述操作消耗的所述图形处理单元中的相应的存储器资源量,其中,所述指派至少基于所述相应的存储器资源量。确定由节点表示的特定操作已在特定流处结束;响应于确定所述特定操作已结束,确定将被释放的通过所述特定操作消耗的第一存储器量;针对未指派节点组中的每一个未指派节点来确定由该未指派节点消耗的相应的估计存储器量;从所述未指派节点组中确定具有使所述第一存储器量的使用最大化的所述估计存储器量的第一未指派节点;以及将由所述第一未指派节点表示的操作指派给所述特定流。
这些和其它方面的其它实施方式包括被配置成执行被编码在计算机存储设备(其可以是或者可以不是非暂时性存储设备)上的方法的动作的对应系统、装置和计算机程序。
本说明书中描述的主题的特定实施例可被实现以便实现以下优点中的一个或多个。神经网络的操作(例如,用于从输入生成推理的操作)可被表示为节点和有向边的计算图。系统处理这个计算图表示以高效地执行操作。系统实现这种效率,因为计算图具有多个流。使用多个流可允许逻辑上独立的操作被重新排序或者同时执行。当系统具有降低整个计算的端到端延迟的目标时,示例系统可以重新排序逻辑上独立的操作。当系统具有实现较高吞吐量的目标时,示例系统可以同时地执行操作。与常规表示相比,可为了并行操作更容易地分割计算图。作为说明,可将计算图的子图指派给唯一设备,其中的每一个在相应子图中执行操作,以减少执行神经网络的操作所需要的总时间。
子图被指派给的设备可以是GPU。可以将子图分割成GPU的多个流以更高效地执行子图的操作。在下面的附图和描述中阐述了本说明书的主题的一个或多个实施例的细节。主题的其它特征、方面和优点将从说明书、附图和权利要求书变得显而易见。应了解的是,各方面和实施方式可被组合,并且可在其它方面或实施方式的场境中实现在一个方面或实施方式的场境中描述的特征。
附图说明
图1图示用于为表示为计算图的神经网络分布操作的示例计算图系统。
图2是用于使用GPU来处理计算图的子图的示例过程的流程图。
图3图示由GPU处理的计算图的示例子图。
图4是用于将节点指派给流的示例过程的流程图。
在各个附图中相似的附图标记和名称指示相似的元件。
具体实施方式
本说明书一般地描述以分布式方式执行通过计算图表示的操作的计算图系统。
计算图包括通过有向边连接的节点。计算图中的每个节点表示一个操作。到节点的传入边表示到节点中的输入的流,即,由节点表示的操作的输入。从节点起的传出边表示由节点表示的操作的输出的流以被用作由另一节点表示的操作的输入。因此,将图中的第一节点连接到图中的第二节点的有向边指示通过由第一节点表示的操作生成的输出被用作由第二节点表示的操作的输入。
一般地,在计算图中沿着有向边流动的输入和输出是张量。张量是数值或其它值(例如,字符串)的多维数组,所述数值或其它值具有与数组的维度相对应的特定次序。例如,标量值是0阶张量,数值的向量是1阶张量,并且矩阵是2阶张量。
在一些实施方式中,计算图中表示的操作是神经网络操作或针对不同种类的机器学习模型的操作。神经网络是采用一个或多个非线性单元层来针对接收到的输入预测输出的机器学习模型。一些神经网络是除了包括输出层之外还包括一个或多个隐藏层的深度神经网络。每个隐藏层的输出被用作网络中的另一层(即,另一隐藏层、输出层或两者)的输入。网络的一些层根据相应的参数集的当前值从接收到的输入生成输出,然而网络的其它层可以不具有参数。
例如,通过计算图表示的操作可以是神经网络计算推理即通过神经网络的层来处理输入以为该输入生成神经网络输出所必需的操作。作为另一示例,通过计算图表示的操作可以是通过执行神经网络训练程序以调整神经网络的参数的值(例如,以根据参数的初始值确定参数的训练值)来训练神经网络所必需的操作。在一些情况下,例如,在神经网络的训练期间,通过计算图表示的操作可包括由神经网络的多个副本执行的操作。
作为说明,从前一层接收输入的神经网络层可使用参数矩阵来执行参数矩阵与输入之间的矩阵乘法。在一些情况下,可以将这种矩阵乘法表示为计算图中的多个节点。例如,矩阵乘法可被划分成多个乘法和加法运算,并且每个运算可由计算图中的不同节点来表示。由每个节点表示的操作可生成相应的输出,所述输出在有向边上流向后续节点。在由最终节点表示的操作生成矩阵乘法的结果之后,该结果在有向边上流向另一节点。该结果相当于执行矩阵乘法的神经网络层的输出。
在一些其它情况下,矩阵乘法被表示为图中的一个节点。由节点表示的操作可接收第一有向边上的输入张量和第二有向边上的权重张量(例如,参数矩阵)作为输入。在一些实施方式中,权重张量与模型的共享持久状态相关联。节点可处理例如执行输入和权重张量的矩阵乘法,以在第三有向边上输出相当于神经网络层的输出的输出张量。
可以由计算图中的节点表示的其它神经网络操作包括其它数学操作,例如,减法、除法和梯度计算;数组运算,例如,级联(concatenate)、拼接(splice)、分割(split)或排序(rank);以及神经网络构造块操作,例如,SoftMax、Sigmoid、整流线性单元(ReLU)或卷积。
将神经网络表示为计算图提供一种灵活和粒状方式来高效地实现神经网络,特别是如果神经网络的操作跨越具有不同的硬件简档的多个设备分布的话。
图1图示用于为表示为计算图的神经网络分布操作的示例计算图系统100。系统100是作为计算机程序实现在一个或多个位置中的一个或多个计算机上的系统的示例,其中可实现在下面描述的系统、组件和技术。
客户端102的用户可请求对表示神经网络的计算图执行动作。例如,客户端可向会话管理器注册图,将数据输入馈送到图中,或者评估图的输出中的一个或多个。客户端102可以是在计算机上运行的应用。
作为请求的一部分,客户端102向系统100提供识别计算图的数据并且指定要对计算图执行的动作的类型。
例如,请求可识别表示针对特定神经网络的推理的计算图并且可识别应在其上执行推理的输入。
作为另一示例,请求可识别表示针对特定神经网络的训练过程的计算图并且可识别应在其上执行训练的输入,诸如训练数据。在此示例中,当接收到要处理表示训练程序的计算图的请求时,系统100可例如使用常规反向传播或其它神经网络训练技术来确定用于计算图的一个或多个边的参数的修改值。系统100可将已修改的参数存储在设备的存储器中,并且执行器106可在系统100处检索和存储已修改的权重的地址。基于来自客户端102的对于需要已修改的权重的推理、训练或其它操作的进一步请求,系统100可使用地址来访问已修改的权重。
在一些情况下,请求可以指定应该响应于请求而传送的响应。例如,对于神经网络训练请求,客户端102可请求所请求的神经网络训练操作已完成的指示,以及可选地,请求神经网络的参数的训练值或训练值可由客户端102访问的存储器位置的指示。作为另一示例,对于神经网络推理请求,客户端102可请求表示来自计算图的一个或多个特定节点的推理操作的输出值。
系统100执行操作以通过跨越多个设备116-122分割通过计算图表示的操作来生成特定输出。系统100通过数据通信网络114(例如,局域网(LAN)或广域网(WAN))分割对多个设备116-122的操作。设备116-122执行操作,并且如果适用,则将相应的输出或指示返回给系统100,所述系统100可将所请求的输出或指示返回给客户端102。
执行神经网络操作的任何设备(例如,设备116-122)可包括用于存储指令和数据的存储器(例如,随机存取存储器(RAM))以及用于执行存储的指令的处理器。一般地,每个设备是独立于其它设备执行操作的硬件资源。例如,每个设备可具有它自己的处理单元。设备可以是图形处理单元(GPU)、中央处理单元(CPU)或其它加速器。作为说明,一个机器可托管一个或多个设备,例如,多个CPU和GPU。
每个设备也可具有相应的计算能力。也就是说,设备可具有不同的存储器量、处理速度或其它架构特性。因此,一些设备可执行其它设备不能执行的操作。例如,一些操作需要仅特定设备具有的一定的存储器量,或者一些设备被配置成仅执行特定类型的操作,例如,推理操作。
系统100中的会话管理器104接收来自客户端102的启动执行计算图的操作的会话的请求。会话管理器104管理可执行计算图的操作的设备的集合,例如,设备116-122,并且可给布放器108提供可用于执行操作的设备的集合。
对于要在计算图表中执行的每个操作,布放器108确定执行该操作的相应的目标设备,例如,设备116,并且在一些实施方式中,确定相应的目标设备执行操作的时间。布放器108通过在给定输入数据的大小的情况下知道操作在每个可用设备上将花费多长时间来执行最佳设备指派。布放器108使用测量或预测性能模型来获得处理时间的估计。可并行地执行一些操作,然而其它操作需要在计算图中完成在先操作,例如,其它操作处理在先操作的输出作为输入。
在设备执行由布放器108分配的操作以生成输出之后,执行器106可检索输出。执行器106可生成对请求的适当响应,例如,处理已完成的输出或指示。然后,执行器106可将响应返回给客户端102。尽管图1图示一个执行器106,然而在一个实施方式中,每设备有一个执行器。当操作变得可运行(即其所有输入已被计算)时,这个执行器向设备发出操作。此实施方式也具有图管理器,所述图管理器通过调用布放器108来分割图以在多个设备上运行并且创建必要的执行器。
会话管理器104也向执行器106提供要在计算图中执行的操作集合。执行器106从与操作的图执行有关的设备116-122中周期性地检索运行时间统计量。执行器106将运行时间统计量提供给布放器108,所述布放器108可重新优化进一步操作的布放和调度。
图2是用于使用GPU来处理计算图的子图的示例过程200的流程图。为了方便,过程200将被描述为由位于一个或多个位置中的一个或多个计算机的系统执行。例如,适当地编程的计算图系统(例如,图1的计算图系统100)可执行过程200。
系统接收来自客户端的处理计算图的请求(步骤202)。例如,请求可以是对指定的输入执行通过计算图表示的神经网络推理的请求、对指定的训练数据集合执行通过计算图表示的神经网络训练操作的请求或执行通过计算图表示的其它神经网络操作的请求,如上面参考图1所描述的。
在一些情况下,计算图与来自客户端的请求一起被发送。在其它情况下,请求识别计算图并且系统从存储器中检索表示所识别的图的数据。
系统可将计算图分割成多个子图。在一些实施方式中,子图由发送请求的客户端指定,并且系统根据规范分割计算图。在一些其它实施方式中,系统分割计算图,使得每个子图与其它子图相比需要类似的资源量用于执行操作。
系统可例如使用图1的布放器108来将每个子图指派给可用设备。
系统从已分割的计算图获得表示计算图的特定子图的数据(步骤204)。可从系统的数据库或存储器获得数据。作为说明,特定子图的操作表示部分推理或训练计算。
系统确定子图被指派给的设备是具有多个流的图形处理单元或其它硬件加速器设备(步骤206)。作为说明,系统可通过从管理要指派给计算图的设备的资源管理器请求设备的类型来评估设备是否是具有多个流的GPU。每个流是按次序处理其操作的独立硬件队列。
系统生成当由设备执行时使该设备执行特定操作的指令(步骤208)。特别地,指令使设备将由子图中的每个节点表示的操作指派给设备的相应流。
示例系统可以以特定方式将一些硬件加速器的计算指派给流(例如如果一个操作在流A上执行,则稍后的相关操作也必须在流A上执行)。例如,第一操作可以是有状态的并在流A上执行。通过执行,第一操作可以以在第二操作执行之前必须发生的方式改变硬件的内部状态。在第一操作完成之后,第二操作然后可以在流A上执行。
在一些实施方式中,两个内部硬件资源不能被同时地使用并且因此需要被串行化。
一般地,设备将不依赖于彼此的操作指派给不同的流。通过将不依赖于彼此的操作指派给不同的流,硬件不需要知道操作将花费多长时间并且可从许多可用操作中选取以执行准备好在没有昂贵的主机干预的情况下执行的第一操作。
指令也使设备根据指派执行由子图中的节点表示的操作。当操作被指派给特定流时,这些操作被排队。设备可以先进先出(FIFO)方式执行操作。因此,如果设备仅具有一个流,则指派给设备的操作被串行地执行。如果设备具有多个流,则不同流中的操作可被并行地执行并且相对于彼此重新排序,同时给定流中的操作被串行地执行。使用多个流来执行操作减少执行子图的操作的总时间。在下面参考图3和图4进一步对此进行描述。
系统将指令和数据提供给设备(步骤210)。在一些实施方式中,系统向设备发送启动操作的请求。设备接收请求并且作为响应,执行从系统接收到的指令。例如,设备可以接收模型输入,并且根据由子图中的节点表示的操作来处理该模型输入。
图3图示由加速器302处理的计算图的示例子图316。子图316具有节点308-314,其中的每一个表示要由加速器302执行的操作。计算图系统(例如,图1的系统100)将子图316指派给加速器302。
加速器302具有两个流304和306。这些流共享加速器302的利用。在GPU中,流可以是对称的,意味着可对任何流执行所有操作。这种对称性可能不适用于所有加速器设备。例如,在特定加速器设备上必须使用某些流来执行在主机与设备存储器之间复制数据的操作。
计算图系统可分析子图316以确定子图316如何被指派给多个流304和306。在一些实施方式中,系统生成使加速器302以使有向边连接到不同流的次数最小化的方式指派子图316的节点的指令。在流之间实施依赖性可以有性能成本。排序指令具有某种开销成本。每种排序依赖性减少可被设备利用的可能的执行排序的数目,从而降低调度灵活性。每当从第一流起的有向边连接到第二流时,第二流等待对从第一流到第二流的有向边的操作以完成处理。等待可使第二流保持空闲,这使GPU被无效率地利用。
在一些实施方式中,系统生成使加速器302基于加速器302的特性指派子图316的节点的指令。例如,加速器302具有固定数目的流,即流304和306。系统可指派节点,所以每个流将被加速器302类似地使用。对于作为GPU的加速器,所有流共享单个大线程池。
一些流也执行其它流不执行的特定操作。例如,流306可执行直接存储器访问(DMA)操作,然而流304不执行DMA操作。因此,系统可分析每个节点以确定由节点表示的操作的类型,并且系统可将该节点指派给能够执行该类型操作的流。在GPU中,主要拥塞资源是在主机与设备存储器之间复制数据的DMA引擎。DMA引擎可被任何流使用。如果一个流正在执行DMA操作,则该流不能同时地执行计算。示例系统因此确保至少一个其它流有某个计算工作要同时执行。系统可分析子图来识别并因此生成使管理指派操作的软件模块或驱动器通过以下两条通用规则来指派节点的指令。首先,系统设法将排列在链结构中的节点指派给相同流。链结构中的节点是通过遵循从节点到节点的一个有向边而彼此连接的节点。因此,链中的节点在计算自己的操作之前必须等待链中的先前节点处的操作完成计算。指派节点的链不总是可能的,因为在图中发生分支和合并,例如来自共享输入变量或公共子表达式。
其次,系统可选择生成使加速器302将各自从一个节点接收输入的多个节点指派给唯一流的指令。也就是说,如果第一节点具有到多个不同节点的多个输出,系统将不同节点中的每一个指派给唯一流。不同节点中的每一个均对其它不同节点中的任一个具有数据依赖性,并且因此,当对不相交流进行操作时改进效率。
作为说明,加速器302接收子图316。由系统接收到的指令使加速器302将初始节点308指派给第一流306。初始节点308具有两个输出—到节点310的一个有向边和到节点314的一个有向边。因此,使用第二规则,指令使加速器302将节点310和314指派给不同流。节点312也仅接收节点310的输出作为输入。因此,使用第一规则,系统像节点310一样将节点312指派给相同流,即流304。
如上所述,流是按次序执行操作的硬件队列。因此,加速器302将节点指派给流的次序是重要的。加速器302按照子图中的数据流的方向的次序将节点指派给流。也就是说,加速器302识别子图的一个或多个初始节点并且指派所述一个或多个初始节点。然后,加速器302遵循作为一个或多个初始节点的输出的有向边以识别后续节点,并且加速器302将这些后续节点指派给相应流。加速器302继续节点的指派直到子图中的每个节点被指派为止。如上所述,作为按照此次序指派节点的结果,也将按照操作被指派的次序执行给定流内的操作。当在不同流上生成操作A的输入时,有必要确保在操作A被执行之前它们已全部被计算。在操作A被指派给的流上的执行应该被停止,直到操作A的所有输入已被计算为止。精确的停止机制是设备特定的。对于GPU设备,可为输入流中的每一个创建一个事件并且可将指令添加到每个流以发信号通知该事件。对于每个输入,也可将指令添加到指派了A的流以让操作等待相关事件以便执行。在在与操作A相同的流上计算用于操作A的输入中的一个或多个的情况下,可安全地删除数据流依赖性指令,从而导致更好的性能。在给定流内,由指派给给定流的节点表示的操作将已经被计算或者调度为在加速器302执行由一个或多个其它节点表示的操作时被计算,所述操作生成被由指派给给定流的一个或多个其它节点表示的操作用作输入的输出。
继续上面的说明,因为数据从节点310流向节点312,所以流304被指派了节点310并且然后指派了节点312。当在流中执行操作时,加速器302首先执行由节点310表示的操作,然后执行由节点312表示的操作。
在最终节点(即,节点312和314)执行操作之后,加速器302将节点的输出或操作已完成的指示返回给系统。在示例系统中,存在将计算结果从加速器302的存储器往回复制到主机存储器中的特殊“发送”节点,在所述主机存储器中它可被接收节点交给不同设备或者在远程过程调用(RPC)响应中返回给客户端。必要时,系统然后可将输出或指示返回给客户端。
将在下面参考图4进一步描述将节点指派给流的另一实施方式。
图4是用于将子图指派给设备的示例过程400的流程图。为了方便,过程400将被描述为由系统(例如,GPU)执行。例如,GPU可接收由计算图系统(例如,图1的计算图系统100)生成的指令,所述指令当被执行时,使GPU执行过程400。
系统可基于由节点或由先前指派的节点消耗的存储器资源量将特定节点指派给流。例如,系统可计算到和来自子图的每个节点的每个有向边上的张量的尺寸。张量的尺寸指示将由设备执行操作所消耗的存储器的大小。系统可能需要计算张量的所有尺寸以确定该大小。系统然后可将具有消耗特定大小的存储器的张量的特定节点指派给具有该特定大小的存储器的设备。
特别地,当设备执行操作时,软件驱动器或执行器分配存储器来存储任何输入以及作为操作的结果而计算的任何输出。因为设备上的存储器量是有限的,所以当不再使用存储器时,设备将释放存储器。
作为说明,系统确定由节点表示的操作是否已在特定流处结束(步骤402)。例如,系统可周期性地轮询流以确定特定流中的操作是否已结束。流可以支持允许主机确定执行已通过流中的操作的列表进展多远的动作。在一些实施方式中,事件或标记可发信号通知执行已进展多远。当发生事件时,该事件可被添加到流中的特殊硬件操作队列。主机可轮询此队列以确定已经发生了哪些操作。其它流实施方式可以仅允许主机确定所有排队的操作何时完成。可替选地或附加地,硬件可在流到达某个点时提供中断或回调。
当操作已结束后,系统可确定用于操作的输入的存储器可被释放以用在其它操作中。系统不释放用于操作的输出的存储器,因为输出可被用在后续节点中。
因此,系统确定将被释放的消耗的存储器量(步骤404)。系统可向软件驱动器或执行器发送请求以识别将被释放的存储器的大小。
在一些实施方式中,示例系统允许使用远程直接存储器访问(RDMA)网络接口,远程机器可使用所述RDMA网络接口来在任意时间点将数据直接转移到硬件加速器的存储器中。这个存储器不得被在任何流上运行的任何其它操作使用。示例系统可能不需要精确地知道每个流上的操作已进展多远。然而,系统应该跟踪已知不被任何流使用的存储器。这个空闲存储器然后可被用于RDMA。
系统针对未指派节点组中的每一个未指派节点来确定由未指派节点消耗的相应估计存储器量(步骤406)。未指派节点可包括从其操作已完成的节点接收输入的节点。未指派节点也可包括独立于其操作已完成但是仍然需要由加速器处理的节点的节点。如上所述,可通过评估相应张量到未指派节点的尺寸来确定估计存储器量。
系统从未指派节点的组中确定表示操作的第一未指派节点,所述操作当由加速器在流上执行时,使将被释放的存储器量的使用最大化(步骤408)。如果由未指派节点表示的操作需要比将被释放的存储器量更多的存储器来执行,则未指派节点将不会被指派给流。如果第一操作和第二操作需要小于或者等于将被释放的存储器量的相应的估计存储器量,则系统选择使将被释放的存储器量的使用最大化的操作。换句话说,在这种情况下,系统将表示所选择的操作的节点确定为第一未指派节点。示例系统不在流上使操作入队,直到它可确定加速器存储器的哪些区域将用于保持操作的临时工作空间和输出为止。在存储器稀缺的情况下,示例系统可以选择使需要较少的存储器量的操作入队或者优先地使将消耗大输入张量的操作入队,从而允许它们被解除分配。
系统将由第一未指派节点表示的操作指派给特定流(步骤410)。系统然后可使特定流执行操作,并且系统可继续像上面参考图2-3所描述的那样操作。
本说明书中描述的主题和功能操作的实施例可用数字电子电路、用有形地具体实现的计算机软件或固件、用计算机硬件(包括本说明书中公开的结构及其结构等同物)或者用它们中的一个或多个的组合加以实现。本说明书中描述的主题的实施例可作为一个或多个计算机程序(即,在有形非暂时性程序载体上编码以用于由数据处理装置执行或者控制数据处理装置的操作的计算机程序指令的一个或多个模块)被实现。可替选地或此外,程序指令可被编码在人工生成的传播信号上,例如,机器生成的电、光学或电磁信号,所述信号被生成来对信息进行编码以便传输到适合的接收器装置以供由数据执行装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储设备,或它们中的一个或多个的组合。然而,计算机存储介质不是传播信号。
术语“数据处理装置”包含用于处理数据的所有种类的装置、设备和机器,作为示例包括可编程处理器、计算机或多个处理器或计算机。该装置可包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。该装置除了包括硬件之外还可包括为所述计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
计算机程序(其也可以被称为或者描述为程序、软件、软件应用、模块、软件模块、脚本或代码)可用任何形式的编程语言编写,包括编译或解释语言或声明性或过程语言,并且它可被以任何形式部署,包括作为独立程序或者作为模块、组件、子例程或适合于在计算环境中使用的其它单元。计算机程序可以但不必对应于文件系统中的文件。可在保持其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、在专用于所述程序的单个文件中或者在多个协调文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中存储程序。可将计算机程序部署成在一个计算机上或者在位于一个站点处或跨越多个站点分布并通过通信网络互连的多个计算机上执行。
如本说明书中所使用的,“引擎”或“软件引擎”指代提供与输入不同的输出的软件实现的输入/输出系统。引擎可以是功能性的编码块,诸如库、平台、软件开发工具包(“SDK”)或对象。可将每个引擎实现在包括一个或多个处理器和计算机可读介质的任何适当类型的计算设备上,例如,服务器、移动电话、平板计算机、笔记本计算机、音乐播放器、电子书阅读器、膝上型或台式计算机、PDA、智能电话或其它固定或便携式设备。附加地,可以将这些引擎中的两个或更多个实现在相同的计算设备上或者在不同的计算设备上。
本说明书中描述的过程和逻辑流程可通过一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能而被执行。过程和逻辑流程也可由专用逻辑电路执行,并且装置也可作为专用逻辑电路被实现,所述专用逻辑例如为FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
作为示例,适合于执行计算机程序的计算机可基于通用微处理器或专用微处理器或两者,或任何其它种类的中央处理单元。一般地,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必要元件是用于执行或实行指令的中央处理单元以及用于存储指令和数据的一个或多个存储设备。一般地,计算机也将包括或者在操作上耦合以从用于存储数据的一个或多个海量存储设备(例如,磁盘、磁光盘或光盘)接收数据,或者将数据转移到该海量存储设备,或者兼而有之。然而,计算机不必具有此类设备。此外,可将计算机嵌入在另一设备中,所述另一设备例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器)等等。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,作为示例包括半导体存储器设备,例如,EPROM、EEPROM和闪速存储器设备;磁盘,例如,内部硬盘或可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充,或者并入专用逻辑电路。
为了提供与用户的交互,可在计算机上实现本说明书中描述的主题的实施例,所述计算机具有用于向用户显示信息的显示设备,例如CRT(阴极射线管)监视器、LCD(液晶显示器)监视器或OLED显示器,以及用于向该计算机提供输入的输入设备,例如键盘、鼠标或存在敏感显示器或其它表面。其它种类的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声、语音或触觉输入。此外,计算机可通过向由用户使用的设备发送资源并且从由用户使用的设备接收资源来与用户交互;例如,通过响应于从web浏览器接收到的请求而向用户的客户端设备上的web浏览器发送web页面。
可在计算系统中实现本说明书中描述的主题的实施例,所述计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户可用来与本说明书中描述的主题的实施方式交互的图形用户界面或Web浏览器的客户端计算机),或者包括一个或多个此类后端、中间件或前端组件的任何组合。系统的组件可通过任何形式或介质的数字数据通信(例如,通信网络)来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如,互联网。
计算系统可包括客户端和服务器。客户端和服务器一般地彼此远离并且通常通过通信网络交互。客户端和服务器之间的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而发生。
虽然本说明书包含许多具体实施方式细节,但是这些不应该被解释为对任何发明的或可以要求保护什么的范围构成限制,而是相反被解释为可能特定于特定发明的特定实施例的特征的描述。也可在单个实施例中相结合地实现在本说明书中在单独的实施例的场境中描述的某些特征。相反地,也可在多个实施例中单独地或者按照任何适合的子组合实现在单个实施例的场境中描述的各种特征。此外,尽管这些特征在上面可以被描述为按照某些组合起作用并且因此甚至最初要求保护,然而来自要求保护的组合的一个或多个特征可在一些情况下被从组合中删去,并且所要求保护的组合可以针对子组合或子组合的变化。
类似地,虽然在附图中按照特定次序描绘操作,但是这不应该被理解为要求按照所示特定次序或按照顺序次序执行此类操作,或者要求执行所有图示的操作以实现所希望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,上述的实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中要求这种分离,并且应该理解的是,所描述的程序组件和系统一般地可被一起集成在单个软件产品中或者封装到多个软件产品中。
已经对主题的特定实施例进行了描述。其它实施例在以下权利要求的范围内。例如,权利要求中记载的动作可被以不同次序执行并仍然实现所希望的结果。作为一个示例,附图中描绘的过程不一定要求所示特定次序或顺序次序,以实现所希望的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。

Claims (57)

1.一种计算机实现的方法,所述方法包括:
接收处理计算图的请求;
获得表示所述计算图的多个子图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应的操作,其中每个有向边将相应的第一节点连接到相应的第二节点,所述相应的第二节点表示接收由所述相应的第一节点表示的操作的输出作为输入的操作;
将所述多个子图指派给多个设备中的相应设备,包括将第一子图指派给第一设备;
确定所述第一设备包括具有多个流的硬件加速器,每个流是按次序处理其操作的独立硬件队列;
响应于确定所述第一设备包括具有多个流的硬件加速器而生成指令,所述指令当由所述第一设备执行时使所述第一设备:
将由所述第一子图中的每个节点表示的所述操作指派给所述硬件加速器的所述多个流中的对应的流,包括:将不依赖于彼此的两个操作指派给不同的流,以及将第一操作指派给单个流,所述第一操作以在第二操作执行之前必须发生的方式改变硬件的内部状态并且在所述第一操作完成之后将所述第二操作指派为在所述单个流中执行;并且
根据所述指派来执行由所述子图中的所述节点表示的所述操作;以及
将所述指令和所述数据提供给所述第一设备。
2.根据权利要求1所述的方法,其中,所述请求指定识别来自所述子图中的一个或多个相应节点的一个或多个特定输出,所述方法进一步包括:
从所述第一设备接收所述一个或多个特定输出;以及
将所述一个或多个特定输出提供给客户端。
3.根据权利要求2所述的方法,其中,所述指令进一步使所述第一设备将所述一个或多个特定输出存储在所述第一设备的存储器中。
4.根据权利要求1、2或3所述的方法,其中,针对所述子图的所述操作包括针对神经网络的部分推理或训练计算。
5.根据任一前述权利要求所述的方法,进一步包括:
分析所述子图以在链结构中识别所述子图中的节点组;
其中,所述指令使所述第一设备将所述节点组指派给一个流。
6.根据任一前述权利要求所述的方法,其中,所述指派包括:
分析所述子图以识别在所述子图中具有多个有向边作为输出的第一节点;
其中,所述指令使所述第一设备针对所述有向边中的每一个有向边来将所述有向边所指向的节点指派给所述硬件加速器的不相交流。
7.根据任一前述权利要求所述的方法,其中,所述指令使所述第一设备针对每个节点,基于到该节点的所述有向边来确定通过由该节点表示的所述操作消耗的所述硬件加速器中的相应的存储器资源量,其中,所述指派至少基于所述相应的存储器资源量。
8.根据任一前述权利要求所述的方法,其中,所述指令使所述第一设备确定由节点表示的特定操作已在特定流处结束;
响应于确定所述特定操作已结束:
确定将被释放的通过所述特定操作消耗的第一存储器量;
针对未指派节点组中的每一个未指派节点,确定通过由所述未指派节点表示的操作所消耗的相应的估计存储器量;
从所述未指派节点组中确定第一未指派节点,所述第一未指派节点表示在所述硬件加速器的流上执行的操作,所述操作利用了使所述第一存储器量的使用最大化的所述估计存储器量;并且
将由所述第一未指派节点表示的操作指派给所述特定流。
9.根据任一前述权利要求所述的方法,其中,所述指令使所述第一设备确定由节点表示的特定操作已在特定流处结束:
响应于确定所述特定操作已结束:
确定使用所述特定操作的所述输出作为输入的至少一个后续操作;并且
在所述至少一个后续操作已执行之后,重新使用为所述特定操作的所述输出而分配的存储器。
10.根据权利要求9所述的方法,其中,确定使用所述特定操作的所述输出作为输入的至少一个后续操作包括:
确定至少两个后续操作,第一流中的第一操作和第二流中的第二操作,使用所述特定操作的所述输出作为输入;
在第一流中放置第一标记,所述第一标记指示所述第一操作何时已使用所述特定操作作为输入;
在第二流中放置第二标记,所述第二标记指示所述第二操作何时已使用所述特定操作作为输入;
根据来自所述第一和第二标记的指示,确定两个操作已使用所述特定操作。
11.根据任一前述权利要求所述的方法,进一步包括:接收模型输入;以及由所述硬件加速器根据由所述子图中的所述节点表示的操作来处理所述模型输入。
12.一种系统,所述系统包括:
一个或多个计算机;以及
计算机可读介质,所述计算机可读介质耦合到所述一个或多个计算机并且具有存储在其上的指令,所述指令当由所述一个或多个计算机执行时,使所述一个或多个计算机执行操作,所述操作包括:
由计算图系统接收处理计算图的请求;
获得表示所述计算图的多个子图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应的操作,其中每个有向边将相应的第一节点连接到相应的第二节点,所述相应的第二节点表示接收由所述相应的第一节点表示的操作的输出作为输入的操作;
将所述多个子图指派给多个设备中的相应设备,包括将第一子图指派给第一设备;
确定所述第一设备包括具有多个流的硬件加速器,每个流是按次序处理其操作的独立硬件队列;
响应于确定所述第一设备包括具有多个流的硬件加速器而生成指令,所述指令当由所述第一设备执行时使所述第一设备:
将由所述第一子图中的每个节点表示的所述操作指派给所述硬件加速器的所述多个流中的对应的流,包括:将不依赖于彼此的两个操作指派给不同的流,以及将第一操作指派给单个流,所述第一操作以在第二操作执行之前必须发生的方式改变硬件的内部状态并且在所述第一操作完成之后将所述第二操作指派为在所述单个流中执行;并且
根据所述指派来执行由所述子图中的所述节点表示的所述操作;以及
将所述指令和所述数据提供给所述第一设备。
13.根据权利要求12所述的系统,其中,所述请求指定识别来自所述子图中的一个或多个相应节点的一个或多个特定输出,所述操作进一步包括:
从所述第一设备接收所述一个或多个特定输出;以及
将所述一个或多个特定输出提供给客户端。
14.根据权利要求12或13所述的系统,所述操作进一步包括:
分析所述子图以在链结构中识别所述子图中的节点组;
其中,所述指令使所述第一设备将所述节点组指派给一个流。
15.根据权利要求12、13或14所述的系统,其中,所述指派包括:
分析所述子图以识别在所述子图中具有多个有向边作为输出的第一节点;
其中,所述指令使所述第一设备针对所述有向边中的每一个有向边来将所述有向边所指向的节点指派给所述硬件加速器的唯一流。
16.根据权利要求12至15中的任一项所述的系统,其中,所述指令使所述第一设备针对每个节点,基于到该节点的所述有向边来确定通过由该节点表示的所述操作消耗的所述硬件加速器中的相应的存储器资源量,其中,所述指派至少基于所述相应的存储器资源量。
17.根据权利要求12至16中的任一项所述的系统,其中,所述指令使所述第一设备确定由节点表示的特定操作已在特定流处结束;
响应于确定所述特定操作已结束:
确定将被释放的通过所述特定操作消耗的第一存储器量;
针对未指派节点组中的每一个未指派节点,确定由所述未指派节点消耗的相应的估计存储器量;
从所述未指派节点组中确定第一未指派节点,所述第一未指派节点具有使所述第一存储器量的使用最大化的估计存储器量;并且
将由所述第一未指派节点表示的操作指派给所述特定流。
18.一种存储指令的非暂时性计算机可读存储介质,所述指令当由一个或多个计算机执行时使所述一个或多个计算机执行操作,所述操作包括:
由计算图系统接收处理计算图的请求;
获得表示所述计算图的多个子图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应的操作,其中每个有向边将相应的第一节点连接到相应的第二节点,所述相应的第二节点表示接收由所述相应的第一节点表示的操作的输出作为输入的操作;
将所述多个子图指派给多个设备中的相应设备,包括将第一子图指派给第一设备;
确定所述第一设备包括具有多个流的硬件加速器,每个流是按次序处理其操作的独立硬件队列;
响应于确定所述第一设备包括具有多个流的硬件加速器而生成指令,所述指令当由所述第一设备执行时使所述第一设备:
将由所述第一子图中的每个节点表示的所述操作指派给所述硬件加速器的所述多个流中的对应的流,包括:将不依赖于彼此的两个操作指派给不同的流,以及将第一操作指派给单个流,所述第一操作以在第二操作执行之前必须发生的方式改变硬件的内部状态并且在所述第一操作完成之后将所述第二操作指派为在所述单个流中执行;并且
根据所述指派来执行由所述子图中的所述节点表示的所述操作;以及
将所述指令和所述数据提供给所述第一设备。
19.根据权利要求18所述的非暂时性计算机可读存储介质,其中,所述请求指定识别来自所述子图中的一个或多个相应节点的一个或多个特定输出,所述操作进一步包括:
从所述第一设备接收所述一个或多个特定输出;以及
将所述一个或多个特定输出提供给客户端。
20.根据权利要求18或19所述的非暂时性计算机可读存储介质,所述操作进一步包括:
分析所述子图以在链结构中识别所述子图中的节点组;
其中,所述指令使所述第一设备将所述节点组指派给一个流。
21.根据权利要求18、19或20所述的非暂时性计算机可读存储介质,其中,所述指派包括:
分析所述子图以识别在所述子图中具有多个有向边作为输出的第一节点;
其中,所述指令使所述第一设备针对所述有向边中的每一个有向边来将所述有向边所指向的节点指派给所述硬件加速器的唯一流。
22.根据权利要求18至21中的任一项所述的非暂时性计算机可读存储介质,其中,所述指令使所述第一设备针对每个节点,基于到该节点的所述有向边确定通过由该节点表示的所述操作消耗的所述硬件加速器中的相应的存储器资源量,其中,所述指派至少基于所述相应的存储器资源量。
23.根据权利要求18至22中的任一项所述的非暂时性计算机可读存储介质,其中,所述指令使所述第一设备确定由节点表示的特定操作已在特定流处结束;
响应于确定所述特定操作已结束:
确定将被释放的通过所述特定操作消耗的第一存储器量;
针对未指派节点组中的每一个未指派节点,确定由所述未指派节点消耗的相应的估计存储器量;
从所述未指派节点组中确定第一未指派节点,所述第一未指派节点具有使所述第一存储器量的使用最大化的估计存储器量;并且
将由所述第一未指派节点表示的操作指派给所述特定流。
24.一种方法,所述方法包括:
由具有多个流的硬件加速器接收表示计算图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应的操作,其中每个有向边将相应的第一节点连接到相应的第二节点,所述相应的第二节点表示接收由所述相应的第一节点表示的操作的输出作为输入的操作;
由所述硬件加速器将由所述计算图中的每个节点表示的所述操作指派给所述硬件加速器的所述多个流中的相应流,每个流是按所指派的次序来执行指派给该流的操作的独立硬件队列;
由所述硬件加速器配置所述多个流中的第一流以停止被指派给所述第一流的第一操作的执行,直到对所述第一操作的所有输入已被计算为止,其中对所述第一操作的第一输入包括被指派给所述多个流中的、不同的第二流的第二操作的输出;以及
由所述硬件加速器的所述多个流中的每个流以由所述计算图中的所述节点表示的、被指派给该流的所述操作被指派给该流的次序来执行所述操作,包括与由所述第二流进行的至少一个操作并行地执行由所述第一流进行的至少一个操作。
25.根据权利要求24所述的方法,进一步包括:
从客户端接收识别来自所述计算图中的一个或多个相应节点的一个或多个特定输出的请求;以及
将所述一个或多个特定输出提供给所述客户端。
26.根据权利要求24所述的方法,进一步包括:
接收在所述计算图中识别节点组的数据,所述节点组是通过遵循从节点到节点的一个有向边而彼此连接的;以及
将所述节点组指派给一个流。
27.根据权利要求24所述的方法,其中,所述指派包括:
接收识别在所述计算图中具有多个有向边作为输出的第一节点的数据;以及
针对所述有向边中的每一个有向边,将所述有向边所指向的目标节点指派给所述硬件加速器的唯一流,每个目标节点被指派给所述硬件加速器的不同的唯一流。
28.根据权利要求24所述的方法,进一步包括:针对每个节点,基于到该节点的所述有向边,确定通过由该节点表示的所述操作消耗的所述硬件加速器中的相应的存储器资源量,其中,将由所述计算图中的每个节点表示的所述操作指派给所述硬件加速器的所述多个流中的相应流是至少基于由该节点表示的所述操作消耗的所述硬件加速器中的所述相应的存储器资源量。
29.根据权利要求24所述的方法,进一步包括:
确定由节点表示的特定操作已在特定流处结束;
响应于确定所述特定操作已结束,确定将被释放的通过所述特定操作消耗的第一存储器量;
针对未指派节点组中的每一个未指派节点,确定将由所述未指派节点消耗的相应的估计存储器量;
使用将由所述未指派节点消耗的相应的估计存储器量来从所述未指派节点组中确定第一未指派节点,所述第一未指派节点具有使所述第一存储器量的使用最大化的估计存储器量;以及
将由所述第一未指派节点表示的操作指派给所述特定流。
30.一种被编码在一个或多个非暂时性计算机存储介质上的非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质包括指令,所述指令当由包括具有多个流的硬件加速器的计算机执行时,使所述计算机执行程序操作,所述程序操作包括:
接收表示计算图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应的操作,其中每个有向边将相应的第一节点连接到相应的第二节点,所述相应的第二节点表示接收由所述相应的第一节点表示的操作的输出作为输入的操作;
将由所述计算图中的每个节点表示的所述操作指派给所述硬件加速器的所述多个流中的相应流,每个流是按所指派的次序来执行指派给该流的操作的独立硬件队列;
配置所述多个流中的第一流以停止被指派给所述第一流的第一操作的执行,直到对所述第一操作的所有输入已被计算为止,其中对所述第一操作的第一输入包括被指派给所述多个流中的、不同的第二流的第二操作的输出;以及
由所述硬件加速器的所述多个流中的每个流以由所述计算图中的所述节点表示的、被指派给该流的所述操作被指派给该流的次序来执行所述操作,包括与由所述第二流进行的至少一个操作并行地执行由所述第一流进行的至少一个操作。
31.根据权利要求30所述的非暂时性计算机可读存储介质,所述程序操作进一步包括:
从客户端接收识别来自所述计算图中的一个或多个相应节点的一个或多个特定输出的请求;以及
将所述一个或多个特定输出提供给所述客户端。
32.根据权利要求30所述的非暂时性计算机可读存储介质,所述程序操作进一步包括:
接收在所述计算图中识别节点组的数据,所述节点组是通过遵循从节点到节点的一个有向边而彼此连接的;以及
将所述节点组指派给一个流。
33.根据权利要求30所述的非暂时性计算机可读存储介质,其中,所述指派包括:
接收识别在所述计算图中具有多个有向边作为输出的第一节点的数据;以及
针对所述有向边中的每一个有向边,将所述有向边所指向的目标节点指派给所述硬件加速器的唯一流,每个目标节点被指派给所述硬件加速器的不同的唯一流。
34.根据权利要求30所述的非暂时性计算机可读存储介质,所述程序操作进一步包括:针对每个节点,基于到该节点的所述有向边,确定通过由该节点表示的所述操作消耗的所述硬件加速器中的相应的存储器资源量,其中,将由所述计算图中的每个节点表示的所述操作指派给所述硬件加速器的所述多个流中的相应流是至少基于由该节点表示的所述操作消耗的所述硬件加速器中的所述相应的存储器资源量。
35.根据权利要求30所述的非暂时性计算机可读存储介质,所述程序操作进一步包括:确定由节点表示的特定操作已在特定流处结束;
响应于确定所述特定操作已结束,确定将被释放的通过所述特定操作消耗的第一存储器量;
针对未指派节点组中的每一个未指派节点,确定将由所述未指派节点消耗的相应的估计存储器量;
使用将由所述未指派节点消耗的相应的估计存储器量来从所述未指派节点组中确定第一未指派节点,所述第一未指派节点具有使所述第一存储器量的使用最大化的估计存储器量;以及
将由所述第一未指派节点表示的操作指派给所述特定流。
36.根据权利要求31所述的非暂时性计算机可读存储介质,所述程序操作还包括:使所述硬件加速器将所述一个或多个特定输出存储在所述硬件加速器的存储器中。
37.根据权利要求30所述的非暂时性计算机可读存储介质,所述程序操作还包括:
使所述硬件加速器确定由节点表示的特定操作已在特定流中完成;以及
响应于确定所述特定操作已完成:
识别使用所述特定操作的输出作为输入的至少一个后续操作,以及
在所述至少一个后续操作已执行之后,重新使用为所述特定操作的所述输出而分配的存储器。
38.根据权利要求37所述的非暂时性计算机可读存储介质,其中,确定使用所述特定操作的输出作为输入的至少一个后续操作包括:
确定至少两个后续操作,第一流中的第一操作和第二流中的第二操作,使用所述特定操作的所述输出作为输入;
在第一流中放置第一标记,所述第一标记指示所述第一操作何时已使用所述特定操作作为输入;
在第二流中放置第二标记,所述第二标记指示所述第二操作何时已使用所述特定操作作为输入;
根据来自所述第一标记和第二标记的指示,确定两个操作已使用所述特定操作。
39.根据权利要求30所述的非暂时性计算机可读存储介质,其中,将由所述计算图中的每个节点表示的所述操作指派给所述硬件加速器的所述多个流中的相应流包括指派操作以使跨流的有向边的数目最小化,其中跨流的有向边是对一个流中的操作的输入是从另一个流中的操作的输出来接收的实例。
40.根据权利要求30所述的非暂时性计算机可读存储介质,其中,执行由所述计算图中的所述节点表示的所述操作包括:
在紧接在所述第一流中的所述第一操作的执行之前的点处,识别被指派给所述第二流的所述第二操作的输出还未被计算;以及
停止所述第一流中的所述第一操作的执行,直到来自所述第二流的所述第二操作的输出能够用作对所述第一流中的所述第一操作的输入为止。
41.根据权利要求40所述的非暂时性计算机可读存储介质,其中,停止所述第一流中的所述第一操作的执行进一步停止所述第一流中的所述第一操作的下游的附加操作的执行。
42.根据权利要求30所述的非暂时性计算机可读存储介质,其中,所述计算图是与更大的计算图的一部分相对应的子图。
43.一种包括硬件加速器的系统,其中,所述硬件加速器包括多个流,并且其中所述系统被配置成执行系统操作,所述系统操作包括:
接收表示计算图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应的操作,其中每个有向边将相应的第一节点连接到相应的第二节点,所述相应的第二节点表示接收由所述相应的第一节点表示的操作的输出作为输入的操作;
将由所述计算图中的每个节点表示的所述操作指派给所述硬件加速器的所述多个流中的相应流,每个流是按所指派的次序来执行指派给该流的操作的独立硬件队列;
配置所述多个流中的第一流以停止被指派给所述第一流的第一操作的执行,直到对所述第一操作的所有输入已被计算为止,其中对所述第一操作的第一输入包括被指派给所述多个流中的、不同的第二流的第二操作的输出;以及
由所述硬件加速器的所述多个流中的每个流以由所述计算图中的所述节点表示的、被指派给该流的所述操作被指派给该流的次序来执行所述操作,包括与由所述第二流进行的至少一个操作并行地执行由所述第一流进行的至少一个操作。
44.根据权利要求43所述的系统,其中所述系统操作进一步包括:
从客户端接收识别来自所述计算图中的一个或多个相应节点的一个或多个特定输出的请求;以及
将所述一个或多个特定输出提供给所述客户端。
45.根据权利要求43所述的系统,其中所述系统操作进一步包括:
接收在所述计算图中识别节点组的数据,所述节点组是通过遵循从节点到节点的一个有向边而彼此连接的;以及
将所述节点组指派给一个流。
46.根据权利要求43所述的系统,其中,所述指派包括:
接收识别在所述计算图中具有多个有向边作为输出的第一节点的数据;以及
针对所述有向边中的每一个有向边,将所述有向边所指向的目标节点指派给所述硬件加速器的唯一流,每个目标节点被指派给所述硬件加速器的不同的唯一流。
47.根据权利要求43所述的系统,其中所述系统操作进一步包括:针对每个节点,基于到该节点的所述有向边,确定通过由该节点表示的所述操作消耗的所述硬件加速器中的相应的存储器资源量,其中,将由所述计算图中的每个节点表示的所述操作指派给所述硬件加速器的所述多个流中的相应流是至少基于由该节点表示的所述操作消耗的所述硬件加速器中的所述相应的存储器资源量。
48.根据权利要求43所述的系统,其中所述系统操作进一步包括:确定由节点表示的特定操作已在特定流处结束;
响应于确定所述特定操作已结束,确定将被释放的通过所述特定操作消耗的第一存储器量;
针对未指派节点组中的每一个未指派节点,确定将由所述未指派节点消耗的相应的估计存储器量;
使用将由所述未指派节点消耗的相应的估计存储器量来从所述未指派节点组中确定第一未指派节点,所述第一未指派节点具有使所述第一存储器量的使用最大化的估计存储器量;以及
将由所述第一未指派节点表示的操作指派给所述特定流。
49.根据权利要求44所述的系统,其中,所述系统操作还包括:使所述硬件加速器将所述一个或多个特定输出存储在所述硬件加速器的存储器中。
50.根据权利要求43所述的系统,其中,所述系统操作还包括:
使所述硬件加速器确定由节点表示的特定操作已在特定流处结束:以及
响应于确定所述特定操作已结束:
识别使用所述特定操作的所述输出作为输入的至少一个后续操作;并且
在所述至少一个后续操作已执行之后,重新使用为所述特定操作的所述输出而分配的存储器。
51.根据权利要求50所述的系统,确定使用所述特定操作的所述输出作为输入的至少一个后续操作包括:
确定至少两个后续操作,第一流中的特定操作和第二流中的第二操作,使用所述特定操作的所述输出作为输入;
在第一流中放置第一标记,所述第一标记指示所述特定操作何时已使用所述特定操作作为输入;
在第二流中放置第二标记,所述第二标记指示所述第二操作何时已使用所述特定操作作为输入;
根据来自所述第一标记和第二标记的指示,确定两个操作已使用所述特定操作。
52.根据权利要求43所述的系统,其中,所述多个流中的一个或多个流均包括以所指派的次序来执行指派给该流的操作的虚拟独立硬件队列。
53.一种计算图系统,所述计算图系统被实现为一个或多个位置中的一个或多个计算机上的计算机程序,所述系统包括:
布放器、执行器和会话管理器,其中所述布放器、执行器和会话管理器每个是被实现为所述一个或多个计算机上的一个或多个计算机程序的所述计算图系统的相应组件;
其中所述会话管理器配置为:
从客户端接收指定要在计算图上执行的动作类型的请求,所述请求包括识别所述计算图的数据和识别所述计算图的输入的数据;
管理能够执行所述计算图的操作的设备集合,所述设备集合中的至少一个设备包括多个流;以及
为布放器识别可用于执行操作的所述设备集合;
其中,所述布放器被配置为:
对于要在所述计算图中执行的每个操作,确定用于执行所述操作的可用设备中的相应目标设备;
向目标设备中所包括的第一流指派所述计算图中的节点组,所述节点组是通过遵循从节点到节点的一个有向边而彼此连接的;以及
向目标设备中所包括的第二流指派所述计算图中的第二节点来实现与由所述第一流对所述节点组中的至少一个节点进行的处理并行的、由所述第二流对所述第二节点的处理;
并且其中所述执行器被配置为:
在所述目标设备执行已经由所述布放器分配的所述操作以生成输出之后,检索输出;以及
生成对所述请求的响应,
其中,所述第一流被配置来停止所述第一流中的第一操作的执行,直到对所述第一操作的所有输入已被计算为止,其中对所述第一操作的第一输入包括被指派给所述第二流的第二操作的输出。
54.根据权利要求53所述的系统,还包括:
图形管理器,所述图形管理器被配置为:
将所述计算图分割为在多个设备上运行;以及
为所述设备集合中的每个目标设备创建一个执行器;
其中,当所述设备的操作的所有输入已经被计算使得所述操作能够运行时,每个执行器向对应的设备发出操作。
55.根据权利要求53所述的系统,其中:
所述客户端是在与所述系统分开的计算机上运行的计算机程序;
所述请求指定应当响应所述请求而发送给所述客户端的响应。
56.根据权利要求54所述的系统,其中:
所述计算图表示神经网络。
57.一种包括硬件加速器的系统,其中,所述硬件加速器包括多个流,并且其中所述系统被配置成执行系统操作,所述系统操作包括:
接收表示计算图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应的操作,其中每个有向边将相应的第一节点连接到相应的第二节点,所述相应的第二节点表示接收由所述相应的第一节点表示的操作的输出作为输入的操作;
将由所述计算图中的每个节点表示的所述操作指派给所述硬件加速器的所述多个流中的相应流,每个流是按所指派的次序来执行指派给该流的操作的独立硬件队列;
由所述硬件加速器的所述多个流中的每个流以由所述计算图中的所述节点表示的、被指派给该流的所述操作被指派给该流的次序来执行所述操作,包括与由不同的第二流执行一个或多个第二操作并行地执行一个或多个第一操作,
其中,所述多个流中的一个或多个流均包括以所指派的次序来执行指派给该流的操作的虚拟独立硬件队列,
其中,所述硬件加速器包括固定数目的虚拟独立硬件队列,所述固定数目的虚拟独立硬件队列均共享对所述硬件加速器和单个线程池的利用。
CN201680063365.6A 2015-10-28 2016-10-28 计算图的基于流的加速器处理 Active CN108351805B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211570829.6A CN115840643A (zh) 2015-10-28 2016-10-28 计算图的基于流的加速器处理

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562247703P 2015-10-28 2015-10-28
US62/247,703 2015-10-28
US201562253046P 2015-11-09 2015-11-09
US62/253,046 2015-11-09
PCT/US2016/059334 WO2017075360A1 (en) 2015-10-28 2016-10-28 Stream-based accelerator processing of computational graphs

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202211570829.6A Division CN115840643A (zh) 2015-10-28 2016-10-28 计算图的基于流的加速器处理

Publications (2)

Publication Number Publication Date
CN108351805A CN108351805A (zh) 2018-07-31
CN108351805B true CN108351805B (zh) 2022-12-23

Family

ID=57354431

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202211570829.6A Pending CN115840643A (zh) 2015-10-28 2016-10-28 计算图的基于流的加速器处理
CN201680063365.6A Active CN108351805B (zh) 2015-10-28 2016-10-28 计算图的基于流的加速器处理

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202211570829.6A Pending CN115840643A (zh) 2015-10-28 2016-10-28 计算图的基于流的加速器处理

Country Status (6)

Country Link
US (3) US11151446B2 (zh)
EP (1) EP3353655B1 (zh)
JP (1) JP6672456B2 (zh)
KR (2) KR20200021104A (zh)
CN (2) CN115840643A (zh)
WO (1) WO2017075360A1 (zh)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180032568A1 (en) * 2016-07-29 2018-02-01 Sysomos L.P. Computing System with Multi-Processor Platform for Accelerating Influence Maximization Computation and Related Methods
US10241956B2 (en) * 2016-09-12 2019-03-26 International Business Machines Corporation Virtualizing coherent hardware accelerators
EP3559868A1 (en) 2017-03-24 2019-10-30 Google LLC Device placement optimization with reinforcement learning
US11138494B2 (en) * 2017-05-02 2021-10-05 International Business Machines Corporation Storage controller acceleration for neural network training and inference
US10585703B2 (en) * 2017-06-03 2020-03-10 Apple Inc. Dynamic operation allocation for neural networks
US11138516B2 (en) * 2017-06-30 2021-10-05 Visa International Service Association GPU enhanced graph model build and scoring engine
CN107480080B (zh) * 2017-07-03 2021-03-23 深圳致星科技有限公司 一种基于rdma的零拷贝数据流
US10642582B2 (en) 2017-08-24 2020-05-05 Google Llc System of type inference for tuple graph programs method of executing a tuple graph program across a network
US10599482B2 (en) * 2017-08-24 2020-03-24 Google Llc Method for intra-subgraph optimization in tuple graph programs
US10887235B2 (en) 2017-08-24 2021-01-05 Google Llc Method of executing a tuple graph program across a network
US11568218B2 (en) * 2017-10-17 2023-01-31 Xilinx, Inc. Neural network processing system having host controlled kernel acclerators
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
FI130232B (en) * 2018-04-18 2023-05-03 Meeshkan Oy Procedure for distributed processing of information and distributed information processing system
US11948073B2 (en) * 2018-04-20 2024-04-02 Advanced Micro Devices, Inc. Machine learning inference engine scalability
US20190333506A1 (en) 2018-04-30 2019-10-31 Avnera Corporation Personal interactive speaker device having audio recognition neural net processor architecture
US11615289B2 (en) * 2018-06-28 2023-03-28 Oracle International Corporation Configuration price quote with enhanced approval control
CN111079907B (zh) * 2018-10-19 2021-01-26 安徽寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111079916B (zh) * 2018-10-19 2021-01-15 安徽寒武纪信息科技有限公司 运算方法、系统及相关产品
US11769041B2 (en) 2018-10-31 2023-09-26 Advanced Micro Devices, Inc. Low latency long short-term memory inference with sequence interleaving
CN111353575A (zh) 2018-12-20 2020-06-30 超威半导体公司 用于卷积神经网络的图块化格式
CN109669772B (zh) * 2018-12-28 2020-03-31 第四范式(北京)技术有限公司 计算图的并行执行方法和设备
US11645358B2 (en) * 2019-01-29 2023-05-09 Hewlett Packard Enterprise Development Lp Generation of executable files corresponding to neural network models
US11687795B2 (en) * 2019-02-19 2023-06-27 International Business Machines Corporation Machine learning engineering through hybrid knowledge representation
KR102674475B1 (ko) * 2019-03-15 2024-06-12 한국전자통신연구원 복수의 뉴럴 네트워크들을 실행하기 위한 전자 장치
CN111723918A (zh) 2019-03-18 2020-09-29 超威半导体公司 用于卷积内核的自动生成和调谐工具
US11537939B2 (en) * 2019-05-03 2022-12-27 Google Llc Reshape and broadcast optimizations to avoid unnecessary data movement
CN111915002B (zh) * 2019-05-09 2023-12-19 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
US11521042B2 (en) * 2019-05-21 2022-12-06 Anil Ravindranath System and method to dynamically and automatically sharing resources of coprocessor AI accelerators
CN112070221B (zh) * 2019-05-31 2024-01-16 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
US11836635B2 (en) 2019-05-31 2023-12-05 Apple Inc. Mutable parameters for machine learning models during runtime
CN112016681B (zh) * 2019-05-31 2024-04-30 苹果公司 机器学习操作的分解
US11494237B2 (en) 2019-06-26 2022-11-08 Microsoft Technology Licensing, Llc Managing workloads of a deep neural network processor
WO2021012215A1 (zh) * 2019-07-24 2021-01-28 华为技术有限公司 神经网络切分方法、预测方法及相关装置
US10884755B1 (en) * 2019-07-31 2021-01-05 International Business Machines Corporation Graph rewriting for large model support using categorized topological sort
US11544105B2 (en) * 2019-09-11 2023-01-03 Google Llc Recommendations for scheduling jobs on distributed computing devices
US11521062B2 (en) 2019-12-05 2022-12-06 International Business Machines Corporation Neural network training using a data flow graph and dynamic memory management
US20230080172A1 (en) * 2020-03-13 2023-03-16 Hewlett-Packard Development Company, L.P. Transmitting node instructions
CN111611087B (zh) * 2020-06-30 2023-03-03 中国人民解放军国防科技大学 一种资源调度方法、装置和系统
US20220051085A1 (en) * 2020-08-11 2022-02-17 Mediatek Inc. Runtime hyper-heterogeneous optimization for processing circuits executing inference model
CN114169491A (zh) * 2020-09-10 2022-03-11 阿里巴巴集团控股有限公司 一种模型处理方法、装置、设备及计算机可读存储介质
KR20220064665A (ko) * 2020-11-12 2022-05-19 삼성전자주식회사 인공지능 모델을 분산 처리하는 전자 장치 및 그 동작 방법
CN114565102A (zh) * 2020-11-27 2022-05-31 伊姆西Ip控股有限责任公司 部署机器学习模型的方法、电子设备和计算机程序产品
CN112734011B (zh) * 2021-01-04 2021-12-28 北京大学 一种基于增量综合的深度神经网络加速器协同设计方法
CN115934306A (zh) * 2021-08-08 2023-04-07 联发科技股份有限公司 一种电子设备、生成输出数据的方法及机器可读存储介质
CN114004347A (zh) 2021-08-30 2022-02-01 平头哥(上海)半导体技术有限公司 用于加速图神经网络属性访问的硬件加速器、系统和方法
US20240104341A1 (en) * 2022-09-27 2024-03-28 Zhejiang Lab Memory optimization method and apparatus for neural network compilation
CN115268936B (zh) * 2022-09-27 2022-12-27 之江实验室 一种用于计算图编译的优化方法及装置
CN115759233B (zh) * 2022-11-24 2023-10-20 北京百度网讯科技有限公司 模型的训练方法、图数据处理方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101443733A (zh) * 2006-05-16 2009-05-27 起元软件有限公司 在基于图的计算中的计算资源管理
CN101501678A (zh) * 2006-08-10 2009-08-05 起元软件有限公司 在基于图的计算中分配服务
CN102089752A (zh) * 2008-07-10 2011-06-08 洛克泰克科技有限公司 依赖性问题的有效率的并行计算
CN104615488A (zh) * 2015-01-16 2015-05-13 华为技术有限公司 异构多核可重构计算平台上任务调度的方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317734A (en) 1989-08-29 1994-05-31 North American Philips Corporation Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies
US7343482B2 (en) 2004-10-20 2008-03-11 Arm Limited Program subgraph identification
US7350055B2 (en) 2004-10-20 2008-03-25 Arm Limited Tightly coupled accelerator
US8881141B2 (en) * 2010-12-08 2014-11-04 Intenational Business Machines Corporation Virtualization of hardware queues in self-virtualizing input/output devices
WO2014009031A2 (en) 2012-07-09 2014-01-16 Toyota Motor Europe Nv/Sa Artificial memory system and method for use with a computational machine for interacting with dynamic behaviours
CN102609298B (zh) * 2012-01-11 2016-01-13 中国科学技术大学苏州研究院 基于硬件队列扩展的网卡虚拟化系统及其方法
CN102790777B (zh) * 2012-08-07 2016-06-15 华为技术有限公司 网络接口适配器注册方法及驱动设备、服务器
CN103970604B (zh) 2013-01-31 2017-05-03 国际商业机器公司 基于MapReduce架构实现图处理的方法和装置
US11061539B2 (en) 2013-03-15 2021-07-13 The Mathworks, Inc. Reference nodes in a computational graph
US9424079B2 (en) 2013-06-27 2016-08-23 Microsoft Technology Licensing, Llc Iteration support in a heterogeneous dataflow engine
US9645575B2 (en) 2013-11-27 2017-05-09 Adept Ai Systems Inc. Method and apparatus for artificially intelligent model-based control of dynamic processes using probabilistic agents

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101443733A (zh) * 2006-05-16 2009-05-27 起元软件有限公司 在基于图的计算中的计算资源管理
CN101501678A (zh) * 2006-08-10 2009-08-05 起元软件有限公司 在基于图的计算中分配服务
CN102089752A (zh) * 2008-07-10 2011-06-08 洛克泰克科技有限公司 依赖性问题的有效率的并行计算
CN104615488A (zh) * 2015-01-16 2015-05-13 华为技术有限公司 异构多核可重构计算平台上任务调度的方法和装置

Also Published As

Publication number Publication date
JP2018533795A (ja) 2018-11-15
KR102081952B1 (ko) 2020-04-23
US20170124451A1 (en) 2017-05-04
JP6672456B2 (ja) 2020-03-25
EP3353655A1 (en) 2018-08-01
CN115840643A (zh) 2023-03-24
KR20180073669A (ko) 2018-07-02
US10373053B2 (en) 2019-08-06
US11151446B2 (en) 2021-10-19
US20220027202A1 (en) 2022-01-27
CN108351805A (zh) 2018-07-31
EP3353655B1 (en) 2023-01-11
WO2017075360A1 (en) 2017-05-04
KR20200021104A (ko) 2020-02-27
US20180247196A1 (en) 2018-08-30

Similar Documents

Publication Publication Date Title
CN108351805B (zh) 计算图的基于流的加速器处理
US11769061B2 (en) Processing computational graphs
US11087216B2 (en) Modifying computational graphs
CN108885571B (zh) 分批处理机器学习模型的输入
EP4202782A1 (en) Training neural networks represented as computational graphs
US11763146B1 (en) Processing loops in computational graphs

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