CN117910523A - 将暂存存储器分配给异构设备的方法和系统 - Google Patents
将暂存存储器分配给异构设备的方法和系统 Download PDFInfo
- Publication number
- CN117910523A CN117910523A CN202211449310.2A CN202211449310A CN117910523A CN 117910523 A CN117910523 A CN 117910523A CN 202211449310 A CN202211449310 A CN 202211449310A CN 117910523 A CN117910523 A CN 117910523A
- Authority
- CN
- China
- Prior art keywords
- tensor
- states
- unified
- sub
- records
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 48
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000003860 storage Methods 0.000 title claims abstract description 9
- 238000003062 neural network model Methods 0.000 claims abstract description 21
- 238000013528 artificial neural network Methods 0.000 claims abstract description 16
- 238000005457 optimization Methods 0.000 claims description 44
- 238000012545 processing Methods 0.000 claims description 25
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 230000007704 transition Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 3
- 238000004040 coloring Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 239000000370 acceptor Substances 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供将暂存存储器分配给异构设备的方法和系统,可优化SPM分配。在一个实施例中,本发明提供一种将暂存存储器(SPM)分配给异构设备的方法,其中该异构设备用于执行神经网络计算,该方法包括:从多个编译器接收多个编译状态,该多个编译器用于将神经网络模型的相应子图编译成在该异构设备上运行的相应子命令;统一跨不同编译状态的同一对象的记录;根据不同编译状态的统一记录为该相应子图分配该SPM。
Description
技术领域
本发明涉及存储器相关技术领域,特别是涉及在编译时(compile-time)将暂存存储器(ScratchPad Memory,SPM)分配给异构设备(heterogeneous device)的全局优化方案。
背景技术
暂存存储器(ScratchPad Memory,SPM)是一种高速片上存储器,通常用于实时嵌入式系统或用于专用计算。与具有相同容量的高速缓存存储器(cache memory)相比,SPM提供了更好的时序可预测性和更低的能耗。SPM的一种典型用途是用于存储不需要提交到主存储器的临时数据或计算结果。
SPM已广泛用于单核处理器和多核处理器系统。SPM分配(SPM allocation)可以在编译时执行。已有算法可将SPM分配给程序中(programs)的热点,以充分确保时序可预测性。
某些专用计算,例如神经网络计算,适合由异构设备执行。为了准备由异构设备执行的神经网络模型,由多个特定于目标的(target-specific)编译器编译该神经网络模型。每个编译器编译神经网络模型的一部分以供其目标设备执行。为了避免数据冲突(datahazard),保守的SPM分配算法不允许已分配给一个编译器的SPM位置被另一个编译器重用(reuse)。缺乏重用是对有限的SPM资源的浪费。因此,需要改进已有的异构设备的SPM分配算法。
发明内容
本发明提供将暂存存储器分配给异构设备的方法和系统,可优化SPM分配。
在一个实施例中,本发明提供一种将暂存存储器(SPM)分配给异构设备的方法,其中该异构设备用于执行神经网络计算,该方法包括:从多个编译器接收多个编译状态,该多个编译器用于将神经网络模型的相应子图编译成在该异构设备上运行的相应子命令;统一跨不同编译状态的同一对象的记录;根据不同编译状态的统一记录为该相应子图分配该SPM。
在另一个实施例中,本发明提供一种将暂存存储器(SPM)分配给异构设备的系统,其中该异构设备用于执行神经网络计算,该系统包括:处理硬件;和存储器,用于存储指令,当这些指令由该处理硬件执行时使该处理硬件执行多个编译器和全局优化管理器的操作;其中在执行该多个编译器的操作时,该处理器执行:将神经网络模型的相应子图编译成在该异构设备上运行的相应子命令;其中在执行该全局优化管理器的操作时,该处理器执行:从该多个编译器接收多个编译状态;统一跨不同编译状态的同一对象的记录;根据不同编译状态的统一记录为该相应子图分配该SPM。
如上所述,本发明实施例通过统一跨不同编译状态的同一对象的记录以及根据统一记录分配SPM,由此实现SPM分配的优化。由于本发明实施例根据同一对象的统一记录分配SPM,相同的SPM位置可被不同编译器共享。
附图说明
图1依据一个实施例示出编译神经网络模型100的过程。
图2依据一个实施例示出插入子图的图示。
图3根据一个实施例示出异构计算系统300(“系统300”)的框图。
图4是根据一个实施例的用于编译NN模型470的系统400的框图。
图5是示出根据一个实施例的子命令和由子命令操作的对象的图。
图6依据一个实施例示出全局优化管理器600。
图7A依据一个实施例示出张量记录和访问记录的示例。
图7B依据一个实施例示出张量记录和访问记录的示例。
图8依据一个实施例示出全局优化过程800。
图9依据一个实施例示出用于将SPM分配给异构设备以进行神经网络计算的方法900。
具体实施方式
在以下描述中,阐述了许多具体细节。然而,应当理解,可以在没有这些具体细节的情况下实践本发明的实施例。本发明中未详细示出众所周知的电路、结构和技术,以免混淆对本发明的理解。然而,本领域技术人员将理解,本发明可以在没有这些具体细节的情况下实施。本领域技术人员通过本发明的描述将能够在无需过度实验的情形下实现适当的功能。
本发明的实施例提供相应的平台,该平台可使多个编译器以协作的方式为异构计算获取暂存存储器(SPM)分配。多个编译器运行以将神经网络(Neural Network,NN)模型编译为供异构设备执行的子命令(subcommand)。该平台包括全局优化管理器,用于从编译器收集编译状态(compilation state),并在编译时根据编译状态优化SPM分配。在一个实施例中,编译状态包括张量记录(tensor records)和访问记录(access records)。
一个神经网络模型可通过有向无环图(Directed Acyclic Graph,DAG)描述,该有向无环图可被分割为多个子图(subgraph)。每一个子图由相应的编译器编译为相应的子命令,该相应的子命令在异构计算系统的相应的设备上运行。在以下描述中,术语“设备”和“处理器”可互换使用。处理器可以是内核(core)、处理单元、处理组件或执行由特定于目标的编译器编译的子命令的任何处理硬件。
图1依据一个实施例示出编译神经网络模型100的过程。过程的步骤(A)包括接收神经网络模型100作为输入。神经网络模型由DAG表示,其中DAG的每个节点代表一个任务,该任务包括一个或多个操作(operation,OP)和张量操作数(tensor operand)。图的每条边代表相邻节点之间的依赖关系。OP的非限制性示例包括卷积、池化、级联、归一化等。每个OP由一个设备执行,并且不同的OP可以由不同的设备执行。DAG可以划分为多个子图(例如子图_i、子图_j和子图_k)。每个子图也是一个DAG,代表可以由同一设备执行的OP。过程的步骤(B)包括将多个子图传送给相应的编译器(例如,编译器_i、编译器_j和编译器_k)。过程的步骤(C)包括多个编译器将该多个子图编译为相应的子命令(例如,子命令_i、子命令_j和子命令_k)。每个编译器都是特定于目标的;也就是说,它针对特定的目标设备进行编译。因此,不同编译器编译的子命令将由不同的目标设备执行。
异构计算系统可包括使用不同数据格式的多个目标设备(例如,处理器)。例如,第一个处理器可以以第一种格式存储或传输数据(例如,放置(place)/发送四个字节的数据,跳过接下来的四个字节,再放置/发送四个字节的数据,再跳过接下来的四个字节,以此类推),第二个处理器可以读取连续字节形式的数据。如图2所示,可在两个子图之间的输入/输出点检测数据格式的不一致性,且可在编译时解决该数据格式的不一致。
图2依据一个实施例示出插入子图的图示。继续图1的示例,在将多个子图编译为相应的子命令之前,在步骤(B2),在每一个边缘(edge)(也即,在任意两个相邻的子图之间)检查数据格式的一致性。如果在两个相邻的子图(例如,子图_i和子图_k)之间存在数据格式的不一致性,过程的步骤(D)被调用以在该两个子图之间插入一个子图(例如,子图_n)以转换数据格式。过程的步骤(E)包括相应的编译器将多个子图编译为相应的子命令,其中多个子图包括被插入的子图_n,其被编译器编译为子命令_n。
图3根据一个实施例示出异构计算系统300(“系统300”)的框图。异构系统300包括多个异构处理器(也称之为多个异构设备),例如P1,P2…,Pn。如本文所用,术语“异构处理器”是指不同指令集架构(Instruction Set Architecture,ISA)的处理器、为不同的特定任务集设计的处理器和/或使用不同数据格式访问存储器或使用不同数据格式输入/输出的处理器。其非限制性示例包括深度学习加速器(Deep Learning Accelerator,DLA)、矢量处理单元(Vector Processing Unit,VPU)、直接存储器访问(Direct Memory Access,DMA)设备、中央处理单元(Central Processing Unit,CPU)、数字信号处理器(Digital SignalProcessor,DSP)、神经处理单元(Neural Processing Unit,NPU)、图形处理单元(GraphicsProcessing Unit,GPU)等。在一个实施例中,处理器执行由各个特定于目标的编译器编译的子命令322以执行神经网络计算。
系统300包括与处理器共存的(co-located)暂存存储器(SPM)350;例如,在同一个芯片上共存。处理器和SPM 350可以是多处理器片上系统(MultiProcessor System-on-a-Chip,MPSoC)的一部分。在一个实施例中,SPM 350可以是静态随机存取存储器(SRAM)或另一种类型的快速存储器。SPM 350为处理器提供比片外存储器320更快的数据访问。存储器320的非限制性示例包括动态随机存取存储器(DRAM)设备、闪存设备和/或其他易失性或非易失性存储器设备。每个编译器可以在编译时获得SPM 350的一部分以供其目标设备在子命令的执行期间使用。
在一个实施例中,系统300可以执行编译和执行。例如,存储器320可以存储特定于目标的编译器和NN模型,并且系统300中的一个或多个处理器(例如,CPU)可以运行编译器以将NN模型编译成子命令322以供处理器执行。或者,编译器可以位于另一台机器上并且编译结果(例如,子命令322)被传送到系统300执行。
图4是根据一个实施例的用于编译NN模型470的系统400的框图。当在两个不同的机器上执行NN模型编译和执行时,可以使用系统400。NN模型470可以是图1中的NN模型100的示例。系统400包括处理硬件410、存储器420和网络接口430。可以理解的是,为了说明,系统400被简化;未显示其他硬件和软件组件。处理硬件410的非限制性示例可以包括编译器460可以在其上运行的一个或多个CPU和/或处理单元。编译器460可以存储在存储器420中,存储器420可以包括DRAM设备、闪存设备和/或其他易失性或非易失性存储设备。不同的编译器460可用于将NN模型470的不同部分编译成对应目标设备(例如,图3中的P1、P2、...、Pn)的子命令322。系统400可以通过网络接口430将子命令322传送(例如,通过下载)到系统300执行,网络接口430可以是有线接口或无线接口。
在一个实施例中,系统400包括全局优化管理器450以将SPM 350分配给编译器460以供执行子命令时使用。稍后将参考图6-9描述全局优化管理器450的操作。参考图3,在系统300执行NN模型470的编译和执行的实施例中,存储器320可以存储全局优化管理器450、编译器460和NN模型470以执行SPM分配。
图5是示出根据一个实施例的子命令和由子命令操作的对象的图。处理器P1、P2和P3是异构处理器。在这个例子中,处理器P1将执行子命令_1,它对由1、2和3标识的三个对象进行操作;处理器P2将执行子命令_2,它对由A、B、C、D和E标识的五个对象进行操作;处理器P3将执行子命令_3,它对由i、ii、iii和iv标识的四个对象进行操作。在一个实施例中,每个对像是一个张量,其可以是神经网络操作(OP)的输入/输出激活。两个对象之间的矩形块代表一个OP,它读取(read)输入张量并写(write)输出张量。每个黑色圆圈代表一个子命令的输入/输出点。中间的圆圈(标记为M)表示子命令_1的输出点以及子命令_2和子命令_3的输入点。也即,圆M是子命令_1、子命令_2和子命令_3的链接节点(linkage node)。由于张量3、A和i直接连接到同一个链接节点,这意味着张量3、A和i是同一个对象,可以存储在同一个存储器位置(例如,给定的SPM位置)。在编译时,当计算SPM分配时,给定的SPM位置可以进一步分配给任何张量B-E和ii-iv,只要分配不会引起冲突(例如,数据冲突)。由于这三个子命令由不同的编译器编译并且不存在直接的编译器间通信,因此通过可协调编译器的SPM分配的全局优化管理器可实现冲突预防。因此,全局优化管理器提供了一个协作编译器框架来优化SPM分配。
图6依据一个实施例示出全局优化管理器600。全局优化管理器600可为图4中的全局优化管理器450的一个示例。在此示例中,神经网络模型包括由三个相应的编译器编译的三个子图(例如子图_1、子图_2和子图_3)。在编译时,每个编译器都会生成一个编译状态,编译状态包括一个张量记录和一个访问记录。全局优化管理器600维护一个进度列表(progress list)680来跟踪每个子图的编译进度。全局优化管理器600还包括接收从编译器报告的编译状态的全局缓冲区分配器670。全局缓冲区分配器670为编译器生成的张量记录中的所有张量确定张量缓冲区分配。张量缓冲区分配包括部分或全部张量的SPM分配。全局缓冲区分配器670确定哪些张量可以放置在SPM的哪些位置(确定时可考虑SPM的空间限制、张量之间的依赖性以及张量的生命周期(lifetime))。生成的张量放置结果可能无法满足每个编译器,因为一些张量可能会被排除在SPM之外并且需要存储在DRAM中。然而,所有编译器通过接受SPM分配与全局缓冲区分配器670合作。
在编译过程中,每个编译器生成编译状态。在一个实施例中,每个编译状态可以在编译期间经历多个状态转换。最初,当编译器为相应的子图生成I/O映射(I/O map)时,开始状态转换为I/O映射就绪状态。I/O映射可能是编译状态的一部分。I/O映像指示输入张量ID和输出张量ID,以及目标设备所需的输入数据格式和输出数据格式。当编译器为相应的子图生成张量记录时,I/O映像就绪状态转换为张量记录就绪状态。当编译器为相应的子图生成访问记录时,张量记录就绪状态转换为访问记录就绪状态。在生成访问记录之后,状态转变为完成状态,指示编译状态已准备好且可由全局优化管理器600读取以进行SPM分配。
在一个实施例中,在编译器生成I/O映射之后,编译器暂停编译过程并向全局优化管理器600报告编译状态已准备好进行数据格式一致性检查。如图2的示例所示,在全局优化管理器600从所有准备好I/O映像的编译器读取编译状态后,它执行数据格式一致性检查并确定是否要插入任何新的子图。如果一个新的子图要插入至表示NN模型的图中,则调用相应的编译器来编译新的子图。然后编译器恢复编译过程。
在编译器恢复编译过程之后,每个编译器进一步在编译状态中生成张量记录和访问记录。当编译器准备好张量记录和访问记录时,它暂停编译过程并向全局优化管理器600报告已为SPM分配准备好编译状态。在全局优化管理器600从张量记录和访问记录就绪的所有编译器读取编译状态之后,它计算SPM分配并将分配写回每个编译状态。然后编译器恢复编译过程以生成子命令。
图7A依据一个实施例示出张量记录和访问记录的示例。同时参考图6,示例(A)显示了通过编译子图_1生成的张量和访问记录610。示例(B)显示了通过编译子图_2生成的张量和访问记录620。示例(C)显示了通过编译子图_3生成的张量和访问记录630。以张量和访问记录610为例,张量和访问记录610包括张量记录711,其记录子图_1中每个张量的张量ID、大小和类别等属性。张量和访问记录610还包括访问记录712,其为子图_1中的每个OP记录输入张量ID(即,由OP读取的张量)和输出张量ID(即,由OP写入的张量)。例如,访问记录712的第一列(column)指示子图_1中的OP1读取张量1和写入张量2。访问记录722的第三列表示子图_2中的OP3读取张量C和写入张量D。全局优化管理器600基于张量ID、张量记录和访问记录构造一个SPM分配的全局视图(例如,图7B所示的张量和访问记录640)。
图8依据一个实施例示出全局优化过程800。同时参考图6,过程800由全局优化管理器600和特定于目标的编译器执行。过程800包括前置条件步骤810,在该步骤中,进度列表680(称为“编译进度”)上的每个编译器记录其编译状态,编译状态包括至少一个张量记录和至少一个访问记录。在步骤820,全局优化管理器600读取每个编译进度的编译状态,并基于进度列表680上所有编译器的编译状态计算全局优化结果。全局优化结果的计算包括统一所有张量ID,统一所有张量记录,统一所有访问记录等步骤。
参考图5、图7A和图7B中的示例,全局优化管理器600确定张量ID 3、A和i标识相同的张量(也即,标识同一个对象)并且可以统一(unify)为跨张量记录711、721和731的单个张量ID(例如,图7B中的张量记录741中的张量ID c)。全局优化管理器600在确定两个或更多个张量ID标识相同张量时统一这些张量ID。该确定可以基于每个子图的输入张量ID和输出张量ID,以及两个子图之间的链接节点。在张量ID被统一(即合并为一个张量ID)后,张量记录和访问记录也可以被统一。例如,张量记录711、721和731可以统一为一个统一的张量记录(例如,图7B中的统一的张量记录741),且张量ID为3、A、i的张量ID可替换为单个张量ID(例如,图7B中的张量记录741中的张量ID c)。访问记录712、722和732也可以统一为具有三个分支的统一访问记录(例如,图7B中的统一访问记录742),并且可以基于读取(输入)和写入(输出)张量ID,在跨不同分支的输入张量和输出张量之间建立链接,此链接对应了三个分支的访问记录间的执行先后关系。此外,作为可选方案,全局优化管理器600还可维护图7B右下角所示的旧张量ID与新张量ID的对照表。统一访问记录指示每个张量的生命周期,且全局优化管理器600依赖该统一访问记录进行SPM分配。需要说明的是,图7B仅是对张量记录和访问记录进行合并的举例,在具体实现中,本领域技术人员可对图7B的示例进行简单替换。例如,在一替代实施例中,仅需要在张量和访问记录610、620及630中将张量ID为3、A及i统一为一个新的张量ID(例如,张量ID c)即可,而张量和访问记录610、620及630仍可保留原有的结构。在又一替代实施例中,在将张量记录711、721和731统一为一个统一的张量记录(例如,图7B中的统一的张量记录741)以及访问记录712、722和732统一为具有三个分支的统一访问记录(例如,图7B中的统一访问记录742)时,可将张量ID为3、A、i的张量ID替换为单个张量ID(例如,图7B中的张量记录741和访问记录742中的张量ID c),但是保留其他张量ID不变(例如,张量记录741和访问记录742中保留原有的张量ID 1、2、B、C、D、E、i、ii、iii和iv)。
全局优化结果的计算还包括识别子图之间的依赖关系、确定张量缓冲区分配以及将结果写回每个编译进度的步骤。张量缓冲区分配包括基于编译状态的全局知识(globalknowledge)(例如,图7B所示的张量和访问记录640)将SPM分配给子图。在一个实施例中,SPM的分配可以表述为区间着色问题(interval coloring problem),这可以通过已知算法来解决。过程800还包括后置条件步骤830,在该步骤中每个编译进度对SPM分配执行健全性检查。
图9依据一个实施例示出用于将SPM分配给异构设备以进行神经网络计算的方法900。在一个实施例中,系统可以使用全局优化管理器来执行方法900。该系统可以包括处理硬件和存储器,并且存储器可以存储指令,这些指令由处理硬件执行时使处理硬件执行全局优化管理器的操作。全局优化管理器将SPM分配给异构设备,这些设备执行神经网络计算的相应子命令。执行方法900的系统的非限制性示例可以包括图3中的系统300和图4中的系统400,全局优化管理器和多个编译器可以在这些系统上运行。在一个实施例中,执行编译和SPM分配的系统可以与目标设备所在的异构计算系统相同。或者,执行编译和SPM分配的系统可能与异构计算系统不同。
方法900开始于步骤910,在该步骤中,系统从多个编译器接收编译状态。编译器将神经网络模型的相应子图编译成在异构设备上运行的相应子命令。在步骤920,系统统一跨不同编译状态的同一对象的记录。在步骤930,系统根据编译状态的统一记录为子图分配SPM。
在一个实施例中,系统基于编译器的编译状态执行SPM分配的全局优化。每个编译器都是特定于目标设备的,并且用于将神经网络模型的子图编译成子命令,以在异构计算系统中的异构设备上运行。每个编译状态都包含一个张量记录,该记录指示相应子图中张量的属性。每个编译状态包括一个访问记录,该访问记录标识相应子图中神经网络操作的输入张量和输出张量。
在一个实施例中,统一记录包括将标识同一对象的多个张量ID统一为一个统一张量ID;根据统一张量ID将多个张量记录统一成一个统一张量记录;根据统一张量ID将多个访问记录统一为一个统一访问记录。统一访问记录表示统一张量记录中每个张量的生命周期信息,SPM分配至少部分基于该生命周期信息。系统将SPM分配的结果写回编译器的编译状态,以供编译器继续编译。
在一个实施例中,编译状态包括用于识别输入和输出张量以及输入和输出数据格式的相应I/O映像。当系统检测到神经网络模型中两个相邻子图的输入输出数据格式不同时,在相邻两个子图之间插入一个新的子图以进行数据格式转换。用于SPM分配的编译器的编译状态包括新子图的新编译状态。
已经参考图3、4和6的示例性实施例描述了图9的流程图的操作。然而,应该理解,图9的流程图的操作可以通过除了图3、4和6之外的本发明的实施例执行,以及图3、4和6的实施例可以执行与参考流程图讨论的那些不同的操作。虽然图9的流程图示出了由本发明的某些实施例执行的操作的特定顺序,但应当理解,这种顺序是示例性的(例如,替代实施例可以以不同的顺序执行操作、组合某些操作、重叠某些操作等)。
虽然已经通过示例和根据优选实施例描述了本发明,但是应当理解,本发明不限于所公开的实施例。相反,它旨在涵盖各种修改和类似的布置(这对于本领域技术人员来说是显而易见的)。因此,所附权利要求的范围应给予最广泛的解释,以涵盖所有此类修改和类似布置。
Claims (20)
1.一种将暂存存储器分配给异构设备的方法,其中该异构设备用于执行神经网络计算,其特征在于,该方法包括:
从多个编译器接收多个编译状态,该多个编译器用于将神经网络模型的相应子图编译成在该异构设备上运行的相应子命令;
统一跨不同编译状态的同一对象的记录;
根据不同编译状态的统一记录为该相应子图分配该暂存存储器。
2.如权利要求1所述的方法,其特征在于,根据不同编译状态的统一记录为该相应子图分配该暂存存储器进一步包括:
根据该多个编译器的该多个编译状态执行暂存存储器分配的全局优化。
3.如权利要求1所述的方法,其特征在于,每个编译器都是特定于目标设备的,并且用于将该神经网络模型的一个子图编译成一个子命令,以在一个异构设备上运行。
4.如权利要求1所述的方法,其特征在于,每个编译状态包括一个张量记录,该张量记录指示相应子图中张量的属性。
5.如权利要求1所述的方法,其特征在于,每个编译状态包括一个访问记录,该访问记录标识相应子图中神经网络操作的输入张量和输出张量。
6.如权利要求1所述的方法,其特征在于,统一跨不同编译状态的同一对象的记录包括:
将标识该同一对象的多个张量ID统一为一个统一张量ID;
根据该统一张量ID将多个张量记录统一成一个统一张量记录;
根据该统一张量ID将多个访问记录统一为一个统一访问记录。
7.如权利要求6所述的方法,其特征在于,该统一访问记录表示该统一张量记录中每个张量的生命周期信息,其中根据不同编译状态的统一记录为该相应子图分配暂存存储器包括:
至少部分基于该生命周期信息分配该暂存存储器。
8.如权利要求1所述的方法,其特征在于,进一步包括:
将该暂存存储器的分配的结果写回该多个编译器的编译状态,以供该多个编译器继续编译。
9.如权利要求1所述的方法,其特征在于,该多个编译状态包括用于识别输入和输出张量以及输入和输出数据格式的相应I/O映像。
10.如权利要求1所述的方法,其特征在于,进一步包括:
检测该神经网络模型中两个相邻子图的输入和输出之间的不同数据格式;
在该两个相邻子图之间插入一个新的子图,以进行数据格式转换;和
其中从多个编译器接收该多个编译状态时,该多个编译状态包括该新的子图的新的编译状态。
11.一种将暂存存储器分配给异构设备的系统,其中该异构设备用于执行神经网络计算,其特征在于,该系统包括:
处理硬件;和
存储器,用于存储指令,当这些指令由该处理硬件执行时使该处理硬件执行多个编译器和全局优化管理器的操作;
其中在执行该多个编译器的操作时,该处理器执行:
将神经网络模型的相应子图编译成在该异构设备上运行的相应子命令;
其中在执行该全局优化管理器的操作时,该处理器执行:
从该多个编译器接收多个编译状态;
统一跨不同编译状态的同一对象的记录;
根据不同编译状态的统一记录为该相应子图分配该暂存存储器。
12.如权利要求11所述的系统,其特征在于,在根据不同编译状态的统一记录为该相应子图分配该暂存存储器时,该处理硬件进一步执行:
根据该多个编译器的该多个编译状态执行暂存存储器分配的全局优化。
13.如权利要求11所述的系统,其特征在于,每个编译器都是特定于目标设备的,并且用于将该神经网络模型的一个子图编译成一个子命令,以在一个异构设备上运行。
14.如权利要求11所述的系统,其特征在于,每个编译状态包括一个张量记录,该张量记录指示相应子图中张量的属性。
15.如权利要求11所述的系统,其特征在于,每个编译状态包括一个访问记录,该访问记录标识相应子图中神经网络操作的输入张量和输出张量。
16.如权利要求11所述的系统,其特征在于,统一跨不同编译状态的同一对象的记录时,该处理硬件进一步执行:
将标识该同一对象的多个张量ID统一为一个统一张量ID;
根据该统一张量ID将多个张量记录统一成一个统一张量记录;
根据该统一张量ID将多个访问记录统一为一个统一访问记录。
17.如权利要求16所述的系统,其特征在于,该统一访问记录表示该统一张量记录中每个张量的生命周期信息,其中根据不同编译状态的统一记录为该相应子图分配暂存存储器时,该处理器进一步执行:
至少部分基于该生命周期信息分配该暂存存储器。
18.如权利要求11所述的系统,其特征在于,在执行该全局优化管理器的操作时,该处理器进一步执行:
将该暂存存储器的分配的结果写回该多个编译器的编译状态,以供该多个编译器继续编译。
19.如权利要求11所述的系统,其特征在于,该多个编译状态包括用于识别输入和输出张量以及输入和输出数据格式的相应I/O映像。
20.如权利要求11所述的系统,其特征在于,在执行该全局优化管理器的操作时,该处理器进一步执行:
检测该神经网络模型中两个相邻子图的输入和输出之间的不同数据格式;
在该两个相邻子图之间插入一个新的子图,以进行数据格式转换;和
当从多个编译器接收该多个编译状态时,该多个编译状态包括该新的子图的新的编译状态。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/969,397 US20240134691A1 (en) | 2022-10-18 | Optimization of Scratchpad Memory Allocation for Heterogeneous Devices Using A Cooperative Compiler Framework | |
US17/969,397 | 2022-10-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117910523A true CN117910523A (zh) | 2024-04-19 |
Family
ID=90053518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211449310.2A Pending CN117910523A (zh) | 2022-10-19 | 2022-11-18 | 将暂存存储器分配给异构设备的方法和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117910523A (zh) |
TW (1) | TWI827382B (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110121698A (zh) * | 2016-12-31 | 2019-08-13 | 英特尔公司 | 用于异构计算的系统、方法和装置 |
US10474458B2 (en) * | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
US11592817B2 (en) * | 2017-04-28 | 2023-02-28 | Intel Corporation | Storage management for machine learning at autonomous machines |
WO2021012215A1 (zh) * | 2019-07-24 | 2021-01-28 | 华为技术有限公司 | 神经网络切分方法、预测方法及相关装置 |
CN112527304B (zh) * | 2019-09-19 | 2022-10-04 | 无锡江南计算技术研究所 | 基于异构平台的自适应节点融合编译优化方法 |
US20210373961A1 (en) * | 2020-05-28 | 2021-12-02 | Qualcomm Incorporated | Neural network graph partitioning for improved use of hardware resources |
CN112463160A (zh) * | 2020-11-25 | 2021-03-09 | 安徽寒武纪信息科技有限公司 | 编译方法、装置、电子设备和存储介质 |
US20220156322A1 (en) * | 2021-09-29 | 2022-05-19 | Intel Corporation | Graph reordering and tiling techniques |
-
2022
- 2022-11-18 CN CN202211449310.2A patent/CN117910523A/zh active Pending
- 2022-11-25 TW TW111145216A patent/TWI827382B/zh active
Also Published As
Publication number | Publication date |
---|---|
TWI827382B (zh) | 2023-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2809230T3 (es) | Ejecución del programa sobre plataforma heterogénea | |
US8438359B2 (en) | Memory management method, information processing device, program creation method, and program | |
Ueng et al. | CUDA-lite: Reducing GPU programming complexity | |
US8473934B2 (en) | Method for mapping applications on a multiprocessor platform/system | |
US9678775B1 (en) | Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment | |
US6446258B1 (en) | Interactive instruction scheduling and block ordering | |
US9292265B2 (en) | Method for convergence analysis based on thread variance analysis | |
Amini et al. | Static compilation analysis for host-accelerator communication optimization | |
US8806458B2 (en) | Vectorization of shaders | |
US8341615B2 (en) | Single instruction multiple data (SIMD) code generation for parallel loops using versioning and scheduling | |
US9690552B2 (en) | Technologies for low-level composable high performance computing libraries | |
CN113748399B (zh) | 在异构计算资源上调度计算图的方法、装置及可读介质 | |
US9424004B2 (en) | Execution guards in dynamic programming | |
Elangovan et al. | OmpSs-OpenCL programming model for heterogeneous systems | |
Sbîrlea et al. | Bounded memory scheduling of dynamic task graphs | |
US9934012B2 (en) | Parallelization compiling method, parallelization compiler, and vehicular device | |
US20220121498A1 (en) | Combination of multiple data processing and machine learning frameworks for a target hardware | |
CN117910523A (zh) | 将暂存存储器分配给异构设备的方法和系统 | |
US11573777B2 (en) | Method and apparatus for enabling autonomous acceleration of dataflow AI applications | |
US20240134691A1 (en) | Optimization of Scratchpad Memory Allocation for Heterogeneous Devices Using A Cooperative Compiler Framework | |
Li et al. | Pragma directed shared memory centric optimizations on GPUs | |
Patwardhan et al. | Polyhedral Model Guided Automatic GPU Cache Exploitation Framework | |
US11762641B2 (en) | Allocating variables to computer memory | |
Tabbassum et al. | Management of scratchpad memory using programming techniques | |
Ohno et al. | Dynamic Task Scheduling Scheme for a GPGPU Programming Framework |
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 |