CN111695672A - 用于提高ai引擎mac利用率的方法 - Google Patents

用于提高ai引擎mac利用率的方法 Download PDF

Info

Publication number
CN111695672A
CN111695672A CN202010143985.9A CN202010143985A CN111695672A CN 111695672 A CN111695672 A CN 111695672A CN 202010143985 A CN202010143985 A CN 202010143985A CN 111695672 A CN111695672 A CN 111695672A
Authority
CN
China
Prior art keywords
scheduler
feature map
mac
mac units
integrated circuit
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.)
Granted
Application number
CN202010143985.9A
Other languages
English (en)
Other versions
CN111695672B (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.)
Baidu USA LLC
Original Assignee
Baidu USA 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 Baidu USA LLC filed Critical Baidu USA LLC
Publication of CN111695672A publication Critical patent/CN111695672A/zh
Application granted granted Critical
Publication of CN111695672B publication Critical patent/CN111695672B/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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

Landscapes

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

Abstract

本发明实施例公开一种集成电路和用于提高人工智能(AI)引擎中的集成电路上的乘法和累加(MAC)单元的利用率的方法。在实施例中,集成电路可以包括调度器,用于分配MAC单元以执行部署在AI引擎上的神经网络模型以处理输入数据。调度器包括MAC单元的状态信息,并且可以基于状态信息选择一个或多个空闲的MAC单元用于处理特征映射片。集成电路可以动态地将空闲的MAC单元映射到输入特征映射,从而提高MAC单元的利用率。可以在静态随机存取存储器(SRAM)中提供一对链表,每个链表具有参考头部,以便仅存储用于当前正在处理的层的特征映射片和权重。当处理下一层时,两个参考头部可以交换,使得用于当前层的输出特征映射片可以用作用于下一层的输入特征映射。

Description

