CN111476344A - 多径神经网络、资源分配的方法及多径神经网络分析器 - Google Patents

多径神经网络、资源分配的方法及多径神经网络分析器 Download PDF

Info

Publication number
CN111476344A
CN111476344A CN202010070764.3A CN202010070764A CN111476344A CN 111476344 A CN111476344 A CN 111476344A CN 202010070764 A CN202010070764 A CN 202010070764A CN 111476344 A CN111476344 A CN 111476344A
Authority
CN
China
Prior art keywords
neural network
multipath neural
multipath
resource allocation
allocation
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.)
Pending
Application number
CN202010070764.3A
Other languages
English (en)
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN111476344A publication Critical patent/CN111476344A/zh
Pending legal-status Critical Current

Links

Images

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/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
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • 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/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种多径神经网络、资源分配的方法及多径神经网络分析器。所述资源分配的方法可使用包含接口和处理装置的多径神经网络分析器来为多径神经网络最优地分配。接口接收多径神经网络。处理装置生成多径神经网络,以包含通过多径神经网络的关键路径的一个或多个层,所述一个或多个层分配有可用以执行多径神经网络的第一计算资源分配。关键路径限制多径神经网络的吞吐量。第一计算资源分配将多径神经网络的执行时间减少到小于用于多径神经网络的第二计算资源分配的基线执行时间。用于关键路径的第一层的第一计算资源分配不同于用于关键路径的第一层的第二计算资源分配。

Description

