CN112948001A - 设定张量硬件配置的方法、可读存储介质及装置 - Google Patents

设定张量硬件配置的方法、可读存储介质及装置 Download PDF

Info

Publication number
CN112948001A
CN112948001A CN202110320888.7A CN202110320888A CN112948001A CN 112948001 A CN112948001 A CN 112948001A CN 202110320888 A CN202110320888 A CN 202110320888A CN 112948001 A CN112948001 A CN 112948001A
Authority
CN
China
Prior art keywords
tensor
register
registers
tensors
module
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
CN202110320888.7A
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.)
Anhui Cambricon Information Technology Co Ltd
Original Assignee
Anhui Cambricon Information Technology 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 Anhui Cambricon Information Technology Co Ltd filed Critical Anhui Cambricon Information Technology Co Ltd
Priority to CN202110320888.7A priority Critical patent/CN112948001A/zh
Publication of CN112948001A publication Critical patent/CN112948001A/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Abstract

本发明涉及设定张量硬件配置的方法、可读存储介质及装置,首先获取为张量配置寄存器的需求,接着根据张量的属性,判断张量是否已配置寄存器,并判断张量是否发生空间交叠,再判断是否存在闲置寄存器。基于这些判断以选择合适的硬件,并回应该硬件的识别码,以实现硬件资源可自动调度、能够自动管理张量生命周期的技术方案。

Description