用于提高AI引擎MAC利用率的方法
技术领域
本公开的实施例大体涉及人工智能(AI)引擎。更特别地,本公开的实施例涉及AI引擎中的乘法累加器(MAC单元)利用率。
背景技术
作为人工智能(AI)的分支,机器学习可以执行任务而不使用为该任务特别编程的应用程序。相反,机器学习可以在训练过程期间从给定任务的过去示例中学习,训练过程通常涉及从数据集学习权重。
机器学习模型(例如,神经网络模型)可以通过推断对输入数据执行任务。在推断期间,可以从输入数据中提取特征并使用分类器将特征与分数进行比较,以进行预测并提供结果。特征提取和分类可以是计算密集的,并且可以包括对于模型中的每层计算特征和权重的点积。因此,当机器学习模型在AI引擎上运行时,需要由AI引擎执行大量的乘法和累加(MAC)操作。
AI引擎可以包括多个MAC单元,MAC单元是用于执行MAC操作的硬件单元或块。在机器学习模型被部署在AI引擎上用于执行之前,映射工具可被用于从模型生成图元文件以指定模型中的每层与AI引擎中的MAC单元之间的静态映射。静态映射可以导致AI引擎中MAC单元的较低利用率。
例如,当输入特征映射的片需要并非AI引擎中的总MAC单元的倍数的MAC的数量时,一些MAC可能是空闲的。由于静态映射,空闲MAC不能被用于处理输入特征映射的下一片。对于另一示例,由于特征映射的稀疏性,MAC单元可能不均衡地完成任务,从而使一些MAC单元空闲。即使对于静态地映射到特征映射片的MAC单元,一个或多个MAC单元也可能由于数据提取或指令提取中的等待时间而需要等待。
发明内容
本发明的实施例的第一方面提供一种集成电路,包括:多个乘法和累加MAC单元;以及调度器,耦接到MAC单元以管理并分配所述多个MAC单元的至少部分以执行被部署为人工智能AI引擎的一部分的神经网络模型以处理输入数据,所述调度器维护所述多个MAC单元的状态信息;其中响应于接收到从所述输入数据中提取的特征映射的片,所述调度器基于与MAC单元对应的状态信息,从所述多个MAC单元中选择一个或多个MAC单元以处理特征映射片。
本发明的实施例的第二方面提供一种用于在集成电路内处理数据的方法,所述方法包括:由具有多个乘法和累加MAC单元的集成电路的调度器接收从提供至神经网络模型的输入数据中提取的特征映射的片,所述神经网络模型被部署为人工智能AI引擎的一部分,所述调度器维护所述集成电路上的多个MAC单元的状态信息;响应于接收特征映射片,由所述调度器从所述多个MAC单元中选择一个或多个MAC单元;以及使用一个或多个选择的MAC单元处理特征映射片。
本发明的实施例的第三方面提供一种数据处理系统,包括:主机处理器;以及耦接到所述主机处理器的一个或多个数据处理器,数据处理器中的每个都是集成电路的形式,其中数据处理器中的每个都包括:多个乘法和累加MAC单元,以及调度器,耦接到MAC单元以管理并分配所述多个MAC单元的至少部分以执行被部署为人工智能AI引擎的一部分的神经网络模型以处理从所述主机处理器接收的输入数据,所述调度器维护所述多个MAC单元的状态信息;其中响应于接收到从所述输入数据中提取的特征映射的片,所述调度器基于与MAC单元对应的状态信息,从所述多个MAC单元中选择一个或多个MAC单元以处理特征映射片。
附图说明
本公开的实施例通过示例的方式示出并且不限于附图中的图,在附图中,相同的附图标记表示相似的元件。
图1示出根据实施例的AI引擎的示例。
图2示出根据实施例的用于提高示例AI引擎中的MAC单元的利用率的集成电路的示例。
图3进一步示出根据实施例的用于提高示例AI引擎中的MAC单元的利用率的集成电路。
图4A-4D示出根据实施例的由示例AI引擎对于层N的输入特征映射片的处理。
图5示出根据实施例的示出提高AI引擎中的MAC单元的利用率的示例过程的流程图。
图6是示出可与一个实施例一起使用的数据处理系统的示例的框图。
具体实施方式
将参考以下论述的细节描述本公开的各个实施例和方面,且附图将说明各个实施例。以下描述和附图是本公开的说明,而不应被解释为限制本公开。描述了许多具体细节以提供对本公开的各个实施例的全面理解。然而,在某些情况下,为了提供对本公开的实施例的简明讨论,没有描述公知或常规的细节。
说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性可包括在本公开的至少一个实施例中。在说明书中的各个地方出现的短语“在一个实施例中”不一定都指同一实施例。
如上所述,神经网络模型的不同层与AI引擎中的MAC单元之间的静态映射可能导致MAC单元的低利用率。根据各个实施例,可以使用神经网络模型的不同层与AI引擎中的MAC单元之间的动态映射提高MAC单元的利用率。在一个实施例中,集成电路可以包括多个MAC单元;以及调度器,用于分配MAC单元以执行被部署为人工智能(AI)引擎的一部分的神经网络模型以处理输入数据,调度器维护用于多个MAC单元的状态信息。响应于接收从输入数据中提取的特征映射的片,调度器基于状态信息从MAC单元中选择一个或多个空闲的MAC单元,以用于处理特征映射片。
在一个实施例中,一种用于提高AI引擎中的集成电路上的MAC单元的利用率的方法可以包括:由集成电路上的调度器接收从提供至部署在AI引擎上的神经网络模型的输入数据中提取的特征映射的片,调度器包括用于MAC单元的状态信息;响应于接收特征映射片,基于状态信息从MAC单元中选择一个或多个空闲的MAC单元;以及使用一个或多个选择的空闲的MAC单元处理特征映射片。
在一个实施例中,调度器包括具有比特阵列的调度器映射,并且比特阵列的每个元素包括指示对应MAC单元是空闲还是忙碌的比特。调度器可以设置比特阵列中的对应比特,以便当MAC单元被分配给特征映射片时将该MAC单元标记为忙碌,并且当该MAC单元中的每个处理元件(PE)已经完成其被分配的计算时,重置对应比特以将该MAC单元标记为空闲。在AI引擎上调度特征映射片用于执行之前,调度器可以检查调度器映射以确定集成电路上的空闲的MAC单元的处理能力足以用于处理特征映射片。调度器是O(1)调度器,其可以是在多个MAC单元中实现的硬件调度器或者在集成电路上的双倍数据速率同步动态随机存取存储器(DDR DRAM)中实现的软件调度器。
在一个实施例中,可以从集成电路上的最长连续空闲的MAC单元中选择一个或多个MAC单元。选择的MAC单元的连续性可以基于它们的对应比特在比特阵列中的位置,并且可以指示它们在集成电路上的物理接近性。
在一个实施例中,集成电路包括静态随机存取存储器(SRAM),其存储输入特征映射、输出特征映射以及神经网络模型的当前层的权重。当前层是当前正由AI引擎处理的层。可以使用第一头部链接用于当前层的输入特征映射的片以创建第一链表。在AI引擎已经处理输入特征映射的片后,可以从第一链表中移除输入特征映射片。AI引擎在完成对输入特征映射片的处理后,可以生成对应的输出特征映射片。对应的输出特征映射片可以链接到第二头部,以创建用于当前层的第二链表。当处理用于当前层的输入特征映射的最后一片时,第一头部可以与第二头部交换,使得第二链表中用于该层的输出特征映射片可以作为用于神经网络模型的下一层的输入特征映射片而被提供。
在各个实施例中,用于跟踪特征映射片的链表或其它链接的数据结构不需要链接的特征映射片彼此相邻,从而使AI引擎能够更好地利用SRAM,而无需物理地划分SRAM以存储用于当前层的输入特征映射、输出特征映射和权重映射。使用O(1)调度器映射调度使用空闲的MAC单元的计算可以提高AI引擎的MAC单元的利用率,从而提高AI引擎的可扩展性和效率。
以上概述并不包括本公开中的所有实施例的穷举列表。所有集成电路和方法可从本公开中描述的各个方面和实施例的所有适当组合实践。
在以下附图中描述的过程由包括硬件(例如电路、专用逻辑等)、软件或两者的组合的处理逻辑执行。尽管以下关于一些顺序操作描述了过程,但是应当理解的是,可以以不同的顺序执行所述的一些操作。此外,一些操作可以并行地而不是顺序地执行。
图1示出根据实施例的AI引擎100的示例。如图1所示,AI引擎100可包括集成电路101,集成电路101具有神经网络核心115和其上的一个或多个处理器,例如精简指令集计算机(RISC)或数字信号处理器(DSP)107。神经网络核心115可以是包括多个MAC单元(例如,256个MAC单元)的独立处理单元,每个MAC单元包括多个处理元件(PE)。例如,MAC单元117可以包括PE 1 119、PE 2 121和PE N 124。MAC单元117中的PE可以排列成脉动阵列,并且每个PE可以具有一些胶合逻辑以存储和转发数据,以便与其相邻PE一起在锁定步骤中工作。
在一个实施例中,神经网络核心115中的每个MAC单元可以是三维张量计算单元。因此,该MAC单元中的PE可以被布置在三维脉动阵列中。每个MAC单元可以是执行乘法和加法功能的硬件单元。
在一个实施例中,集成电路101可以包括类似于神经网络核心115的多个神经网络核心。类似地,类似于集成电路101的多个集成电路可以经由快速外围组件互连高速(PCIe)总线,类似于PCIe103,而被附接到主机102。一个或多个映射工具可以被应用于神经网络模型,以生成网络模型的每层和AI引擎100(也称为数据处理引擎)中的MAC单元之间的映射信息。当特定层被映射到一个或多个MAC单元时,映射的MAC单元将被分配用于处理该层。映射信息可以存储在图元文件中。
在一个实施例中,具有图元文件中的这种映射信息的神经网络模型可被部署在主机102上。在运行时期间,神经网络调度器109可以经由接口1095检索图元文件(例如,神经网络图元文件111),并且使用图元文件中的静态映射信息(例如,静态映射信息113)从AI引擎100中的一个或多个神经网络核心(例如,神经网络核心115)分配MAC单元。分配的MAC单元可以对神经网络模型的每层执行加法和累加操作。神经网络调度器109可以将MAC单元不能处理的那些计算委托给DSP或RISC 108。
在一个实施例中,神经网络模型可以是包括用于更好性能的深层层次结构的深层神经网络(DNN)。层的层次结构可包括多个卷积(CONV)层和一个或多个全连接(FC)层。利用每个CONV层,可以提取输入数据的更高级抽象,以保存输入数据的基本但唯一的信息。输入数据的更高级抽象是从输入数据中提取的特征映射。每层可以将特征映射作为输入并且生成输出特征映射,输出特征映射转而可以作为输入特征映射被提供给下一层。神经网络模型中的最终CONV层的输出特征映射可由FC层处理以用于分类目的。在CONV层和FC层之间,可以添加额外层,诸如池化层和归一化层。每个CONV层或FC层还可以由激活层,诸如整流线性单元(ReLU)跟随。
在一个实施例中,用于CONV层的输入特征映射可以被切为多个片,这些片可以被映射到AI引擎100中的MAC单元的不同集合。因此,对应的输出特征映射也包括多个特征映射片。由于静态映射信息,神经网络调度器109需要一次处理一个输入特征映射片。在一个实施例中,神经网络调度器109将不会在完成当前特征映射片的处理之前开始分配硬件资源(例如,MAC单元)以处理下一特征映射片,这可能导致MAC单元的低利用率。类似地,神经网络调度器109将不会在当前层的处理完成之前开始分配硬件资源以处理下一层。
作为说明性示例,AI引擎具有256个MAC单元,并且用于神经网络模型的特定CONV层的输入特征映射片需要1124个MAC单元的计算能力。在该示例中,124个MAC单元(1124模256)可闲置一段时间。如果训练神经网络模型是稀疏网络,则空闲时间可能更长。例如,如果稀疏网络的层的特征映射需要20个MAC单元,则在完全处理该层的特征映射之前,总共236个MAC单元将是空闲的。
MAC单元的低利用率也可能是由数据提取和指令提取中的等待时间引起的。当MAC的集合被静态映射到特征映射片时,MAC单元的集合中的一些MAC单元可能依赖于其他MAC单元获得数据或指令,因此需要等待其他MAC完成它们的被分配的任务。因此,等待的MAC单元是空闲的。
如在典型的DNN中,卷积可以占神经网络模型的计算需求的大部分。因此,AI引擎100中的MAC单元的利用率可能对AI引擎100的性能具有主要影响。
图2示出根据实施例的用于提高示例AI引擎200中的MAC单元的利用率的集成电路的示例。如图2所示,集成电路101上的神经网络调度器109可以包括调度器映射201,用于提供神经网络模型和AI引擎200中的MAC单元之间的动态映射。调度器可以是O(1)调度器,其可以是在多个MAC单元中实现的硬件调度器或者在集成电路上的DDR DRAM中实现的软件调度器。
O(1)调度器是内核调度设计,其可以在恒定时间量内调度进程,而不管多少进程正在操作系统上运行。这是对先前使用的在基于输入量线性缩放的时间量中调度进程的O(n)调度器的改进。在实时操作系统的领域中,确定性执行是关键,并且O(1)调度器能够提供在执行时间上具有固定上限的调度服务。
由O(1)调度器使用的算法依赖于进程的活跃阵列和过期阵列,以实现恒定的调度时间。每个进程被给定固定的时间量,在此后,它被抢占并被移到过期阵列。一旦来自活跃阵列的所有任务已经耗尽它们的时间量并且已经被移动到过期阵列,则发生阵列切换。因为阵列仅经由指针访问,所以切换它们与交换两个指针一样快。该切换使活跃阵列成为新的空的过期阵列,而过期阵列成为活跃阵列。无论输入的大小如何,都保证O(1)算法在一定量的时间内完成。
在图2所示的示例中,神经网络模型不需要依赖于映射工具以如上所述离线生成图元文件。相反,比特阵列203可以包括用于AI引擎200中的每个MAC单元的对应比特。可以设置和重置对应比特,以指示MAC单元是忙碌还是空闲。神经网络调度器109可以在MAC单元被分配给特征映射片时将MAC单元标记为忙碌(BUSY),并且在MAC单元中的每个PE已经完成其被分配的计算时将MAC单元标记为空闲(IDLE)。
在没有特征映射片与任何MAC单元之间的静态映射的情况下,神经网络调度器109可以基于一个或多个MAC单元的可用性将它们动态地分配给特定的特征映射片。当需要的MAC单元的数量不是AI引擎200中预配置的MAC单元的倍数(1124个需要的MAC单元相对于256个预配置的MAC单元)时,可以调度124个MAC空闲的MAC单元以处理来自神经网络模型的下一层的特征映射片。当神经网络模型是稀疏网络时,可以调度空闲的MAC单元以处理取决于当前正在处理的特征映射的推断结果的其它层。当MAC单元由于数据提取或指令提取中的等待时间导致的不同步完成状态而空闲时,MAC单元无需等待直到其它MAC单元完成它们的被分配的任务。神经网络调度器109可以将空闲的MAC单元分配给神经网络模型的相同层中的其它特征映射片。
如图2中进一步所示,集成电路101可以包括SRAM 211,以存储神经网络模型的特征映射213。特征映射213不同时包括用于神经网络模型的所有层的输入特征映射和输出特征映射。相反,特征映射213仅存储用于当前层的输入特征映射片、输出特征映射片和权重。随着神经网络模型的执行进行到下一层,可以从主机102上的外部存储器(例如DRAM)或另一外部存储器检索用于下一层的权重,并且将用于下一层的权重加载到SRAM 211中的权重存储器219中。
在一个实施例中,可以为当前层提供成对的链接的数据结构。特征映射链表A 215和特征映射链表B 217是链接的数据结构的示例。
在一个实施例中,神经网络调度器109可以维护输入特征映射头部205和输出特征映射头部207,它们分别是特征映射链表A 215和特征映射链表B 217的参考和入口点。神经网络调度器109还包括权重头部209,权重头部209可以是用于当前层的权重存储器219的参考。权重存储器219可以是SRAM 211中的存储器位置或数据结构219,用于存储当前层的权重。
在一个实施例中,在开始调度MAC单元以处理神经网络模型的特定层之前,神经网络调度器109可以将用于该层的输入特征映射片链接到输入特征映射头部205,以创建特征映射链表A 215。在处理特征映射片后,可以从链表215中移除该特征映射片。一旦生成用于当前层的输出特征映射片,神经网络调度器109可以将输出特征映射片与输出特征映射头部207链接,以创建特征映射链表B 217,特征映射链表B 217可以将用于当前层的所有特征映射片链接在一起。当处理当前层时,还可以将相关联的权重从权重存储器219加载到神经网络核心115中用于处理。
当处理神经网络模型的最后一层时,可以交换输入特征映射头部205和输出特征映射头部207,使得输入特征映射头部205指向特征映射链表B 217,并且输出特征映射头部207指向特征映射链表A 215。特征映射链表A 215可以是空的,因为已经移除了用于当前层的所有输入特征映射片,而特征映射链表B 217可以包括在更高级处的特征映射的链。
在一个实施例中,交换将使得神经网络调度器109能够使用用于当前层的输出特征映射片作为用于下一层的输入特征映射片,并且使用清空的链表A 215作为用于下一层的输出特征映射片。
通过维护用于存储用于神经网络模型的仅一个CONV层的输入特征映射片和输出特征映射片的两个链表以及一个存储器位置,AI引擎200可显著减少SRAM的使用。此外,由于链表不需要它们的元素彼此相邻,并且它们的交换不需要复制,因此SRAM 211可以被更好地利用,而不需要被物理地划分为用于当前层的输入特征映射、输出特征映射和权重的不同区域。
图3进一步示出根据实施例的用于提高示例AI引擎200中的MAC单元的利用率的集成电路。在该说明性示例中,输入特征映射头部205指向特征映射链表A 215,特征映射链表A 215表示用于神经网络模型的层N的链接的输入特征映射片301、305和307。输出特征映射头部207指向特征映射链表B 217。尽管特征映射链表B 217包括用于层N的输出特征映射片,但是这些输出特征映射片可被用作用于层N+1的输入特征映射片313、314和315。
如进一步所示,神经网络核心115可以处理用于当前层的输入特征映射片K 309和从用于当前层的权重存储器219检索的权重310,以生成对应的输出特征映射片K 311。输入特征映射片K 309可从特征映射链表A 215检索,并可在被处理后从链表215中移除。类似地,输出特征映射片K 311可以被添加到特征映射链表B 217,并且可以由其中的特征映射片313、314和315中的一个表示。在处理用于层N的每个输入特征映射片后,输出特征映射片K 311可以被交换(312)为用于层N+1的输入特征映射片。
在一个实施例中,神经网络调度器109(如图2所示)可以监视(306和308)调度器映射201,以基于由比特阵列203索引的每个MAC单元的状态信息确定哪些MAC单元是空闲的以及哪些MAC单元是忙碌的。神经网络调度器109还可以通过在MAC单元的状态已经改变时重置其在比特阵列203中的对应比特而更新(306和308)用于MAC单元的状态信息。
例如,基于比特阵列203,一些MAC单元(例如,由比特阵列203中的索引M0、M1、M2指示的)是空闲的。空闲的MAC单元可以被调度以处理除了用于层N的输入特征映射片K 309之外的另一输入特征映射片,或用于层N+1的输入特征映射片。神经网络调度器109可以使用第一独立的参考头部(除了输入特征映射头部205和输出特征映射头部207之外)从链表215的后端访问链表215以检索用于空闲的MAC单元处理的输入特征映射片。类似地,神经网络调度器109可以使用第二独立的参考头部(除了输入特征映射头部205和输出特征映射头部207之外)从链表217的后端访问链表217以检索输出特征映射片,空闲的MAC单元可以将该输出特征映射片作为用于层N+1的输入特征映射片来处理。
在一个实施例中,当在AI引擎中调度空闲的MAC单元以处理用于层N或层N+1的另一输入特征映射片时,神经网络调度器109可检查AI引擎中的所有空闲的MAC单元,并聚集足够数量的空闲的MAC单元。确定聚集的空闲的MAC单元的数量的一种方式是使用以下规则:聚集的空闲的MAC单元的处理能力需要等于或大于用于处理输入特征映射片和相关联的权重所需的处理能力。可基于MAC单元的硬件配置确定每一MAC单元的处理能力。可以基于输入特征映射片的大小动态地计算用于处理输入特征映射片和权重的处理能力需求。
在一个实施例中,当选择待被聚集的空闲的MAC单元时,神经网络调度器109可以基于比特阵列203中的状态信息搜索AI引擎中的最长连续空闲的MAC单元(例如,一行中的10个空闲的MAC单元,其间没有任何忙碌的MAC单元),并且可以从最长连续MAC单元块中选择一个或多个空闲的MAC单元。如果最长连续块中的空闲的MAC单元不具有处理给定输入特征映射片所需的处理能力,则神经网络调度器可以继续搜索下一最长连续空闲的MAC单元(例如,一行中的3个空闲的MAC单元,其间没有任何忙碌的MAC单元)。可以重复上述过程,直到选择了期望数量的空闲的MAC单元。如果没有空闲的MAC单元彼此相邻,则神经网络调度器109可以从比特阵列203的起始选择任何空闲的MAC单元,直到选择了期望数量的空闲的MAC单元。
在一个实施例中,MAC单元的连续性可以基于它们的对应比特在比特阵列203中的位置确定,其中相邻的阵列元素指示AI引擎中的对应MAC单元的物理邻接。
图4A-4D示出根据实施例的示例AI引擎对用于层N的输入特征映射片的处理。参考图4A,用于层N的第一输入特征映射片409由神经网络核心115处理,并且从特征映射链表A215中移除。因此,其它输入映射片401、405和407保留在链表215中。生成用于层N的第一输出特征映射片413,且将其与输出特征映射头部207链接以成为特征映射链表B 217中的第一元素。一些MAC单元(例如,由M0、M1和M2索引的那些)忙于处理用于层N的输入特征映射片1,而一些其它MAC单元(例如,由Mk、Mk+1和MN索引的那些)是空闲的。空闲的MAC单元可以被分配以处理用于层N的一个或多个其他输入特征映射片。
参考图4B,神经网络核心115处理输入特征映射片K 415且生成输出特征映射片K417。如图所示,特征映射链表A 215不包括从1到K的输入特征映射片,而仅包括从K+1到N的输入特征映射片419、421和423,因为从1到K的输入特征映射片在被处理后已从链表215中移除。在特征映射链表B 217中可以找到与已被处理的输入特征映射片对应的输出特征映射片413、425和427。在图4B中,MAC单元的不同集合(例如,由M0、M1和M2索引的那些)是空闲的。
参考图4C,神经网络核心115处理用于层N的最后输入特征映射片N 429,并且生成最后输出特征映射片N 431。如图所示,特征映射链表A 215为空,因为用于层N的所有输入特征映射片都已被处理并从链表215中移除。特征映射链表B 217包括用于层N的所有输出特征映射片413、433和435。
参考图4D,在神经网络调度器109交换输入特征映射头部205和输出特征映射头部207并将用于层N+1的权重441从外部存储器(例如DDR存储器)加载到SRAM 211(如图2所示)后,神经网络核心115开始处理用于层N+1的输入特征映射片。如图所示,用于层N+1的第一输入特征映射437和用于层N+1的权重441可以从权重存储器219加载,并且被提供给神经网络核心115。神经网络核心115可以生成用于层N+1的第一输出特征映射片439。输出特征映射片439可与输出特征映射头部207链接,以成为特征映射链表A 215中的第一元素451。在神经网络核心处理用于层N的所有输入特征映射片后,由神经网络调度器109清空链表A215。用于层N+1的第一输出特征映射片439可以被交换(443),并且可以被用作用于层N+2的输入特征映射片。
如图4D进一步所示,第一输入特征映射片437已经从特征映射链表A 215中移除,特征映射链表A 215仍然包括尚未被处理的输入特征映射片445、447和449。
图5示出根据实施例的示出提高AI引擎中的MAC单元的利用率的示例过程的流程图。过程500可以由处理逻辑执行,该处理逻辑可以包括软件、硬件或其组合。过程500可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、处理器、处理设备、中央处理单元(CPU)、片上系统(SoC)等)、软件(例如,在处理设备上运行/执行的指令)、固件(例如,微代码)或其组合。在一些实施例中,过程500可以由一个或多个组件执行,例如图2、图3和图4A-4C中所示的神经网络调度器109。
参照图5,在操作501中,AI引擎中的神经网络调度器接收从被提供给部署在AI引擎上的神经网络模型的输入数据中提取的特征映射的片。神经网络调度器包括AI引擎中的集成电路上的MAC单元的状态信息。神经网络调度器可以用硬件或软件实现。每个MAC单元可以具有神经网络调度器中的比特阵列中的对应比特。该比特可以被设置或重置以指示MAC单元是忙碌还是空闲。
在操作503中,神经网络调度器响应于接收特征映射片,基于状态信息从集成电路选择一个或多个空闲的MAC单元。一个或多个MAC单元可以从最长连续空闲的MAC单元中选择。神经网络调度器可以使用预定算法计算输入特征映射片的处理能力需求,并且确定每个MAC的处理能力,从而可以选择足够数量的空闲的MAC单元以满足输入特征映射片和相关联的权重的处理需求。
在操作505中,神经网络调度器分配一个或多个选择的空闲的MAC单元以处理输入特征映射片。当AI引擎处理输入特征映射片时,神经网络调度器可以更新调度器映射以将一个或多个选择的MAC单元标记为忙碌。
注意,如上所示和所述的一些或所有组件可以用软件、硬件或其组合实现。例如,这些组件可以被实现为安装并存储在永久存储设备中的软件,软件可以由处理器(未示出)加载并执行在存储器中以执行贯穿本申请所述的过程或操作。可替换地,这些组件可被实现为被编程或嵌入到专用硬件中的可执行代码,专用硬件诸如集成电路(例如,专用IC或ASIC)、数字信号处理器(DSP)或现场可编程门阵列(FPGA),其可经由来自应用的对应驾驶员和/或操作系统访问。此外,这些组件可以被实现为处理器或处理器核中的特定硬件逻辑,作为经由一个或多个特定指令软件组件可访问的指令集的一部分。
图6是示出可与本公开的一个实施例一起使用的数据处理系统的示例的框图。例如,系统1500可以表示执行上述任何过程或方法的上述任何数据处理系统,诸如,例如主机102。系统1500可包括许多不同的组件。这些组件可以被实现为集成电路(IC)、其部分、离散电子设备、或适于诸如计算机系统的主板或内插式卡的电路板的其它模块、或被实现为以其它方式并入计算机系统的机箱内的组件。
还应当注意,系统1500旨在示出计算机系统的许多组件的高级视图。然而,应当理解的是,在某些实施方式中可以存在额外的组件,并且此外,在其他实施方式中可以出现所示组件的不同布置。系统1500可以表示台式机、笔记本电脑、平板计算机、服务器、移动电话、媒体播放器、个人数字助理(PDA)、智能手表、个人通信器、游戏设备、网络路由器或集线器、无线接入点(AP)或中继器、机顶盒或其组合。此外,虽然仅示出单个机器或系统,但是术语“机器”或“系统”还应当被认为包括单独地或联合地执行一组(或多组)指令以执行本文所讨论的方法中的任何一个或多个的机器或系统的任何集合。
在一个实施例中,系统1500包括经由总线或互连1510连接的处理器1501、存储器1503和设备1505-1508。处理器1501可以表示其中包括单个处理器核或多个处理器核的单个处理器或多个处理器。处理器1501可表示一个或多个通用处理器,诸如微处理器、中央处理单元(CPU)等。更特别地,处理器1501可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其它指令集的处理器、或实现指令集的组合的处理器。处理器1501还可以是一个或多个专用处理器,诸如专用集成电路(ASIC)、蜂窝或基带处理器、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、通信处理器、密码处理器、协处理器、嵌入式处理器或能够处理指令的任何其它类型的逻辑。
处理器1501可以是低功率多核处理器插槽,诸如超低电压处理器,处理器1501可以充当主处理单元和中央集线器,用于与系统的各个组件通信。这种处理器可以实现为片上系统(SoC)。处理器1501被配置为执行指令以执行本文所讨论的操作和步骤。系统1500可进一步包括与可选图形子系统1504通信的图形接口,可选图形子系统1504可包括显示控制器、图形处理器和/或显示设备。
处理器1501可与存储器1503通信,在一个实施例中,存储器1503可经由多个存储器设备实现以提供给定量的系统存储器。存储器1503可包括一个或多个易失性存储(或存储器)设备,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其他类型的存储设备。存储器1503可以存储包括由处理器1501或任何其它设备执行的指令序列的信息。例如,各种操作系统、设备驱动器、固件(例如,输入输出基本系统或BIOS)和/或应用程序的可执行代码和/或数据可以被加载到存储器1503中,并由处理器1501执行。操作系统可以是任何类型的操作系统诸如,例如机器人操作系统(ROS)、来自微软
Figure BDA0002400081390000121
Figure BDA0002400081390000122
操作系统、来自苹果(Apple)的
Figure BDA0002400081390000123
来自
Figure BDA0002400081390000124
Figure BDA0002400081390000125
LINUX、UNIX或其它实时或嵌入式操作系统。
系统1500还可包括IO设备,诸如设备1505-1508,包括(一个或多个)网络接口设备1505、(一个或多个)可选输入设备1506和(一个或多个)其它可选IO设备1507。网络接口设备1505可包括无线收发器和/或网络接口卡(NIC)。无线收发器可以是WiFi收发器、红外收发器、蓝牙收发器、WiMax收发器、无线蜂窝电话收发器、卫星收发器(例如,全球定位系统(GPS)收发器)或其它射频(RF)收发器,或其组合。NIC可以是以太网卡。
(一个或多个)输入设备1506可包括鼠标、触摸板、触敏屏(其可与显示设备1504集成)、诸如指示笔的指示器设备、和/或键盘(例如,作为触敏屏的一部分显示的物理键盘或虚拟键盘)。例如,输入设备1506可包括耦接到触摸屏的触摸屏控制器。触摸屏和触摸屏控制器可以例如使用多种触摸灵敏度技术中的任何一种检测接触和移动或其中断,多种触摸灵敏度技术包括但不限于电容性、电阻性、红外和表面声波技术,以及用于确定与触摸屏的一个或多个接触点的其它接近传感器阵列或其它元件。
IO设备1507可包括音频设备。音频设备可包括扬声器和/或麦克风,以促进语音使能功能,诸如语音识别、语音复制、数字记录和/或电话功能。其它IO设备1507还可包括通用串行总线(USB)端口、并行端口、串行端口、打印机、网络接口、总线桥(例如PCI-PCI桥)、传感器(例如,诸如加速度计、陀螺仪、磁力计、光传感器、罗盘、接近传感器等的运动传感器)或其组合。设备1507可以进一步包括成像处理子系统(例如,相机),其可包括光学传感器,诸如电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)光学传感器,用于促进相机功能,诸如记录照片和视频剪辑。某些传感器可以经由传感器集线器(未示出)耦接到互连1510,而诸如键盘或热传感器的其它设备可以由嵌入式控制器(未示出)控制,这取决于系统1500的具体配置或设计。
为了提供诸如数据、应用程序、一个或多个操作系统等信息的持久存储,大容量存储(未图示)也可耦接到处理器1501。在各个实施例中,为了使能更薄和更轻的系统设计以及改进系统响应性,该大容量存储可经由固态设备(SSD)实现。然而,在其它实施例中,大容量存储可主要使用具有较少量SSD存储的硬盘驱动器(HDD)实现,以充当SSD缓存,以在断电事件期间启用上下文状态和其它此类信息的非易失性存储,使得在系统活动的重新启动时可发生快速加电。此外,闪存设备可以例如经由串行外围接口(SPI)耦接到处理器1501。该闪存设备可以提供系统软件的非易失性存储,包括BIOS以及系统的其它固件。
存储设备1508可包括计算机可访问存储介质1509(也称为机器可读存储介质或计算机可读介质),在其上存储体现本文所述的方法或功能中的任何一个或多个的一组或多组指令或软件(例如,模块、单元和/或逻辑1528)。处理模块/单元/逻辑1528可以表示上述组件中的任何一个,诸如,例如神经网络调度器109。在由数据处理系统1500执行处理模块/单元/逻辑1528期间,处理模块/单元/逻辑1528还可以完全或至少部分地驻留在存储器1503内和/或处理器1501内,存储器1503和处理器1501也构成机器可访问存储介质。处理模块/单元/逻辑1528还可以经由网络接口设备1505通过网络发送或接收。
计算机可读存储介质1509还可用于持久地存储上述某些软件功能。尽管在示例性实施例中将计算机可读存储介质1509示出为单个介质,但是术语“计算机可读存储介质”应当被视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的缓存和服务器)。术语“计算机可读存储介质”还应当被视为包括能够存储或编码用于由机器执行的指令集并且使得机器执行本公开的方法中的任何一个或多个的任何介质。术语“计算机可读存储介质”因此应被视为包括但不限于固态存储器、光和磁介质、或任何其它非暂时性机器可读介质。
处理模块/单元/逻辑1528、组件和本文所述的其他特征可以被实现为离散硬件组件或者被集成在诸如ASIC、FPGA、DSP或类似设备之类的硬件组件的功能中。另外,处理模块/单元/逻辑1528可以被实现为硬件设备内的固件或功能电路。此外,处理模块/单元/逻辑1528可以以硬件设备和软件组件的任何组合实现。
注意,尽管系统1500是使用数据处理系统的各个组件示出,但它不旨在表示互连组件的任何特定体系结构或方式;因为这些细节与本公开的实施例没有密切关系。还将理解的是,具有更少组件或可能更多组件的网络计算机、手持式计算机、移动电话、服务器和/或其它数据处理系统也可与本公开的实施例一起使用。
已经关于对计算机存储器内的数据位的操作的算法和符号表示呈现了前述详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地将他们的工作实质传达给本领域的其他技术人员的方式。算法在这里并且通常被认为是导致期望结果的自洽操作序列。这些操作是需要对物理量进行物理操作的那些操作。
然而,应当记住的是,所有这些和类似的术语都与适当的物理量相关联,并且仅仅是应用于这些量的方便的标记。除非特别声明,否则从以上讨论中显而易见的是,应当理解的是,在整个说明书中,使用诸如所附权利要求书中所阐述的术语的讨论指的是计算机系统或类似电子计算设备的动作和过程,所述计算机系统或类似电子计算设备将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据操纵和变换成计算机系统存储器或寄存器或其它这样的信息存储、传输或显示设备内的类似表示为物理量的其它数据。
本公开的实施例还涉及用于执行本文的操作的装置。这种计算机程序存储在非暂时性计算机可读介质中。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质(例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备)。
在前述附图中描述的过程或方法可以由包括硬件(例如,电路、专用逻辑等)、软件(例如,包括在非暂时性计算机可读介质上)或两者的组合的处理逻辑来执行。尽管以上关于一些顺序操作描述了过程或方法,但是应当理解的是,可以以不同的顺序执行所述的一些操作。此外,一些操作可以并行地而不是顺序地执行。
本公开的实施例不是参考任何特定编程语言描述的。将了解的是,可使用各种编程语言实施如本文所述的本公开的实施例的教示。
在前述说明书中,已经参考本公开的具体示例性实施例描述了本公开的实施例。显然,在不背离如所附权利要求书中所阐述的本公开的更宽的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图应被认为是说明性的而不是限制性的。