多径神经网络、资源分配的方法及多径神经网络分析器
相关申请的交叉参考
本申请要求2019年1月23日申请的美国临时申请第62/796,071号的优先权,所述临时申请的公开内容以全文引用的方式并入本文中。此外,本申请与美国专利申请序列号(代理人案号第1535-479号)并行申请,所述美国专利申请的公开内容以全文引用的方式并入本文中。
技术领域
本文中所公开的主题涉及神经网络。更具体地说,本文中所公开的主题涉及用于在多径神经网络的不同路径中将计算资源分配到不同层的系统和方法。
背景技术
典型的图形处理单元(graphic processing unit;GPU)平台并不允许GPU操作的并行执行。为在典型GPU上并行地启动多个操作,每一操作必须指派给单独执行器,也就是说,统一计算架构(Compute Unified Device Architecture;CUDA)编程模型中的单独串流。然而,针对大部分流行GPU内核并行地运行两个或大于两个GPU内核是几乎不可能的。流行内核占据所有GPU核心资源(包含暂存器和共享存储器)且并未允许GPU调度程序执行来自同一核心上的另一内核的块。当前的GPU平台依赖于用于调度安排的多个块,且另一GPU操作的并行执行可仅在块的数目低时为可能的。由于大部分GPU内核通常具有足够的块数以占据所有可用的GPU核心,另一GPU内核的执行被推迟直到第一内核完成之后为止,引起两个操作的依序执行。因此,当前的GPU平台利用用于个别层(内核)的装置(例如GPU)核心的100%,进而阻止独立内核的并行执行。
与当前GPU平台相关的另一薄弱环节是低效资源利用率。虽然GPU内核可针对在特定输入和GPU微架构上的性能优化,但计算效率和DRAM利用率并未针对用于一些输入的多种GPU算法充分优化。举例来说,一些卷积(主要是通用矩阵乘法(General MatrixMultiplication,GEMM)类)的执行时间在有限数目的核心的情况下饱和,且在额外的核心上执行卷积引起核心的利用率不足。通过并行地运行多个操作,在一个GPU操作中利用率不足的资源可用于考虑算法、输入数据、数据布局以及微架构的另一GPU操作。
与当前GPU平台相关的另一薄弱环节为现有的GPU平台按照GPU装置如何接收操作的顺序依序执行操作,将此优先化以减少较早请求操作的延迟。此调度方法可增加针对多个应用的GPU操作的平均延迟。举例来说,如果花费大量的时间来完成的GPU操作在花费较少的时间来完成的另一GPU操作到达之前到达GPU装置,那么第二次GPU操作的延迟(或响应时间)变得不必要的过长。
与当前GPU平台相关的又一薄弱环节是当前GPU平台并未针对具有多个路径的工作负荷优化。GPU工作负荷可形成定向非循环图(directed acyclic graph;DAG),其中每一节点表示操作且从节点A到节点B的定向边缘表示在节点A与节点B之间的输入-输出依赖性;也就是说,节点B必须在节点A之后执行。近年来,具有多径计算图的GPU工作负荷已变得普遍。多径工作负荷可能从由单个用户、由共享GPU平台的多个用户或由具有多个路径的单个GPU应用启动的不同GPU应用出现。多径神经网络为具有多个路径的单个GPU应用的实例。
多径神经网络在机器学习(the machine learning;ML)领域中通过作为现实世界ML问题的较好表示已获得大量关注。通常,针对平行的神经网络路径,将存在可称为限制总体神经网络的吞吐量的关键路径的一个路径。通过神经网络的信号串流可以表征为通过一连串的依赖层的信号串流。通常,当执行神经网络时,以依序迭代执行层,其中给定层的输入取决于在序列中的紧邻前一层的输出。
当前深度学习框架并未配置成基于在不同路径或运行的不同路径的内核之间的资源分配,优化多径神经网络的执行。如果需要执行内核的总体工作空间存储器比执行神经网络的装置上的可用存储器大,则低效存储器分配可能阻止多径神经网络的内核的并行执行。在多径神经网络的关键路径中的低效计算资源分配可能不利地影响总体神经网络的吞吐量。
发明内容
示例实施例提供多径神经网络,所述多径神经网络可包含通过多径神经网络的两个或大于两个路径,其中第一路径可包含一个或多个层。第一路径可为通过多径神经网络的限制多径神经网络的吞吐量的关键路径。关键路径的第一层可分配有能够执行多径神经网络的第一计算资源分配。第一计算资源分配将多径神经网络的执行时间减少到小于用于多径神经网络的第二计算资源分配的基线执行时间。用于第一层的第一计算资源分配可不同于用于第一层的第二计算资源分配。在一个实施例中,可在执行多径神经网络之前分配用于第一层的第一计算资源分配。在另一实施例中,可在执行多径神经网络期间分配用于第一层的第一计算资源分配。
示例实施例提供将资源分配到多径神经网络的层的方法,所述方法可包含:基于将能够执行多径神经网络的计算资源分配到多径神经网络的第一计算资源分配确定用于多径神经网络的基线执行时间,所述多径神经网络包括通过多径神经网络的两个或大于两个路径;迭代地确定通过用于两个或大于两个路径的一或多个第二计算资源分配的所述两个或大于两个路径的执行时间,每一第二计算资源分配不同于第一计算资源分配;以及识别第一路径中的用于第一层的第二计算资源分配,所述第二计算资源分配提供用于多径神经网络的小于用于多径神经网络的总体基线执行时间的总体执行时间。
示例实施例提供可包含接口和处理装置的多径神经网络分析器。接口可能接收多径神经网络,所述多径神经网络可包含通过多径神经网络的两个或大于两个路径且两个或大于两个路径的第一路径可包含一个或多个层。处理装置可能生成多径神经网络,以包含通过多径神经网络的关键路径的一个或多个层,所述一个或多个层分配有能够执行多径神经网络的第一计算资源分配。关键路径可限制多径神经网络的吞吐量。第一计算资源分配可将多径神经网络的执行时间减少到小于用于多径神经网络的第二计算资源分配的基线执行时间。用于关键路径的第一层的第一计算资源分配可不同于用于关键路径的第一层的第二计算资源分配。
附图说明
在以下部分中,将参考图中所示出的示范性实施例来描述本文中所公开的主题的方面,其中:
图1描绘根据本文中所公开的主题的优化多径神经网络的不同路径中计算资源到不同层的分配或分区的多径神经网络分析器的功能框图。
图2A描绘根据本文中所公开的主题的具有四个核心的处理单元,如GPU,在所述核心上已例如使用修改的内核启动函数并行地调度多个GPU操作。
图2B描绘根据本文中所公开的主题的在已使用修改的内核启动函数启动第二内核之后的GPU。
图3描绘在输入端与决策块之间具有两个路径的示例多径神经网络。
图4A描绘通过多径神经网络的两个示例路径的部分的相对基线执行时间和序列。
图4B描绘用于卷积层已经被分配4.5吉字节(GB)的两个路径的相对执行时间和序列。
图4C描绘用于卷积层已经被分配存储器的4.0GB的两个路径的相对执行时间和序列。
图5描绘根据本文中所公开的主题的层的窗口类资源分配分析的示例。
图6描绘根据本文中所公开的主题的用于可用于实现图1的多径神经网络分析器的数据处理系统的示范性架构的框图。
附图标号说明
100:多径神经网络分析器;
101:多径神经网络;
102、103、104、106、109:步骤;
105:装置资源约束;
107:成本模型;
108:调度程序;
201、202:内核;
300:多径神经网络;
301、302、503、504:路径;
303:输入端;
304:决策块;
401、402:数据串流;
500:层;
501、502:窗口;
600:示范性结构;
601:处理器;
602:存储元件;
603:系统总线;
604:本地存储器;
605:大容量存储装置;
606:键盘;
607:显示装置;
608:指向装置;
609:网络适配器;
610:操作系统;
611:应用程序;
612:平台;
613:通信链路;
614:神经网络加速器。
具体实施方式
在以下详细描述中,阐述许多特定细节以便提供对本公开的透彻理解。然而,本领域的技术人员应理解,可在不具有这些特定细节的情况下实践所公开的方面。在其它情况下,未详细描述众所周知的方法、步骤、组件以及电路,以避免混淆本文中所公开的主题。
参考本说明书的“一个实施例”或“一实施例”是指结合实施例所描述的特定特征、结构或特性可包含在本文中所公开的至少一个实施例中。因此,在贯穿本说明书的不同位置中出现的短语“在一个实施例中”或“在一实施例中”或“根据一个实施例”(或具有相似意义的其它短语)可能未必全部指代同一实施例。此外,在一或多个实施例中,特定特征、结构或特性可以任何适合的方式组合。就这一点而言,如本文所使用的,词语“示范性”是指“用作实施例、实例或说明”。本文中描述为“示范性”的任何实施例不应理解为必定比其它实施例优选或有利。此外,在一或多个实施例中,特定特征、结构或特性可以任何适合的方式组合。此外,取决于本文中的论述的上下文,单数术语可包含相应的复数形式,且复数术语可包含相应的单数形式。类似地,加连字符的术语(例如“二维(two-dimensional)”、“预定(pre-determined)”、“像素特定(pixel-specific)”等)可间或互换地与相应的未加连字符版本(例如“二维(two dimensional)”、“预定(predetermined)”、“像素特定(pixelspecific)”等)一起使用,且大写条目(例如“计数器时钟(Counter Clock)”、“行选择(RowSelect)”、“PIXOUT”等)可互换地与相应的非大写版本(例如“计数器时钟(counterclock)”、“行选择(row select)”、“pixout”等)一起使用。此类偶然的可互换使用不应视为彼此不一致。
此外,取决于本文中的论述的上下文,单数术语可包含相应的复数形式,且复数术语可包含相应的单数形式。还应注意,本文中所绘示且论述的各种图式(包含组件图式)仅出于说明性目的,且未按比例绘制。类似地,仅出于说明性目的绘示各种波形和时序图。举例来说,为了清晰起见,可相对于其它元件放大一些元件的尺寸。此外,如果认为适当,那么在图式中重复附图标号,以指示相应的和/或类似的元件。
本文中所使用的术语仅出于描述一些示例实施例的目的,而不意图限制所要求保护的主题。如本文中所使用,除非上下文另作明确指示,否则单数形式“一(a/an)”和“所述(the)”也意图包含复数形式。更应理解,术语“包括(comprises和/或comprising)”在本说明书中使用时,指定存在所述特征、整数、步骤、操作、元件和/或组件,但是不排除存在或一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的添加。如本文中所使用,除非如此明确定义,否则术语“第一”、“第二”等用作在其之前的名词标签,且不会暗示任何类型的次序(例如空间、时间、逻辑等)。此外,可以在两个或更多个附图上使用相同的附图标记来指代具有相同或相似功能的部件、组件、块、电路、单元或模块。然而,此类使用仅出于说明的简洁和易于论述;其并不暗示此类组件或单元的构造或架构细节在所有实施例中都相同,或此类共同参考部件/模块是实现本文中所公开的示例实施例中的一些的唯一方式。
应理解,当元件或层称为在另一元件或层“上”、“连接到”另一元件或层或“耦接到”另一元件或层时,所述元件或层可以直接在另一元件或层上、直接连接到另一元件或层或耦接到另一元件或层,或可能存在中间元件或层。相比之下,当元件称为“直接”在另一元件或层“上”、“直接连接到”另一元件或层或“直接耦接到”另一元件或层时,不存在中间元件或层。全文中,相同的标记表示相同的元件。如本文所使用的,术语“和/或”包括一个或多个相关联的所列项目的任何和所有组合。
如本文中所使用,除非如此明确定义,否则术语“第一”、“第二”等用作在其之前的名词标签,且不会暗示任何类型的次序(例如空间、时间、逻辑等)。此外,可以在两个或更多个附图上使用相同的附图标记来指代具有相同或相似功能的部件、组件、块、电路、单元或模块。然而,此类使用仅出于说明的简洁和易于论述;其并不暗示此类组件或单元的构造或架构细节在所有实施例中都相同,或此类共同参考部件/模块是实现本文中所公开的示例实施例中的一些的唯一方式。
除非另外定义,否则本文中所使用的所有术语(包含技术术语和科学术语)具有与本公开主题所属的领域的技术人员通常所理解相同的含义。更应理解,术语(如常用词典中所定义的那些术语)应解释为具有与其在相关技术的上下文中的含义相一致的含义,且除非明确地如此定义,否则将不在理想化或过度正式的意义上进行解释。
如本文中所使用,术语“模块”是指软件、固件和/或硬件的任何组合,所述组合被配置以结合模块提供本文中所描述的功能。软体可实施为软件包、代码和/或指令集或指令,且如在本文中所描述的任一实现中所使用的术语“硬件”可例如单独或以任何组合包含固线式电路、可编程电路、状态机电路和/或存储由可编程电路执行的指令的固件。模块可共同或单独地实施为形成较大系统的部分的电路,所述电路例如但不限于集成电路(integrated circuit;IC)、片上系统(system on-chip;SoC)等。本文中所公开的各种组件和/或功能块可实施为可包含软件、固件和/或硬件的模块,所述模块结合各种组件和/或功能块提供本文中所描述的功能。
本文中所公开的主题涉及用于有效分配或分区在单个GPU装置上并行地执行的内核之间的计算资源的系统和方法。本文中所公开的系统可能通过核心分配和/或核心再分配来调度单个GPU装置上的多个GPU操作的并行和/或同步执行。系统的应用程序编程接口(application programming interface;API)允许用户选择将并行地调度的GPU操作且为并行操作分配计算资源。
本文中所公开的系统和方法可用于分配计算资源以优化多径神经网络的性能。在一个实施例中,可对多径神经网络的不同路径中的不同层启用并行执行。可基于因果资源分布技术提供多径神经网络应用的自动优化。在一个实施例中,因果资源分布技术可能提供多径神经网络的自动性能优化。可基于计算资源与受计算资源的分配水平影响的神经网络中的层的执行时间之间的关系来识别最优资源分配。
此外,因果资源分布可基于通过多径神经网络的关键路径和计算资源与此计算资源相关的执行时间之间的关系。成本模型模板可以用于性能分析,且一或多种启发法可用于减少分析的复杂性以确定最优资源分配。此外,多径神经网络应用的执行调度可使用因果资源分布技术优化。
本文中所公开的资源分配技术可在多径神经网络的层之间分配计算资源以提高总体神经网络的性能结果。可基于对于多径神经网络的层的资源利用率的修改来分析网络性能,且如果性能分析指示基于特定计算资源分配的性能改进,那么可更新或重新配置个别层的资源利用率。
本文中所公开的主题提供可在内核之间对计算资源进行分区的编程接口。与当前GPU平台不同,所述当前GPU平台对于并行执行具有有限的编程器支持且依赖于执行以用于确定内核的GPU核心的数目的线程块的数目,本文中所公开的主题提供编程接口,其中编程器可定义并行执行的GPU操作和针对并行操作的资源分配。
可通过本文中所公开的系统和方法支持静态资源分配和动态资源分配两者。对于静态分配,资源可在执行应用程序之前指派给个别层。对于动态分配,可在运行时期间指派资源以基于网络变化(如在拓扑、输入、批量大小等的变化)提供灵活性。
图1描绘根据本文中所公开的主题的优化多径神经网络的不同路径中计算资源到不同层的分配或分区的多径神经网络分析器100的功能框图。在一个示例实施例中,分析器100可实现为执行适合的软件的数据处理系统。分析器100可接收多径神经网络101作为使用可用于分析器100的计算资源执行的输入。多径神经网络101可为全精度训练神经网络。替代地,多径神经网络101可为训练的神经网络。分析器100可使用因果资源分布分析多径神经网络101的不同路径中的不同层,且确定计算资源的最优分配或分区以使得多径神经网络101在最少量的时间内执行或运行。
在一个实施例中,分析器100可在执行多径神经网络之前生成用于多径神经网络的一个或多个路径的一个或多个层的优化的计算资源分配。在神经网络运行时接着使用优化的计算资源分配。在另一实施例中,分析器100可优化定义用于与神经网络相关的多径神经网络的一个或多个路径的一或多个层的计算资源的参数,以使得当神经网络在计算装置上实例化时,执行神经网络的优化配置。在又一实施例中,分析器100可在多径神经网络的执行期间动态更新用于多径神经网络的一或多个路径的一个或多个层的计算资源分配,以基于网络变化(如在拓扑、输入、批量大小等的变化)提供灵活性。
最初在图1中的步骤102处,分析器100将相应串流指派到具有一个或多个依序依赖层的神经网络101的不同路径。在步骤103处,分析器100生成基线资源分配状态。此外,可生成窗口或分组大小以减少执行用于不同的计算资源分配的因果资源分布的复杂性,如结合图5所描述。在步骤104处,分析器100可执行不同计算资源分配的性能分析以确定最优计算资源分配。可从用户输入接收在可用的计算资源上设置约束和/或束缚的装置资源约束105。可在神经网络101处接收多径神经网络之前从用户接收资源约束105。性能分析还可使用在步骤103生成的窗口或分组大小。可通过删减或丢弃可能无法提供最优性能解决方案的计算资源分配在步骤106处减少分析的不同计算资源分配的数目。可在性能分析期间使用成本模型107。
调度程序108可仿真分析的不同层和路径的部分和/或分析的神经网络101的总体吞吐量性能。在步骤109处,由于针对不同层和/或路径确定较好的计算资源分配,且针对神经网络101确定较好的调度分配,分析器100用较好的分配更新在步骤103处的层的基线资源分配,并且在神经网络101运行时将使用较好的调度分配。
在操作中,分析器100通过应用程序编程接口(API)接收装置资源约束105,所述应用程序编程接口允许用户在可用以执行多径神经网络的计算资源上选择性地设定约束。在一个实施例中,针对运行处理单元上的多径神经网络的路径的一个或多个内核,用户可选择处理单元或计算单元的核心的最小数目和/或最大数目。表1阐述可在开放运算语言(Open Computing Language;OpenCL)编程框架中使用的修改内核启动函数的示例,所述框架可提供资源约束,如根据本文中所公开的主题的可用于内核的最小数目和最大数目的核心。可修改clEnqueueNDRangeKernel内核启动命令以包含例如两个额外变量参数:“min_cores”变量参数和“max_cores”变量参数。特定而言,将“const cl_uint min_cores”变量参数和“const cl_uint max_cores”变量参数添加到OpenCL框架的clEnqueueNDRangeKernel内核启动命令。设定变量参数的两个额外参数呈现在clEnqueueNDRangeKernel内核启动命令的变量参数列表的末端处。
“min_cores”变量参数可用于定义在与其它内核一起运行时用于内核的处理单元的最小数目的核心,并且“max_cores”变量参数可用于定义在单独运行时用于内核的处理单元的最大数目的核心。用户可定义将用于内核的多个核心,而不管内核的线程块的数目。
表1.修改的内核启动函数
cl_int clEnqueueNDRangeKernel(cl_command_queue command_queue,
cl_kernel kernel,
cl_uint work_dim,
const size_t*global_work_offset,
const size_t*global_work_size,
const size_t*local_work_size,
cl_uint num_events_in_wait_list,
const cl_event*event_wait_list,
cl_event*event,
const cl_uint min_cores,
const cl_uint max_cores)
图2A描绘根据本文中所公开的主题的具有四个核心1到4的处理单元,如GPU,在其上已例如使用修改的内核启动函数并行地调度多个GPU操作。最初,修改的内核启动函数用以将内核201的最小核心/最大核心变量参数设定为2/3。对于此示例,内核201可具有在GPU核心1到核心4上执行的12个线程块,所述线程块分布如图2A中所描绘分布在核心1到核心3上。
可将第二内核202配置为将最小核心/最大核心变量参数设定为2/4。如图2B中所描绘,当在GPU装置上启动内核202时,GPU调度程序(未绘示)执行线程块迁移,以使得基于用于先前执行的内核201和新近执行的内核202两者的最小/最大变量参数,将先前分配在核心3上的内核201的线程块迁移到核心1和核心2。在这种情况下,两个内核具有最小核心变量参数2,所述变量参数将设定两个GPU核心的最小值以运行内核201和内核202中的每一个。不同的核心1到核心4可运行不同数目的线程块。此外,可不同地分配图2A和图2B中描绘的特定核心。
基于由用户输入的装置约束105,分析器100可使用因果资源分布以确定最优计算资源分配或分区来执行多径神经网络101。在一个实施例中,可以在通过多径神经网络101的关键路径上执行因果资源分布以识别计算资源分配的变化如何影响例如通过关键路径的执行时间。因果资源分布还可用于识别多径神经网络的不同路径中的计算资源分配的变化可如何影响神经网络的总体执行时间。
图3描绘在输入端303与决策块304之间具有两个路径301和302的示例多径神经网络300。路径301可包含五个依序依赖层、且路径302可包含四个依序依赖层。针对图3中所描绘的示例神经网络300,路径302为通过神经网络300的关键路径,所述关键路径限制神经网络300的总体吞吐量。也就是说,沿着路径302的计算和处理比沿着路径301的计算和处理花费更长的时间完成。因果资源分布最初可基于基线计算资源分配确定通过关键路径302的基线执行时间。还可基于基线计算资源分配确定通过神经网络300的其它路径中的每一个的基线执行时间。计算资源分配可根据关键路径中的不同层改变,以确定计算资源分配的变化如何影响关键路径的执行时间。
因果资源分布涉及在资源分配与执行时间之间的映射,这是由于神经网络的层的执行时间取决于资源分配。举例来说,关键路径302中的特定函数(即,层)的20%加速可潜在地将神经网络应用300的总体运行时间改善(即,减少)5%。
可延伸因果资源分布以还分析多径神经网络的其它路径,以确定改变分配到多径神经网络的各个路径的不同层的计算资源可如何改变与关键路径相关的执行时间。针对神经网络的特定层分配较少装置核心可增加所述层的执行时间,但可有利地释放计算资源以用于有利地减少另一路径中的另一层的执行时间。
在一个实施例中,可运行多个仿真以基于对神经网络的不同层和路径的不同计算资源分配确定多径神经网络的性能。可基于不同计算资源分配的神经网络的估计执行时间确定最优的资源分配。
图4A描绘通过多径神经网络的两个示例路径的一部分的相对基线执行时间和序列。第一数据串流401通过表示通过多径神经网络的第一路径的一系列层(函数)(即,最大池化(Maxpool)层和全连接(fully connected;FC))执行。第二数据串流402通过表示通过神经网络的第二路径的一系列层(即,卷积层和整流线性单元(rectified linear unit;ReLu)层)执行。尽管两个路径都不被识别为关键路径,但图4A描绘上部路径完成执行花费的时间(虚线)比下部路径更长。
图4A中的层或函数中的每一个包含已经分配到层的函数的指示存储器计算资源。举例来说,最大池化层已经被分配1GB的存储器。FC层已经被分配0.5GB。卷积层已经被分配5GB,且ReLu层已经被分配1GB。考虑可将最大值5GB的存储器分配到任一路径中的任一层的这个示例。因此,图4A中描绘的存储器分配不会导致两个路径中的任一个中的层与卷积层并行执行,这是因为所有可用的5GB的存储器已经分配到卷积层。
图4B描绘用于卷积层已经被分配4.5GB的两个路径的相对执行时间和序列。通过将分配到下部路径(串流402)中的卷积层的存储器的量从基线分配(图4A)减少10%,上部路径(串流401)中的FC层可与卷积层同时执行。还可减少多径神经网络(即,两个路径)的总体执行时间(虚线),因为现在FC层可与卷积层并行执行,因为0.5GB的存储器可用以执行FC层。
图4C描绘用于卷积层已经被分配4.0GB的存储器的两个路径的相对执行时间和序列。通过将分配到下部路径(串流402)中的卷积层的存储器的量从基线(图4A)减少20%,上部路径(串流401)中的最大池化层可与下部路径中的卷积层并行执行。此外,在最大池化层完成时,上部路径中的FC层可与卷积层并行执行。在卷积层完成时,下部路径中的ReLu层可与FC层并行执行。多径神经网络(即,两个路径)的总体执行时间(虚线)可通过减少对卷积层的存储器的分配来进一步减少。尽管在图4B和图4C的描绘中没有特别绘示,卷积层可基于减少的存储器分配花费略长的时间来执行,但用于两个路径的总体执行时间可明显减少。对卷积层的存储器分配的示例减少可静态地应用于神经网络,以使得多径神经网络的每一后续实例化在总体上减少的执行时间的情况下运行。替代地,可动态地确定存储器分配的示例减少,并将所述示例减少应用于神经网络的当前实例化以考虑网络变化,如拓扑、输入、批量大小等的变化。
成本模型可用于神经网络中的常用层的因果资源分布,所述模型将每一层的执行时间与计算资源利用率关联。在因果资源分布期间可考虑的计算资源可包含装置计算单元、存储器空间以及存储器带宽。对于CPU的计算单元,可考虑核心的数目。对于GPU计算单元,可考虑串流式多处理器(streaming multiprocessors;SM)的数目。对于现场可编程门阵列(Field Programmable Gate Array;FPGA),可考虑FPGA的区域。资源分配的单元可通常为离散值(例如,用于层的不同实现的核心数、存储器/工作空间)。
可以用于多径神经网络的因果资源分布性能分析的一个定义可如下。针对多径神经网络的输入,k个执行串流分别输入到多径神经网络的k个路径中。针对每一对应的s串流,存在ns依序依赖层l。针对路径中的每一层l,存在ml个不同的实现。每一实现具有执行时间tml,k和用于利用率的资源集合{wr|r∈资源}。定义的目的是找到使多径神经网络的总体执行时间最小化的所有层的平行调度和实现,如在等式(1)中。
针对
Figure BDA0002377263090000131
资源,
Figure BDA0002377263090000132
其中K是总层数,wr,l是资源r乘以层l的利用率,Mr是可用于多径神经网络的执行的最大的可用资源层r,且如果层l在时间t时执行,那么αl,t为1,并且如果不在所述时间执行,那么为0。
数种启发法可用于减少资源分配的复杂性。举例来说,可删减搜索空间。举例来说,如果此处存在用于这个层的另一实现j,那么可删减用于层l的实现,其中ti>tj
Figure BDA0002377263090000133
资源,wr,i>wr,j。还可删减具有相对长的执行时间的实现。举例来说,如果tk>β×最小{ti|i∈层L实现},那么可删减用于层L的实现k,因为即使这种实现可提供相对较小的资源利用率,长时间运行的实现也不大可能为最优解决方案的一部分。
减少资源分配的复杂性的另一技术可以是使用层的窗口类资源分配。也就是说,可基于网络的每一路径和深度中的层的平均或标称执行时间形成的层的窗口或分组。每一串流或层的窗口大小可包含可调谐参数。可控制窗口以沿着多径神经网络路径滑动,并且可以执行窗口内部的层的性能分析以找到最优资源分配。
图5描绘根据本文中所公开的主题的层500的窗口类资源分配分析的示例。如图5中所描绘,可定义和使用第一窗口501以执行在多径神经网络的第一路径503和第二路径504的层之间的因果资源分布分析。可类似地定义第二窗口502来执行在第一路径503和第二路径504的层之间的另一因果资源分布分析。每一串流的执行时间可在同一窗口内尽可能匹配,以完全实现并行执行。
图6描绘用于数据处理系统的示范性架构600的框图。在一个实施例中,架构600可用于实现图1的分析器100。在另一实施例中,架构600可用于实现分析器100,且运行由分析器100提供的优化的多径神经网络。
架构600包含至少一个处理器,例如中央处理单元(central processing unit;CPU)601,所述处理器601通过系统总线603或其它适合的电路耦接到存储元件602。架构600可在存储元件602内存储程序代码。处理器601可执行经由系统总线603从存储元件602存取的程序代码。因此,处理器601可充当专用处理器。存储元件602可包含一个或多个物理存储器装置,如但不限于本地存储器604和一个或多个大容量存储装置605。本地存储器604可为在程序代码的实际执行期间通常所使用的随机存取存储器(random access memory;RAM)或其它非永久性的存储器装置。大容量存储装置605实现为硬盘驱动器(hard disk drive;HDD)、固态驱动器(solid-state drive;SSD)和/或其它永久性数据存储装置。架构600还可包含一个或多个高速缓冲存储器(未绘示),所述存储器提供至少一些程序代码的临时存储器,以便减少在执行期间必须从大容量存储装置605检索程序代码的次数。
架构600还可包含输入/输出(input/output;I/O)装置,如键盘606、显示装置607和/或可任选地耦接到架构600的指向装置608。在一些实施例中,I/O装置中的一个或多个可组合成在用作显示装置607的触摸屏中。这种显示装置607还可包含键盘606和指向装置608。一个或多个网络适配器609也可耦接到架构600,以使得架构600能够通过中间私有或公共网络耦合到其它系统、计算机系统、远程打印机和/或远程存储装置。调制解调器、电缆调制解调器、以太网(Ethernet)卡以及无线收发器是可与架构600一起使用的不同类型的网络适配器的非限制性示例。取决于使用架构600实现的特定装置,特定类型的一或多个网络适配器可视具体情况而改变。I/O装置可以直接或通过中间I/O控制器耦接到架构600上。
如图6中所描绘,存储元件602可存储操作系统610和应用程序611。在一个方面中,以可执行的程序代码的形式实现的操作系统610和应用程序611可通过架构600执行。因此,操作系统610和应用程序611可视为架构600的整合部分。操作系统610、应用程序611以及通过架构600所使用、生成和/或操作后的任何数据项可为功能数据结构,当用作使用架构600实现的系统的部分时,所述功能数据结构赋予功能。
在一个布置中,应用程序611可包含一个或多个模块,当由系统使用架构600或相似于架构600的架构执行时,所述模块可执行本文中参考图1到图5所描述的各种操作和功能。一个或多个模块可包含结合各种组件和/或功能块提供本文中所描述的功能的软件、固件和/或硬件。
在另一布置中,架构600可通过通信链路613耦合到平台612。在一个示例中,架构600可通过网络适配器609耦合到平台612。在另一示例中,架构600可包含一个或多个其它I/O装置,如通用串行总线(Universal Serial Bus;USB)接口或其它通信端口,所述其它I/O装置或其它通信端口可用于将架构600耦合到平台612。平台612可为电路板且具有耦合到其上的神经网络加速器614。在一个布置中,神经网络加速器614可实现为集成电路(IC)或多个IC。举例来说,神经网络加速器614可实现为一个或多个可编程IC,如现场可编程门阵列、一个或多个专用IC(application-specific IC;ASIC)等。
架构600可配置以在多径神经网络上执行本文中所描述的操作,以将计算资源分配到多径神经网络的不同路径中的不同层,如图1中的多径神经网络101。也就是说,架构600可通过I/O装置接收多径神经网络101,在多径神经网络的一个或多个层上操作,并且根据本文中所公开的主题输出用于多径神经网络的优化的计算资源配置。架构600可进一步将优化的多径神经网络101的定义提供给神经网络加速器614以用于在其中执行。
图6仅出于说明的目的提供,且因此不打算作为本文中所描述的发明性布置的限制。在一些情况下,使用架构600实现的特定系统可包含比绘示的组件少或多的组件。此外,作为架构600的部分包含的特定操作系统和/或应用程序可改变。
如本领域的技术人员将认识到,可通过广泛范围的应用程序修改和改变本文中所描述的创新构思。因此,所要求保护的主题的范围不应限于上文所论述的特定示范性教示中的任一种,但相反,应由以下权利要求来定义。

