CN112149811A - 调度感知张量分发模块 - Google Patents

调度感知张量分发模块 Download PDF

Info

Publication number
CN112149811A
CN112149811A CN202010221265.XA CN202010221265A CN112149811A CN 112149811 A CN112149811 A CN 112149811A CN 202010221265 A CN202010221265 A CN 202010221265A CN 112149811 A CN112149811 A CN 112149811A
Authority
CN
China
Prior art keywords
neural network
data
output data
memory
processing engines
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
CN202010221265.XA
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN112149811A publication Critical patent/CN112149811A/zh
Pending legal-status Critical Current

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/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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite state machines
    • 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
    • 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
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Logic Circuits (AREA)
  • Complex Calculations (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本公开涉及调度感知张量分发模块。方法和系统包括神经网络系统,所述神经网络系统包括神经网络加速器。所述神经网络加速器包括多个处理引擎,所述多个处理引擎耦合在一起来执行算术运算以支持使用深度神经网络系统执行的推理。所述神经网络加速器还包括调度感知张量数据分发电路或软件,所述调度感知张量数据分发电路或软件配置为在加载阶段中将张量数据加载到所述多个处理引擎中,在提取阶段中从所述多个处理引擎提取输出数据,重组提取的输出数据,并且将重组后的提取的输出数据存储到存储器中。

Description

调度感知张量分发模块
技术领域
本公开涉及诸如深度神经网络(DNN)之类的神经网络中的调度感知张量分发(schedule-aware tensor distribution)。
背景技术
该部分旨在向读者介绍可能与本公开的各个方面有关的本领域的各个方面,下面描述和/或要求保护本公开的各个方面。相信该讨论有助于向读者提供背景信息,以有助于更好地理解本公开的各个方面。因此,可以理解的是,这些陈述应从这种角度来阅读,而不是作为对现有技术的承认。
DNN当前被用于众多的人工智能(AI)/机器学习(ML)应用中。例如,DNN可以应用于计算机视觉应用、语音识别应用、机器人应用等。尽管DNN在许多AI/ML任务上都提供了最先进的准确性,但它却以高计算复杂性为代价。此外,DNN包括多个层,每个层可以具有不同的最佳调度(例如,循环顺序、循环阻塞和张量处理分区)。在处理元件(PE)的加载阶段,相邻层之间的不匹配可能导致明显的存储体(bank)冲突。由于用于完成工作的随机存取存储器(RAM)读取次数更多,这些存储体冲突会导致性能和能量损失。
发明内容
下面阐述本文公开的特定实施方式的概述。应当理解,给出这些方面仅仅是为了向读者提供这些特定实施方式的简要概述,并且这些方面无意于限制本公开的范围。实际上,本公开可以包括下面可能未阐述的多个方面。
方法和系统包括深度神经网络系统,该深度神经网络系统包括神经网络加速器。神经网络加速器包括多个处理引擎,这多个处理引擎耦合在一起来执行算术运算以支持使用深度神经网络系统执行的推理。神经网络加速器还包括调度感知张量数据分发模块,该调度感知张量数据分发模块执行下述操作:在加载阶段中将张量数据加载到多个处理引擎中,在提取阶段中从多个处理引擎提取输出数据,重组提取的输出数据,并且将重组后的提取的输出数据存储到存储器中。
可以相对于本公开的各个方面对上述特征进行各种改进。在这各个方面中也可以并入其他特征。这些改进和附加特征可以单独地或按照任何组合进行。例如,下面关于一个或多个所示实施方式讨论的各种特征可以单独地或按照任何组合结合到本发明的上述方面中的任何一个方面中。再次,以上给出的简要概述仅旨在使读者熟悉本公开的实施方式的特定方面和上下文,而不是对所要求保护的主题的限制。
附图说明
通过阅读以下详细描述并参考附图,可以更好地理解本公开的各个方面,在附图中:
图1是根据实施方式的具有加速器的深度神经网络(DNN)系统的框图;
图2是根据实施方式的图1的加速器的框图;
图3A-3D是根据实施方式的图1的示例加速器的框图,这些示例加速器具有相关联的固定调度;
图4是根据实施方式的图1的加速器的框图,该加速器具有灵活的调度感知张量数据分发模块(FSAD),该FSAD具有加载有限状态机(Load FSM)和排空有限状态机(DrainFSM);
图5是根据实施方式的图4的Load FSM的框图;
图6是根据实施方式的图4的Drain FSM的框图;
图7是根据实施方式的图5的Load FSM的仿真波形;
图8是根据实施方式的图6的Drain FSM的仿真波形;
图9是根据实施方式的示例输出激活张量数据重组的图示;
图10是根据实施方式的DNN的两个层和对应的最佳调度的图示;
图11是根据实施方式的图10中的一层的输出量和图10中的输入量的图示,其示出了这两层之间的不匹配;
图12是根据实施方式的解决图11所示的这两层之间的不匹配的流程图;以及
图13是根据实施方式的用于执行调度感知张量数据移动的方法的流程图。
具体实施方式
下面将描述一个或多个具体实施方式。为了提供对这些实施方式的简要描述,说明书中并未描述实际实施方式的所有特征。可以理解的是,在任何此类实际实施方式的开发中,例如在任何工程或设计项目中,必须做出许多特定于实施方式的决策,以实现开发人员的特定目标,诸如遵守与系统相关的约束和与业务相关的约束,这可能因实施方式而异。此外,可以理解的是,这样的开发工作可能是复杂且耗时的,但是对于受益于本公开的普通技术人员而言,这仍将是设计、制备和制造的例行工作。
机器学习加速器处理大量的张量数据以执行推理任务。处理此数据涉及跨存储器层次结构的多个级别的数据移动。减少数据传输并最大化数据重用和资源利用率可用于提高能效。然而,深度神经网络(DNN)的传统加速器支持自定义存储器层次结构和将用于激活和权重的张量移动到处理单元中以对网络的每一层执行张量操作的固定方式。数据在存储器层次结构中的移动和重用程度决定了每一层所消耗的能量。
某些DNN可能使用分析模型,试图通过最大化来自最内部存储器层次结构的重用来提高能效。假设大多数DNN具有十几到一百多层,并且许多层对调度有不同的偏好,那么这些固定调度的DNN加速器只能为几个DNN层提供最佳的数据重用和资源利用率。这种有限的重用和利用率限制了DNN加速器的整体能效。这些DNN加速器还具有很强的网络依赖性,这对于适应快速发展的DNN可能具有挑战性。
相反,灵活的调度感知张量数据分发模块(FSAD)实现灵活的调度和数据流,而不会大大增加开销和/或成本。该FSAD使DNN推理引擎能够:1)在从处理引擎(PE)传输张量数据/将张量数据传输到处理引擎(PE)时最小化静态随机存取存储器(SRAM)存储体冲突;2)在硬件中实现灵活的调度和数据流以在卷积层中重复使用数据;和/或,3)在所有卷积层中利用增强的能效进行边缘推理任务。FSAD可以用硬件电路、软件或其组合来实现。例如,可以通过将指令存储在存储器中来实现FSAD,该指令被配置为在将从一个层提取的数据加载到下一层之前使加速器重组该数据。
图1是DNN系统10的框图。DNN系统10向一个或多个应用逻辑12提供DNN功能。应用逻辑12可以包括用于执行规范功能的应用软件和/或硬件组件(例如,图像处理应用)。应用逻辑12将数据14转发到推理引擎16。推理引擎16是运行时元件,该运行时元件传递统一的应用编程接口(API),该API将DNN推理与应用逻辑12集成在一起,以将结果18提供给应用逻辑12。
为了提供DNN推理,推理引擎16使用模型20,该模型20控制如何对数据14进行DNN推理以生成结果18。具体来说,模型20包括DNN的层的拓扑。该拓扑包括接收数据14的输入层、输出结果18的输出层、以及在输入层和输出层之间提供数据14和结果18之间的处理的一个或多个隐藏层。可以将拓扑存储在可扩展标记语言(XML)文件中。当使用DNN在推理中处理数据14时,模型20还可包括用于任何层的结果的权重和/或偏差。
推理引擎16可以使用硬件单元22来实现和/或连接到硬件单元22。硬件单元22可以包括处理器和/或可编程逻辑器件。例如,处理器可以包括中央处理单元(CPU)、图形处理单元(GPU)、视觉处理单元等。可编程逻辑器件可以包括逻辑阵列、复杂的可编程逻辑器件、现场可编程门阵列等。
此外,推理引擎16可以包括一个或多个加速器24,加速器24使用一个或多个硬件单元22为DNN推理提供硬件加速。图2是可与DNN系统10一起使用的加速器24的示例实施方式。如图所示,加速器24包括处理元件(PE)30的空间阵列和本地存储器32,本地存储器32可包括寄存器文件和/或SRAM存储体。对于推理任务,权重或滤波器可以预先训练并且是特定于层的,并且从本地存储器32(例如,动态随机存取存储器(DRAM)和SRAM缓冲区)加载到PE30的阵列。称为输入激活或特征图的输入数据也引入到PE 30的阵列中。在PE 30内部,通过多个输入通道(IC)在相应的乘法累加(MAC)运算器中执行MAC运算,并生成输出激活。可以针对给定的一组激活使用多组权重张量(OC),以产生输出张量量(output tensorvolume)。可以将非线性函数(例如,整流线性函数)应用于输出激活,该输出激活又变成下一层的输入激活。
如先前所论述,加速器24的设计可以实现具有固定数据流的固定调度。例如,图3A-3D示出了示例DNN加速器及其支持的调度。例如,图3A中的加速器24A(例如,NeuFlow和ISAAC)可以实现权重固定调度,该权重固定调度使用激活40的单个并行传输,并且通过最大化卷积流和对权重的重用进行滤波来最小化权重42读取能耗。图3B中的加速器24B(例如,DianNao、DaDianNao、TPU、Zhang-UCLA和Google TPU)可以实现非本地重用方案,该方案使用大的全局缓冲区作为共享存储以减少DRAM访问能耗。图3C中的加速器24C(例如,具有稀疏性的ShiDianNao和Movidius VPU2)可以实现输出固定调度,该输出固定调度通过最大化本地累加来使部分和读/写能耗最小化。图3D中的加速器24D(例如,Eyeriss)实现行固定调度。
这些加速器24的主要挑战之一是由于它们的张量数据分发模块硬件仅执行寻址片上存储、将张量数据传输到处理引擎(PE)阵列、以及将数据存储回SRAM存储体。它们的张量数据分发模块不知道任何调度信息。因此,这些累加器可能不会实现不同的调度(即数据流)。代替通过常规张量数据分发模块进行的不知道调度的流(schedule-agnostic flow),使用调度信息来论证张量数据形状的FSAD可以在DNN加速器中实现灵活的调度。
除了硬件方案,基于软件的方案还可用于在通用CPU和GPU中传输和重塑张量数据。然而,固定功能加速器在设计中不支持这种灵活性。因此,即使这样的软件方案也可能不会在现有的加速器中使用。相反,FSAD以每层为基础基于最佳调度准备张量数据。FSAD还使软件能够基于操作中涉及的张量的尺寸来配置最佳方法以处理张量操作。此外,FSAD能够在多个调度之间进行切换,并且能够基于调度重新布置数据,从而在实现给定张量操作的同时减少了对本地存储器32的访问次数。另外,尽管FPGA也可以用于加速器24中的DNN加速以提供灵活性,但是在执行一个DNN应用期间不能改变FPGA的硬件配置,从而在推理执行期间确保固定的调度和一种类型的数据流。
由于DNN中的张量量和层数可能较大以实现高分类精度(例如ResNET50、YOLO等),并且由于数据移动通常比计算更耗能,因此减少数据移动并最大化数据重用是节能DNN加速器设计的关键。对于设备中的推理引擎16而言,该关键甚至更为重要。根据数据流(如何将诸如输入激活、权重和部分和之类的数据分发给每个PE并重用),推理引擎16(及其加速器24)可分类为输入固定的、权重固定的、输出固定的和行固定的,如前所述。数据重用方案取决于循环顺序、循环阻塞和张量处理分区。如本文所使用的“调度”指全部这些要素。在卷积操作中的循环顺序、阻塞和分区固定的固定调度推理引擎16中,加速器24只能用一种数据方案实现一种类型的数据流。
然而,考虑到DNN中各层之间的张量尺寸的差异,固定调度推理引擎16可能仅为层的子集提供最佳的能效,但并非为所有层提供最佳的能效。例如,第一层可能更偏好输入固定,第二层可能更偏好权重固定,但第三层可能更偏好部分和固定。对于针对每个层的最佳调度,SRAM访问减少使得能耗改善。例如,假设每层有最佳调度,与Eyeriss相比,FSAD在能效上可提供高达41%的改善,并且与TPU相比,可提供高达26%的改善。取决于硬件资源和存储器访问成本,最佳调度在层与层和/或网络与网络之间可能会有很大差异。
由于执行张量操作所涉及的张量的尺寸,支持灵活调度可以利用特定于层的增加的能效。然而,不同的调度使用按照下述方式排列在SRAM中的输入激活/输入特征图(IF)和权重/滤波器(FL):知道针对将使用激活的下一层的后续访问模式。在推理任务中,由于对FL进行了预训练,因此可以基于每个层的已知调度偏好来安排推理任务。然而,除第一层外,IF在运行时作为输出激活/输出特征图(OF)生成。因此,FSAD可以按照如下方式将层N的输出从PE阵列重新排列到SRAM中:通过其偏好的调度可以更容易地将其加载到层N+1的PE阵列。如下所述,所提出的张量数据分发模块为该问题提供了一种实用的方案,同时具有较低的硬件开销。
因此,可以将FSAD配置为基于当前层N的最佳调度将IF和FL张量数据分发到PE 30阵列,同时不会有存储体冲突。在将激活写入SRAM存储体之前,FSAD还可以根据层N+1的最佳调度来重新排列DNN层N的OF张量数据。
图4是具有FSAD 50的加速器24的框图。FSAD 50包括可配置描述符寄存器52,该可配置描述符寄存器52存储可配置描述符,该可配置描述符基于用于推理的调度规范来控制数据流。FSAD 50还包括张量地址生成单元54。张量地址生成单元54包括加载有限状态机(Load FSM)56和排空有限状态机(Drain FSM)58。加载FSM 56在使用列缓冲区64的加速器24的加载阶段中将张量IF张量数据60和FL张量数据62传输到PE 30阵列。Drain FSM 58在使用列缓冲区64的加速器24的提取阶段中从PE 30阵列提取OF张量数据66。PE 30的加载和提取基于描述符字段。FSAD 50还可以包括其他控制逻辑68,以在PE 30阵列(例如,经由控制逻辑70)和本地存储器32(例如,SRAM存储体)之间通过接口连接。
下面的表1示出了通过控制张量数据的方向和重组来支持灵活调度的可能的描述符字段的非详尽列表。
Figure BDA0002426145000000071
Figure BDA0002426145000000081
Figure BDA0002426145000000091
表1.示例描述符字段
在每一层开始时,更新配置描述符寄存器52。该更新包括一组配置描述符字段,这些字段基于针对IF和FL数据流的当前层(N)的最佳调度进行编程。在负载阶段,Load FSM56将使用这些调度。基于OF或中间部分和(Psum)重排的下一层(N+1)的最佳调度,对另一组配置描述符字段进行编程。在排空阶段中,Drain FSM 58使用这些调度。
图5示出了用于将张量数据加载到PE 30阵列中的Load FSM 56的示意图。如图所示,PE 30阵列可以包括N列x N行,其中本地存储器32包括N个SRAM存储体80。Load FSM 56包括用于选择和分发IF和FL张量数据的第一组多路复用器对82和第二组多路复用器对84。第一组多路复用器对82中的每个多路复用器对在每个SRAM存储体的加载路径中包括1:N多路复用器,以选择到特定PE列86的IF/FL数据。IF/FL数据的选择至少部分地基于由配置描述符(例如,针对IF的“SRAMLineMuxIF”字段和针对FL的“SRAMLine MuxFL”字段)编程的Line Sel信号88。在第二组多路复用器对84的每个多路复用器对中,使用1:N多路复用器来选择同一PE列中的IF/FL数据的每个点。IF/FL数据的点/字节的选择至少部分地基于由配置描述符(例如,分别为针对IF的“SRAMByteMuxIF”字段和针对FL的“SRAMLineMuxFL”字段)编程的Byte Sel信号90,其中IF/FL点由对应的PE列86中的一个PE 30选择。尽管所示的加速器24对PE列86使用基于列的提取,但是在某些实施方式中,加速器24可以利用使用了与本文讨论的技术类似的技术的行缓冲区对PE行使用基于行的提取。此外,在一些实施方式中,推理引擎16可以在每个加速器24中利用逐行和逐列提取的组合,或者对于推理引擎16中的不同加速器24利用不同的提取类型。
图6示出了用于分发OF张量数据的Drain FSM 58的示意图。在排空路径中的第一组多路复用器100中,每个PE列86有一个1:2多路复用器,以按两种方式之一选择PE 30的输出:在逐行输出中选择行102或按逐列方式选择列104。列/行选择信号106由包含层N+1的调度信息的描述符控制。在排空路径中的第二组多路复用器108中,每个SRAM缓冲区107有一个1:N多路复用器,以基于由对应配置描述符(例如“SRAMBankMuxOF”字段)编程的Bank Sel信号110选择要保存到特定SRAM存储体80的OF数据。在排空路径中的第三组多路复用器112中,对于同一SRAM缓冲区107条目中的OF数据的每个点都有一个1:N多路复用器。使用由配置描述符(例如,“SRAMByteMuxOF”字段)编程的Byte Sel信号114来执行使用第三组多路复用器112的选择。基于Byte Sel信号114,通过SRAM缓冲区条目中的字节位置来选择OF点。可以通过配置描述符(例如,“SRAMBufByteMask”字段)来编程字节掩码,以用于使用多路复用器118掩蔽SRAM缓冲区条目中的无效字节。SRAM缓冲区107的阵列可以包括多个条目,这些条目使用寄存器文件来对OF进行分级并在写入N个SRAM存储体之前形成SRAM线。SRAM缓冲区107写入是字节使能的。描述符字段(例如“ByteDuplIterOF”、“ByteOffsetDuplIterOF”和“LineDuplIterOF”)用于通过控制SRAMBufAddress信号120来选择每个周期要写入哪个字节或哪几个字节。基于描述符,Drain FSM 58可以将所有字节写入一个SRAM缓冲区条目中随后移至下一个条目,或者在每个周期写入不同条目处的同一字节位置。SRAM缓冲区中的写入字节位置也很灵活,以满足下一层中的不同数据模式。在组成一条SRAM线之后,每个SRAM缓冲区107写入一个对应的SRAM存储体80。使用SRAM缓冲区107,可以根据推理的下一层的规格(例如,可配置描述符52)将从PE 30提取的数据重组以存储在SRAM存储体80中。此外,由于可以按照逐列或逐行结构从PE 30提取数据,并且可以使用逐列或逐行结构将数据存储在SRAM存储体80中,因此可以使用调度感知张量分发模块50按照逐行方式或逐列方式提取数据,并基于下一层的规格在SRAM存储体80中将数据重组成逐行或逐列结构。
对于在OF提取之前使用Psum提取和重新加载的调度,可以使用Psum分发模块124来使用缓冲区126加载/提取部分和(Psum)。Psum分发模块124将1个Psum点(例如,针对8位整数IF/FL/OF精度,为32位)分成4个点,并且将Psum点直接写入PE列86的对应SRAM存储体80中。将各个Psum点分成SRAM存储体80中的4条线。该路径可以绕过加载和排空数据路径,以减少Psum加载/提取延迟。第四行多路复用器128用于至少部分地基于Psum Byte Sel129来从PE列86选择字节,Psum Byte Sel 129可至少部分地基于配置描述符。
图7和8涉及解决层之间的调度不匹配。图7示出了用于Load FSM 56操作连同控制信号的仿真波形130。当处理卷积层时,IF和FL张量数据量可能很大,并且在加载阶段132期间可能不适合单个PE 30的存储容量。因此,可以对写入的数据进行分区并将其分发到二维PE 30阵列以利用数据并行性。每个PE 30进行多少“工作”(例如,多少IF和FL)以及计算发生的顺序(例如,首先循环所有X和Y方向并生成1个输出通道(OC)部分和或首先循环用于1个OX和1个OY索引的所有输入通道(IC)以生成1个OF点)由调度控制。不同的调度对PE阵列具有不同的数据映射和不同的“工作分发”。为了在一个DNN加速器中实现不同的调度,在卷积层开始时,将通过编译器输入来更新配置描述符134。由于数据流是由描述符字段控制的,因此,根据当前层(N)的“调度”,将经过一定循环阻塞和排序之后的一定数量的IF和FL数据加载到列缓冲区。Load FSM中的N个“行选择”信号和N个“字节选择”信号可以支持针对IF和FL的不同数据仲裁,分别如IF信号136和FL信号138所示。例如,不同的PE列缓冲区可以从1个SRAM存储体(多播和数据重用)或最多N个SRAM存储体(N*N个IF点)访问IF或FL数据。在1列缓冲区中,由于数据仲裁是由FSAD完成的,因此列缓冲区的数据与一列中的PE之间的连接是专用的。
图8示出了用于Drain FSM 58操作连同控制信号的仿真波形150。在计算阶段之后,将基于下一层(N+1)在存储器中布置的偏好数据访问模式来提取每个PE 30中生成的OF数据,以防止SRAM存储体冲突。如前所述,可以通过下述两种方式提取从NxN PE 30阵列生成的OF点:逐行或逐列。可以使用由N个Bank Sel信号110确定的N个1:N多路复用器将1列或1行中的OF数据仲裁到不同的SRAM存储体。Bank Sel信号110的数量等于PE阵列的列/行尺寸(N)。然后,一个SRAM存储体的这些OF点分叉为N个点,并经由另外N个1:N多路复用器通过N个Byte Sel信号114进行选择,该N个1:N多路复用器将数据引导至SRAM缓冲区107数据条目中的选定字节位置。配置描述符152之一进一步针对OF数据选择SRAM缓冲区107条目中的有效字节位置。在这三个级别的多路复用器之后,重新排列一个PE列86或一个PE行中的OF点,以形成一个SRAM缓冲区107的新数据条目。在生成的信号154中示出了Byte Sel信号114和列/行选择信号106。OF数据写入信号156用于开始向SRAM缓冲区107中的写入。在Block 0的排空OF期间162,OF数据信号158用于将OF数据写入一个SRAM缓冲区107中,在此期间,将OF数据写入160到SRAM缓冲区107。将下一个SRAM缓冲区107写入下一个OF Block 164。
SRAM缓冲区107由具有多个条目的字节使能写入寄存器文件组成。SRAM缓冲区的宽度(例如,入口宽度)可以与SRAM存储体80中的SRAM数据宽度相同。每个SRAM缓冲区107遵循到其SRAM存储体80的1:1专用连接。OF数据线到SRAM缓冲区的写入操作由配置描述符152(例如,“ByteDuplicate”、“ByteDuplIterOF”、“ByteOffsetDuplIterOF”、“LineDuplicateOF”或“LineDuplIterOF”)控制。例如,当使能“ByteDuplicate”时,将OF数据写入到一个SRAM缓冲区107条目“ByteDuplIterOF”次,并且每个写入操作遵循“ByteOffsetDuplIterOF”的字节位置偏移。当使能“LineDuplicateOF”时,首先将OF数据写入连续编号的“LineDuplIterOF”条目的相同字节位置,然后按照“ByteOffsetDuplIterOF”的字节位置偏移进一步写入,以从同一条目重新开始。表2中描述了描述符字段的细节。图9中针对不同的数据模式示出了SRAM缓冲区中OF张量数据重组的示例。一旦在SRAM缓冲区107中完成了一个SRAM条目,就将数据写入其对应的SRAM存储体80。总之,FSAD 50提供足够的灵活性以在写入SRAM存储体80之前重新排列SRAM缓冲区107中的OF数据,并减少同时写入SRAM的次数(在写入SRAM存储体之前形成整个SRAM线)。
针对在输入通道上划分外循环的调度,使用Psum提取和重新加载。对于这些调度,可以通过从N个PE列86到N个SRAM存储体80的专用路径提取Psum。由于Psum使用的位宽是OF点使用的4倍,因此1个Psum点被划分为4条SRAM线。专用路径减少了部分产品的加载/提取延迟,从而提高了性能。
在一些实施方式中,张量地址生成单元54主要使用计数器和迭代器来生成张量地址。计数器和迭代器的这种使用减少了较高频率的关键路径和布线。另外,Load FSM 56和Drain FSM 58主要在OF数据提取路径(Drain FSM 58)中增加了复杂性。由于增加了DrainFSM 58的复杂性,因此可以通过将加载优先于提取/排空来简化下一层的IF的加载路径,从而避免/减少性能损失。此外,就寄存器文件和SRAM结构而言,FSAD 50不依赖于加速器24所使用的存储器层次结构。我们提出的设计的实现还可以对本地存储器32采用不同的类型(例如触发器、RF和SRAM)。
示例用例
在下面的描述中,假设具有16个SRAM存储体80和16个SRAM缓冲区107的16x16 PE30阵列(N=16),图10示出了将ResNet101的2个连续层映射到16×16PE 30阵列的2个不同的最佳调度。然而,FSAD 50可以应用于其他PE 30阵列尺寸和/或映射类型。对于scale3a_branch2c层170,其最佳调度将8个Oc的16个分区和8个输入通道(Ic)的16个分区分别映射到PE 30阵列的16个行和16个列。每个PE 30占用8个Ic点和8个输出通道(Oc)点以生成64个OF点。因此,该调度将8个IF点用于8个不同的Ic,并且将64个FL点用于8个不同的Ic和8个不同的Oc。外循环中使用28个Ox、28个Oy、以及Oc的其余4个分区。由于Ic的16个分区映射到16个列,因此最终的OF使用沿PE 30行方向的累加(例如,对于i=0到15,则为PE(i,15)),并且OF提取是从最后一个PE列86进行(例如,对于i=0到15,则为PE(15,i))。由于FL被外循环Oy和Ox重用,因此该数据流是权重固定的。
与scale3a_branch2c层170不同,res3b1_branch2a层172的最佳调度使用映射到16x16 PE 30阵列的8个Oc的16个分区、2个Oy的14个分区、以及4个Ox的1个分区,其中Oy和Oc分别映射到16个行和16个列。因此,该调度将8个IF点用于4个不同的Ox和2个不同的Oy,并且将8个FL点用于8个不同的Oc。每个PE 30将生成1个Ic的64个Psum。由于在外循环中有512个Ic分区和7个Ox分区,因此在512个外循环之后,针对256个PE 30,每个PE生成64个OF点。由于IF和FL在每个内循环都被引入PE 30,并且Psum在所有PE上都是固定的,所以该数据流是输出固定的。注意,在Resnet101中,尽管res3b1_branch2a层172和scale3a_branch2c层170在它们之间具有逐元素操作层,但是数据模式不匹配仍然存在。在不使用FSAD 50或使用静态调度来缓解不匹配的情况下,在不知道将要出现的数据模式的情况下,不同调度使用的数据模式与数据布局方式之间的不匹配可能会导致显著的存储体冲突。当使用更多的SRAM读取来完成工作时,这会引起性能和能量损失,并且,如果对访问进行串行化,则会妨碍PE 30阵列达到最大利用率。还可使用软件方案利用辅助CPU在连续卷积层中针对不同的最佳调度重新安排输出激活张量数据。然而,加速器24与CPU SRAM之间的数据传输延迟长且能耗高,这降低了这种软件驱动式灵活调度所提供的能效增益。
图11还示出了scale3a_branch2c层170和对应的生成的OF量180。就Ox x Oy x Oc而言,针对每个PE 30,生成每个1x1x8 OF量,并且总的来说,针对每个内循环块,从整个PE阵列生成1x1x128 OF量。对于28个Oy外块,针对同一Ox点(例如Ox=0)处的Oy=0、1、2、...、27,分别按照外循环#1、#2、...、#28的顺序填充OF量。在针对Ox=0填充了1x28x128 OF量后,针对Ox=1、2、...、27,开始填充另一1x28x128 OF量,直到生成完整的输出张量数据为止。
图11还示出了在下一层res3b1_branch2a 172中使用的IF数据模式。注意,由scale3a_branch2c 170生成的OF量180是该层的IF量。由于14个分区Oy映射到14个PE 30行,所以Oc的16个分区映射到16个PE列,每个PE 30使用8个IF点,即相同Ic的4个Ix和2个不同的Iy。比较scale3a_branch2c层170和res3b1_branch2a层172,由于调度差异,res3b1_branch2a 172的OF量180和IF量182之间存在明显的不匹配。因此,将OF量180从scale3a_branch2c层170直接馈送到res3b1_branch2a层172可能会遇到存储体冲突和停顿。
为了在2层之间连接不同的调度,FSAD 50可以:(1)分发scale3a_branch2c层170的输入张量数据IF和FL;(2)从scale3a_branch2c层170的PE 30阵列提取OF数据,然后根据res3b1_branch2a层172的调度在SRAM缓冲区107中重新排列张量数据。下面的表2和表3示出了FSAD 50中的配置描述符设置,并且图12示出了在写入SRAM存储体80之前到SRAM缓冲区107的对应OF数据流200。
Figure BDA0002426145000000151
Figure BDA0002426145000000161
表2.加载FSM配置描述符
与排空FSM有关的配置描述符
SRAMBankMuxOF[i] i
SRAMByteMuxOF[i] 15
SRAMBufByteMask “0001”
OFColRowSel
ByteDuplicateOF
ByteDuplIterOF 14
ByteOffsetDupliterOF 1
LineDuplicateOF
LineDuplIterOF 16
表3排空FSM配置描述符
针对当前层的输入激活IF和权重FL张量数据分发
如先前在图11中指出的,scale3a_branch2c层170的Ic被划分到16个列。将IFActvSRAM和FLActvSRAM设置为“FFFF”时,将16个IF存储体和16个FL存储体设置为活动的,以并行访问16个PE列86中的不同Ic数据。一个IF SRAM Bank[i]107中的IF和一个FLSRAM Bank[i]107中的FL点分别映射到一个PE Col[i]86(i=0、1、...、15)。如果针对IF将“SRAMByteMuxIF[i]”设置为“0”,而将“DuplIterIF”设置为“8”,则在16个PE 30行中复制8个IF点。相反,针对FL将“SRAMByteMuxFL[i]”设置为“i”会导致将1条SRAM线的16个FL点分发给16个PE 30行。总的来说,将256个不同的FL点在1次加载中分别加载到256个PE 30。将“LinesInnerBlkFLSRAM”设置为“64”时,针对内循环,每个PE 30分发64个FL点。对所有外循环重复类似的加载模式。
当前层的张量数据提取的输出激活
将“OFColRowSel”设置为真时,使用逐行方案提取scale3a_branch2c层170中的OF点。由于在Col[15]86的每个PE中生成了不同Oc的8个OF点,因此逐行提取将提取16行OF点,其中只有第15个点位置(最后一个列位置)具有有效的OF点。由于“SRAMBankMuxOF[i]”设置为等于行索引i,因此将来自Row[i]的OF数据引导到SRAM缓冲区[i]107。将“SRAMByteMuxOF[i]”设置为15时,每条SRAM缓冲区107线将在提取的OF行数据中选择OF点位置15,该位置与有效OF数据点的位置匹配。此外,由于将“LineDuplicateOF”设置为真且将“LineDuplIterOF”设置为16,所以,在1次排空操作时,将从单个PE 30提取的8个OF点分别写入SRAM缓冲区107的8个条目中的点位置“0”。在填充16个条目后,新的OF点可以开始写入条目0,其中到字节位置“1”的“Byteoffset”为1。假定将“ByteDuplIterOF”设置为14且“ByteDuplicate”为真,则在填充第14个点位置后,SRAM缓冲区107将一条完整的SRAM线写入其对应的SRAM存储体80。
针对下一层的输入激活IF张量数据分发:
在这些排空设置下,一条SRAM线包含14个OF点,对应于同一Ox和Oc的不同Oy点。具体来说,SRAM存储体的前8个条目包含Oy点0、2、4、...、26,而SRAM缓冲区的接下来的8个条目包含Oy点1、3、5、...、27。请注意,SRAM Bank[0]80包含Oc点0到7,SRAM Bank[1]80包含Oc点8到15,SRAM Bank[3]80包含Oc点16到23,依此类推。因此,当针对res3b1_branch2a层172加载了加载IF量182时,一条SRAM线包含PE 30的16个行的所有16个点。
利用由FSAD 50重组的OF数据,当针对res3b1_branch2a层172加载IF数据时,一条SRAM线可以在一次加载中将IF点提供给同一PE列86。由于能够针对加载路径进行多播(例如,1个SRAM存储体数据馈入所有16个PE列),因此在实现res3b1_branch2a层172的最佳调度时,在加载阶段不会出现存储体冲突。请注意,此会话中提供的用例示例具有两个高度不匹配的调度。对于具有映射和块相似性的调度,张量数据分发模块的实现也可以使用FSAD50完成。
图13示出了过程210的流程图。如图所示,在新层的开始处(框212),FSAD 50更新用于描述多个层中的当前层的调度的配置描述符寄存器52(框214)。至少部分地基于配置描述符寄存器52的值,Load FSM 56将张量数据加载到PE 30中(框216)。使用加载的张量数据,PE执行用于深度神经网络推理的计算(框218)。在完成计算之后,Drain FSM 58将输出数据提取到SRAM缓冲区107(框220)。Drain FSM 58基于多个层中的下一层的调度,使用SRAM缓冲区107将输出数据重组到存储器存储体(例如,SRAM存储体80)(框222)。然后,DNN系统10确定是否将使用另外的层(框224)。如果要使用另外的层,则将当前层增加到下一层(226),然后返回框212。
总之,FSAD 50提供了低成本的可编程硬件方案,该方案能够支持加速器24中的灵活调度和多个数据流映射。FSAD 50不依赖于RF和SRAM结构以及对加速器24的选择,因此可以应用于各种ML加速器。FSAD 50还使加速器24能够利用数据重用提高的能效。此外,FSAD实现了较小的面积和较低的功耗,从而实现了降低的功率成本。例如,FSAD 50可消耗加速器24的小于2.2%的面积,以及加速器24的小于2.7%的总功率,而FSAD 50使能效提高了41%(例如,使用Eyeriss)。换句话说,FSAD 50使得总能耗降低,同时面积增加很小。
虽然本公开中阐述的实施方式可能存在各种修改和替代形式,但是在附图中通过示例的方式示出了具体的实施方式,并且在本文对这些具体实施方式进行了详细描述。然而,可以理解的是,本公开并不旨在限于所公开的特定形式。本公开将涵盖落入由所附权利要求书所限定的本公开的精神和范围内的所有修改、等效物和替代形式。