Claims (21)

1.一种集成电路,包括:
多个乘法和累加MAC单元;以及
调度器,耦接到MAC单元以管理并分配所述多个MAC单元的至少部分以执行被部署为人工智能AI引擎的一部分的神经网络模型以处理输入数据,所述调度器维护所述多个MAC单元的状态信息,
其中响应于接收到从所述输入数据中提取的特征映射的片,所述调度器基于与MAC单元对应的状态信息,从所述多个MAC单元中选择一个或多个MAC单元以处理特征映射片。
2.如权利要求1所述的集成电路,其中所述调度器包括具有比特阵列的调度器映射,所述比特阵列的每个元素对应于所述多个MAC单元中的一个,以及包括指示对应的MAC单元是空闲还是忙碌的比特。
3.如权利要求2所述的集成电路,其中所述调度器在所述多个MAC单元中的一个MAC单元被分配给特征映射片时设置所述比特阵列中的对应比特以将所述MAC单元标记为忙碌,以及在所述MAC单元中的多个处理元件PE中的每个已经完成其被分配的计算时重置所述对应比特以将所述MAC单元标记为空闲。
4.如权利要求2所述的集成电路,其中所述调度器在调度特征映射片用于在所述AI引擎上执行之前检查所述调度器映射以确定所述集成电路中的空闲的MAC单元的处理能力足以处理特征映射片。
5.如权利要求2所述的集成电路,其中所述一个或多个MAC单元选自所述集成电路上的最长连续空闲的MAC单元,其中选择的MAC单元的连续性基于它们的对应比特在所述比特阵列中的位置,以及指示它们在所述集成电路上的物理接近性。
6.如权利要求1所述的集成电路,其中,所述调度器是在所述多个MAC单元中实现的O(1)硬件调度器,或者是在所述集成电路上的动态随机存取存储器中实现的O(1)软件调度器。
7.如权利要求1所述的集成电路,还包括:
静态随机存取存储器SRAM,用以存储用于所述神经网络模型的多个层中的每层的输入特征映射、输出特征映射以及权重。
8.如权利要求7所述的集成电路,其中用于所述神经网络模型的当前层的输入特征映射的多个片与第一头部链接以创建第一链表,以及其中在一个输入特征映射片已经被所述AI引擎处理后,将从所述第一链表中移除所述输入特征映射片。
9.如权利要求8所述的集成电路,其中与处理的输入特征映射片对应的输出特征映射片被链接到第二头部以创建用于当前层的第二链表。
10.如权利要求9所述的集成电路,其中当用于所述当前层的输入特征映射的多个片中的最后一片被处理时,所述第一头部将与所述第二头部交换,以便所述第二链表中的用于所述当前层的输出特征映射片将被提供作为用于所述神经网络模型的下一层的输入特征映射片。
11.一种用于在集成电路内处理数据的方法,所述方法包括:
由具有多个乘法和累加MAC单元的集成电路的调度器接收从提供至神经网络模型的输入数据中提取的特征映射的片,所述神经网络模型被部署为人工智能AI引擎的一部分,
所述调度器维护所述集成电路上的多个MAC单元的状态信息;
响应于接收特征映射片,由所述调度器从所述多个MAC单元中选择一个或多个MAC单元;以及
使用一个或多个选择的MAC单元处理特征映射片。
12.如权利要求11所述的方法,其中所述调度器包括具有比特阵列的调度器映射,所述比特阵列的每个元素对应于所述多个MAC单元中的一个,以及包括指示对应的MAC单元是空闲还是忙碌的比特。
13.如权利要求12所述的方法,其中所述调度器在所述多个MAC单元中的一个被分配给特征映射片时设置所述比特阵列中的对应比特以将所述MAC单元标记为忙碌,以及在所述MAC单元中的多个处理元件PE中的每个已经完成其被分配的计算时重置所述对应比特以将所述MAC单元标记为空闲。
14.如权利要求12所述的方法,其中所述调度器在调度特征映射片用于在所述AI引擎上执行之前检查所述调度器映射以确定所述集成电路中的空闲的MAC单元的处理能力足以处理特征映射片。
15.如权利要求12所述的方法,其中所述一个或多个MAC单元选自所述集成电路上的最长连续空闲的MAC单元,其中选择的MAC单元的连续性基于它们的对应比特在所述比特阵列中的位置,以及指示它们在所述集成电路上的物理接近性。
16.如权利要求11所述的方法,其中所述调度器是在所述多个MAC单元中实现的O(1)硬件调度器,或者是在所述集成电路上的动态随机存取存储器中实现的O(1)软件调度器。
17.根据权利要求11的方法,其中所述集成电路还包括静态随机存取存储器SRAM以存储用于所述神经网络模型的多个层中的每层的输入特征映射、输出特征映射和权重。
18.根据权利要求17的方法,其中用于所述神经网络模型的当前层的输入特征映射的多个片与第一头部链接以创建第一链表,以及其中在一个输入特征映射片已经被所述AI引擎处理后,将从所述第一链表中移除所述输入特征映射片。
19.如权利要求18所述的方法,其中将与处理的输入特征映射片对应的输出特征映射片链接到第二头部以创建用于所述当前层的第二链表。
20.一种数据处理系统,包括:
主机处理器;以及
耦接到所述主机处理器的一个或多个数据处理器,数据处理器中的每个都是集成电路的形式,其中数据处理器中的每个都包括:
多个乘法和累加MAC单元,以及
调度器,耦接到MAC单元以管理并分配所述多个MAC单元的至少部分以执行被部署为人工智能AI引擎的一部分的神经网络模型以处理从所述主机处理器接收的输入数据,所述调度器维护所述多个MAC单元的状态信息,
其中响应于接收到从所述输入数据中提取的特征映射的片,所述调度器基于与MAC单元对应的状态信息,从所述多个MAC单元中选择一个或多个MAC单元以处理特征映射片。
21.如权利要求20所述的系统,其中所述调度器包括具有比特阵列的调度器映射,所述比特阵列的每个元素对应于所述多个MAC单元中的一个,以及包括指示对应的MAC单元是空闲还是忙碌的比特。
CN202010143985.9A 2019-03-14 2020-03-04 用于提高ai引擎mac利用率的方法 Active CN111695672B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/354,107 2019-03-14
US16/354,107 US11562214B2 (en) 2019-03-14 2019-03-14 Methods for improving AI engine MAC utilization