Claims (20)

1.一种多径神经网络,包括:
通过所述多径神经网络的两个或大于两个路径,第一路径包括一个或多个层,所述第一路径包括通过所述多径神经网络的关键路径,所述关键路径限制所述多径神经网络的吞吐量,所述关键路径的第一层分配有能够执行所述多径神经网络的第一计算资源分配,所述第一计算资源分配将所述多径神经网络的执行时间减少到小于用于所述多径神经网络的第二计算资源分配的基线执行时间,用于所述第一层的所述第一计算资源分配不同于用于所述第一层的所述第二计算资源分配。
2.根据权利要求1所述的多径神经网络,其中在执行所述多径神经网络之前分配用于所述第一层的所述第一计算资源分配。
3.根据权利要求1所述的多径神经网络,其中在所述多径神经网络的执行期间分配用于所述第一层的所述第一计算资源分配。
4.根据权利要求1所述的多径神经网络,其中能够执行所述多径神经网络的计算资源包括多个计算单元核心、存储器大小以及存储器带宽。
5.根据权利要求1所述的多径神经网络,其中所述关键路径包含提供卷积函数的层。
6.一种用以将资源分配到多径神经网络的层的方法,所述方法包括:
基于将能够执行所述多径神经网络的计算资源分配到所述多径神经网络的第一计算资源分配确定用于多径神经网络的基线执行时间,所述多径神经网络包括通过所述多径神经网络的两个或大于两个路径;
迭代地确定通过用于所述两个或大于两个路径的一个或多个第二计算资源分配的所述多径神经网络的所述两个或大于两个路径的执行时间,每一第二计算资源分配不同于所述第一计算资源分配;以及
识别第一路径中的用于第一层的第二计算资源分配,用于所述第一层的所述第二计算资源分配提供用于所述多径神经网络的小于用于所述多径神经网络的总体基线执行时间的总体执行时间。
7.根据权利要求6所述的方法,其中用于所述多径神经网络的所述总体基线执行时间对应于通过所述多径神经网络的限制所述多径神经网络的吞吐量的关键路径的执行时间。
8.根据权利要求6所述的方法,还包括分配所识别的所述第一路径中的用于所述第一层的所述第二计算资源分配,以提供用于所述多径神经网络的小于用于所述多径神经网络的所述总体基线执行时间的所述总体执行时间。
9.根据权利要求8所述的方法,还包括在执行所述多径神经网络之前,分配所识别的所述第一路径中的用于所述第一层的所述第二计算资源分配。
10.根据权利要求8所述的方法,还包括在执行所述多径神经网络期间,分配所识别的所述第一路径中的用于所述第一层的所述第二计算资源分配。
11.根据权利要求6所述的方法,其中识别所述第二计算资源分配还包括从用户接收所述第二计算资源分配的选择。
12.根据权利要求6所述的方法,其中能够执行所述多径神经网络的计算资源包括多个计算单元核心、存储器大小以及存储器带宽。
13.根据权利要求6所述的方法,其中所述两个或大于两个路径中的至少一者包含提供卷积函数的层。
14.一种多径神经网络分析器,包括:
接口,接收多径神经网络,所述多径神经网络包括通过所述多径神经网络的两个或大于两个路径且所述两个或大于两个路径中的第一路径包括一个或多个层;以及
处理装置,生成包括通过所述多径神经网络的关键路径的一个或多个层的所述多径神经网络,所述关键路径的所述一个或多个层分配有能够执行所述多径神经网络的第一计算资源分配,所述关键路径限制所述多径神经网络的吞吐量,所述第一计算资源分配将所述多径神经网络的执行时间减少到小于用于所述多径神经网络的第二计算资源分配的基线执行时间,用于所述关键路径的第一层的所述第一计算资源分配不同于用于所述关键路径的所述第一层的所述第二计算资源分配。
15.根据权利要求14所述的多径神经网络分析器,其中能够执行所述多径神经网络的计算资源包括多个计算单元核心、存储器大小以及存储器带宽。
16.根据权利要求14所述的多径神经网络分析器,其中所述处理装置进一步配置成:
基于所述第二计算资源分配来确定通过所述多径神经网络的两个或大于两个路径的基线执行时间以执行所述多径神经网络,
迭代地确定通过用于所述两个或大于两个路径的至少一个第三计算资源分配的所述多径神经网络的所述两个或大于两个路径的执行时间,每一第三计算资源分配不同于所述第二计算资源分配;以及
识别提供用于所述多径神经网络的小于用于所述多径神经网络的所述基线执行时间的所述执行时间的所述第三计算资源分配。
17.根据权利要求16所述的多径神经网络分析器,其中用于所述多径神经网络的所述基线执行时间对应于针对所述关键路径的所述第二计算资源分配的通过所述多径神经网络的所述关键路径的执行时间。
18.根据权利要求16所述的多径神经网络分析器,其中所述处理装置还配置成将用于所述关键路径的所述第三计算资源分配分配为用于所述关键路径的所述第一计算资源分配。
19.根据权利要求18所述的多径神经网络分析器,其中所述处理装置配置成在执行所述多径神经网络之前分配用于所述关键路径的所述第一计算资源分配。
20.根据权利要求18所述的多径神经网络分析器,其中所述处理装置配置成在所述多径神经网络的执行期间分配用于所述关键路径的所述第一计算资源分配。
CN202010070764.3A 2019-01-23 2020-01-21 多径神经网络、资源分配的方法及多径神经网络分析器 Pending CN111476344A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962796071P 2019-01-23 2019-01-23
US62/796,071 2019-01-23
US16/442,440 US11620510B2 (en) 2019-01-23 2019-06-14 Platform for concurrent execution of GPU operations
US16/442,440 2019-06-14