Claims (21)

1.一种神经网络加速器,包括:
存储器;
多个处理引擎,所述多个理引擎耦合在一起并且配置为执行算术运算以支持使用所述神经网络加速器执行的推理;以及
调度感知张量数据分发电路,所述调度感知张量数据分发电路配置为:
在加载阶段中将张量数据加载到所述多个处理引擎中;
在提取阶段中从所述多个处理引擎提取输出数据;
重组提取的输出数据;以及
将重组后的提取的输出数据存储到所述存储器中。
2.根据权利要求1所述的神经网络加速器,其中,所述存储器包括静态随机存取存储器(SRAM)。
3.根据权利要求1所述的神经网络加速器,其中,所述调度感知张量数据分发电路包括缓冲区,并且所述调度感知张量数据分发电路配置为在存储到所述存储器中之前、在对提取的输出数据的所述重组中使用所述缓冲区。
4.根据权利要求1所述的神经网络加速器,其中,对提取的输出数据的所述重组至少部分地基于针对当前层之后的下一层输出所述输出数据的调度。
5.根据权利要求4所述的神经网络加速器,其中,对提取的输出数据的所述重组重塑所述输出数据以用于存储在所述存储器中,以减少针对所述下一层向所述存储器的写入次数。
6.根据权利要求1所述的神经网络加速器,其中,所述调度感知张量数据分发电路包括排空有限状态机,所述排空有限状态机执行对提取的输出数据的所述重组。
7.根据权利要求1-6中任一项所述的神经网络加速器,其中,所述调度感知张量数据分发电路包括加载有限状态机,所述加载有限状态机执行所述张量数据到所述多个处理引擎中的加载。
8.根据权利要求1-6中任一项所述的神经网络加速器,其中,所述张量数据包括输入激活或特征图,所述输入激活或特征图用于控制将输入数据输入到所述多个处理引擎的方式。
9.根据权利要求1-6中任一项所述的神经网络加速器,其中,所述张量数据包括权重或滤波器值,所述权重或滤波器值用于加权所述多个处理引擎的计算。
10.根据权利要求1-6中任一项所述的神经网络加速器,其中,从所述多个处理引擎提取所述输出数据可按照逐行或逐列结构进行,并且所述重组基于所述推理的下一层的规格将所述输出数据转换成逐列结构或逐行结构。
11.根据权利要求1-6中任一项所述的神经网络加速器,其中,从所述多个处理引擎提取所述输出数据可按照逐行或逐列结构进行,并且所述重组基于所述推理的下一层的规格使所述输出数据处于对应的结构。
12.一种深度神经网络系统,包括:
一个或多个神经网络加速器,包括:
多个处理引擎,所述多个处理引擎耦合在一起并且配置为执行算术运算以支持使用所述深度神经网络系统执行的推理;
调度感知张量数据分发电路,包括:
加载有限状态机,所述加载有限状态机配置为在加载阶段中将张量数据加载到所述多个处理引擎中;
排空有限状态机,所述排空有限状态机配置为:
在提取阶段中从所述多个处理引擎提取输出数据;
调节提取的输出数据;以及
将调节后的提取的输出数据存储到多个存储器存储体。
13.根据权利要求12所述的深度神经网络系统,其中,所述排空有限状态机包括多个存储器缓冲区。
14.根据权利要求13所述的深度神经网络系统,其中,所述多个处理引擎设置成行和列的阵列,并且所述多个存储器缓冲区的存储器缓冲区数量等于所述多个处理引擎的处理引擎列数。
15.根据权利要求14所述的深度神经网络系统,其中,所述多个存储器存储体的存储器存储体数量等于所述多个存储器缓冲区的存储器缓冲区数量,其中,各个存储器缓冲区由所述多个存储器存储体中的对应存储器存储体专用。
16.根据权利要求12-15中任一项所述的深度神经网络系统,其中,对提取的输出数据的所述调节解决了在所述推理的各层之间的提取和加载方案中的差异,以减少所述一个或多个神经网络加速器的能耗。
17.根据权利要求16所述的深度神经网络系统,其中,减少能耗包括减少由于在所述推理的所述各层之间的提取和加载方案中的差异而导致的向所述多个存储器存储体的写入次数。
18.根据权利要求17所述的深度神经网络系统,其中,所述多个存储器存储体包括多个静态随机存取存储器存储体。
19.一种用于执行深度神经网络中的调度感知张量分发的方法,包括:
针对所述深度神经网络推理的多个层进行以下操作:
更新用于描述所述多个层中的当前层的调度的配置描述符寄存器;
至少部分地基于所述配置描述符寄存器,将张量数据加载到多个处理引擎中;
使用加载的张量数据,使用所述多个处理引擎执行用于所述深度神经网络推理的计算;
在执行所述计算之后,提取输出数据;以及
基于所述多个层中的下一层的调度,将所述输出数据重组到存储器存储体。
20.根据权利要求19所述的方法,包括:针对所述深度神经网络推理的所述多个层,在所述下一层的加载阶段中将重组后的输出数据加载到所述多个处理引擎中。
21.一种神经网络加速器,包括:
存储器,所述存储器存储指令;
多个处理引擎,所述多个处理引擎耦合在一起并且配置为执行算术运算以支持使用所述神经网络加速器执行的推理;以及
处理器,所述处理器配置为执行所述指令以使所述神经网络加速器执行下述操作:
在加载阶段中将张量数据加载到所述多个处理引擎中;
在提取阶段中从所述多个处理引擎提取输出数据;
重组提取的输出数据;以及
将重组后的提取的输出数据存储到所述存储器中。
CN202010221265.XA 2019-06-28 2020-03-26 调度感知张量分发模块 Pending CN112149811A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/456,707 US11907827B2 (en) 2019-06-28 2019-06-28 Schedule-aware tensor distribution module
US16/456,707 2019-06-28