Publications (2)

Publication Number Publication Date
CN111695672A true CN111695672A (zh) 2020-09-22
CN111695672B CN111695672B (zh) 2023-09-08

Family

ID=72423722

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010143985.9A Active CN111695672B (zh) 2019-03-14 2020-03-04 用于提高ai引擎mac利用率的方法

Country Status (2)

Country Link
US (1) US11562214B2 (zh)
CN (1) CN111695672B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022062388A1 (zh) * 2020-09-25 2022-03-31 苏州浪潮智能科技有限公司 一种视频数据处理方法、系统及相关组件

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11164072B2 (en) 2018-02-08 2021-11-02 Western Digital Technologies, Inc. Convolution engines for systolic neural network processor
US10796198B2 (en) 2018-02-08 2020-10-06 Western Digital Technologies, Inc. Adjusting enhancement coefficients for neural network engine
US10929058B2 (en) 2019-03-25 2021-02-23 Western Digital Technologies, Inc. Enhanced memory device architecture for machine learning
US11783176B2 (en) * 2019-03-25 2023-10-10 Western Digital Technologies, Inc. Enhanced storage device memory architecture for machine learning
JP7370158B2 (ja) * 2019-04-03 2023-10-27 株式会社Preferred Networks 情報処理装置および情報処理方法
US11310104B2 (en) * 2019-12-02 2022-04-19 At&T Intellectual Property I, L.P. Management of persistent network slices by a distributed learning system in a 5G or other next generation wireless network
KR20220078290A (ko) * 2020-12-03 2022-06-10 삼성전자주식회사 뉴럴 네트워크 연산 스케줄링 방법 및 장치
US11816871B2 (en) * 2020-12-30 2023-11-14 Advanced Micro Devices, Inc. Real-time low latency computer vision/machine learning compute accelerator with smart convolutional neural network scheduler
CN113190344B (zh) * 2021-03-26 2023-12-15 中国科学院软件研究所 一种面向软件定义卫星的神经网络动态重构部署的方法以及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977704A (zh) * 2017-11-10 2018-05-01 中国科学院计算技术研究所 权重数据存储方法和基于该方法的神经网络处理器
CN108762810A (zh) * 2017-12-27 2018-11-06 北京时代民芯科技有限公司 一种基于并行微引擎的网络报文头处理器
CN109034386A (zh) * 2018-06-26 2018-12-18 中国科学院计算机网络信息中心 一种基于资源调度器的深度学习系统及其方法
CN109426562A (zh) * 2017-08-30 2019-03-05 北京忆恒创源科技有限公司 优先级加权轮转调度器
US20200104692A1 (en) * 2018-09-28 2020-04-02 Qualcomm Incorporated Exploiting activation sparsity in deep neural networks

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030105799A1 (en) * 2001-12-03 2003-06-05 Avaz Networks, Inc. Distributed processing architecture with scalable processing layers
US10726514B2 (en) * 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
US10803379B2 (en) * 2017-12-12 2020-10-13 Amazon Technologies, Inc. Multi-memory on-chip computational network
US11023360B2 (en) * 2018-11-14 2021-06-01 The Mathworks, Inc. Systems and methods for configuring programmable logic devices for deep learning networks
US11227030B2 (en) * 2019-04-01 2022-01-18 Wave Computing, Inc. Matrix multiplication engine using pipelining
US10872295B1 (en) * 2019-09-19 2020-12-22 Hong Kong Applied Science and Technology Institute Company, Limited Residual quantization of bit-shift weights in an artificial neural network
US11237894B1 (en) * 2020-09-29 2022-02-01 Hailo Technologies Ltd. Layer control unit instruction addressing safety mechanism in an artificial neural network processor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109426562A (zh) * 2017-08-30 2019-03-05 北京忆恒创源科技有限公司 优先级加权轮转调度器
CN107977704A (zh) * 2017-11-10 2018-05-01 中国科学院计算技术研究所 权重数据存储方法和基于该方法的神经网络处理器
CN108762810A (zh) * 2017-12-27 2018-11-06 北京时代民芯科技有限公司 一种基于并行微引擎的网络报文头处理器
CN109034386A (zh) * 2018-06-26 2018-12-18 中国科学院计算机网络信息中心 一种基于资源调度器的深度学习系统及其方法
US20200104692A1 (en) * 2018-09-28 2020-04-02 Qualcomm Incorporated Exploiting activation sparsity in deep neural networks

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022062388A1 (zh) * 2020-09-25 2022-03-31 苏州浪潮智能科技有限公司 一种视频数据处理方法、系统及相关组件