Publications (1)

Publication Number Publication Date
CN111476344A true CN111476344A (zh) 2020-07-31

Family

ID=71608978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010070764.3A Pending CN111476344A (zh) 2019-01-23 2020-01-21 多径神经网络、资源分配的方法及多径神经网络分析器

Country Status (5)

Country Link
US (2) US11687771B2 (zh)
JP (1) JP2020119564A (zh)
KR (2) KR20200091789A (zh)
CN (1) CN111476344A (zh)
TW (1) TWI827792B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112349419A (zh) * 2020-08-27 2021-02-09 北京颢云信息科技股份有限公司 一种基于医学数据及人工智能的真实世界研究方法
CN114091688A (zh) * 2021-11-25 2022-02-25 北京九章云极科技有限公司 一种计算资源获取方法、装置、电子设备和存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11537436B2 (en) * 2019-10-02 2022-12-27 Qualcomm Incorporated Method of configuring a memory block allocation of a machine learning network
KR20220052546A (ko) * 2020-10-21 2022-04-28 삼성전자주식회사 데이터 처리 방법 및 장치 및 이를 포함한 전자 장치 및 가속기 시스템
US20230071278A1 (en) * 2021-09-03 2023-03-09 International Business Machines Corporation Using a machine learning module to determine a group of execution paths of program code and a computational resource allocation to use to execute the group of execution paths
WO2024113184A1 (en) * 2022-11-29 2024-06-06 Paypal, Inc. Optimizing allocation of graphical processing unit (gpu) resources in a production workspace
CN117114055B (zh) * 2023-10-24 2024-04-09 北京航空航天大学 面向工业应用场景的fpga二值神经网络加速方法

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06187309A (ja) * 1992-12-21 1994-07-08 Hitachi Ltd プロセッサ割付制御方式
US5704012A (en) 1993-10-08 1997-12-30 International Business Machines Corporation Adaptive resource allocation using neural networks
US7656959B2 (en) * 2001-04-13 2010-02-02 Agere Systems Inc. Pipelined decision-feedback unit in a reduced-state viterbi detector with local feedback
TWI246114B (en) * 2002-09-24 2005-12-21 Asml Netherlands Bv Lithographic apparatus, device manufacturing method, and device manufactured thereby
US20060253677A1 (en) * 2005-05-04 2006-11-09 Arm Limited Data access prediction
US8347293B2 (en) * 2005-10-20 2013-01-01 Network Appliance, Inc. Mutual exclusion domains to perform file system processes on stripes
US7606807B1 (en) * 2006-02-14 2009-10-20 Network Appliance, Inc. Method and apparatus to utilize free cache in a storage system
US20080071755A1 (en) * 2006-08-31 2008-03-20 Barsness Eric L Re-allocation of resources for query execution in partitions
TWI313437B (en) * 2006-09-20 2009-08-11 Nat Chiao Tung Universit Matching method for interdependent scheduling
CN101908003B (zh) * 2009-06-05 2014-10-22 Sap股份公司 并行化查询的多核调度
US8627331B1 (en) * 2010-04-30 2014-01-07 Netapp, Inc. Multi-level parallelism of process execution in a mutual exclusion domain of a processing system
US8868867B2 (en) * 2011-09-15 2014-10-21 The Regents Of The University Of California Method for reducing latency of accessing data stored in a file system on a computer storage device by caching file system permission information in the computer storage device
JP5961402B2 (ja) * 2012-02-20 2016-08-02 株式会社日立製作所 計算機システム
US20140133574A1 (en) * 2012-11-13 2014-05-15 Mediatek Inc. Method and Apparatus for Sign Data Hiding of Video and Image Data
JP2014179957A (ja) * 2013-03-15 2014-09-25 Toshiba Corp 画像符号化装置および画像復号化装置
CN105814857A (zh) * 2013-10-17 2016-07-27 乔治亚技术研究公司 用于低复杂度和高性能通信的改进的格基约减辅助的k-best 算法
US20150220420A1 (en) * 2014-01-31 2015-08-06 Schlumberger Technology Corporation Performance evaluation and tuning systems and methods
US10417554B2 (en) 2014-05-22 2019-09-17 Lee J. Scheffler Methods and systems for neural and cognitive processing
US10346941B2 (en) 2014-05-30 2019-07-09 Apple Inc. System and method for unified application programming interface and model
US20160164537A1 (en) * 2014-12-08 2016-06-09 Samsung Electronics Co., Ltd. Method and apparatus for parallel concatenated ldpc convolutional codes enabling power-efficient decoders
US9779469B2 (en) 2015-08-17 2017-10-03 Qualcomm Incorporated Register spill management for general purpose registers (GPRs)
US9443192B1 (en) * 2015-08-30 2016-09-13 Jasmin Cosic Universal artificial intelligence engine for autonomous computing devices and software applications
US20170123799A1 (en) * 2015-11-03 2017-05-04 Intel Corporation Performing folding of immediate data in a processor
WO2017091833A1 (en) * 2015-11-29 2017-06-01 Arterys Inc. Automated cardiac volume segmentation
US10891540B2 (en) * 2015-12-18 2021-01-12 National Technology & Engineering Solutions Of Sandia, Llc Adaptive neural network management system
US10177782B2 (en) * 2015-12-26 2019-01-08 Intel Corporation Hardware apparatuses and methods for data decompression
CN107533459B (zh) * 2016-03-31 2020-11-20 慧与发展有限责任合伙企业 使用电阻存储器阵列的数据处理方法和单元
US20180039884A1 (en) * 2016-08-03 2018-02-08 Barnaby Dalton Systems, methods and devices for neural network communications
US10116582B2 (en) * 2016-08-08 2018-10-30 Bank Of America Corporation Resource assignment system with allocation assist
US10264264B2 (en) * 2016-09-24 2019-04-16 Apple Inc. Multi-bin decoding systems and methods
US11556779B2 (en) * 2016-09-26 2023-01-17 Arizona Board Of Regents On Behalf Of Arizona State University Cascaded computing for convolutional neural networks
JP6778130B2 (ja) * 2017-02-24 2020-10-28 日本電信電話株式会社 仮想計算機システムおよびそのリソース割当て方法
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US20180308006A1 (en) 2017-04-24 2018-10-25 William Atkinson Method and Apparatus for Dynamic Evolving Cognitive questioning querying architecture iterative problem solving dynamically evolving feedback loop
US10970630B1 (en) * 2017-06-15 2021-04-06 National Technology & Engineering Solutions Of Sandia, Llc Neuromorphic computing architecture with dynamically accessible contexts
GB2563473B (en) * 2017-06-15 2019-10-02 Accelercomm Ltd Polar coder with logical three-dimensional memory, communication unit, integrated circuit and method therefor
CN110537204A (zh) * 2017-06-28 2019-12-03 渊慧科技有限公司 使用分割和分类神经网络的可泛化医学图像分析
US11694066B2 (en) * 2017-10-17 2023-07-04 Xilinx, Inc. Machine learning runtime library for neural network acceleration
CN107832840B (zh) * 2017-10-31 2020-05-22 中国科学院计算技术研究所 一种用于神经网络处理器的方法
US20190044883A1 (en) * 2018-01-11 2019-02-07 Intel Corporation NETWORK COMMUNICATION PRIORITIZATION BASED on AWARENESS of CRITICAL PATH of a JOB
CN108875752B (zh) * 2018-03-21 2022-06-07 北京迈格威科技有限公司 图像处理方法和装置、计算机可读存储介质
US11568220B2 (en) * 2018-07-25 2023-01-31 International Business Machines Corporation Deep neural network implementation
US20200042856A1 (en) * 2018-07-31 2020-02-06 International Business Machines Corporation Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit
US10963300B2 (en) * 2018-12-06 2021-03-30 Raytheon Company Accelerating dataflow signal processing applications across heterogeneous CPU/GPU systems

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112349419A (zh) * 2020-08-27 2021-02-09 北京颢云信息科技股份有限公司 一种基于医学数据及人工智能的真实世界研究方法
CN114091688A (zh) * 2021-11-25 2022-02-25 北京九章云极科技有限公司 一种计算资源获取方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
KR20200091789A (ko) 2020-07-31
US11620510B2 (en) 2023-04-04
US20200234115A1 (en) 2020-07-23
US20200234146A1 (en) 2020-07-23
TWI827792B (zh) 2024-01-01
KR20200091790A (ko) 2020-07-31
TW202029064A (zh) 2020-08-01
US11687771B2 (en) 2023-06-27
JP2020119564A (ja) 2020-08-06