设定张量硬件配置的方法、可读存储介质及装置
技术领域
本发明一般地涉及计算机领域。更具体地,本发明涉及设定张量硬件配置的方法、可读存储介质及装置。
背景技术
深度学习是现今机器学习领域中一个重要研究方向,其使机器模仿人类的活动,来解决复杂的模式识别难题,促进人工智能相关技术的快速发展,尤其是在搜索技术、数据挖掘、机器翻译、自然语言处理、语音识别上有着大量的应用。
深度学习需要通过代码来实现。为了提高编程效率,陆续出现了多种深度学习框架,像是PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch等等。这些框架提供各类组件,组件就像是某个模型或算法的一部分,编程人员可以根据需要引用这些组件,以实现特定的功能。通过使用深度学习框架,可以大大简化编程的流程。
张量是所有深度学习框架中最核心的组件,因为大部分的运算和优化算法都是基于张量进行的。每种深度学习框架都提供了特定的张量编程模型,每一个张量对应有唯一的标识码,用来绑定其属性信息。但现有的各框架对于张量的管理存在以下问题:执行深度学习算法的硬件资源有限,无法总是满足软件端的设计,以至于计算效率不佳;各张量间的依赖关系需要编程人员插入同步指令以确保执行顺序无误;对张量指派寄存器后,无法知悉暂用硬件资源的张量的实时利用率;编程人员需要手动设定寄存器中张量的生命周期等。
因此,一种硬件资源可自动调度、能够自动管理张量生命周期的技术方案是迫切需要的。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本发明的方案提供了一种设定张量硬件配置的方法、可读存储介质及装置。
在一个方面中,本发明揭露一种设定张量硬件配置的方法,所述硬件包括多个寄存器。所述方法包括:获取为张量配置寄存器的需求;根据张量的属性,判断张量是否已配置寄存器;判断张量是否发生空间交叠;判断多个寄存器是否存在闲置寄存器;如以下条件满足,释放多个寄存器中最不活跃的寄存器:张量未配置寄存器;张量未发生空间交叠;以及多个寄存器不存在闲置寄存器;最后回应最不活跃的寄存器的识别码。
在另一个方面,本发明揭露一种计算机可读存储介质,其上存储有设定张量硬件配置的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行前述的方法。
在另一个方面,本发明揭露一种设定张量硬件配置的装置,所述硬件包括多个寄存器。所述装置包括获取模块、判断模块、释放模块及回应模块。获取模块用以获取为张量配置寄存器的需求。判断模块用以:根据张量的属性,判断张量是否已配置寄存器;判断张量是否发生空间交叠;以及判断多个寄存器是否存在闲置寄存器。释放模块用以如以下条件满足,释放多个寄存器中最不活跃的寄存器:张量未配置寄存器;张量未发生空间交叠;以及多个寄存器不存在闲置寄存器。回应模块用以回应最不活跃的寄存器的识别码。
基于前述的技术手段,本发明可以达到硬件资源可自动调度、自动管理张量生命周期的技术效果。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是示出本发明实施例的板卡的结构图;
图2是示出本发明实施例的集成电路装置的结构图;
图3是示出本发明实施例的计算装置的内部结构示意图;
图4是示出本发明实施例的处理器核的内部结构示意图;
图5是示出本发明实施例为张量设定寄存器配置的流程图;
图6是示出本发明实施例判断最不活跃的寄存器的流程图;
图7是示出本发明另一实施例为张量设定寄存器配置的流程图;以及
图8是示出本发明另一个实施例的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本发明的具体实施方式。
图1示出本发明实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和DRAM 204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本发明的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
DRAM 204用以存储待处理的数据,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201的内部结构示意图。计算装置201用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,图中的计算装置201采用多核分层结构设计,计算装置201作为一个片上系统,其包括多个集群(cluster),每个集群又包括多个处理器核,换言之,计算装置201是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图3所示,计算装置201包括外部存储控制器301、外设通信模块302、片上互联模块303、同步模块304以及多个集群305。
外部存储控制器301可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM204,从而自片外读取数据或是将数据写入。外设通信模块302用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块303将外部存储控制器301、外设通信模块302及多个集群305连接起来,用以在各个模块间传输数据和控制信号。同步模块304是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群305是计算装置201的计算核心,在图中示例性地展示4个,随着硬件的发展,本发明的计算装置201还可以包括8个、16个、64个、甚至更多的集群305。集群305用以高效地执行深度学习算法。
以集群的层级来看,如图3所示,每个集群305包括多个处理器核(IPU core)306及一个存储核(MEM core)307。
处理器核306在图中示例性地展示4个,本发明不限制处理器核306的数量。其内部架构如图4所示。每个处理器核306包括三大模块:控制模块41、运算模块42及存储模块43。
控制模块41用以协调并控制运算模块42和存储模块43的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)411及指令译码单元(instructiondecode unit,IDU)412。取指单元411用以获取来自处理装置203的指令,指令译码单元412则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块42和存储模块43。
运算模块42包括向量运算单元421及矩阵运算单元422。向量运算单元421用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元422负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块43用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)431、权值存储单元(weight RAM,WRAM)432、输入/输出直接内存访问模块(input/outputdirect memory access,IODMA)433、搬运直接内存访问模块(move direct memoryaccess,MVDMA)434。NRAM 431用以存储供处理器核306计算的特征图(张量)及计算后的中间结果;WRAM 432则用以存储深度学习网络的权值(张量);IODMA 433通过广播总线309控制NRAM 431/WRAM 432与DRAM 204的访存;MVDMA 434则用以控制NRAM 431/WRAM 432与SRAM 308的访存。
回到图3,存储核307主要用以存储和通信,即存储处理器核306间的共享数据或中间结果、以及执行集群305与DRAM 204之间的通信、集群305间彼此的通信、处理器核306间彼此的通信等。在其他实施例中,存储核307具有标量运算的能力,用以执行标量运算。
存储核307包括共享存储单元(SRAM)308、广播总线309、集群直接内存访问模块(cluster direct memory access,CDMA)310及全局直接内存访问模块(global directmemory access,GDMA)311。SRAM 308承担高性能数据中转站的角色,在同一个集群305内不同处理器核306之间所复用的数据不需要通过处理器核306各自向DRAM 204获得,而是经SRAM 308在处理器核306间中转,存储核307只需要将复用的数据从SRAM 308迅速分发给多个处理器核306即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线309、CDMA 310及GDMA 311则分别用来执行处理器核306间的通信、集群305间的通信和集群305与DRAM 204的数据传输。以下将分别说明。
广播总线309用以完成集群305内各处理器核306间的高速通信,此实施例的广播总线309支持核间通信方式包括单播、多播与广播。单播是指点对点(即单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 308传输到特定几个处理器核306的通信方式,而广播则是将一份数据从SRAM 308传输到所有处理器核306的通信方式,属于多播的一种特例。
CDMA 310用以控制在同一个计算装置201内不同集群305间的SRAM 308的访存。
GDMA 311与外部存储控制器301协同,用以控制集群305的SRAM 308到DRAM 204的访存,或是将数据自DRAM 204读取至SRAM 308中。从前述可知,DRAM 204与NRAM 431或WRAM432间的通信可以经由2个渠道来实现。第一个渠道是通过IODAM 433直接联系DRAM 204与NRAM 431或WRAM 432;第二个渠道是先经由GDMA 311使得数据在DRAM 204与SRAM 308间传输,再经过MVDMA 434使得数据在SRAM 308与NRAM 431或WRAM 432间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 204与NRAM 431或WRAM 432间的通信通过第二个渠道可能更有效率。本发明的实施例可根据本身硬件条件选择数据传输渠道。
处理装置203可以实现一种在编译阶段设定张量硬件配置的方法,更详细来说,是为张量在计算装置201中配置寄存器的方法,此处所指的寄存器可以是SRAM 308、NRAM431、WRAM 432或其他在计算装置201中用来存储张量的存储单元。图5示出为张量设定寄存器配置的流程图。
在步骤501中,获取为张量配置寄存器的需求,即处理装置203接收到为某一张量配置寄存器的指令,在此实施例中,该指令亦描述了该张量的属性,属性包括张量地址及形状等信息。此步骤通过存储于特征图中张量名称获取张量的标识码,且通过张量的数值获取张量的形状信息,据此实现硬件资源映射。
在步骤502中,根据该张量的属性,判断该张量是否已配置寄存器。在此步骤中,处理装置203判断该张量是否已配置有任何的寄存器,而判断的基准便是张量的属性,如果两个张量的属性相同,则视为是同一个张量。处理装置203根据指令中所描述的张量属性,与已配置寄存器的张量的属性进行比对,进而判断已配置寄存器的张量中是否存在与该张量的地址及形状皆相同的张量。通过步骤502,此实施例得以自动优化相同属性的张量,以实现资源去重机制。
如是,则表示该张量已配置寄存器了,无需重新配置,这时执行步骤503,处理装置203直接回应已配置寄存器的识别码。如已配置寄存器的张量中不存在与该张量的地址及形状皆相同的张量,则表示该张量尚未配置寄存器,这时执行步骤504,判断该张量是否发生空间交叠。所谓空间交叠指的是该张量与任务在先的其他张量至少部分重叠,当其他张量参与在先任务后,会影响到该张量的数值,因此必须等到在先任务执行完毕后,才能配置寄存器。通过步骤504,此实施例得以判断当前占用的硬件资源是否存在耦合关系,以实现资源耦合性判断。
如该张量与在先张量发生空间交叠,则执行步骤505,处理装置203等待执行在先张量的任务。当该在先任务执行后,在先张量便不需要占用寄存器了,故在步骤506中,处理装置203回应该在先张量的寄存器的识别码,意味着此实施例直接配置同一个寄存器给该张量,该张量覆盖在先张量。
如该张量未发生空间交叠,则执行步骤507,处理装置203判断计算装置201中是否存在闲置寄存器。如存在闲置寄存器,则执行步骤508,处理装置203选择任一个闲置的寄存器并回应该闲置寄存器的识别码。
如在步骤507中判断为否,表示该张量既未配置寄存器,也未发生空间交叠,计算装置201中更不存在闲置寄存器,这时执行步骤509,处理装置203释放多个寄存器中最不活跃的寄存器。所谓最不活跃的寄存器指的是暂存活跃度最低的张量的寄存器。在此步骤中,处理装置203需要判断最不活跃的寄存器,图6示出处理装置203判断最不活跃的寄存器的流程图。
在步骤601中,更新所有已配置寄存器的张量的活跃度,更详细来说,在此实施例中,每个已配置寄存器的张量都对应有计数值,处理装置203根据计数值来决定活跃度。此步骤进一步可以拆分成步骤602、步骤603、步骤604。在步骤602中,每当步骤501被执行时,处理装置203同时判断每个已配置寄存器的张量是否正被使用中。如正被使用中,则执行步骤603,处理装置203将对应至正被使用的张量的计数值归零,以表示当下活跃度高。针对那些未正被使用的张量,则执行步骤604,处理装置203将对应至未被使用的张量的计数值加一,以表示当下活跃度低。在步骤603和步骤604后,接着执行步骤605,处理装置203识别所有计数值中数值最大的张量,数值越高,表示越长的时间不活跃,此实施例便是通过识别计数值数值最大的张量,来找出暂存最不活跃(最长时间不活跃)的张量的寄存器。通过图6的流程,此实施例得以在编译期实时记录当前硬件资源的占用情况,以实现资源活跃性检测。
回到图5,在步骤509中,处理装置203通过图6的流程来释放多个寄存器中最不活跃的寄存器。在步骤510中,处理装置203回应最不活跃的寄存器的识别码。在不存在闲置寄存器的前提下,释放最不活跃的寄存器是较佳的选择,因此处理装置203设定最不活跃的寄存器作为暂存该张量的寄存器。
在步骤503、步骤506、步骤508与步骤510后,执行步骤511,处理装置203将前述寄存器的识别码链接至该张量,在软件端绑定该张量与寄存器。
至此,此实施例为张量完成硬件配置的设定。
本发明的另一个实施例同样是基于图1至图4的硬件来设定张量硬件配置的方法。图7示出处理装置203为张量设定寄存器配置的流程图。
在步骤701中,获取为张量配置寄存器的需求。在步骤702中,根据该张量的属性,判断该张量是否已配置寄存器。如是,执行步骤703,直接回应已配置寄存器的识别码。如已配置寄存器的张量中不存在与该张量的地址及形状皆相同的张量,则执行步骤704,判断该张量是否发生空间交叠。如该张量与在先张量发生空间交叠,则执行步骤705,等待执行在先张量的任务。
如该张量未发生空间交叠,或在步骤705后,则执行步骤706,判断计算装置201中是否存在闲置寄存器。如存在闲置寄存器,则执行步骤707,选择任一个闲置的寄存器并回应该闲置寄存器的识别码。如在步骤706中判断为否,表示该张量既未配置寄存器,也未发生空间交叠,计算装置201中更不存在闲置寄存器,这时执行步骤708,释放多个寄存器中最不活跃的寄存器,在此实施例中,步骤708同样可以拆分成如图6所示的各步骤。在步骤709中,回应最不活跃的寄存器的识别码。在步骤703、步骤707与步骤709后,执行步骤710,将前述寄存器的识别码链接至该张量,在软件端绑定该张量与寄存器。
此实施例与前述实施例的差异在于,在步骤705的等待执行在先张量的任务后便执行步骤706,直接判断是否存在闲置寄存器,未执行前述实施例的步骤506。此实施例的其他步骤与前述实施例的相对应步骤无异,故不赘述。
至此,此实施例为张量完成硬件配置的设定。
本发明的另一个实施例是一种设定张量硬件配置的装置。不同于图1只图4所示的硬件,此实施例的结构如图8所示,包括获取模块801、判断模块802、回应模块803、释放模块804、计数模块805、识别模块806、更新模块807及链接模块808,各模块间以总线连接通讯。
获取模块801用以获取为张量配置寄存器的需求,即获取模块801接收到为某一张量配置寄存器的指令,在此实施例中,该指令亦描述了该张量的属性,属性包括张量地址及形状等信息。
判断模块802根据该张量的属性,判断该张量是否已配置寄存器。更详细来说,判断模块802判断该张量是否已配置有任何的寄存器,而判断的基准是张量的属性,如果两个张量的属性相同,则视为是同一个张量。判断模块802根据指令中所描述的张量属性,与已配置寄存器的张量的属性进行比对,进而判断已配置寄存器的张量中是否存在与该张量的地址及形状皆相同的张量。
如是,则表示该张量已配置寄存器了,无需重新配置,回应模块803直接回应已配置寄存器的识别码。如已配置寄存器的张量中不存在与该张量的地址及形状皆相同的张量,则表示该张量尚未配置寄存器,这时判断模块802进一步判断该张量是否发生空间交叠。
如该张量与在先张量发生空间交叠,则此实施例的装置等待执行在先张量的任务。当该在先任务执行后,在先张量便不需要占用寄存器了,故回应模块803回应该在先张量的寄存器的识别码,意味着此实施例直接配置同一个寄存器给该张量,该张量覆盖在先张量。在另一种情境下,回应模块803在该在先任务执行后不做回应。
如该张量未发生空间交叠,或如前述在另一种情境下回应模块803不做回应,由判断模块802接着判断装置中是否存在闲置寄存器。如存在闲置寄存器,则回应模块803选择任一个闲置的寄存器并回应该闲置寄存器的识别码。
如该张量既未配置寄存器,也未发生空间交叠,装置中更不存在闲置寄存器,则释放模块804释放多个寄存器中最不活跃的寄存器。所谓最不活跃的寄存器指的是暂存活跃度最低的张量的寄存器。
在此实施例中,每个已配置寄存器的张量同样对应有计数值。每当获取模块801获取为张量配置寄存器的需求时,判断模块802同时判断每个已配置寄存器的张量是否正被使用中。如正被使用中,计数模块805将对应至正被使用的张量的计数值归零,以表示当下活跃度高。针对那些未被使用的张量,计数模块805将对应至未被使用的张量的计数值加一,以表示当下活跃度低。更新模块807实时更新这些计数值,即实时更新所有已配置寄存器的张量的活跃度。识别模块806根据更新后的计数值,识别所有计数值中数值最大的张量,数值越高,表示越长的时间不活跃,释放模块804便是通过识别计数值数值最大的张量,来找出并释放暂存最不活跃(最长时间不活跃)的张量的寄存器。
接着回应模块803回应最不活跃的寄存器的识别码。在回应模块803回应寄存器的识别码后,链接模块808将前述寄存器的识别码链接至该张量,在软件端绑定该张量与寄存器。至此,此实施例为张量完成硬件配置的设定。
本发明另一个实施例为一种计算机可读存储介质,其上存储有设定张量硬件配置的计算机程序代码,当所述计算机程序代码由处理器运行时,执行如前所述各实施例的方法。在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本发明的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本发明实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
如前述多个实施例所示,本发明同时实现硬件资源映射、资源活跃性检测、资源耦合性判断与资源去重机制,使得编程模型更加友好,摆脱硬件资源有限的约束,让编程模型更为灵活,达到硬件资源可自动调度、自动管理张量生命周期的技术效果。
根据不同的应用场景,本发明的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本发明的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本发明的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本发明方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本发明将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本发明的方案并不受所描述的动作的顺序限制。因此,依据本发明的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本发明所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本发明某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本发明对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本发明某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本发明的公开和教导,本领域技术人员可以理解本发明所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本发明中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本发明实施例所述方案的目的。另外,在一些场景中,本发明实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (12)

1.一种设定张量硬件配置的方法,所述硬件包括多个寄存器,所述方法包括:
获取为所述张量配置寄存器的需求;
根据所述张量的属性,判断所述张量是否已配置寄存器;
判断所述张量是否发生空间交叠;
判断所述多个寄存器是否存在闲置寄存器;
如以下条件满足,释放所述多个寄存器中最不活跃的寄存器:
所述张量未配置寄存器;
所述张量未发生空间交叠;以及
所述多个寄存器不存在闲置寄存器;
回应所述最不活跃的寄存器的识别码。
2.根据权利要求1所述的方法,其中所述属性包括张量地址及形状,所述判断所述张量是否已配置寄存器的步骤包括:
判断已配置寄存器的张量中是否存在与所述张量的地址及形状皆相同的张量。
3.根据权利要求1所述的方法,其中如所述张量已配置寄存器,则所述方法还包括:
回应所述已配置寄存器的识别码。
4.根据权利要求1所述的方法,其中如所述张量与在先张量发生空间交叠,则所述方法还包括:
等待执行所述在先张量的任务;以及
在所述任务执行后,回应所述在先张量的寄存器的识别码。
5.根据权利要求1所述的方法,其中如所述张量与在先张量发生空间交叠,则所述方法还包括:
等待执行所述在先张量的任务;
其中,在所述任务执行后,执行所述是否存在闲置寄存器的步骤。
6.根据权利要求1所述的方法,其中如所述多个寄存器存在闲置寄存器,则所述方法还包括:
回应所述闲置寄存器至少其中之一的识别码。
7.根据权利要求1所述的方法,其中所述释放步骤包括:
更新所有已配置寄存器的张量的活跃度。
8.根据权利要求6所述的方法,其中每个已配置寄存器的张量对应有计数值,所述更新步骤包括:
当所述获取步骤执行时,判断每个已配置寄存器的张量是否正被使用中;
如正被使用中,对应的计数值归零;以及
如未正被使用中,对应的计数值加一。
9.根据权利要求7所述的方法,其中所述释放步骤还包括:
识别所有计数值中数值最大的张量;
其中,所述最不活跃的寄存器为存储计数值数值最大的张量的寄存器。
10.根据权利要求1、3、4或5所述的方法,还包括:
将所述识别码链接至所述张量。
11.一种计算机可读存储介质,其上存储有设定张量硬件配置的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行权利要求1至9任一项所述的方法。
12.一种设定张量硬件配置的装置,所述硬件包括多个寄存器,所述装置包括:
获取模块,用以获取为所述张量配置寄存器的需求;
判断模块,用以:
根据所述张量的属性,判断所述张量是否已配置寄存器;
判断所述张量是否发生空间交叠;
判断所述多个寄存器是否存在闲置寄存器;
释放模块,用以如以下条件满足,释放所述多个寄存器中最不活跃的寄存器:
所述张量未配置寄存器;
所述张量未发生空间交叠;以及
所述多个寄存器不存在闲置寄存器;
回应模块,用以回应所述最不活跃的寄存器的识别码。
CN202110320888.7A 2021-03-25 2021-03-25 设定张量硬件配置的方法、可读存储介质及装置 Pending CN112948001A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110320888.7A CN112948001A (zh) 2021-03-25 2021-03-25 设定张量硬件配置的方法、可读存储介质及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110320888.7A CN112948001A (zh) 2021-03-25 2021-03-25 设定张量硬件配置的方法、可读存储介质及装置

Publications (1)

Publication Number Publication Date
CN112948001A true CN112948001A (zh) 2021-06-11

Family

ID=76227770

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110320888.7A Pending CN112948001A (zh) 2021-03-25 2021-03-25 设定张量硬件配置的方法、可读存储介质及装置

Country Status (1)

Country Link
CN (1) CN112948001A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115269205A (zh) * 2022-09-27 2022-11-01 之江实验室 一种面向神经网络计算的内存优化方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115269205A (zh) * 2022-09-27 2022-11-01 之江实验室 一种面向神经网络计算的内存优化方法和装置
WO2024065865A1 (zh) * 2022-09-27 2024-04-04 之江实验室 一种面向神经网络计算的内存优化方法和装置

Similar Documents

Publication Publication Date Title
CN112799726A (zh) 数据处理装置、方法及相关产品
CN114035916A (zh) 计算图的编译、调度方法及相关产品
CN113469336A (zh) 优化神经网络模型的编译方法、执行方法及相关产品
CN112948001A (zh) 设定张量硬件配置的方法、可读存储介质及装置
CN112084023A (zh) 数据并行处理的方法、电子设备及计算机可读存储介质
CN111209230B (zh) 数据处理装置、方法及相关产品
CN112766475A (zh) 处理部件及人工智能处理器
CN114281558A (zh) 多核处理器、用于多核处理器的方法及相应产品
CN114358261A (zh) 融合神经网络的装置、板卡、方法及可读存储介质
CN114281561A (zh) 处理单元、用于处理单元的同步方法及相应产品
WO2023016382A1 (zh) 用于片上系统的方法及其相关产品
WO2022135599A1 (zh) 融合分支结构的装置、板卡、方法及可读存储介质
CN113742266B (zh) 集成电路装置、电子设备、板卡和计算方法
CN111210011B (zh) 数据处理装置及相关产品
CN111209245B (zh) 数据处理装置、方法及相关产品
CN114281559A (zh) 多核处理器、用于多核处理器的同步方法及相应产品
WO2022063217A1 (zh) 向前融合神经网络的装置、板卡、方法及可读存储介质
CN114691589A (zh) 一种处理装置及相关产品
CN115437693A (zh) 根据多操作指令及单操作指令运行的计算装置
CN114647442A (zh) 根据指令集运行的设备
CN114625370A (zh) 在主机和设备之间进行数据布局的方法、设备和异构系统
CN114648438A (zh) 处理图像数据的设备、方法及可读存储介质
CN114692837A (zh) 融合分支结构的装置、板卡、方法及可读存储介质
CN117908959A (zh) 用于执行原子操作的方法及其相关产品
CN113792867A (zh) 运算电路、芯片和板卡

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