Publications (1)

Publication Number Publication Date
CN112149811A true CN112149811A (zh) 2020-12-29

Family

ID=69960486

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010221265.XA Pending CN112149811A (zh) 2019-06-28 2020-03-26 调度感知张量分发模块

Country Status (3)

Country Link
US (2) US11907827B2 (zh)
EP (1) EP3757901A1 (zh)
CN (1) CN112149811A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117667787A (zh) * 2024-01-30 2024-03-08 北京壁仞科技开发有限公司 运算装置及其操作方法和机器可读存储介质

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers
US20220207342A1 (en) * 2020-12-30 2022-06-30 Industrial Technology Research Institute Data compression method, data compression system and operation method of deep learning acceleration chip
US11204889B1 (en) 2021-03-29 2021-12-21 SambaNova Systems, Inc. Tensor partitioning and partition access order
US11366783B1 (en) 2021-03-29 2022-06-21 SambaNova Systems, Inc. Multi-headed multi-buffer for buffering data for processing
WO2022251291A1 (en) * 2021-05-28 2022-12-01 Meta Platforms Technologies, Llc Bandwidth-aware flexible-scheduling machine learning accelerator
US11675592B2 (en) 2021-06-17 2023-06-13 International Business Machines Corporation Instruction to query for model-dependent information
US12079658B2 (en) 2021-06-17 2024-09-03 International Business Machines Corporation Detection of invalid machine-specific data types during data conversion
US11669331B2 (en) 2021-06-17 2023-06-06 International Business Machines Corporation Neural network processing assist instruction
US11269632B1 (en) 2021-06-17 2022-03-08 International Business Machines Corporation Data conversion to/from selected data type with implied rounding mode
US11797270B2 (en) 2021-06-17 2023-10-24 International Business Machines Corporation Single function to perform multiple operations with distinct operation parameter validation
US11734013B2 (en) 2021-06-17 2023-08-22 International Business Machines Corporation Exception summary for invalid values detected during instruction execution
US11693692B2 (en) 2021-06-17 2023-07-04 International Business Machines Corporation Program event recording storage alteration processing for a neural network accelerator instruction
US11922178B2 (en) 2021-06-25 2024-03-05 Intel Corporation Methods and apparatus to load data within a machine learning accelerator
US20230177320A1 (en) * 2021-09-30 2023-06-08 Imagination Technologies Limited Neural network accelerator with a configurable pipeline
US11709611B2 (en) 2021-10-26 2023-07-25 SambaNova Systems, Inc. Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems
DE102022209700A1 (de) 2022-09-15 2024-03-21 Robert Bosch Gesellschaft mit beschränkter Haftung Gerät mit ausschließlicher Zuordnung von Ressourcen an neuronale Netze

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2016203619A1 (en) 2016-05-31 2017-12-14 Canon Kabushiki Kaisha Layer-based operations scheduling to optimise memory for CNN applications
US10838910B2 (en) * 2017-04-27 2020-11-17 Falcon Computing Systems and methods for systolic array design from a high-level program
US10795678B2 (en) * 2018-04-21 2020-10-06 Microsoft Technology Licensing, Llc Matrix vector multiplier with a vector register file comprising a multi-port memory
US12099912B2 (en) * 2018-06-22 2024-09-24 Samsung Electronics Co., Ltd. Neural processor
US11914860B2 (en) * 2018-08-20 2024-02-27 Macronix International Co., Ltd. Data storage for artificial intelligence-based applications

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117667787A (zh) * 2024-01-30 2024-03-08 北京壁仞科技开发有限公司 运算装置及其操作方法和机器可读存储介质
CN117667787B (zh) * 2024-01-30 2024-05-03 北京壁仞科技开发有限公司 运算装置及其操作方法和机器可读存储介质