Also Published As

Publication number Publication date
US20200293866A1 (en) 2020-09-17
US11562214B2 (en) 2023-01-24
CN111695672B (zh) 2023-09-08

Similar Documents

Publication Publication Date Title
CN111695672B (zh) 用于提高ai引擎mac利用率的方法
US11907830B2 (en) Neural network architecture using control logic determining convolution operation sequence
US11562213B2 (en) Methods and arrangements to manage memory in cascaded neural networks
CN107346351B (zh) 用于基于源代码中定义的硬件要求来设计fpga的方法和系统
US11775430B1 (en) Memory access for multiple circuit components
US8453150B2 (en) Multithread application-aware memory scheduling scheme for multi-core processors
KR102465896B1 (ko) 집약성을 개선하기 위한 머신 학습 모델들의 수정
US11809953B1 (en) Dynamic code loading for multiple executions on a sequential processor
US20210097396A1 (en) Neural network training in a distributed system
US11593003B2 (en) Method and systems for recommending storage management actions based on capacities of storage systems
US12020065B2 (en) Hierarchical processor selection
US11221979B1 (en) Synchronization of DMA transfers for large number of queues
US11372677B1 (en) Efficient scheduling of load instructions
CN114138484A (zh) 资源分配方法、装置以及介质
CN111753988A (zh) 用于多变量数据提供方的深度学习数据操纵
US20240095541A1 (en) Compiling of tasks for streaming operations at neural processor
US20240020550A1 (en) System and method for inference generation via optimization of inference model portions
WO2023236187A1 (en) Parallel computing of ml services and applications
EP4198719A1 (en) Processing work items in processing logic
US20240177067A1 (en) System and method for managing deployment of related inference models
US20240020510A1 (en) System and method for execution of inference models across multiple data processing systems
US11983128B1 (en) Multidimensional and multiblock tensorized direct memory access descriptors
US11182314B1 (en) Low latency neural network model loading
US20240078260A1 (en) Systems and methods for general-purpose out-of-core random walk graph computing
US20240185098A1 (en) Scheduling ml services and models with heterogeneous resources

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