CN113748399B - 在异构计算资源上调度计算图的方法、装置及可读介质 - Google Patents
在异构计算资源上调度计算图的方法、装置及可读介质 Download PDFInfo
- Publication number
- CN113748399B CN113748399B CN202080030945.1A CN202080030945A CN113748399B CN 113748399 B CN113748399 B CN 113748399B CN 202080030945 A CN202080030945 A CN 202080030945A CN 113748399 B CN113748399 B CN 113748399B
- Authority
- CN
- China
- Prior art keywords
- node
- replica
- nodes
- graph
- computational graph
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 230000003190 augmentative effect Effects 0.000 claims abstract description 68
- 230000015654 memory Effects 0.000 claims description 85
- 230000005540 biological transmission Effects 0.000 claims description 13
- 230000006978 adaptation Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 description 32
- 238000010801 machine learning Methods 0.000 description 18
- 238000012546 transfer Methods 0.000 description 17
- 238000013507 mapping Methods 0.000 description 16
- 241000614201 Adenocaulon bicolor Species 0.000 description 15
- 238000013528 artificial neural network Methods 0.000 description 15
- 238000003062 neural network model Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 6
- 238000000354 decomposition reaction Methods 0.000 description 5
- 238000013136 deep learning model Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 4
- 238000007499 fusion processing Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000004927 fusion Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000946 synaptic effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Advance Control (AREA)
Abstract
本公开涉及一种在异构计算资源上调度计算图的方法。该方法包括生成增广的计算图,所述增广的计算图包括对应于计算图中的第一节点的第一组副本节点和对应于计算图中的第二节点的第二组副本节点,其中根据所述计算图中的所述第一节点和所述第二节点之间的依赖关系,所述第一组的多个副本节点通过多个边连接到所述第二组的多个副本节点,适配所述增广的计算图以包括所述边、第一组的多个副本节点和第二组的多个副本节点的性能值;和基于所述性能值确定通过第一组的一个副本节点和第二组的一个副本节点跨越适配的计算图的路径。
Description
相关申请的交叉引用
本公开要求于2019年4月25日提交的第16/394,921号美国专利的申请优先权,该申请的全部内容通过引用并入本文。
背景技术
神经网络模型的复杂性一直在不断增加,使得神经网络模型训练和推理需要大量的计算能力。典型的机器学***台可能具有不同的处理性能,这些异构平台已被用于机器学***台中的各种加速器上分配计算任务已被视为提高神经网络***效率和整体性能的重要问题。
发明内容
本公开实施例提供了一种在异构计算资源上调度计算图的方法。该方法可以包括生成增广的计算图,所述增广的计算图包括对应于所述计算图中的第一节点的第一组副本节点和对应于所述计算图中的第二节点的第二组副本节点,其中根据所述计算图中的所述第一节点和所述第二节点之间的依赖关系,所述第一组的多个副本节点通过多个边连接到所述第二组的多个副本节点;适配所述增广的计算图以包括所述边、第一组的多个副本节点和第二组的多个副本节点的性能值;和,基于所述性能值确定通过第一组的一个副本节点和第二组的一个副本节点跨越适配的计算图的路径。
本发明实施例还提供了一种在异构计算资源上调度计算图的装置。该装置可以包括存存储器,所述存储器存储有一组指令;和一个或多个处理器,其被配置为执行该组指令以使该装置执行:生成增广的计算图,所述增广的计算图包括对应于所述计算图中的第一节点的第一组副本节点和对应于所述计算图中的第二节点的第二组副本节点,其中根据所述计算图中的第一节点和第二节点之间的依赖关系,所述第一组的多个副本节点通过多个边连接到所述第二组的多个副本节点。适配所述增广的计算图以包括所述边、第一组的多个副本节点和第二组的多个副本节点的性能值;和基于所述性能值确定通过第一组的一副本节点和第二组的一副本节点跨越适配的计算图的路径。
本公开的实施例还提供了一种非暂时性计算机可读介质,其存储有一组指令,该一组指令可由计算设备的至少一个处理器执行,以使得计算设备在异构计算资源上执行用于调度计算图的方法。该方法可以包括:生成增广的计算图,其包括与所述计算图中的第一节点对应的第一组副本节点和与计算图中的第二节点对应的第二组副本节点,其中根据所述计算图中第一节点和第二节点之间的依赖关系,所述第一组的多个副本节点通过多个边连接到所述第二组的多个副本节点;适配所述增广的计算图以包括所述边、第一组的多个副本节点和第二组的多个副本节点的性能值;和基于所述性能值确定通过第一组的一副本节点和第二组的一副本节点跨越适配的计算图的路径。
第一组副本节点中的每一个和第二组副本节点中的每一个都至少与所述异构计算资源中的一计算资源相关联。所述第一组中的副本节点的数量可以对应于所述异构计算资源中执行所述第一节点的操作的潜在目标设备的数量。这里,可以从异构计算资源中的多个目标设备中选择潜在的目标设备。所述第一组中的每个副本节点表示第一节点的操作可以分配给对应的每个潜在目标设备。所述性能值可以包括数据传输时间和执行时间,所述数据传输时间与所述多个边中的一个边相对应,所述执行时间与所述第一组的多个副本节点中的一副本节点相对应。所述适配的计算图可以包括初始节点和最终节点,当适配增广计算图时,这些初始节点和最终节点被添加到增广计算图的前端和末端。该路径可以基于沿经过调整的计算图的可能路径的性能值总和的比较来确定。
该方法还可以包括根据确定的路径分配异构计算资源中的目标设备用于执行第一节点的操作和第二节点的操作。这里,可以分配与第一组的一个副本节点对应的目标设备来执行第一节点的操作,并且可以分配与第二组的一个副本节点对应的目标设备来执行第二节点的操作。
附图说明
图1A图示了与本公开的实施例一致的示例性加速器架构。
图1B图示了与本公开的实施例一致的示例性神经网络加速器***。
图2图示了与本公开的实施例一致的具有异构平台的示例性计算***。
图3图示了与本公开的实施例一致的调度器的示例性组件的框图。
图4图示了与本公开的实施例一致的用于计算图生成、扩充和适应的示例。
图5图示了与本公开的实施例一致的计算图上的成本标记的示例。
图6图示了与本公开的实施例一致的计算图中的节点分解的示例。
图7图示了与本公开的实施例一致的用于在异构计算资源上调度计算图的示例性流程图。
具体实施方式
现在将详细参考示例性实施例,其示例在附图中示出。以下说明参照附图,除非另有说明,否则不同附图中的相同标号代表相同或相似的要素。在以下示例性实施例的描述中阐述的实施方式不代表与本发明一致的所有实施方式。相反,它们仅仅是与所附权利要求中所述的与本发明相关的方面一致的装置和方法的示例。
用于机器学***台。异构平台可以包括各种加速器,例如GPU、FPGA和ASIC,每个加速器都可用于处理机器学***台可以包括加速器,其处理元件具有彼此不相同的处理性能。在机器学习或深度学习中,神经网络模型可以用计算图或数据结构来图形化表示,该数据结构包含节点和边,并被组织为有向无环图(DAG),所述DAG描述在训练或推理期间如何处理或转换数据。节点代表变量、权重或计算操作,而边代表从一个节点到另一节点的数据流或两个节点之间的依赖关系。
为了提高执行机器学***台中的多个计算设备,同时还要通过操作协同执行来实现并行性执行。
如何划分计算图并将每个划分的部分映射到异构平台上是具有挑战性的。所公开的实施例提供了用于在异构平台上调度计算图的技术,其可以提高在异构平台上执行机器学习模型的性能和效率。所公开的实施例提供了用于根据加速器的计算粒度对计算图进行划分并将每个划分映射到各种加速器上以获得最佳性能的方法或装置。在此,加速器的粒度可以是指令、操作、神经网络层或神经网络模型的单位。所公开的实施例通过将操作聚集在一起或将大操作分解为较小操作以实现最佳执行性能和效率来,可提供用于实现具有硬件-软件共同优化的计算粒度的硬件加速器架构的设计空间搜索的技术。
图1A图示了与本公开的实施例一致的示例性神经网络加速器架构100。在本公开的上下文中,神经网络加速器也可以被称为机器学习加速器或深度学习加速器。在一些实施例中,加速器架构100可以被称为神经网络处理单元(NPU)架构100。如图1A所示,加速器架构100可包括片上通信***102、主机存储器104、存储控制器106、直接存储器存取(DMA)单元108、联合测试工作组(JTAG)/测试存取端(TAP)控制器110、***接口112、总线114、全局存储器116等。应当理解,片上通信***102可以基于通信的数据执行算法操作。此外,加速器架构100可以包括全局存储器116,其具有用作主存储器的存储块(例如,8GB第二代高带宽存储器(HBM2)的4个块)。
片上通信***102可以包括全局管理器1022和多个核1024。全局管理器1022可以包括至少一个任务管理器,以与一个或多个核1024协调。每个任务管理器可以与一核1024阵列相关联,该核1024阵列为神经网络提供突触/神经元电路。例如,图1的核的顶层可以提供代表神经网络的输入层的电路,而核的第二层可以提供代表神经网络的隐藏层的电路。如图1A所示,全局管理器1022可以包括两个任务管理器,以与两个核1024阵列协调。
核1024可以包括一个或多个处理元件,每个处理元件包括单指令、多数据(SIMD)架构,该架构包括一个或多个处理单元,该处理单元被配置为在全局管理器1022的控制下对通信的数据执行一个或多个操作(例如,乘法、加法、乘法-累加等)。为了对通信的数据包执行操作,核1024可以包括一个或多个用于处理数据包中的信息的处理元件。每个处理元件可以包括任意数量的处理单元。在一些实施例中,核1024可以被认为是瓦片等。
主机存储器104可以是片外存储器,例如主机CPU的存储器。例如,主机存储器104可以是双倍数据速率同步动态随机存取存储器(例如,DDR SDRAM)等。与集成在一个或多个处理器中的片上存储器相比,主机存储器104可以被配置为以更慢的访问速度存储大量数据,充当更高级别的高速缓存。
存储控制器106可以管理从全局存储器116内的特定存储器块(例如,HBM2)读取数据,以及向其中写入数据。例如,存储控制器106可以管理来自外部芯片通信***102(例如,来自DMA单元108或与另一加速器对应的DMA单元)或来自片上通信***102(例如,经由全局管理器1022的任务管理器控制的2D网格来自核1024中的本地存储器)的数据的读取/写入。此外,虽然图1A中示出了一个存储控制器,应当理解,加速器架构100中可以提供一个以上的存储器控制器。例如,全局存储器116内的每个存储器块(例如,HBM2)可以有一个存储控制器。
存储控制器106可以生成存储器地址并启动存储器读或写循环。存储控制器106可包含可由一个或多个处理器写入和读取的若干硬件寄存器。寄存器可以包括存储器地址寄存器、字节计数寄存器、一个或多个控制寄存器以及其他类型的寄存器。这些寄存器可以指定如下特征的一些组合:源、目的地、传输方向(从输入/输出(I/O)设备读取或写入I/O设备)、传输单元的大小、一次突发传输的字节数、和/或内存控制器的其他典型特征。
DMA单元108可以帮助在主机存储器104和全局存储器116之间传输数据。另外,DMA单元108可以帮助在多个加速器之间传输数据。DMA单元108可以允许片外设备访问片上和片外存储器而不会引起主机CPU中断。因此,DMA单元108还可生成存储器地址并启动存储器读或写循环。DMA单元108还可包含可由一个或多个处理器写入和读取的若干硬件寄存器,所述硬件寄存器包括存储器地址寄存器、字节计数寄存器、一个或多个控制寄存器和其他类型的寄存器。这些寄存器可以指定源、目的地、传输方向(从输入/输出(I/O)设备读取或写入I/O设备)、传输单元的大小和/或一次突发传输的字节数。应当理解,加速器架构100可以包括第二DMA单元,其可以用于在其他加速器架构之间传输数据,以允许多个加速器架构直接通信而不涉及主机CPU。
JTAG/TAP控制器110可以指定实现串行通信接口(例如JTAG接口)的专用调试端口,用于对加速器的低开销访问,而不需要对***地址和数据总线的直接外部访问。JTAG/TAP控制器110还可以具有片上测试访问接口(例如,TAP接口),该接口实现访问一组测试寄存器的协议,该组测试寄存器呈现芯片逻辑级别和各个部分的设备能力。
***接口112(例如PCIe接口),如果存在的话,用作(并且通常是)芯片间总线,提供加速器和其他设备之间的通信。
总线114包括芯片内总线和芯片间总线。芯片内总线按照***架构的要求将所有内部组件相互连接。虽然并非所有组件都连接到所有其他组件,但所有组件都与它们需要与之通信的其他组件有某种连接。芯片间总线将加速器与其他设备连接起来,例如片外存储器或***设备。通常,如果有***接口112(例如,芯片间总线),则总线114仅与芯片内总线有关,但在某些实现中,它仍可与专用芯片间总线通信有关。
虽然图1A的加速器架构100大体针对NPU架构(如下文进一步描述),但应了解,所公开的实施例可应用于任何类型的加速器以加速诸如深度学习之类的一些应用。还可以理解的是,所公开的实施例可以应用于任何加速器,例如具有SIMD架构的芯片。此类加速器例如可以是具有矢量或矩阵处理能力的GPU(图形处理单元)、FPGA(现场可编程门阵列)、ASIC(专用集成电路)或其他类型的用于深度学习的神经网络加速器。SIMD或矢量架构通常用于支持具有数据并行性的计算设备,例如图形处理和深度学习。SIMD架构可以包括多个处理元件,其中每个处理元件可以同时对多个数据点执行相同的操作。
现在参考图1B,其示出了与本公开的实施例一致的示例性神经网络加速器***1000的框图。神经网络加速器***1000可以包括神经网络处理单元(NPU)1002、NPU存储器1004、主机CPU 1008、与主机CPU 1008(其可以对应于图1A的主机存储器104)相关联的主机存储器1010、和磁盘1012。
如图1B所示,NPU 1002可以通过***接口(例如,图1A的***接口112)与主机CPU1008连接。如本文所指,神经网络处理单元(例如,NPU 1002)可以是用于加速神经网络计算任务的计算设备。在一些实施例中,NPU 1002可以被配置为用作主机CPU 1008的协处理器。
在一些实施例中,NPU 1002可以包括编译器(未示出)。编译器是一种程序或计算机软件,它将以一种编程语言编写的计算机代码转换为NPU指令以创建可执行程序。在机器应用中,编译器可以执行多种操作,例如预处理、词法分析、解析、语义分析、将输入程序转换为中间表示、代码优化和代码生成,或它们的组合。
在一些实施例中,编译器可以在主机单元(例如,图1B的主机CPU 1008或主机存储器1010)上,其被配置为将一个或多个命令推送到NPU 1002。基于这些命令,任务管理器(例如,图1A的任务管理器102)可以将任意数量的任务分配给一个或多个核或处理元件(为简单起见,下文将称为核,但核可包括多个处理元件或从处理元件中分离出来)。一些命令可以指示DMA单元(例如,图1A的DMA单元108)将指令和数据从主机存储器(例如,图1A的主机存储器104)加载到全局存储器中。然后可以将加载的指令分发到分配有对应任务的每个核(例如,图1A的核1024),并且一个或多个核可以处理这些指令。
可以理解,核接收的前几条指令可以指示核将来自全局存储器的数据加载/存储到核的一个或多个本地存储器(例如,核的存储器或每个激活的核的本地存储器)。每个核然后可以启动指令流水线,这涉及从本地存储器获取指令(例如,通过获取单元),对指令进行解码(例如,通过指令解码器)并生成本地存储器地址(例如,对应于操作数),读取源数据,执行或加载/存储操作,然后写回结果。
主机CPU 1008可以与主机存储器1010和磁盘1012相关联。在一些实施例中,主机存储器1010可以是与主机CPU 1008相关联的集成存储器或外部存储器。主机存储器1010可以是本地或全局存储器。在一些实施例中,磁盘1012可以包括配置为为主机CPU 1008提供附加存储器的外部存储器。
图2图示了与本公开的实施例一致的具有异构平台的示例性计算***200。计算***200包括调度器210和异构计算资源220。在一些实施例中,异构计算资源220可以包括多个目标设备D1至Dn。在一些实施例中,异构计算资源220可以包括一目标设备,该目标设备中的处理元件不具有相等处理性能。调度器210被配置为考虑如下方面来调度任务:操作的执行顺序、以及在哪个目标设备中处理哪个操作或在哪个处理元件中处理哪个操作。在本公开的一些实施例中,调度器210可以是任何形式,包括但不限于存储在计算机可读介质中以供包括一个或多个处理器的计算设备使用或与其结合使用的可执行指令。在一些实施例中,调度器210可以被实现为被配置为执行可执行指令的操作的逻辑和/或电路。在一些实施例中,调度器210可以在编译器内实现。在一些实施例中,调度器210可以在运行时库中实现。
异构计算资源220可以包括多个目标设备Dl到Dn,这些目标设备可能不具有相同的处理性能。在一些实施例中,多个目标设备D1至Dn中的至少两个可以具有彼此不同的架构。在一些实施例中,目标设备D1至Dn可以实现为CPU、GPU、FPGA、ASIC等中的任何一种。在一些实施例中,多个目标设备D1至Dn中的至少两个可以具有不同的处理速度、功耗、传输成本等。在一些实施例中,某个目标设备可以被配置为专门用于以高性能例如低成本和高精度处理某个操作。在一些实施例中,目标设备D1至Dn可以是具有例如图1A的加速器架构100的加速器。
具有异构平台的(例如如图2所示的)计算***200可以通过识别用于执行相应操作的最佳目标设备以及通过优化操作的执行顺序来改进执行性能。在本发明的一些实施例中,调度器210被配置为提供计算图的任务和包括在异构计算资源220中的目标设备之间的优化映射,这将参考图3只图6进行详细描述。在一些实施例中,最优映射可以包括用于在一个目标设备中执行操作的处理元件映射。
图3图示了与本公开的实施例一致的调度器210的示例性组件的框图。如图3所示,调度器210可以包括图生成器211、增广图生成器(augmented graph generator)212、图适配器213、路径查找器214和任务分配器215。
图生成器211可以编译用于机器学习模型或神经网络模型的源代码以生成表示源代码的计算图。在一些实施例中,图生成器211可以转换用高级语言编写的机器学习模型或神经网络模型以生成表示机器学习模型或神经网络模型的计算图。在一些实施例中,计算图可以从最初从源代码编译的另一高级代码生成。在一些实施例中,机器学习模型可以是经过训练的冻结机器学习模型。在一些实施例中,图生成器211可以通过解析机器学习模型来生成有向无环图(DAG)形式的计算图。节点代表变量、权重或计算操作,而边代表从一个节点流向另一个节点的数据或张量。代表计算操作的节点的输入边是所述计算操作消耗的输入数据,而来自节点的输出边代表计算操作产生的输出数据。
图生成器211生成的计算图的示例在图4中被示为的状态401。如状态401所示,计算图包括多个节点n1至n3,以及连接多个节点n0至n3中的两个节点的边。同样在状态401,边将输入数据“A”、“B”和“C”连接到相应的节点n1和n2。在一些实施例中,第一节点n1接收输入数据“A”和“B”作为输入并且其输出提供给第二节点n2。反过来,第二节点n2接收第一节点n1的输出和输入数据“C”作为输入,并且其输出提供给第三节点n3。第三节点n3接收第二节点n2的输出作为输入并输出输出数据“D”。在一些实施例中,计算图中可以包括任意数量的节点和边。在一些实施例中,一些节点n1至n3可以包括诸如操作类型、数据结构维度、输入节点、输出节点等信息。在此,操作可以包括卷积(Conv)、ReLU、乘法(MatrixMul)等。在一些实施例中,一些其他节点可以是非操作节点并且可以包括权重和其他参数,例如常数。在一些实施例中,输入数据“A”、“B”或“C”或输出数据“D”中的任一个可以被视为节点。边可以表示由相应边连接的两个节点之间的依赖关系。也就是说,只有在处理完边缘起点的节点后,才能处理边缘终点的节点。例如,只有在处理了第一节点n1并且将第一节点1的输出提供给第二节点n2之后,才能处理第二节点n2。
在一些实施例中,调度器210可以从其他设备或存储器获取计算图。在这些实施例中,调度器210可以不包括图生成器211。例如,调度器210可以从存储编译的计算图的存储器获得计算图,或者从与调度器210分开实现的编译器接收计算图。在一些实施例中,增广图生成器212可以从外部组件接收计算图。
回到图3,与本公开的实施例一致,增广图生成器212被配置为生成计算图(例如图生成器211生成的计算图)的增广计算图。在增广的计算图中,与本公开的实施例一致,可以包括计算图的节点的多个副本节点。
由增广图生成器212基于状态401的计算图生成的增广计算图的示例在图4中被示为状态402。如图4所示,状态401的计算图的每个节点在状态402的增广计算图中具有三个副本节点。在该示例中,异构计算资源220包括三个目标设备D1至D3,并且节点n1至n3中的每一个可以映射到这三个目标设备D1到D3。在状态402示出了增广计算图包括对应于状态401的计算图中的第一节点n1的第一组副本节点n1_D1至n1_D3。在状态402,副本节点n1_D1表示第一节点n1映射到第一目标设备D1的实例,副本节点n1_D2表示第一节点n1映射到第二目标设备D2的实例,副本节点n1_D3表示第一节点n1映射到第三目标设备D3的实例。
类似地,增广计算图可以包括对应于状态401的计算图中的第二节点n2的第二组副本节点n2_D1至n2_D3,以及对应于第三节点n3的第三组副本节点n3_D1至n3_D3。在状态402的增广计算图中,根据状态401的计算图的第一节点n1和第二节点n2之间的依赖关系,第一节点n1的每个副本节点n1_D1、n1_D2和n1_D3通过边连接到第二节点n2的每个副本节点n2_D1、n2_D2和n2_D3。类似地,第二节点n2的每个副本节点n2_D1、n2_D2和n2_D3通过边连接到第三节点n3的每个副本节点n3_D1、n3_D2和n3_D3。输入数据“A”和“B”被提供给第一节点n1的每个副本节点n1_D1、n1_D2和n1_D3。输入数据“C”被提供给第二节点n2的每个副本节点n2_D1、n2_D2和n2_D3。第三节点n3的每个副本节点n3_D1、n3_D2和n3_D3通过边连接至输出数据“D”。
在一些实施例中,第一组、第二组和第三组中的每一个中的副本节点的数量可以对应于异构计算资源220中包括的目标设备的总数。在一些实施例中,每个组中的副本节点的数量可以小于异构计算资源220中可用的目标设备的总数,因为一些目标设备可以根据先前的执行、实验、或模拟的历史被预先确定为不适合执行某些计算或执行某些计算是低效的。在一些实施例中,一些目标设备可以被预先确定为适合执行某些任务或操作,因此可以在增广计算图时排除其余的目标设备。可以通过减少增广计算图中的副本节点来降低由路径查找器214执行并将在后面解释的查找最佳路径的复杂性。
如图4中状态402所示,增广计算图可以显示在状态401的计算图中的节点和计算***200的异构计算资源220中的可用目标设备之间的映射的所有可能组合。
回到图3,与本公开的实施例一致,图适配器213被配置为适配由增广图生成器212生成的增广计算图。在一些实施例中,增广计算图可以适配包括增广计算图中包含的边和副本节点的性能值。在一些实施例中,图适配器213可以使增广计算图准备好被路径查找器214用于寻找最佳路径。
在一些实施例中,图适配器213可以用相应的性能值标记增广计算图的边和节点。在一些实施例中,性能值可以是处理与边或节点对应的任务的执行时间信息。在一些实施例中,边的执行时间可以是数据传输时间,节点的执行时间可以是执行由节点表示的某些操作的时间。一个操作或一组操作的执行时间可以通过对成本进行静态建模,从执行实验或模拟中动态分析成本,或使用基于数据结构的大小、操作类型、计算吞吐量或***内存带宽的执行历史记录来估计。类似地,可以根据例如数据结构的大小、链路带宽等来估计数据传输时间。在一些实施例中,可以通过对来自执行实验或模拟的成本进行建模来估计边缘上的数据传输成本,所述实验和模拟考虑可能的成本,例如片上缓冲器重用率、数据布局和流水线。
在一些实施例中,性能值可以是处理与边缘或节点对应的任务的功耗信息。在一些实施例中,性能值可以是表示诸如存储器使用效率之类的其他***性能的信息。在一些实施例中,性能值可以代表多个因子,包括执行时间、功耗和内存使用效率等。例如,可以基于加权因子的组合值来确定性能值。这里,多个因子的权重可以设置为彼此不同。根据本公开的实施例,可以执行调度以单独地或整体地优化各种性能因子。
现在参考图5,将解释计算图上的成本标记的示例。为简化和说明之目的,假设每个节点由一个目标设备(例如,D1)执行,并且性能值是处理与图5中的边或节点相对应的某些任务的成本。如图5中状态501所示,节点和边都标有相应的成本。输入数据“A”和第一节点n1之间的边用表示数据传输成本的成本tA1来标记。在一些实施例中,数据传输的成本tA1可以是将输入数据“A”从主机CPU存储器传输到执行第一节点n1的目标设备的片上存储空间的时间。第一节点n1被标记为成本t1,表示执行第一节点n1的成本。在一些实施例中,成本t1可以是在指定的目标设备上执行第一节点n1的时间。第一节点n1和第二节点n2之间的边标有表示数据传输成本的成本t12。在一些实施例中,数据传输的成本t12可以是将第一节点n1的输出从用于执行第一节点n1的片上存储空间转移到用于执行第二节点n2的片上存储空间的时间。边和节点的测试可以用它们在图5中以类似的方法标记相应成本。
回到参考图4,与本发明实施例一致,状态402的增广计算图的边和副本节点可以由图3的图适配器213类似地标记。图4中的状态403示出了具有成本的增广计算图的示例。输入数据“A”和副本节点n1_D1之间的边标有成本tA1_D1,表示数据传输的成本。在一些实施例中,数据传输的成本tA1_D1可以是将输入数据“A”从主机CPU存储器传输到执行第一节点n1的目标设备D1的片上存储空间的时间。副本节点n1_D1被标记为成本t1_D1,表示在目标设备D1上执行第一节点n1的成本。在一些实施例中,成本t1_D1可以是目标设备D1执行第一节点n1的时间。副本节点n1_D1和n2_D1之间的边标有成本t12_D1D1,表示数据传输的成本。在一些实施例中,数据传输成本t12_D1D1可以是将第一节点n1的输出从用于执行第一节点n1的目标设备D1的片上存储空间转移到用于执行第二节点n2的目标设备D1的片上存储空间的时间。副本节点n1_D2被标记为成本t1_D2(未示出),表示在目标设备D2上执行第一节点n1的成本。在一些实施例中,成本t1_D2可以是目标设备D2执行第一节点n1的时间。副本节点n1_D1和n2_D2之间的边可以用表示数据传输成本的成本t12_D1D2(未示出)来标记。在一些实施例中,数据传输成本t12_D1D2可以是将第一节点n1的输出从用于执行第一节点n1的目标设备D1的片上存储空间转移到用于执行第二节点n2的目标设备D2的片上存储空间的时间。其余的边和节点可以在图4中用类似的方式标记它们的相应成本,为简单起见,在与图4予以省略。
在一些实施例中,图适配器213还可以被配置为向增广计算图添加两个附加节点。如图4所示,在增广计算图的前端添加初始节点ni,在增广计算图的末尾添加最终节点no。在此,可以添加两个节点ni和no以便于由路径查找器214查找最佳路径。因此,在一些实施例中,从初始节点ni到输入数据“A”、“B”和“C”的边和从输出数据“D”到最终节点no的边可以标记为最小成本或零成本。
回到参照图3,与本公开的实施例一致,路径查找器214被配置为在图4的状态403确定跨越适配的计算图的路径。因为适配的计算图可以包括如图4的状态403所示的节点和可用目标设备之间所有可能映射的成本。,路径查找器214可以例如通过查找从初始节点ni到最终节点no的最短路径来确定路径。在此,最短路径可以根据***的目标进行配置,并且可以表示在适配的计算图中找到的路径中具有最小成本或最大性能的路径。例如,路径查找器214可以在从初始节点ni到最终节点no的多条路径中找到具有最低成本的路径。路径可以由包含在适配计算图中的节点和边定义。
例如,路径P1的总成本C1可以通过将沿路径P1从初始节点n1到最终节点no的边和节点的成本的所有的值相加来确定,该路径P1经过来自第一组的副本节点n1_D1、来自第二组的副本节点n2_D1和来自第三组的副本节点n3_D1。这里,路径P1表示三个节点n1、n2和n3全部在目标设备D1执行情况。路径P1的总成本C1可以是成本tA1_D1、t1_D1、t12_D1D1、t2_D1、t23_D1D1、t3_D1和t3D_D1的总和。其中两个节点n1和n2在目标设备D1执行并且一个节点n3在目标设备D2执行的路径P2的总成本C2可以是成本tA1_D1、t1_D1、t12_D1D1、t2_D1、t23_D1D2、t3_D2和t3D_D2的总和。以类似的方式,路径查找器214可以确定从初始节点ni到最终节点no的其他可能路径的总成本。在一些实施例中,路径查找器214可以将多条路径中具有最小总成本或最大性能值的路径确定为最短路径。在一些实施例中,诸如Dijkstra算法之类的最短路径查找技术可用于由最优路径查找器214在适配计算图中确定从初始节点ni到最终节点no的最短路径。
在一些实施例中,当确定适配计算图中的路径的总成本时,路径查找器214可以考虑诸如计算图的依赖条件之类的约束。返回来参考图5,应当注意在接收到输入数据“A”和“B”之前不能执行第一节点n1。在成本代表执行某些任务或操作的时间的情况下,在寻找最优路径时标有成本tA1的边和标有成本tB1的边可视为在两个成本tA1和tB1之间标有较大成本的一条边。类似地,在接收到第一节点n1的输出和输入数据“C”之后,可以执行第二节点n2。因此,在确定执行计算图的总成本时,要考虑从输入数据“A”和“B”通过第一节点n1到第二节点n2的第一路径的成本与沿第二路径从输入数据“C”到第二节点n2的成本之间的较大者。如果成本tA1大于成本tB1,则可以将成本tA1和成本t12之和确定为沿第一路径的成本。在该示例中,执行计算图的总成本可以通过将成本t23、成本t3D、以及成本tC2与成本tA1和t12二者之和中的较大成本相加来确定。与本公开的实施例一致,路径查找器214可以通过考虑诸如计算图的依赖条件之类的约束条件以类似的方式确定增广计算图中的路径的成本。
可以理解,本发明实施例可以在将计算图中的一个节点分解为多个子节点后应用。请参考图6,将解释节点分解。与本发明的实施例一致,当在目标设备上分配计算图的任务时,可以将节点分解为子节点,以找到对某个目标设备的计算粒度的最佳匹配。在图6中,状态601示出图4中状态401的计算图的一部分,并且由此的两种不同类型的分解在状态602和603处予以示出。在状态602中,来自状态601的计算图的第二节点n2被分解成串联的两个子节点n21和n22。在状态603,来自状态601的计算图的第二节点n2被分解为并行的两个子节点n21和n22。在一些实施例中,在状态401的计算图的至少一个节点可以是更大节点的子节点。类似地,状态401处的计算图的至少一个节点可以是两个或更多个节点的融合节点。与本公开的实施例一致,寻找目标设备和节点之间的最佳映射的过程可以基于包括至少一个子节点或融合节点的计算图来执行。
根据本公开的实施例,当计算图在两个节点之间具有多条路径时,在确定最优设备映射时可以分别处理多条路径中的每条路径。例如,如图6中的状态603所示,第一节点n1和第三节点n3之间有两条路径。第一路径通过第一子节点n21,第二路径通过第二子节点n22。在一些实施例中,当确定适配计算图中的路径的总成本时,路径查找器214可以避免这些多条路径之间的设备冲突,以便最大化异构计算***中的计算并行化。例如,在确定最优路径时,可以避免将第一子节点n21和第二子节点n22都分配给同一个目标设备的情形。如果两个子节点n21和n22都分配给第一目标设备D1,并且两个子节点n21和n22以连续顺序的方式执行而不是并行执行,则第一节点n1和第三节点之间的成本n3会增加。这是因为在接收到来自第一子节点n21和第二子节点n22的输出之前,不能执行第三节点n3。
如果两个子节点n21和n22都分配给第一目标设备D1,并且两个子节点n21和n22可以在不同的处理元件上并行执行,则应当理解在这多条路径中不存在设备冲突。在将两个子节点n21和n22分配给同一目标设备时两个节点n1和n3之间的成本最小的情况下,可以将两个子节点n21和n22融合为一个节点,如图6中状态601所示。与本公开的实施例一致,在确定异构平台的最优设备映射时,节点融合可以应用于两个或多个不同节点以及一个节点的子节点。在一些实施例中,可以迭代节点融合过程直到可以去除两个节点之间的多条路径。这样,可以通过简化计算图或增广计算图来降低确定最优路径的复杂度。分解和融合过程还可以通过软硬件协同设计或硬件探索使任务分配适配目标设备的计算粒度,从而提高具有异构平台的计算***的执行性能。
回到参照图3,与本公开的实施例一致,任务分配器215被配置为基于路径查找器214确定的最佳路径将任务映射到目标设备上。例如,如果路径查找器214确定通过副本节点n1_D1、副本节点n2_D2和副本节点n3_D3的路径作为适配计算图中的最优路径,则任务分配器215可以将在图4中的状态401的计算图的任务相应地分配到目标设备上。在该示例中,任务分配器215可以将第一节点n1映射到目标设备D1,将第二节点n2映射到目标设备D2,将第三节点映射到目标设备D3。
图7图示了与本公开的实施例一致的用于在异构计算资源上调度计算图的示例性流程图。在步骤S710,生成表示机器学习模型的源代码的计算图。例如,如图4的状态401所示,生成的计算图可以包括多个节点和边,并且是有向无环图(DAG)的形式。
在步骤S720,与本公开的实施例一致,可以增广生成的计算图。在增广计算图中,与本公开的实施例一致,可以包括计算图的节点的多个副本节点。图4中的状态402示出了由增广图生成器212基于状态401的计算图生成的增广计算图的示例。如图4所示,状态401的计算图的每个节点在状态402的增广计算图中具有三个副本节点。在该示例中,异构计算资源220包括三个目标设备D1至D3,节点n1至n3中的每一个可以被映射到这三个目标设备D1到D3。在一些实施例中,第一组、第二组和第三组中的每一个中的副本节点的数量可以对应于异构计算资源220中包括的目标设备的总数。
在一些实施例中,每个组中的副本节点的数量可以小于异构计算资源220中可用的目标设备的总数,因为基于先前的执行、实验或模拟的历史,可能会预先确定一些目标设备不适合执行某些计算或在执行时效率很低较低。在一些实施例中,可以预先确定一些目标设备适合执行某些任务或操作,因此可以在增广计算图时排除其余的目标设备。通过减少增广计算图中的副本节点,可以降低寻找最佳路径的复杂性。如图4中的状态402所示,增广计算图可以示出在状态401的计算图中的节点和计算***200的异构计算资源220中的可用目标设备之间的映射的所有可能组合。
在步骤S730,与本公开的实施例一致,可以适配增广的计算图,在一些实施例中,可以适配增广计算图以包括增广计算图中包括的边和副本节点的性能值。在一些实施例中,可以用相应的性能值来标记增广计算图的边和节点。在一些实施例中,性能值可以是处理与边缘或节点对应的任务的执行时间信息。在一些实施例中,边的执行时间可以是数据传输时间,节点的执行时间可以是执行由节点表示的某些操作的时间。在一些实施例中,性能值可以是处理与边或节点对应的任务的功耗信息。在一些实施例中,性能值可以是表示诸如内存使用效率之类的其他***性能信息。在一些实施例中,性能值可以代表多个因子,包括执行时间、功耗和内存使用效率等。例如,可以基于加权因子的组合值来确定性能值。这里,多个因子的权重可以设置为彼此不同。
在步骤S740,根据本公开的实施例,可以确定跨越适配的计算图(例如,图4的状态403的计算图)的路径。因为适配的计算图可以包括节点和可用目标设备之间所有可能映射的成本,如图4的状态403所示。可以例如通过找到从初始节点ni到最终节点no的最短路径来确定路径。这里,最短路径可以表示在适配的计算图中找到的路径中具有最小成本或最大性能的路径。在一些实施例中,可以确定从初始节点ni到最终节点no的多条路径中成本最低的路径为最短路径。路径可以由包含在适配的计算图中的节点和边定义。
在一些实施例中,当确定适配的计算图中的路径的总成本时,可以考虑诸如计算图的依赖条件的约束。还可以理解,本发明实施例可以在将计算图中的节点分解为多个子节点后应用。根据本公开的实施例,可以基于包括至少一个子节点或融合节点的计算图来执行寻找目标设备和节点之间的最佳映射这一过程。还可以理解,根据本公开的实施例,在确定异构平台中的最佳设备映射时,节点融合可以应用于两个或多个不同节点以及一个节点的子节点。在一些实施例中,可以迭代节点融合过程直到可以移除两个节点之间的多条路径。这样,可以通过简化计算图或增广计算图来降低确定最优路径的复杂度。分解和融合过程可以通过软硬件协同设计或硬件探索,使任务分配适合目标设备的计算粒度,从而提高具有异构平台的计算***的执行性能。
在步骤S750,根据本公开的实施例,可以根据在步骤S740确定的最佳路径,将计算图的节点对应的任务映射到目标设备上。例如,如果通过副本节点n1_D1、副本节点n2_D2和副本节点n3_D3的路径被确定为适配的计算图中的最佳路径,则图4中状态401的计算图的任务可以相应地映射到目标设备上。在该示例中,第一节点n1被分配给目标设备D1,第二节点n2被分配给目标设备D2,第三节点被分配给目标设备D3。
本公开的实施例提供了用于根据异构加速器的计算粒度划分计算图并找到计算图的任务与目标设备之间的最佳映射以最大化计算***的性能的方法和技术。根据本公开的实施例,通过基于计算图生成具有潜在目标设备的增广计算图,可以将寻找最优设备映射问题转换为寻找图中的最优路径的问题。根据本公开的实施例,可以用相应的性能值标记增广计算图中的边和节点。可以使用上面参照图7解释的逐步方法离线以及在线执行本公开的实施例。
根据本公开的实施例,可以考虑到各种优化约束来优化设备的映射。例如,考虑到各种因素,可以优化设备映射以减少执行时间、降低功耗或提高整体性能。根据本公开的实施例,在异构加速器架构中,可以获得最优设备映射以及并行执行。根据本公开的实施例,还可以识别加速器的最佳计算粒度,这使得加速器在设计简单化或执行性能方面的操作更加高效。
本文的实施例包括数据库***、方法和有形的非暂时性计算机可读介质。例如,这些方法可以由从有形的非暂时性计算机可读存储介质接收指令的至少一个处理器执行。类似地,与本公开一致的***可以包括至少一个处理器和存储器,并且该存储器可以是有形的非暂时性计算机可读存储介质。如这里所使用的,有形的非暂时性计算机可读存储介质是指可以存储至少一个处理器可读的信息或数据的任何类型的物理存储器。示例包括随机存取存储器(RAM)、只读存储器(ROM)、易失性存储器、非易失性存储器、硬盘驱动器、CDROM、DVD、闪存驱动器、磁盘、寄存器、缓存和任何其他已知的物理存储介质。单数术语,例如“存储器”和“计算机可读存储介质”,可以另外指代多个结构,例如多个存储器和/或计算机可读存储介质。如本文所指,除非另有说明,否则“存储器”可包括任何类型的计算机可读存储介质。计算机可读存储介质可以存储用于由至少一个处理器执行的指令,包括用于使处理器执行与本实施例一致的步骤或阶段的指令。此外,一个或多个计算机可读存储介质可用于实现计算机实现的方法。术语“计算机可读存储介质”应理解为包括有形物品,不包括载波和瞬态信号。
在前述说明书中,已经参考可以随实施方式而变化的许多具体细节描述了实施方式。可以对所描述的实施例进行某些修改和修改。考虑到本文公开的本发明的说明书和实践,其他实施例对于本领域技术人员来说是显而易见的。说明书和实施例仅被认为是示例性的,本发明的真正范围和精神由所附权利要求指示。图中所示的步骤顺序也旨在仅用于说明目的,并不旨在限于任何特定的步骤顺序。因此,本领域技术人员可以理解,在实现相同方法的同时,可以以不同的顺序执行这些步骤。
Claims (24)
1.一种在异构计算资源上调度计算图的方法,该方法包括:
生成增广的计算图,所述增广的计算图包括对应于所述计算图中第一节点的第一组副本节点和对应于所述计算图中第二节点的第二组副本节点,其中根据所述计算图中的所述第一节点和所述第二节点之间的依赖关系,所述第一组的多个副本节点通过多个边连接到所述第二组的多个副本节点,并且其中所述第一组副本节点中的每一个和第二组副本节点中的每一个都至少与所述异构计算资源的一计算资源相关联;
适配所述增广的计算图以包括所述边、第一组的多个副本节点和第二组的多个副本节点的性能值;所述适配指用相应的性能值标记增广所述计算图的边和节点;
基于所述性能值确定通过第一组的一个副本节点和第二组的一个副本节点跨越适配的计算图的路径;所述路径包括具有最小成本或最大性能的路径;
根据确定的所述路径分配所述异构计算资源中的目标设备用于执行所述第一节点的操作和所述第二节点的操作。
2.如权利要求1所述的方法,其特征在于,所述第一组中的副本节点的数量对应于所述异构计算资源中执行所述第一节点操作的潜在目标设备的数量。
3.如权利要求2所述的方法,其特征在于,所述潜在目标设备选自所述异构计算资源中的多个目标设备。
4.如权利要求2或3所述的方法,其特征在于,所述第一组中的每个副本节点表示将所述第一节点的操作被分配给对应的每个潜在目标设备。
5.根据权利要求1至4中任一项所述的方法,其中,所述性能值包括数据传输时间和执行时间,所述数据传输时间与所述多个边中的一个边相对应,所述执行时间与所述第一组的多个副本节点中的一副本节点相对应。
6.根据权利要求1至5中任一项所述的方法,其中,所述适配的计算图包括初始节点和最终节点,所述初始节点和最终节点在适配所述增广的计算图时被添加到所述增广的计算图的前端和末端。
7.如权利要求1至6中任一项所述的方法,其中,基于沿着跨越所述适配的计算图的可能路径的性能值的总和的来确定所述路径。
8.如权利要求7所述的方法,其中,分配与所述第一组的所述一副本节点对应的目标设备用于执行所述第一节点的操作,并且分配与所述第二组的所述一副本节点对应的目标设备用于执行所述第二节点的操作。
9.一种用于在异构计算资源上调度计算图的装置,所述装置包括:
存储器,所述存储器存储有一组指令;和
一个或多个处理器,所述一个或多个处理器被配置为执行该组指令以使装置执行:
生成增广的计算图,所述增广的计算图包括对应于所述计算图中第一节点的第一组副本节点和对应于所述计算图中第二节点的第二组副本节点,其中根据所述计算图中的所述第一节点和所述第二节点之间的依赖关系,所述第一组的多个副本节点通过多个边连接到所述第二组的多个副本节点,并且其中第一组副本节点中的每一个和第二组副本节点中的每一个都至少与所述异构计算资源的一计算资源相关联;
适配所述增广的计算图以包括所述边、第一组的多个副本节点和第二组的多个副本节点的性能值;所述适配指用相应的性能值标记增广所述计算图的边和节点;
基于所述性能值确定通过第一组的一副本节点和第二组的一副本节点跨越适配的计算图的路径;所述路径包括具有最小成本或最大性能的路径;
根据确定的所述路径分配所述异构计算资源中的目标设备用于执行所述第一节点的操作和所述第二节点的操作。
10.如权利要求9所述的装置,其特征在于,所述第一组中的副本节点的数量对应于所述异构计算资源中执行所述第一节点操作的潜在目标设备的数量。
11.如权利要求10所述的装置,其特征在于,所述潜在目标设备选自所述异构计算资源中的多个目标设备。
12.根据权利要求10或11所述的装置,其中,所述第一组中的每个副本节点表示将所述第一节点的操作被分配给对应的每个潜在目标设备。
13.根据权利要求9至12中任一项所述的装置,其中,所述性能值包括数据传输时间和执行时间,所述数据传输时间与所述多个边中的一个边相对应,所述执行时间与所述第一组的多个副本节点中的一副本节点相对应。
14.根据权利要求9至13中任一项所述的装置,其中,所述适配的计算图包括初始节点和最终节点,所述初始节点和最终节点在适配所述增广的计算图时被添加到所述增广的计算图的前端和末端。
15.如权利要求9至14中任一项所述的装置,其中,基于沿着跨越所述适配的计算图的可能路径的性能值的总和的来确定所述路径。
16.如权利要求9所述的装置,其中,分配与所述第一组的所述一副本节点对应的目标设备用于执行所述第一节点的操作,并且分配与所述第二组的所述一副本节点对应的目标设备用于执行所述第二节点的操作。
17.一种非暂时性计算机可读介质,其存储有一组指令,所述一组指令可由计算设备的至少一个处理器执行,以使得所述计算设备执行用于在异构计算资源上调度计算图的方法,所述方法包括:
生成增广的计算图,所述增广的计算图包括对应于所述计算图中第一节点的第一组副本节点和对应于所述计算图中第二节点的第二组副本节点,其中根据所述计算图中的所述第一节点和所述第二节点之间的依赖关系,所述第一组的多个副本节点通过多个边连接到所述第二组的多个副本节点,并且其中第一组副本节点中的每一个和第二组副本节点中的每一个都至少与所述异构计算资源的一计算资源相关联;
适配所述增广的计算图以包括所述边、第一组的多个副本节点和第二组的多个副本节点的性能值;所述适配指用相应的性能值标记增广所述计算图的边和节点;
基于所述性能值确定通过第一组的一副本节点和第二组的一副本节点跨越适配的计算图的路径;所述路径包括具有最小成本或最大性能的路径;
根据确定的所述路径分配所述异构计算资源中的目标设备用于执行所述第一节点的操作和所述第二节点的操作。
18.根据权利要求17所述的计算机可读介质,其中,所述第一组中的副本节点的数量对应于用于所述异构计算资源中执行所述第一节点的操作的潜在目标设备的数量。
19.如权利要求18所述的计算机可读介质,其特征在于,所述潜在目标设备选自所述异构计算资源中的多个目标设备。
20.如权利要求18或19所述的计算机可读介质,其中第一组中的每个副本节点表示第一节点的操作被分配给对应的每个潜在目标设备。
21.根据权利要求17至20中任一项所述的计算机可读介质,其中,所述性能值包括数据传输时间和执行时间,所述数据传输时间与所述多个边中的一个边相对应,所述执行时间与所述第一组的多个副本节点中的一副本节点相对应。
22.根据权利要求17至21中任一项所述的计算机可读介质,其中,所述适配的计算图包括初始节点和最终节点,所述初始节点和最终节点在适配所述增广的计算图时被添加到所述增广的计算图的前端和末端。
23.根据权利要求17至22中任一项所述的计算机可读介质,其中,基于沿着经过所述适配的计算图的可能路径的性能值的总和的来确定所述路径。
24.如权利要求17所述的计算机可读介质,其中,分配与所述第一组的所述一副本节点对应的目标设备用于执行所述第一节点的操作,并且分配与所述第二组的所述一副本节点对应的目标设备用于执行所述第二节点的操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/394,921 | 2019-04-25 | ||
US16/394,921 US11556756B2 (en) | 2019-04-25 | 2019-04-25 | Computation graph mapping in heterogeneous computer system |
PCT/US2020/028492 WO2020219335A1 (en) | 2019-04-25 | 2020-04-16 | Computation graph mapping in heterogeneous computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113748399A CN113748399A (zh) | 2021-12-03 |
CN113748399B true CN113748399B (zh) | 2024-05-03 |
Family
ID=72917188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080030945.1A Active CN113748399B (zh) | 2019-04-25 | 2020-04-16 | 在异构计算资源上调度计算图的方法、装置及可读介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11556756B2 (zh) |
CN (1) | CN113748399B (zh) |
WO (1) | WO2020219335A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11790250B2 (en) * | 2019-05-09 | 2023-10-17 | Intel Corporation | Using computational cost and instantaneous load analysis for intelligent deployment of neural networks on multiple hardware executors |
CN111309479B (zh) * | 2020-02-14 | 2023-06-06 | 北京百度网讯科技有限公司 | 一种任务并行处理的实现方法、装置、设备和介质 |
EP4148569A1 (fr) * | 2021-09-13 | 2023-03-15 | Bull SAS | Procédé d'ordonnancement d'un ensemble de taches de calcul dans un supercalculateur |
EP4191487A1 (en) * | 2021-12-06 | 2023-06-07 | Tata Consultancy Services Limited | Enhancing batch predictions by localizing jobs contributing to time deviation and generating fix recommendations |
CN117827619B (zh) * | 2024-02-29 | 2024-05-24 | 浪潮电子信息产业股份有限公司 | 异构算力的耗时预测仿真方法、装置、设备、介质及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103177417A (zh) * | 2013-01-06 | 2013-06-26 | 中国人民解放军信息工程大学 | 基于GPGPU的数学形态学LiDAR点云快速滤波方法 |
CN106161170A (zh) * | 2016-07-12 | 2016-11-23 | 广东工业大学 | 一种间隔执行的异步文件选择和副本放置方法 |
CN107092339A (zh) * | 2017-03-08 | 2017-08-25 | 广东工业大学 | 移动云计算节点异构的任务分流方法 |
CN109343942A (zh) * | 2018-09-03 | 2019-02-15 | 北京邮电大学 | 基于边缘计算网络的任务调度方法 |
CN109522108A (zh) * | 2018-10-30 | 2019-03-26 | 西安交通大学 | 一种基于Kernel合并的GPU任务调度***及方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7548241B2 (en) * | 2002-01-04 | 2009-06-16 | Intel Corporation | Determining a node path through a node graph |
US7774471B2 (en) * | 2006-06-15 | 2010-08-10 | Adaptive Computing Enterprises, Inc. | Optimized multi-component co-allocation scheduling with advanced reservations for data transfers and distributed jobs |
JP4936517B2 (ja) * | 2006-06-06 | 2012-05-23 | 学校法人早稲田大学 | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
US7907596B2 (en) * | 2007-11-30 | 2011-03-15 | International Business Machines Corporation | Valley-free shortest path method |
KR101180763B1 (ko) * | 2008-08-04 | 2012-09-07 | 후지쯔 가부시끼가이샤 | 멀티프로세서 시스템, 멀티프로세서 시스템용 관리 장치 및 멀티프로세서 시스템용 관리 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 |
US8369564B2 (en) * | 2009-06-30 | 2013-02-05 | Apple Inc. | Automatic generation and use of region of interest and domain of definition functions |
US8473928B2 (en) * | 2010-04-19 | 2013-06-25 | Sap Ag | Call graph simplification/comparison and automatic initial suspects finding of performance degradations |
WO2012067688A1 (en) * | 2010-08-25 | 2012-05-24 | Et International, Inc. | Codeletset representation, manipulation, and execution-methods, system and apparatus |
US8713518B2 (en) * | 2010-11-10 | 2014-04-29 | SRC Computers, LLC | System and method for computational unification of heterogeneous implicit and explicit processing elements |
US9875142B2 (en) * | 2013-03-22 | 2018-01-23 | Palo Alto Research Center Incorporated | System and method for efficient task scheduling in heterogeneous, distributed compute infrastructures via pervasive diagnosis |
EP4202782A1 (en) | 2015-11-09 | 2023-06-28 | Google LLC | Training neural networks represented as computational graphs |
US10796231B2 (en) * | 2016-07-26 | 2020-10-06 | Intuit Inc. | Computer-implemented systems and methods for preparing compliance forms to meet regulatory requirements |
US10628223B2 (en) * | 2017-08-22 | 2020-04-21 | Amrita Vishwa Vidyapeetham | Optimized allocation of tasks in heterogeneous computing systems |
US11568218B2 (en) * | 2017-10-17 | 2023-01-31 | Xilinx, Inc. | Neural network processing system having host controlled kernel acclerators |
US11100688B2 (en) * | 2018-07-26 | 2021-08-24 | Google Llc | Methods and systems for encoding graphs |
RU2697649C1 (ru) * | 2018-10-23 | 2019-08-15 | Общество с ограниченной ответственностью "Аби Продакшн" | Способы и системы сегментации документа |
-
2019
- 2019-04-25 US US16/394,921 patent/US11556756B2/en active Active
-
2020
- 2020-04-16 CN CN202080030945.1A patent/CN113748399B/zh active Active
- 2020-04-16 WO PCT/US2020/028492 patent/WO2020219335A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103177417A (zh) * | 2013-01-06 | 2013-06-26 | 中国人民解放军信息工程大学 | 基于GPGPU的数学形态学LiDAR点云快速滤波方法 |
CN106161170A (zh) * | 2016-07-12 | 2016-11-23 | 广东工业大学 | 一种间隔执行的异步文件选择和副本放置方法 |
CN107092339A (zh) * | 2017-03-08 | 2017-08-25 | 广东工业大学 | 移动云计算节点异构的任务分流方法 |
CN109343942A (zh) * | 2018-09-03 | 2019-02-15 | 北京邮电大学 | 基于边缘计算网络的任务调度方法 |
CN109522108A (zh) * | 2018-10-30 | 2019-03-26 | 西安交通大学 | 一种基于Kernel合并的GPU任务调度***及方法 |
Non-Patent Citations (1)
Title |
---|
并行分布计算中的任务调度问题(一);陈华平;李京;陈国良;;计算机科学;19970131;24(第01期);正文 * |
Also Published As
Publication number | Publication date |
---|---|
WO2020219335A1 (en) | 2020-10-29 |
US20200342286A1 (en) | 2020-10-29 |
CN113748399A (zh) | 2021-12-03 |
US11556756B2 (en) | 2023-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113748399B (zh) | 在异构计算资源上调度计算图的方法、装置及可读介质 | |
EP2710467B1 (en) | Automatic kernel migration for heterogeneous cores | |
US20200249998A1 (en) | Scheduling computation graph heterogeneous computer system | |
US11693633B2 (en) | Methods and apparatus to detect and annotate backedges in a dataflow graph | |
US8782645B2 (en) | Automatic load balancing for heterogeneous cores | |
US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
US11714780B2 (en) | Compiler flow logic for reconfigurable architectures | |
CN113139648B (zh) | 执行神经网络模型的pim架构的数据布局优化 | |
EP3719633A1 (en) | Methods and apparatus to insert buffers in a dataflow graph | |
US11694075B2 (en) | Partitioning control dependency edge in computation graph | |
US20200042216A1 (en) | Storage-based graph for enabling computation graph optimization | |
US9645802B2 (en) | Technique for grouping instructions into independent strands | |
US20120331278A1 (en) | Branch removal by data shuffling | |
US20240078098A1 (en) | Analysis assistant for determining execution inefficiencies in dataflow programs | |
US20210248073A1 (en) | System and method for memory management | |
CN116802605A (zh) | 用于根据触发条件执行指令的电路和方法 | |
CN112906877A (zh) | 用于执行神经网络模型的存储器架构中的数据布局有意识处理 | |
Shahsavani et al. | Efficient compilation and mapping of fixed function combinational logic onto digital signal processors targeting neural network inference and utilizing high-level synthesis | |
US20240220698A1 (en) | Database driven place and route for coarse-grain reconfigurable architectures | |
US20240220766A1 (en) | Iterative database driven place and route for coarse-grain reconfigurable architectures | |
US20240220803A1 (en) | Training a graph neural network for database driven place and route | |
US20240193721A1 (en) | System and method for adaptive graph-to-stream scheduling |
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 |