Also Published As

Publication number Publication date
US20200410327A1 (en) 2020-12-31
US20240220785A1 (en) 2024-07-04
EP3757901A1 (en) 2020-12-30
US11907827B2 (en) 2024-02-20

Similar Documents

Publication Publication Date Title
CN112149811A (zh) 调度感知张量分发模块
US20200249998A1 (en) Scheduling computation graph heterogeneous computer system
KR102697368B1 (ko) 일반화된 이미지 프로세싱을 위한 이미지 프리프로세싱
US10354733B1 (en) Software-defined memory bandwidth reduction by hierarchical stream buffering for general matrix multiplication in a programmable IC
US11669443B2 (en) Data layout optimization on processing in memory architecture for executing neural network model
US11080227B2 (en) Compiler flow logic for reconfigurable architectures
US11609792B2 (en) Maximizing resource utilization of neural network computing system
US20200042216A1 (en) Storage-based graph for enabling computation graph optimization
GB2458554A (en) Coalescing memory accesses from multiple threads in a parallel processing system
CN110516316B (zh) 一种间断伽辽金法求解欧拉方程的gpu加速方法
US8615770B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
US11921814B2 (en) Method and device for matrix multiplication optimization using vector registers
CN111105023A (zh) 数据流重构方法及可重构数据流处理器
CN115390788A (zh) 基于fpga的图卷积神经网络稀疏矩阵乘法分配系统
US8959497B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
CN112906877A (zh) 用于执行神经网络模型的存储器架构中的数据布局有意识处理
US12073317B2 (en) Method and system for processing a neural network
US12093806B1 (en) Static memory allocation for neural network inference
US20240330041A1 (en) Command processor, neural core soc and method for obtaining context data using the same
EP4155959A1 (en) Embedded programmable logic device for acceleration in deep learning-focused processors
US12073312B2 (en) Neural processing device and method for controlling the same
US20240330059A1 (en) Neural processing device, neural processing system and method for processing command branch of neural processing device
US20240248764A1 (en) Efficient data processing, arbitration and prioritization
Hernandez et al. EasyHBM: Simple and Fast HBM Access for FPGAs Using High-Level-Synthesis
Wang Efficient, Reconfigurable, and QoS-Aware Systems for Deep Neural Networks

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