Similar Documents

Publication Publication Date Title
CN111476344A (zh) 多径神经网络、资源分配的方法及多径神经网络分析器
WO2016155335A1 (zh) 异构多核可重构计算平台上任务调度的方法和装置
US8156495B2 (en) Scheduling threads on processors
US20240036937A1 (en) Workload placement for virtual gpu enabled systems
US20160202999A1 (en) A Computing Platform, A Reconfigurable Hardware Device And A Method for Simultaneously Executing Processes On Dynamically Reconfigurable Hardware Device, Such As An FPGA, As Well As Instruction Set Processors, Such As A CPU, And A Related Computer Readable Medium
CN104615488A (zh) 异构多核可重构计算平台上任务调度的方法和装置
US11003429B1 (en) Compile-time scheduling
CN111522640A (zh) 计算图的并行执行方法和设备
WO2021180092A1 (zh) 任务调度方法和装置
CN112434785B (zh) 一种面向超级计算机的分布式并行深度神经网络性能评测方法
Georgiou et al. Topology-aware resource management for HPC applications
CN111767121B (zh) 运算方法、装置及相关产品
CN108139929B (zh) 用于调度多个任务的任务调度装置和方法
US11221979B1 (en) Synchronization of DMA transfers for large number of queues
US11847507B1 (en) DMA synchronization using alternating semaphores
Noorshams et al. Automated modeling of I/O performance and interference effects in virtualized storage systems
US20030037319A1 (en) Method and apparatus for partitioning and placement for a cycle-based simulation system
Sudarsan et al. Scheduling resizable parallel applications
Ehsan et al. LiPS: A cost-efficient data and task co-scheduler for MapReduce
CN110415162B (zh) 大数据中面向异构融合处理器的自适应图划分方法
Kaufmann et al. The {HCl} Scheduler: Going all-in on Heterogeneity
US11442794B1 (en) Event assignment for synchronization of concurrent execution engines
TWI776212B (zh) 用於積體電路加速器之系統、方法及電腦儲存媒體
De Sensi et al. State-aware concurrency throttling
Tabish et al. X-Stream: Accelerating streaming segments on MPSoCs for real-time applications

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