CN115129460A - 获取算子硬件时间的方法、装置、计算机设备和存储介质 - Google Patents
获取算子硬件时间的方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115129460A CN115129460A CN202110320641.5A CN202110320641A CN115129460A CN 115129460 A CN115129460 A CN 115129460A CN 202110320641 A CN202110320641 A CN 202110320641A CN 115129460 A CN115129460 A CN 115129460A
- Authority
- CN
- China
- Prior art keywords
- operator
- information
- calling
- target management
- management plug
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7817—Specially adapted for signal processing, e.g. Harvard architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Abstract
本发明实施例涉及一种获取算子硬件时间的方法、装置、计算机设备和存储介质,涉及深度学习技术领域。该方法包括将目标数据发送至机器学习处理器,机器学习处理器上配置有预先设计好的神经网络模型;调用神经网络模型中的多个算子对目标数据进行处理;调用目标管理插件记录各算子的运行起始信息和运行结束信息;根据各算子的运行起始信息和运行结束信息确定各算子的算子硬件时间。本发明方案中,通过目标管理插件实现了支持不同类型的异构设备获取算子硬件时间的目的。并且减少了对Pytorch框架的修改,降低了与Pytorch框架的耦合程度,在增加了对机器学习处理器的支持的基础上,不会影响Pytorch中原CPU/CUDA的使用。
Description
技术领域
本发明涉及深度学习技术领域,特别是涉及一种获取算子硬件时间的方法、装置、计算机设备和存储介质。
背景技术
Pytorch是一种主流的深度学习框架,被广泛用于构建神经网络模型,它可以使用异构设备进行计算加速,被广泛使用于计算机视觉、自然语言处理等应用中。
在使用异构设备进行计算加速的场景中,获得硬件设备上的算子的硬件执行情况具有非常重要的意义。使用者可以通过分析算子的硬件执行情况,快速构建AI(英文:Artificial Intelligence,中文:人工智能)神经网络的模型架构,获取算子调用顺序、算子调用栈等信息,并基于此寻找神经网络的性能瓶颈,对神经网络进行优化处理。
目前,Pytorch提供的针对深度学习神经网络的性能分析工具profiler工具支持的异构设备比较单一,不能支持GPU(英文:Graphics Processing Unit,中文:图形处理器)之外的其他类型的异构设备。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本发明揭露的方案提供了一种获取算子硬件时间的方法、装置、计算机设备和存储介质,可以支持不同类型的异构设备获取算子硬件时间。
在第一个方面,本发明揭露了一种获取算子硬件时间的方法,该方法包括:将目标数据发送至机器学习处理器,机器学习处理器上配置有预先设计的神经网络模型;在调用神经网络模型中的多个算子对目标数据进行处理的过程中,调用目标管理插件记录各算子的运行起始信息和运行结束信息,其中,目标管理插件部署于CPU中;调用目标管理插件根据各算子的运行起始信息和运行结束信息确定各算子的算子硬件时间。
在其中一个实施例中,调用目标管理插件记录各算子的运行起始信息和运行结束信息,包括:对于各算子,在算子开始运行时,生成算子的运行起始标记,并获取算子的算子原始名称、进程号和设备卡号;在算子运行结束时,生成算子的运行结束标记;对于各算子,调用目标管理插件根据算子的运行起始标记、算子的算子原始名称、进程号和设备卡号获取运行起始信息;调用目标管理插件根据算子的运行结束标记、算子的算子原始名称、进程号和设备卡号获取运行结束信息。
在其中一个实施例中,调用目标管理插件根据各算子的运行起始信息和运行结束信息确定各算子的算子硬件时间,包括:调用目标管理插件根据各算子的运行起始信息和运行结束信息确定各算子的调用信息;根据调用信息计算算子的算子硬件时间,其中,调用信息包括进程号和设备卡号均匹配的运行起始信息和运行结束信息。
在其中一个实施例中,该方法还包括:将各算子的算子硬件信息、各算子的运行起始信息和运行结束信息保存在目标管理插件预设的目标数据结构中,其中,算子硬件信息包括硬件地址、工作队列和算子计算规模信息。
在其中一个实施例中,该方法还包括:获取各算子的算子名称;对于各算子,调用目标管理插件根据算子的算子名称和算子在目标数据结构中对应的数据对象组成算子对应的键值对,其中,数据对象为目标数据结构中用于存储算子的算子硬件信息、算子的运行起始信息和运行结束信息的存储单元;调用目标管理插件将算子对应的键值对保存在目标管理插件预设的数据库容器中。
在其中一个实施例中,获取各算子的算子名称,包括:对于各算子,根据算子的进程号、设备卡号和算子原始名称构建算子的算子名称。
在其中一个实施例中,该方法还包括:对于各算子,调用目标管理插件将各算子的算子硬件信息、各算子的运行起始信息和运行结束信息传输给CPU,以使CPU将各算子的算子硬件信息、各算子的运行起始信息和运行结束信息写入CPU的事件数据结构中。
在其中一个实施例中,该方法还包括:对于各算子,调用目标管理插件将算子的算子名称传输给CPU,以供CPU更新算子在事件数据结构中的名称。
在第二个方面,本发明揭露了一种获取算子硬件时间的装置,该装置包括:发送模块,用于将目标数据发送至机器学习处理器,机器学习处理器上配置有预先设计的神经网络模型;信息记录模块,用于在调用神经网络模型中的多个算子对目标数据进行处理的过程中,调用目标管理插件记录各算子的运行起始信息和运行结束信息,其中,目标管理插件部署于CPU中;硬件时间确定模块,用于调用目标管理插件根据各算子的运行起始信息和运行结束信息确定各算子的算子硬件时间。
在第三个方面,本发明揭露了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述第一个方面所述的获取算子硬件时间的方法的步骤。
在第四个方面,本发明揭露了一种存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一个方面所述的获取算子硬件时间的方法的步骤。
本发明实施例提供的获取算子硬件时间的方法、装置、计算机设备和存储介质,可以支持不同类型的异构设备获取算子硬件时间。该方法包括:将目标数据发送至机器学习处理器,机器学习处理器上配置有预先设计的神经网络模型;在调用神经网络模型中的多个算子对目标数据进行处理的过程中,调用目标管理插件记录各算子的运行起始信息;调用目标管理插件记录各算子的运行结束信息;根据各算子的运行起始信息和运行结束信息确定各算子的算子硬件时间。本发明方案中,通过调用目标管理插件记录各算子的运行起始信息和运行结束信息,并通过调用目标管理插件根据运行起始信息和运行结束信息确定各算子硬件时间,将获取各算子硬件时间的功能模块集成在目标管理插件中,减少了对Pytorch框架的修改,降低了与Pytorch框架的耦合程度,在增加了对机器学习处理器的支持的基础上,不会影响Pytorch中原CPU/CUDA的使用。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中。
图1是示出本发明实施例的一种组合处理装置的结构图;
图2是示出本发明实施例的异构设备的结构示意图;
图3是示出本发明实施例的获取算子硬件时间的方法的流程示意图;
图4是示出本发明实施例的CPU、机器学习处理器以及目标管理插件之间的逻辑关系的示意图;
图5是示出本发明实施例的调用目标管理插件记录各算子的运行起始信息的方法的示意图;
图6是示出本发明实施例的调用目标管理插件记录各算子的运行结束信息的方法的示意图;
图7是示出本发明实施例的确定算子硬件时间的方法的示意图;
图8是示出本发明实施例的另一种获取算子硬件时间的方法的流程示意图;
图9是示出本发明实施例的对算子信息进行集中管理的方法的示意图;
图10是示出本发明实施例的算子信息存储结构的示意图;
图11是示出本发明实施例的获取算子硬件时间的装置的结构框图;
图12是示出本发明实施例的一种板卡的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
在实际应用中,得到算子硬件时间是分析算子的硬件执行情况的前提。因此,高效地计算异构设备的算子硬件时间在实际科研、工程中具有非常重要的作用。
现有技术中,在CPU和GPU组成的异构设备中,Pytorch自带的针对深度学习神经网络的性能分析工具profiler可以直接基于GPU对应的CUDA(英文:Compute Unified DeviceArchitecture,中文:计算统一设备体系结构)代码在GPU运行神经网络模型的过程中获取神经网络模型中的各算子的算子硬件时间。
然而,由于GPU并不是专门针对神经网络而设计的,导致利用GPU进行神经网络模型的训练时,其计算效率会受到影响。为了进一步提高神经网络模型在训练时的计算效率,现有技术提出了专门用于神经网络学习的机器学习处理器,利用机器学习处理器进行计算加速的效果更好。然而,由于目前Pytorch的profiler工具仅支持CPU和GPU组成的异构设备的,因此无法使用profiler工具获取CPU与其他处理器(例如机器学习处理器)组成的异构设备上运行的神经网络模型的算子的硬件时间。
基于上述问题,本发明揭露的实施例提供了获取算子硬件时间的方法、装置、计算机设备和存储介质,可以支持不同类型的异构设备获取算子硬件时间。该方法包括:将目标数据发送至机器学习处理器,机器学习处理器上配置有预先设计的神经网络模型;调用神经网络模型中的多个算子对目标数据进行处理;调用目标管理插件记录各算子的运行起始信息;调用目标管理插件记录各算子的运行结束信息;根据各算子的运行起始信息和运行结束信息确定各算子的算子硬件时间。本发明的方案中,通过调用目标管理插件根据运行起始信息和运行结束信息确定各算子硬件时间,将获取各算子硬件时间的功能模块集成在目标管理插件中,减少了对Pytorch框架的修改,降低了与Pytorch框架的耦合程度,在增加了对机器学习处理器的支持的基础上,不会影响Pytorch中原CPU/CUDA的使用。
进一步的,通过调用目标管理插件,实现了支持不同类型的异构设备获取算子硬件时间的目的。
下面结合本发明实施例的实施环境,对本发明实施例涉及的技术方案进行介绍。
图1是示出根据本发明实施例的一种组合处理装置100的结构图。如图1中所示,该组合处理装置100包括计算处理装置101、接口装置102、其他处理装置103和存储装置104。根据不同的应用场景,计算处理装置中包括一个或多个计算装置105,该计算装置可以配置用于执行本文结合附图3至图9所描述的操作。
在不同的实施例中,本发明揭露的计算处理装置101配置成执行用户指定的操作。在示例性的应用中,该计算处理装置101实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置105可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置105实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本发明揭露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本发明揭露的计算处理装置101可以通过接口装置102与其他处理装置103进行交互,以共同完成用户指定的操作。根据实现方式的不同,本发明揭露的其他处理装置103可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。当其他处理装置103包括多种类型的处理器时,该处理装置100组成异构设备,例如CPU与GPU组成的异构设备或CPU与人工智能处理器组成的异构设备或GPU与人工智能处理器组成的异构设备等等。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本发明揭露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本发明揭露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
如图2所示为一组异构设备,一个CPU连接多个机器学习处理器,机器学习处理器上部署有神经网络模型,CPU上部署有目标管理插件。
在一个实施例中,如图3所示,提供了一种获取算子硬件时间的方法,该方法应用于图1中的计算机处理装置中,该方法包括以下步骤:
步骤301,将目标数据发送至机器学习处理器。
本发明实施例中,目标数据为训练数据或者测试数据,目标数据包括图像数据、语音数据和自然语言数据等其中一种或多种。
CPU接收外部输入的目标数据,并将目标数据给到机器学习处理器,其中,机器学习处理器上配置有预先设计的神经网络模型。该预先设计的神经网络模型用于处理目标数据。可选的,本发明实施例中的机器学习处理器为图1中处理装置103中的任一处理器,本公开对此不做任何限制。
可选的,神经网络模型在CPU端设计好后,基于指令将神经网络模型从CPU拷贝到机器学习处理器上,然后在机器学习处理器上部署该神经网络模型。
步骤302,在调用神经网络模型中的多个算子对目标数据进行处理的过程中,调用目标管理插件记录各算子的运行起始信息和运行结束信息。
其中,运行起始信息是在各算子开始执行时记录的,运行结束信息是在各算子结束执行时记录的,目标管理插件部署于CPU中,用于管理机器学习处理器。
下面,对调用神经网络模型中的多个算子对目标数据进行处理的过程进行说明:本发明实施例中,神经网络模型是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,神经网络模型包括多个算子。算子是一个函数空间到函数空间上的映射O:X→X。算子包括表达方法和对应公式。
CPU按照各算子之间预先设置的调用顺序依次调用各算子,以目标数据为第一级算子的输入,上一级算子的输出为下一级算子的输入。
可选的,CPU用于获取神经网络模型的计算图,基于计算图中预先设置好的各算子之间的调用顺序依次调用各算子。
下面对调用目标管理插件记录各算子的运行起始信息和运行结束信息的过程进行说明:首先对本发明实施例中的CPU、机器学习处理器以及目标管理插件之间的逻辑关系进行说明,如图4所示,CPU中配置有目标管理插件配置以及Pytorch框架自带的针对深度学习神经网络的性能分析工具profiler(以下简称为profiler工具)。其中,机器学习处理器与CPU物理连接,CPU中的目标管理插件与机器学习处理器信号连接,目标管理插件可以在机器学习处理器进行训练的过程中获取各算子的运行起始信息和运行结束信息,并将各算子的运行起始信息和运行结束信息给到CPU中的profiler工具,由profiler工具将各算子的运行起始信息和运行结束信息保存在CPU的事件数据结构中。
其中,算子状态包括开始登记状态和结束登记状态两种。CPU在每个时刻可以调用一个算子,在开始调用算子和结束调用算子时,算子的算子状态会发生变化。其中,CPU可以调用目标管理插件记录算子状态的变化。例如:在开始调用算子时,算子进入算子执行队列,此时算子的算子状态被记录为开始登记状态。在结束调用算子时,算子从算子执行队列中退出,此时算子的算子状态被记录为结束登记状态。
可选的,本发明实施例中,在多核CPU中,CPU在每个时刻可以调用多个算子,这种情况下,CPU可以调用目标管理插件记录每个算子的算子状态的变化。
本发明实施例中,在算子状态为开始登记状态的情况下,CPU可以调用目标管理插件记录算子的运行起始信息。在算子状态为结束登记状态的情况下,CPU可以调用目标管理插件记录算子的运行结束信息。
可选的,在实际应用中,神经网络模型中的卷积层、全连接层以及池化层等对目标数据进行特征提取时,会对目标数据进行乘法、加法、非线性计算、比较、筛选以及其他的数学运算,且该些数学运算需要执行多次,因此可能出现一个算子被多次调用的情况。这种情况下,在每次调用该算子时,CPU均可以调用目标管理插件记录该算子的运行起始信息。相应的,每一次结束调用时,CPU均可以调用目标管理插件记录该算子的运行结束信息。
步骤303,调用目标管理插件根据各算子的运行起始信息和运行结束信息确定各算子的算子硬件时间。
其中,各算子的算子硬件时间是指各算子在机器学习处理器上运行时所开销的运行时长。
本发明实施例中,运行起始信息是在算子开始执行时记录的,可以用于表征算子的开始调用时间,运行结束信息是在算子结束执行时记录的,可以用于表征算子的结束调用时间。因此根据算子的运行起始信息和运行结束信息可以确定算子的算子硬件时间。
可选的,CPU可以通过调用目标管理插件中的计算硬件时间接口来计算各算子的算子硬件时间。其中,该计算硬件时间接口用C++端实现。
本发明实施例中,对于各个算子,若某算子被多次调用,那么可以记录到该算子的多个运行起始信息和多个运行结束信息,CPU可以通过调用目标管理插件确定该算子在每一次调用过程中的算子硬件时间。
在一种可选的实现方式中,在得到各算子的算子硬件时间之后,对于每个算子,CPU还可以根据算子硬件时间确定算子的调用次数、平均运行时长和运行总时长。通过获取算子的调用次数、平均运行时长以及运行总时长可以更加准确和详细地了解算子的实际执行情况,从而便于更有针对性地优化算子。
本发明实施例中,通过调用目标管理插件记录各算子的运行起始信息和运行结束信息,并通过调用目标管理插件根据运行起始信息和运行结束信息确定各算子硬件时间,将获取各算子硬件时间的功能模块集成在目标管理插件中,减少了对Pytorch框架的修改,降低了与Pytorch框架的耦合程度,在增加了对机器学习处理器的支持的基础上,不会影响Pytorch中原CPU/CUDA的使用。
进一步的,通过目标管理插件可以实现支持不同类型的异构设备获取算子硬件时间的目的,使得Pytorch携带的profiler工具不再局限于原CPU和GPU组成的异构设备,扩展了Pytorch框架的应用范围。
在本发明的一个实施例中,如图5所示,图5示出了调用目标管理插件记录各算子的运行起始信息的技术过程的示意图,该技术过程包括:
步骤501,对于各算子,在算子开始运行时,调用目标管理插件生成算子的运行起始标记,并获取算子的算子原始名称、进程号和设备卡号。
本发明实施例中,在开始调用算子时,算子进入算子执行队列,此时,CPU调用目标管理插件生成运行起始标记,并且获取该算子的算子原始名称、进程号和设备卡号。
其中,算子原始名称存储在神经网络模型的算子记录结构中,CPU可以调用目标管理插件从算子记录结构中获取算子原始名称。进程是指调用该算子时分配给该算子时间资源的基本单元,CPU可以调用目标管理插件获取该算子的进程号。设备卡号是指运行该算子的机器学习处理器设备号。
步骤502,对于各算子,调用目标管理插件根据算子的运行起始标记、算子的算子原始名称、进程号和设备卡号获取运行起始信息。
其中,算子的运行起始信息可以用于确定算子的起始运行时间点。可选的,算子的运行起始信息可以表示为:<算子原始名称,进程号,设备卡号,运行起始标记>。
可选的,为了简化算子的运行起始信息的表达方式,算子的运行起始信息还可以表示为:<算子原始名称,运行起始标记>,其中,算子原始名称可以链接进程号和设备卡号。
在实际应用中,考虑到在深度学习神经网络中会调用大量相同的算子,因此,同名现象较多,为了有效区分不同算子的记录情况,本发明实施例中,对于各算子,CPU调用目标管理插件根据算子原始名称、进程号和设备卡号生成新的算子名称new_name,然后根据新的算子名称new_name和运行起始标记生成算子的运行起始信息,例如运行起始标记为push,那么算子的运行起始信息可以表示为<new_name,push>。
可选的,本申请实施例中,运行起始标记还可以表示为starting mark或者其他可以用于表示算子运行起始状态的标记。
本发明实施例中,通过调用目标管理插件记录算子的运行起始标记,并获取算子原始名称、进程号和设备卡号,然后根据运行起始标记、算子原始名称、进程号和设备卡号获取算子的运行起始信息。以便于在后续根据运行起始信息计算硬件时间,提高了硬件时间的准确性。
在本发明的另一个实施例中,如图6所示,图6示出了调用目标管理插件记录各算子的运行结束信息的技术过程的示意图,该技术过程包括:
步骤601,对于各算子,在算子运行结束时,调用目标管理插件生成算子的运行结束标记,并获取算子的算子原始名称、进程号和设备卡号。
本发明实施例中,在结束调用算子时,算子从算子执行队列中退出,此时,CPU可以调用目标管理插件生成算子的运行结束标记。
于此同时,还可以调用目标管理插件获取该算子在开始运行时获取的算子的算子原始名称、进程号和设备卡号。
步骤602,对于各算子,调用目标管理插件根据算子的运行结束标记、算子的算子原始名称、进程号和设备卡号获取运行结束信息。
其中,算子的运行结束信息可以用于确定算子的结束运行时间点。
可选的,算子的运行结束信息可以表示为:<算子原始名称,进程号,设备卡号,运行结束标记>。
可选的,为了简化算子的运行结束信息的表达式,算子的运行结束信息还可以表示为:<算子原始名称,运行结束标记>,其中,算子原始名称可以链接进程号和设备卡号。
在实际应用中,考虑到在深度学习神经网络中会调用大量相同的算子,因此,同名现象较多,为了有效区分不同算子的记录情况,本发明实施例中,对于各算子,CPU可以调用目标管理插件根据算子的进程号、设备卡号和算子原始名称构建算子的算子名称new_name,然后根据新的算子名称new_name和运行结束标记生成算子的运行结束信息,例如运行结束标记为pop,那么算子的运行结束信息可以表示为<new_name,pop>。
可选的,本申请实施例中,运行结束标记还可以表示为End tag或者其他可以用于表示算子运行结束状态的标记。
本发明实施例中,通过调用目标管理插件记录算子的运行结束标记,并获取算子原始名称、进程号和设备卡号,然后根据运行结束标记、算子名称、进程号和设备卡号获取算子的运行结束信息。以便于在后续根据运行结束信息计算硬件时间,提高了硬件时间的准确性。
在本发明的另一个实施例中,如图7所示,图7示出了本发明实施例中确定算子硬件时间的技术过程的示意图,该技术过程包括:
步骤701,调用目标管理插件根据各算子的运行起始信息和运行结束信息确定各算子的调用信息。
其中,调用信息包括进程号和设备卡号均匹配的运行起始信息和运行结束信息。
本发明实施例中,对于各运行起始信息和各运行结束信息,调用目标管理插件将包括相同的进程号和设备卡号的运行起始信息与运行结束信息确定为一个调用信息。
可选的,一个算子可以具有多个调用信息。本发明实施例中,若进程号和设备卡号相同的运行起始信息与运行结束信息有多个时,即一个算子在同一个进程和卡号上多次出现。这种情况下,CPU可以调用目标管理插件从算子记录结构中获取各个算子的调用次序,结合算子调用次序来确定算子每一次调用时对应的调用信息。其中,一个算子可以得到多个调用信息,调用信息的数量表示算子被调用的次数。
步骤702,根据调用信息计算算子的算子硬件时间。
其中,调用信息包括进程号和设备卡号均匹配的运行起始信息和运行结束信息。
本发明实施例中,对于每个算子的每个调用信息,可以根据调用信息中的运行起始信息中的运行起始标记与运行结束信息中的运行结束标记计算二者之间的时间差,该时间差即算子的算子硬件时间。
本发明实施例中,CPU通过调用目标管理插件在开始调用算子时记录运行起始标记,在结束调用算子时记录运行结束标记,然后基于运行起始标记和运行结束标记确定算子的相对运行时长,然后基于此确定算子的算子硬件时间,提高了算子硬件时间的准确度。
下面结合实例和图8对本发明实施例提供的获取算子硬件时间的方法进行说明,图8示出了使用profiler工具获得机器学习处理器上运行的算子硬件时间的流程图。
步骤801,进入profiler。
本发明实施例中,CPU在调用神经网络模型中的多个算子对目标数据进行处理的过程中,在Pytorch前端可以使用上下文管理工具声明进入profiler工具。
步骤802,记录算子信息。
其中,算子信息包括各算子的算子硬件信息、运行起始信息和运行结束信息。其中,算子硬件信息可以包括硬件地址、工作队列、计算规模等信息。
本发明实施例中,CPU基于profiler工具获取算子的算子信息。其中基于profiler工具获取算子的算子信息的过程包括以下内容:
CPU调用目标管理插件获取机器学习处理器上运行的算子的算子信息,并将该些算子信息写入Pytorch的profiler中。
其中,Pytorch中有原生的profiler工具,然而,该原生的profiler工具仅支持GPU,为了能够使得profiler工具支持GPU之外的其他机器学习处理器,本发明中,重新构建了目标管理插件。后者在复用前者的基本功能的基础上,增加了对机器学习处理器的支持功能。
通过构建以及调用目标管理插件,只在Pytorch中增加极少的、必要代码,即可实现获取机器学习处理器上运行的神经网络模型的算子的算子信息的目的,减少了对Pytorch框架的修改,在增加了对机器学习处理器的支持的基础上,不会影响Pytorch中原CPU/CUDA的使用。
步骤803,判断算子信息是否记录结束,若未结束则执行步骤802,若结束则对算子信息进行集中管理。
下面对CPU调用目标管理插件对算子信息进行集中管理的过程进行说明:
在用神经网络模型中的多个算子对目标数据进行处理的过程中,将各算子的算子硬件信息、各算子的运行起始信息和运行结束信息保存在目标管理插件预设的目标数据结构中。
其中,算子硬件信息包括硬件地址、工作队列和算子计算规模信息。
可选的,算子硬件信息还可以例如是算子运行过程中申请的硬件内存大小、算子的峰值内存等。其中,算子计算规模信息是指实际在机器学习处理器上运行的算子的运算规模、工作队列是指算子所在的工作队列等,该些信息可以有效地还原算子的实际运行情况。
本发明实施例中,通过调用上下文管理工具进入profiler工具之后,CPU可以调用神经网络模型中的多个算子对目标数据进行处理,并在处理的过程中,调用目标管理插件记录各算子的运行起始信息和运行结束信息。于此同时,CPU还可以调用目标管理插件获取各算子的算子硬件信息,并将各算子的算子硬件信息、运行起始信息和运行结束信息写入目标数据结构的数据对象中。
其中,目标数据结构为目标管理插件中预先设置的数据结构,目标数据结构的数据对象是一种记录硬件时间的最小存储单元。可选的,该目标数据结构可以例如是:链表数据结构、树数据结构、图数据结构等。该目标数据结构中的数据对象中保存了各算子的算子硬件信息、运行起始信息和运行结束信息。
可选的,如图9所示,本申请实施例中,将各算子的算子硬件信息、各算子的运行起始信息和运行结束信息保存在目标管理插件预设的目标数据结构中的过程包括:
步骤901,获取各算子的算子名称。
在一种可选的实现方式中,CPU获取算子的算子名称的过程可以是:CPU可以调用目标管理插件从算子记录结构中获取算子原始名称,并将算子原始名称确定为算子的算子名称。
考虑到在深度学习神经网络中会调用大量相同的算子,因此,同名现象较多,为了有效区分不同算子的记录情况,本发明实施例提出了另一种获取算子的算子名称的方法。
其中,CPU可以调用目标管理插件根据算子原始名称、进程号和设备卡号生成新的算子名称new_name,并将该新的算子名称确定为算子的算子名称。
可选的,该生成新的算子名称的过程还可以如图10所示,图10中,CPU可以获取算子的进程号、设备卡号、算子原始名称和运行起始标记push或运行结束标记pop。其中,push/pop用于标记算子的算子状态。CPU可以根据算子的进程号、设备卡号、算子原始名称和push/pop生成新的算子名称,新的算子名称例如可以表示为<new_name,push/pop>。将该新的算子名称写入目标管理插件预设的目标数据结构的数据对象中。
步骤902,对于各算子,调用目标管理插件根据算子的算子名称和算子在目标数据结构中的数据对象组成算子对应的键值对。
其中,数据对象为目标数据结构中用于存储算子的算子硬件信息、算子的运行起始信息和运行结束信息的存储单元。
为了便于表述,下面用data来表示算子在目标数据结构中的数据对象。
对于各算子,CPU可以获取算子的算子名称以及算子在目标数据结构中的数据对象data,可选的,该算子名称可以是算子原始名称也可以是新的算子名称。基于此,CPU可以调用目标管理插件将算子的算子名称与算子在目标数据结构中的数据对象data组成该算子对应的键值对。该键值对可以表示为<算子名称,目标数据结构中的数据对象>。其中,图10中示例性地示出了新的算子名称与目标数据结构中的数据对象组成的键值对<新的算子名称,目标数据结构中的数据对象>,
步骤903,调用目标管理插件将算子对应的键值对保存在目标管理插件预设的数据库容器中。
本发明实施例中,CPU可以调用目标管理插件将该键值对复制到目标管理插件预设的数据库容器中保持。
可选的,该数据库容器可以例如docker容器、std::multimap容器等,其中,std::multimap是一种可以存放多种同名键值对的标准库容器。需要说明的是,本公开对数据库容器的类型不做限定。如图10所示,CPU可以将键值对<新的算子名称,目标数据结构中的数据对象>复制到数据库容器中,表示为数据库容器<新的算子名称,目标数据结构中的数据对象>。
进一步的,在一种可选的实现方式中,对于各算子,调用目标管理插件将各算子的算子硬件信息、各算子的运行起始信息和运行结束信息传输给CPU,以使CPU将各算子的算子硬件信息、各算子的运行起始信息和运行结束信息写入CPU的事件数据结构中。CPU的事件数据结构为event数据结构,其中,event数据结构是CPU中配置的Pytorch框架预先定义的用于封装算子信息的数据结构。
在另一种可选的实现方式中,为了保持Event数据结构中存储的各算子的算子信息对应的算子名称与目标管理插件的目标数据结构中存储的各算子的算子信息对应的算子名称一致,本发明实施例中,对于各算子,根据算子的进程号、设备卡号和算子原始名称构建算子的算子名称之后,可以调用目标管理插件将算子的算子名称传输给CPU,以供CPU更新算子在事件数据结构中的名称,即用新的算子名称替换算子在event数据结构中的数据对象包括的算子原始名称,从而在全局意义上实时更新了Event数据结构中的信息的目的。
步骤804,计算算子硬件时间。
在神经网络运行结束,机器学习处理器上运行的所有算子的算子信息记录完毕之后,CPU可以通过调用目标管理插件中的计算硬件时间接口来计算各算子的算子硬件时间,并可以将算子硬件时间返回Pytorch前端进行后处理。
其中,在计算算子硬件时间的过程中,首先需要根据新的算子名称在数据库容器中查找到对应的键值对,然后基于键值对中的data对应的算子信息获取算子的运行起始信息和运行结束信息,最后调用计算硬件时间的接口计算算子的算子硬件时间,并返回给Pytorch前端。
步骤805,手动释放内存。
在计算各算子的算子硬件时间的过程中,为了减少容器中的键值对数目、加快容器寻找速度,每个算子的算子硬件时间计算之后,可以手动释放机器学习处理器的内存,避免出现内存泄露。
需要说明的是,本发明实施例中,仅将目标管理插件预设的目标数据结构的数据对象中存储的算子信息所占用的内存释放,而并不删除event数据结构的数据对象中存储的算子信息。
步骤806,判断是否计算结束,若结束,则进行数据后处理,若未结束,则返回执行步骤804和步骤805的内容。
本发明实施例中,用户可以对基于记录的各算子的算子信息进行深度分析处理,其中,CPU还可以调用目标管理插件查询某一个或者多个算子的算子硬件信息。
应该理解的是,虽然图3-图10的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3-图10中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图11所示,提供了一种获取算子硬件时间的装置1100,包括:发送模块1101,信息记录模块1102和硬件时间确定模块1103,其中:
发送模块1101,用于将目标数据发送至机器学习处理器,机器学习处理器上配置有预先设计的神经网络模型;
信息记录模块1102,用于在调用神经网络模型中的多个算子对目标数据进行处理的过程中,调用目标管理插件记录各算子的运行起始信息和运行结束信息,其中,目标管理插件部署于CPU中;
硬件时间确定模块1103,用于调用目标管理插件根据各算子的运行起始信息和运行结束信息确定各算子的算子硬件时间。
在其中一个实施例中,信息记录模块1102具体用于:对于各算子,在算子开始运行时,生成算子的运行起始标记,并获取算子的算子原始名称、进程号和设备卡号;在算子运行结束时,生成算子的运行结束标记;对于各算子,调用目标管理插件根据算子的运行起始标记、算子的算子原始名称、进程号和设备卡号获取运行起始信息;调用目标管理插件根据算子的运行结束标记、算子的算子原始名称、进程号和设备卡号获取运行结束信息。
在其中一个实施例中,信息记录模块1102具体用于:调用目标管理插件根据各算子的运行起始信息和运行结束信息确定各算子的调用信息;根据调用信息计算算子的算子硬件时间,其中,调用信息包括进程号和设备卡号均匹配的运行起始信息和运行结束信息。
在其中一个实施例中,硬件时间确定模块1103具体用于:将各算子的算子硬件信息、各算子的运行起始信息和运行结束信息保存在目标管理插件预设的目标数据结构中,其中,算子硬件信息包括硬件地址、工作队列和算子计算规模信息。
在其中一个实施例中,硬件时间确定模块1103具体用于:获取各算子的算子名称;对于各算子,调用目标管理插件根据算子的算子名称和算子在目标数据结构中对应的数据对象组成算子对应的键值对,其中,数据对象为目标数据结构中用于存储算子的算子硬件信息、算子的运行起始信息和运行结束信息的存储单元;调用目标管理插件将算子对应的键值对保存在目标管理插件预设的数据库容器中。
在其中一个实施例中,硬件时间确定模块1103具体用于:对于各算子,根据算子的进程号、设备卡号和算子原始名称构建算子的算子名称。
在其中一个实施例中,硬件时间确定模块1103具体用于:对于各算子,调用目标管理插件将各算子的算子硬件信息、各算子的运行起始信息和运行结束信息传输给CPU,以使CPU将各算子的算子硬件信息、各算子的运行起始信息和运行结束信息写入CPU的事件数据结构中。
在其中一个实施例中,硬件时间确定模块1103具体用于:对于各算子,调用目标管理插件将算子的算子名称传输给CPU,以供CPU更新算子在事件数据结构中的名称。
关于获取算子硬件时间的装置的具体限定可以参见上文中对于获取算子硬件时间的方法的限定,在此不再赘述。上述获取算子硬件时间的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以以硬件形式内嵌于或独立于计算机处理装置中的处理器中,也可以以软件形式存储于计算机处理装置中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:将目标数据发送至机器学习处理器,机器学习处理器上配置有预先设计的神经网络模型;在调用神经网络模型中的多个算子对目标数据进行处理的过程中,调用目标管理插件记录各算子的运行起始信息和运行结束信息,其中,目标管理插件部署于CPU中;调用目标管理插件根据各算子的运行起始信息和运行结束信息确定各算子的算子硬件时间。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对于各算子,在算子开始运行时,生成算子的运行起始标记,并获取算子的算子原始名称、进程号和设备卡号;在算子运行结束时,生成算子的运行结束标记;对于各算子,调用目标管理插件根据算子的运行起始标记、算子的算子原始名称、进程号和设备卡号获取运行起始信息;调用目标管理插件根据算子的运行结束标记、算子的算子原始名称、进程号和设备卡号获取运行结束信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:调用目标管理插件根据各算子的运行起始信息和运行结束信息确定各算子的调用信息;根据调用信息计算算子的算子硬件时间,其中,调用信息包括进程号和设备卡号均匹配的运行起始信息和运行结束信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将各算子的算子硬件信息、各算子的运行起始信息和运行结束信息保存在目标管理插件预设的目标数据结构中,其中,算子硬件信息包括硬件地址、工作队列和算子计算规模信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取各算子的算子名称;对于各算子,调用目标管理插件根据算子的算子名称和算子在目标数据结构中对应的数据对象组成算子对应的键值对,其中,数据对象为目标数据结构中用于存储算子的算子硬件信息、算子的运行起始信息和运行结束信息的存储单元;调用目标管理插件将算子对应的键值对保存在目标管理插件预设的数据库容器中。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对于各算子,根据算子的进程号、设备卡号和算子原始名称构建算子的算子名称。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对于各算子,调用目标管理插件将各算子的算子硬件信息、各算子的运行起始信息和运行结束信息传输给CPU,以使CPU将各算子的算子硬件信息、各算子的运行起始信息和运行结束信息写入CPU的事件数据结构中。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对于各算子,调用目标管理插件将算子的算子名称传输给CPU,以供CPU更新算子在事件数据结构中的名称。
本实施例提供的计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,提供了一种计算机设备,包括处理器,用于存储可执行指令的存储器,其中,处理器被配置为调用存储器存储的指令,以执行上述实施例中所提供的获取算子硬件时间的方法。
在一些实施例里,本发明还公开了一种芯片(例如图12中示出的芯片1202)。在一种实现中,该芯片是一种系统级芯片(System on Chip,SoC),并且集成有一个或多个如图1中所示的组合处理装置。该芯片可以通过对外接口装置(如图12中示出的对外接口装置1206)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本发明还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本发明还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图12对该板卡进行详细地描述。
图12是示出根据本发明实施例的一种板卡1200的结构示意图。如图12中所示,该板卡包括用于存储数据的存储器件1204,其包括一个或多个存储单元1210。该存储器件可以通过例如总线等方式与控制器件1208和上文所述的芯片1202进行连接和数据传输。进一步,该板卡还包括对外接口装置1206,其配置用于芯片(或芯片封装结构中的芯片)与外部设备1212(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本发明板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
结合上述图1和图12的描述,本领域技术人员可以理解本发明也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本发明的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本发明的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本发明的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本发明方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本发明将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本发明的方案并不受所描述的动作的顺序限制。因此,依据本发明的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本发明所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本发明某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本发明对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本发明某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本发明的公开和教导,本领域技术人员可以理解本发明所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本发明中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本发明实施例所述方案的目的。另外,在一些场景中,本发明实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本发明的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机处理装置(例如个人计算机、服务器或者网络设备等)执行本发明实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
条款A1,一种获取算子硬件时间的方法,所述方法包括:
将目标数据发送至机器学习处理器,所述机器学习处理器上配置有预先设计的神经网络模型;在调用所述神经网络模型中的多个算子对所述目标数据进行处理的过程中,调用目标管理插件记录各所述算子的运行起始信息和运行结束信息,其中,所述目标管理插件部署于CPU中;调用所述目标管理插件根据各所述算子的所述运行起始信息和所述运行结束信息确定各所述算子的算子硬件时间。
条款A2,根据条款A1所述的方法,所述调用目标管理插件记录各所述算子的运行起始信息和运行结束信息,包括:
对于各所述算子,在所述算子开始运行时,生成所述算子的运行起始标记,并获取所述算子的算子原始名称、进程号和设备卡号;在所述算子运行结束时,生成所述算子的运行结束标记;对于各所述算子,调用所述目标管理插件根据所述算子的运行起始标记、所述算子的算子原始名称、进程号和设备卡号获取所述运行起始信息;调用所述目标管理插件根据所述算子的运行结束标记、所述算子的算子原始名称、进程号和设备卡号获取所述运行结束信息。
条款A3,根据条款A2所述的方法,所述调用所述目标管理插件根据各所述算子的所述运行起始信息和所述运行结束信息确定各所述算子的算子硬件时间,包括:
调用所述目标管理插件根据各所述算子的所述运行起始信息和所述运行结束信息确定各所述算子的调用信息;根据所述调用信息计算所述算子的算子硬件时间,其中,所述调用信息包括进程号和设备卡号均匹配的运行起始信息和运行结束信息。
条款A4,根据条款A1所述的方法,所述方法还包括:
将各所述算子的算子硬件信息、各所述算子的所述运行起始信息和所述运行结束信息保存在所述目标管理插件预设的目标数据结构中,其中,所述算子硬件信息包括硬件地址、工作队列和算子计算规模信息。
条款A5,根据条款A4所述的方法,所述方法还包括:
获取各所述算子的算子名称;对于各所述算子,调用所述目标管理插件根据所述算子的算子名称和所述算子在所述目标数据结构中对应的数据对象组成所述算子对应的键值对,其中,所述数据对象为所述目标数据结构中用于存储算子的算子硬件信息、算子的运行起始信息和运行结束信息的存储单元;调用所述目标管理插件将所述算子对应的键值对保存在所述目标管理插件预设的数据库容器中。
条款A6,根据条款A5所述的方法,所述获取各所述算子的算子名称,包括:对于各所述算子,根据所述算子的进程号、设备卡号和算子原始名称构建所述算子的所述算子名称。
条款A7,根据条款A6所述的方法,所述方法还包括:
对于各所述算子,调用所述目标管理插件将各所述算子的算子硬件信息、各所述算子的运行起始信息和所述运行结束信息传输给所述CPU,以使所述CPU将各所述算子的算子硬件信息、各所述算子的运行起始信息和所述运行结束信息写入所述CPU的事件数据结构中。
条款A8,根据条款A7所述的方法,所述方法还包括:
对于各所述算子,调用所述目标管理插件将所述算子的所述算子名称传输给所述CPU,以供所述CPU更新所述算子在所述事件数据结构中的名称。
以上所述实施例仅表达了本发明实施例的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明实施例构思的前提下,还可以做出若干变形和改进,这些都属于本发明实施例的保护范围。因此,本发明实施例专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种获取算子硬件时间的方法,其特征在于,所述方法包括:
将目标数据发送至机器学习处理器,所述机器学习处理器上配置有预先设计的神经网络模型;
在调用所述神经网络模型中的多个算子对所述目标数据进行处理的过程中,调用目标管理插件记录各所述算子的运行起始信息和运行结束信息,其中,所述目标管理插件部署于CPU中;
调用所述目标管理插件根据各所述算子的所述运行起始信息和所述运行结束信息确定各所述算子的算子硬件时间。
2.根据权利要求1所述的方法,其特征在于,所述调用目标管理插件记录各所述算子的运行起始信息和运行结束信息,包括:
对于各所述算子,在所述算子开始运行时,生成所述算子的运行起始标记,并获取所述算子的算子原始名称、进程号和设备卡号;在所述算子运行结束时,生成所述算子的运行结束标记;
对于各所述算子,调用所述目标管理插件根据所述算子的运行起始标记、所述算子的算子原始名称、进程号和设备卡号获取所述运行起始信息;调用所述目标管理插件根据所述算子的运行结束标记、所述算子的算子原始名称、进程号和设备卡号获取所述运行结束信息。
3.根据权利要求2所述的方法,其特征在于,所述调用所述目标管理插件根据各所述算子的所述运行起始信息和所述运行结束信息确定各所述算子的算子硬件时间,包括:
调用所述目标管理插件根据各所述算子的所述运行起始信息和所述运行结束信息确定各所述算子的调用信息;
根据所述调用信息计算所述算子的算子硬件时间,其中,所述调用信息包括进程号和设备卡号均匹配的运行起始信息和运行结束信息。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将各所述算子的算子硬件信息、各所述算子的所述运行起始信息和所述运行结束信息保存在所述目标管理插件预设的目标数据结构中,其中,所述算子硬件信息包括硬件地址、工作队列和算子计算规模信息。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
获取各所述算子的算子名称;
对于各所述算子,调用所述目标管理插件根据所述算子的算子名称和所述算子在所述目标数据结构中对应的数据对象组成所述算子对应的键值对,其中,所述数据对象为所述目标数据结构中用于存储算子的算子硬件信息、算子的运行起始信息和运行结束信息的存储单元;
调用所述目标管理插件将所述算子对应的键值对保存在所述目标管理插件预设的数据库容器中。
6.根据权利要求5所述的方法,其特征在于,所述获取各所述算子的算子名称,包括:
对于各所述算子,根据所述算子的进程号、设备卡号和算子原始名称构建所述算子的所述算子名称。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
对于各所述算子,调用所述目标管理插件将各所述算子的算子硬件信息、各所述算子的运行起始信息和所述运行结束信息传输给所述CPU,以使所述CPU将各所述算子的算子硬件信息、各所述算子的运行起始信息和所述运行结束信息写入所述CPU的事件数据结构中。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
对于各所述算子,调用所述目标管理插件将所述算子的所述算子名称传输给所述CPU,以供所述CPU更新所述算子在所述事件数据结构中的名称。
9.一种获取算子硬件时间的装置,其特征在于,所述装置包括:
发送模块,用于将目标数据发送至机器学习处理器,所述机器学习处理器上配置有预先设计的神经网络模型;
信息记录模块,用于在调用所述神经网络模型中的多个算子对所述目标数据进行处理的过程中,调用目标管理插件记录各所述算子的运行起始信息和运行结束信息,其中,所述目标管理插件部署于CPU中;
硬件时间确定模块,用于调用所述目标管理插件根据各所述算子的所述运行起始信息和所述运行结束信息确定各所述算子的算子硬件时间。
10.一种计算机设备,其特征在于,包括:
处理器,用于存储可执行指令的存储器,其中,所述处理器被配置为调用所述存储器存储的指令,以执行权利要求1至8中任意一项所述的方法。
11.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110320641.5A CN115129460A (zh) | 2021-03-25 | 2021-03-25 | 获取算子硬件时间的方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110320641.5A CN115129460A (zh) | 2021-03-25 | 2021-03-25 | 获取算子硬件时间的方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115129460A true CN115129460A (zh) | 2022-09-30 |
Family
ID=83374124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110320641.5A Pending CN115129460A (zh) | 2021-03-25 | 2021-03-25 | 获取算子硬件时间的方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115129460A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312761A (zh) * | 2023-11-28 | 2023-12-29 | 凯美瑞德(苏州)信息科技股份有限公司 | 一种数据片段处理时间计算方法及装置 |
CN117455015A (zh) * | 2023-12-20 | 2024-01-26 | 摩尔线程智能科技(成都)有限责任公司 | 一种模型优化的方法、装置、存储介质及电子设备 |
-
2021
- 2021-03-25 CN CN202110320641.5A patent/CN115129460A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312761A (zh) * | 2023-11-28 | 2023-12-29 | 凯美瑞德(苏州)信息科技股份有限公司 | 一种数据片段处理时间计算方法及装置 |
CN117312761B (zh) * | 2023-11-28 | 2024-03-05 | 凯美瑞德(苏州)信息科技股份有限公司 | 一种数据片段处理时间计算方法及装置 |
CN117455015A (zh) * | 2023-12-20 | 2024-01-26 | 摩尔线程智能科技(成都)有限责任公司 | 一种模型优化的方法、装置、存储介质及电子设备 |
CN117455015B (zh) * | 2023-12-20 | 2024-04-02 | 摩尔线程智能科技(成都)有限责任公司 | 一种模型优化的方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110298443B (zh) | 神经网络运算装置及方法 | |
CN110058922B (zh) | 一种提取机器学习任务的元数据的方法、装置 | |
US11087203B2 (en) | Method and apparatus for processing data sequence | |
CN112799599B (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
CN115129460A (zh) | 获取算子硬件时间的方法、装置、计算机设备和存储介质 | |
US8711160B1 (en) | System and method for efficient resource management of a signal flow programmed digital signal processor code | |
CN112070202B (zh) | 一种融合图的生成方法、生成装置和计算机可读存储介质 | |
CN116431878A (zh) | 向量检索服务方法、装置、设备及其存储介质 | |
CN107305486B (zh) | 一种神经网络maxout层计算装置 | |
CN114596423A (zh) | 基于虚拟场景网格化的模型渲染方法、装置和计算机设备 | |
CN110647981B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN110555522B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN110458285B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN116778124A (zh) | 三维场景编辑方法、系统、设备及存储介质 | |
CN112596881B (zh) | 存储部件及人工智能处理器 | |
CN114692824A (zh) | 一种神经网络模型的量化训练方法、装置和设备 | |
CN116797464A (zh) | 计算方法、装置、计算机设备和存储介质 | |
CN112766475A (zh) | 处理部件及人工智能处理器 | |
CN112817898A (zh) | 数据传输方法、处理器、芯片及电子设备 | |
CN112807695A (zh) | 游戏场景生成方法和装置、可读存储介质、电子设备 | |
CN114692865A (zh) | 一种神经网络量化训练方法、装置及相关产品 | |
CN116755714B (zh) | 深度神经网络模型的运行方法、装置、设备和存储介质 | |
CN115373646A (zh) | 扩展信息方法、装置和相关产品 | |
CN112463158B (zh) | 编译方法、装置、电子设备和存储介质 | |
WO2023104200A1 (en) | Systems, apparatuses, methods, and non-transitory computer-readable storage devices for artificial-intelligence model training using hybrid shuffling of training data |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221214 Address after: 215300 room 5, 232 Yuanfeng Road, Yushan Town, Kunshan City, Suzhou City, Jiangsu Province Applicant after: Cambrian (Kunshan) Information Technology Co.,Ltd. Address before: 6 / F, block B, 168 Tonghui Road, Pudong New Area, Shanghai 201306 Applicant before: SHANGHAI CAMBRICON INFORMATION TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right |