CN113704687A - 一种张量计算运行方法、装置及运算系统 - Google Patents
一种张量计算运行方法、装置及运算系统 Download PDFInfo
- Publication number
- CN113704687A CN113704687A CN202010437327.0A CN202010437327A CN113704687A CN 113704687 A CN113704687 A CN 113704687A CN 202010437327 A CN202010437327 A CN 202010437327A CN 113704687 A CN113704687 A CN 113704687A
- Authority
- CN
- China
- Prior art keywords
- calculation
- tensor
- instruction
- computation
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 343
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000004806 packaging method and process Methods 0.000 claims abstract description 28
- 238000005457 optimization Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 6
- 239000011159 matrix material Substances 0.000 description 24
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000005538 encapsulation Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提供了一种张量计算运行方法、装置及运算系统。其中,所述方法包括:生成多个计算指令,所述计算指令用于表示张量计算方式;针对每个所述计算指令,将所述多个设备端中一个设备端确定为该计算指令对应的设备端;针对每个计算指令,以该计算指令所对应的设备端的预设运行环境能够解析的封装方式,封装所述计算指令,得到该设备端对应的任务信息;针对每个所述任务信息,向该任务信息所对应的设备端发送该任务信息,以使得所述多个设备端按照所述多个计算指令所表示的张量计算方式并行地进行张量计算。可以通过并行计算的方式充分利用大规模运算的优势,加速张量计算,能够有效提高张量计算的效率。
Description
技术领域
本发明涉及机器学习技术领域,特别是涉及一种张量计算运行方法、装置及运算系统。
背景技术
在一些应用场景中,出于实际需求,具有计算能力的电子设备可以进行一个或多个张量间的计算(下文称张量计算),如利用训练好的卷积神经网络进行图像识别的过程中,神经网络中的卷积层、池化层、激活层等可以是通过张量计算实现的。
张量计算的复杂度较高,而通用的主机端设备(下文称主机端)往往不具备执行复杂度较高的计算的硬件条件,例如主机端往往不具有性能较高的GPU,如P4(一种GPU型号)、T4(一种GPU型号)、TX1(一种GPU型号)型的GPU。而具有较强计算性能的计算设备(下文称设备端)无法实现计算指令的编译。
因此,相关技术中,可以由主机端和设备端组成运算系统,其中,主机端可以按照需要进行的张量计算进行计算指令的编译,并将编译生成的计算指令发送至设备端,以使得设备端执行该计算指令,从而实现该张量计算。
但是,设备端往往缺少统一的标准,例如一部分设备端可以使用P4型的GPU,另一部分设备端可以使用T4型的GPU,剩余一部分设备端可以使用TX1型的GPU。同一种计算指令难以被所有设备端识别,因此开发人员难以利用多种所使用的GPU类型不同的设备端共同进行张量计算,导致张量计算的效率较低。
发明内容
本发明实施例的目的在于提供一种张量计算运行方法,以实现提高张量计算的运行效率。具体技术方案如下:
在本发明实施例的第一方面,提供了一种张量计算运行方法,应用于运算系统中的主机端,所述运算系统还包括多个设备端,所述方法包括:
生成多个计算指令,所述计算指令用于表示张量计算方式;
针对每个所述计算指令,将所述多个设备端中一个设备端确定为该计算指令对应的设备端;
针对每个计算指令,以该计算指令所对应的设备端的预设运行环境能够解析的封装方式,封装所述计算指令,得到该设备端对应的任务信息;
针对每个所述任务信息,向该任务信息所对应的设备端发送该任务信息,以使得所述多个设备端按照所述多个计算指令所表示的张量计算方式并行地进行张量计算。
在一种可能的实施例中,所述多个计算指令中不同的计算指令用于表示预设张量计算的不同张量计算方式;
所述方法还包括:
针对每个所述计算指令,获取设备端按照该计算指令所表示的张量计算方式完成所述预设张量计算所花费的时长,作为该计算指令的耗时;
确定所述多个计算指令中所述耗时最短的计算指令,作为实现所述预设张量计算时所使用的计算指令。
在一种可能的实施例中,所述针对每个所述计算指令,将所述多个设备端中一个设备端确定为该计算指令对应的设备端,包括:
针对每个所述计算指令,将所述多个设备端中一个未在进行张量计算的设备端确定为该计算指令对应的设备端。
在本发明实施例的第二方面,提供了一种张量计算运行装置,应用于运算系统中的主机端,所述运算系统还包括多个设备端,所述装置包括:
编译模块,用于生成多个计算指令,所述计算指令用于表示张量计算方式;
调度模块,针对每个所述计算指令,将所述多个设备端中一个设备端确定为该计算指令对应的设备端;
封装模块,用于针对每个计算指令,以该计算指令所对应的设备端的预设运行环境能够解析的封装方式,封装所述计算指令,得到该设备端对应的任务信息;
通信模块,用于针对每个所述任务信息,向该任务信息所对应的设备端发送该任务信息,以使得所述多个设备端按照所述多个计算指令所表示的张量计算方式并行地进行张量计算。
在一种可能的实施例中,所述多个计算指令中不同的计算指令用于表示预设张量计算的不同张量计算方式;
所述通信模块,还用于针对每个所述计算指令,获取设备端按照该计算指令所表示的张量计算方式完成所述预设张量计算所花费的时长,作为该计算指令的耗时;
所述装置还包括自动优化模块,用于确定所述多个计算指令中所述耗时最短的计算指令,作为实现所述预设张量计算时所使用的计算指令。
在一种可能的实施例中,所述调度模块,具体用于针对每个所述计算指令,将所述多个设备端中一个未在进行张量计算的设备端确定为该计算指令对应的设备端。
在本发明实施例的第三方面,提供了一种运算系统,所述运算系统包括主机端和多个设备端;
所述主机端,用于生成多个计算指令,所述计算指令用于表示张量计算方式;
所述主机端,还用于针对每个所述计算指令,将所述多个设备端中一个设备端确定为该计算指令对应的设备端;并针对每个计算指令,以该计算指令所对应的设备端的预设运行环境能够解析的封装方式,封装所述计算指令,得到该设备端对应的任务信息;针对每个所述任务信息,向该任务信息所对应的设备端发送该任务信息,以使得所述多个设备端按照所述多个计算指令所表示的张量计算方式并行地进行张量计算;
所述多个设备端,具体用于按照所述多个计算指令所表示的张量计算方式并行地进行张量计算。
在一种可能的实施例中,所述多个计算指令中不同的计算指令用于表示预设张量计算的不同张量计算方式;
所述主机端,还用于针对每个所述计算指令,获取设备端按照该计算指令所表示的张量计算方式完成所述预设张量计算所花费的时长,作为该计算指令的耗时;
所述主机端,还用于确定所述多个计算指令中所述耗时最短的计算指令,作为实现所述预设张量计算时所使用的计算指令。
在一种可能的实施例中,所述多个设备端,还用于在按照所述多个计算指令中任一计算指令所表示的张量计算方式完成所述预设张量计算后,向所述主机端反馈按照该张量计算方式完成所述预设张量计算所花费的时长。
在一种可能的实施例中,所述主机端,具体用于针对每个所述计算指令,将所述多个设备端中一个未在进行张量计算的设备端确定为该计算指令对应的设备端。
在本发明实施例的第四方面,提供了一种主机端,应用于运算系统,所述运算系统还包括设备端,所述主机端包括:
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面任一所述的方法步骤。
在本发明实施例的第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面任一所述的方法步骤。
本发明实施例提供的张量计算运行方法、装置运算系统,可以通过对计算指令的封装,使得设备端可以在预设的运行环境中识别计算指令所表示的操作,无需对设备端的运行环境进行定制化的配置,避免了因部署设备端运行环境产生的人工成本和时间成本,因此可以开展大规模的张量计算,并通过并行计算的方式充分利用大规模运算的优势,加速张量计算,能够有效提高张量计算的效率。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的张量计算运行方法的一种流程示意图;
图2为本发明实施例提供的张量计算自动优化方法的一种流程示意图;
图3a为本发明实施例提供的张量计算运行装置的一种结构示意图;
图3b为本发明实施例提供的张量计算运行装置的另一种结构示意图;
图4为本发明实施例提供的运算系统的一种结构示意图;
图5为本发明实施例提供的主机端的一种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了更清楚的对本发明实施例提供的张量计算运行方法进行说明,下面将对一种可能的应用场景进行示例性的说明。可以理解的是,下述示例仅是本发明实施例提供的张量计算运行方法的一种可能的应用场景,在其他可能的实施例中,本发明实施例提供的张量计算运行方法也可以应用于其他可能的应用场景,该示例对此不做限制。
在利用机器学习得到的神经网络进行推理的过程中,可能需要由具有计算能力的电子设备进行张量计算。而对于同一种张量计算,可以有多种不同的张量计算方式来实现。
为描述方便,以张量计算为矩阵A和矩阵B进行矩阵乘法为例,其中矩阵A为M行K列的矩阵,矩阵B为K列N行的矩阵,M、K、N为正整数。则为实现该张量计算,可以是控制GPU生成m1*n1个线程,其中,m1为小于等于M的正整数,n1为小于等于N的正整数,并生成m2*n2个Block(数据块),其中,m2为大于等于M/m1的最小正整数,n2为大于等于N/n1的最小正整数。以所生成的线程和Block为模板,进行矩阵A和矩阵B的矩阵乘法运算。
在运算过程中,如果使用的m1或n1的取值不同,则可以视为不同的张量计算方式。因此,理论上该张量计算共计有M*N种张量计算方式。为提高推理过程的效率,可以对该张量计算的张量计算方式进行优化。
可以是针对M*N种张量计算方式中的每一种张量计算方式,按照该张量计算方式进行张量计算,并获取按照该张量计算方式进行张量计算所花费的时长,将花费的时长最短的张量计算方式,作为推理时该张量计算的张量计算方式。
该优化过程中,需要进行M*N次张量计算,因此当矩阵A和矩阵B的矩阵尺寸较大时,即N、M的数值较大时,需要进行大量的张量计算。
如前述分析,相关技术中,受限制于部署运行环境的人工成本和时间成本,往往只使用一个设备端进行张量计算。在需要进行多次张量计算的应用场景中,可以是利用该一个设备端串行的进行多次张量计算,以前述优化过程为例,可以是利用该一个设备端依次以M*N种不同的张量计算方式进行张量计算。导致张量计算所花费的时间较多。
基于此,本发明实施例提供了一种张量计算运行方法,该方法应用于具有多个设备端的运算系统中的主机端,这多个主机端可以是多个彼此独立的实体设备,也可以是设置于同一实体设备上的多个不同的虚拟设备,还可以是由部分实体设备和部分虚拟设备组成的,本实施对此不做限制,可以参见图1,图1所示为本发明实施例提供的张量计算运行方法的一种流程示意图,可以包括:
S101,生成多个计算指令。
S102,针对每个计算指令,将多个设备端中一个设备端确定为该计算指令对应的设备端。
S103,针对每个计算指令,以该计算指令所对应的设备端的预设运行环境能够解析的封装方式,封装该计算指令,得到该设备端对应的任务信息。
S104,针对每个任务信息,向该任务信息所对应的设备端发送该任务信息,以使得多个设备端按照多个计算指令所表示的张量计算方式并行地进行张量计算。
选用该实施例,可以通过对计算指令的封装,使得设备端可以在预设的运行环境中识别计算指令所表示的操作,无需对设备端的运行环境进行定制化的配置,避免了因部署设备端运行环境产生的人工成本和时间成本,因此可以开展大规模的张量计算,并通过并行计算的方式充分利用大规模运算的优势,加速张量计算,能够有效提高张量计算的效率。
其中,在S101中,计算指令用于表示张量计算方式,由于不同张量计算的形式不同,因此可能有不同的张量计算方式,为描述方便,仍以前述矩阵A和矩阵B进行矩阵乘法为例。
主机端可以是按照矩阵A和矩阵B的规模,确定m1和n1的所有可能的组合方式,可以得到(1,1)、(1,2)、…(1,N)、(2,1)、(2,2)…(N,M)共计N*M种组合方式。针对每种组合方式,编译得到计算指令,该计算指令表示使用该组合方式中的n1和m1进行张量计算的张量计算方式。
在S102中,设备端的预设运行环境能够解析的封装方式根据应用场景的不同可以不同,示例性的,可以是利用C++(一种编程语言)提供的默认函数库对计算指令进行封装。在一种可能的实施例中,主机端可以预先存储有运行环境信息,该运行环境信息用于表示设备端的预设运行环境,主机端可以通过解析该运行环境信息确定设备端的预设运行环境所能够解析的封装方式。该运行环境信息可以是用户预先存储在主机端中的。
在另一种可能的实施例中,主机端也可以是接收设备端发送的运行环境信息,通过解析该运行环境信息确定设备端的预设运行环境所能够解析的封装方式,该运行环境信息可以是设备端通过扫描自身运行环境生成的。
不同计算指令可以对应相同的设备端,在一种可能的实施例中,不同计算指令可以对应不同的设备端,以使得一个设备端同一时间窗口内承担一个计算指令的计算任务,从而实现不同设备端间的负载均衡。
在S103,由于任务信息是使用设备端的预设运行环境能够解析的封装方式进行封装的,因此设备端可以在不额外定制运行环境的情况下,使用预设运行环境解析任务信息,以确定计算指令所表示的操作,并按照计算指令所表示的操作执行相应的运算,从而按照计算指令所表示的张量计算方式进行张量计算。
在S104中,设备端在接收到计算指令后,可以独立地进行张量计算,从而实现多个设备端间的并行计算。
可以理解的是,图1所示仅为本发明实施例提供的张量计算运行方法的一种流程示意图,在其他可能的实施例中,也可以是部分计算指令并行执行,另一部分计算指令串行执行。示例性的,假设一共有10个计算指令,分别记为计算指令1-10,则可以是并行执行计算指令1-5,每当其中一个计算指令完成时,执行下一个计算指令,直至计算指令1-10全部执行完成。
为更清楚的对本发明实施例提供的张量计算运行方法进行说明,下面将结合具体的应用场景进行说明。以上述优化过程为例,可以参见图2,图2所示为本发明实施例提供的张量计算自动优化方法的一种流程示意图,可以包括:
S201,生成多个计算指令。
其中,每个计算指令用于表示预设张量计算的不同张量计算方式,参见前述S101中关于计算指令生成的相关描述,以前述矩阵A和矩阵B进行矩阵乘法为例,可以是基于多个不同的m1、n1的组合方式,编译得到多个计算指令。
所生成的计算指令表示的张量计算方式可以为预设张量计算的所有可能的张量计算方式,也可以为预设张量计算部分可能的张量计算方式。例如以前述矩阵A和矩阵B进行矩阵乘法为例,则可以是生成M*N个计算指令,其中每个计算指令用于表示该张量计算的一种不同的计算方式,也可以生成少于M*N个计算指令,其中每个计算指令用于表示该张量计算的一种不同的计算方式。
可以理解的是,在一些应用场景,可以用过一些预筛选,如理论推算的方式排出一些计算方式,因此所生成的计算指令表示的张量计算方式也可以为预设张量计算部分可能的张量计算方式。
S202,针对每个计算指令,将多个设备端中一个设备端确定为该计算指令对应的设备端。
在一种可能的实施例中,可以是针对每个计算指令,将多个设备端中一个未在进行张量计算的设备端确定为该计算指令对应的设备端,选用该实施例,可以避免一个设备端同时进行多个张量计算。可以理解的是,如果一个设备端同时执行多个计算指令时,则该设备端完成一个计算指令所花费的时间,除了受计算指令自身的优化程度的影响外,还受到执行该计算指令时所占用的计算资源的影响,而不同该设备端可能为不同的计算指令分配了不同的计算资源,因此该设备端完成一个计算指令所花费的时间难以准确反映出该计算指令的优化程度,导致优化得到的结果不准确。而选用该实施例,可以解决该技术问题。
S203,针对每个计算指令,以该计算指令所对应的设备端的预设运行环境能够解析的封装方式,封装该计算指令,得到该设备端对应的任务信息。
S204,针对每个任务信息,向该任务信息所对应的设备端发送该任务信息,以使得多个设备端按照多个计算指令所表示的张量计算方式并行地进行张量计算。
S205,针对每个计算指令,获取设备端按照该计算指令所表示的张量计算方式完成预设张量计算所花费的时长,作为该计算指令的耗时。
可以理解的是,每个计算指令的耗时可以是在设备端完成该计算指令后,通过数据交互反馈至主机端的,如前述分析,由于多个计算指令在设备端是并行执行的,因此在一种可能的实施例中,S305也可以是和S304交替进行的。
S206,确定多个计算指令中耗时最短的计算指令,作为实现预设张量计算时所使用的计算指令。
可以理解的是,在不考虑各个设备端自身计算性能的差异的情况下,一个计算指令的耗时越短,则可以认为完成该计算指令所需要的计算量越小,即该计算指令的优化程度越高。选用优化程度最高的计算指令,可以有效降低实现预设张量计算时所花费的时长。
参见图3a,图3a所示为本发明实施例提供的张量计算运行装置的一种结构示意图,可以包括:
编译模块301,用于生成多个计算指令,所述计算指令用于表示张量计算方式;
调度模块302,针对每个所述计算指令,将所述多个设备端中一个设备端确定为该计算指令对应的设备端;
封装模块303,用于针对每个计算指令,以该计算指令所对应的设备端的预设运行环境能够解析的封装方式,封装所述计算指令,得到该设备端对应的任务信息;
通信模块304,用于针对每个所述任务信息,向该任务信息所对应的设备端发送该任务信息,以使得所述多个设备端按照所述多个计算指令所表示的张量计算方式并行地进行张量计算。
在一种可能的实施例中,如图3b所示,所述多个计算指令中不同的计算指令用于表示预设张量计算的不同张量计算方式;
所述通信模块304,还用于针对每个所述计算指令,获取设备端按照该计算指令所表示的张量计算方式完成所述预设张量计算所花费的时长,作为该计算指令的耗时;
所述装置还包括自动优化模块305,用于确定所述多个计算指令中所述耗时最短的计算指令,作为实现所述预设张量计算时所使用的计算指令。
在一种可能的实施例中,所述调度模块302,具体用于针对每个所述计算指令,将所述多个设备端中一个未在进行张量计算的设备端确定为该计算指令对应的设备端。
参见图4,图4所示为本发明实施例提供的运算系统的一种结构示意图,可以包括:主机端401、多个设备端402。
所述主机端401,用于生成多个计算指令,所述计算指令用于表示张量计算方式;
所述主机端401,还用于针对每个所述计算指令,将所述多个设备端中一个设备端确定为该计算指令对应的设备端;并针对每个计算指令,以该计算指令所对应的设备端的预设运行环境能够解析的封装方式,封装所述计算指令,得到该设备端对应的任务信息;针对每个所述任务信息,向该任务信息所对应的设备端发送该任务信息,以使得所述多个设备端按照所述多个计算指令所表示的张量计算方式并行地进行张量计算;
所述多个设备端402,具体用于按照所述多个计算指令所表示的张量计算方式并行地进行张量计算。多个设备端402可以预先组建成一个硬件资源池,受到主机端的统一调度。
在一种可能的实施例中,所述多个计算指令中不同的计算指令用于表示预设张量计算的不同张量计算方式;
所述主机端401,还用于针对每个所述计算指令,获取设备端402按照该计算指令所表示的张量计算方式完成所述预设张量计算所花费的时长,作为该计算指令的耗时;
所述主机端401,还用于确定所述多个计算指令中所述耗时最短的计算指令,作为实现所述预设张量计算时所使用的计算指令。
在一种可能的实施例中,所述多个设备端402,还用于在按照所述多个计算指令中任一计算指令所表示的张量计算方式完成所述预设张量计算后,向所述主机端401反馈按照该张量计算方式完成所述预设张量计算所花费的时长。
在一种可能的实施例中,所述主机端401,具体用于针对每个所述计算指令,将所述多个设备端402中一个未在进行张量计算的设备端确定为该计算指令对应的设备端。
本发明实施例还提供了一种主机端,如图5所示:
存储器501,用于存放计算机程序;
处理器502,用于执行存储器501上所存放的程序时,实现如下步骤:
生成多个计算指令,所述计算指令用于表示张量计算方式;
针对每个所述计算指令,将所述多个设备端中一个设备端确定为该计算指令对应的设备端;
针对每个计算指令,以该计算指令所对应的设备端的预设运行环境能够解析的封装方式,封装所述计算指令,得到该设备端对应的任务信息;
针对每个所述任务信息,向该任务信息所对应的设备端发送该任务信息,以使得所述多个设备端按照所述多个计算指令所表示的张量计算方式并行地进行张量计算。
在一种可能的实施例中,所述多个计算指令中不同的计算指令用于表示预设张量计算的不同张量计算方式;
所述方法还包括:
针对每个所述计算指令,获取设备端按照该计算指令所表示的张量计算方式完成所述预设张量计算所花费的时长,作为该计算指令的耗时;
确定所述多个计算指令中所述耗时最短的计算指令,作为实现所述预设张量计算时所使用的计算指令。
在一种可能的实施例中,所述针对每个所述计算指令,将所述多个设备端中一个设备端确定为该计算指令对应的设备端,包括:
针对每个所述计算指令,将所述多个设备端中一个未在进行张量计算的设备端确定为该计算指令对应的设备端。
上述主机端提到的存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一张量计算运行方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一张量计算运行方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、系统、计算机可读存储介质、计算机程序产品的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (12)
1.一种张量计算运行方法,其特征在于,应用于运算系统中的主机端,所述运算系统还包括多个设备端,所述方法包括:
生成多个计算指令,所述计算指令用于表示张量计算方式;
针对每个所述计算指令,将所述多个设备端中一个设备端确定为该计算指令对应的设备端;
针对每个计算指令,以该计算指令所对应的设备端的预设运行环境能够解析的封装方式,封装所述计算指令,得到该设备端对应的任务信息;
针对每个所述任务信息,向该任务信息所对应的设备端发送该任务信息,以使得所述多个设备端按照所述多个计算指令所表示的张量计算方式并行地进行张量计算。
2.根据权利要求1所述的方法,其特征在于,所述多个计算指令中不同的计算指令用于表示预设张量计算的不同张量计算方式;
所述方法还包括:
针对每个所述计算指令,获取设备端按照该计算指令所表示的张量计算方式完成所述预设张量计算所花费的时长,作为该计算指令的耗时;
确定所述多个计算指令中所述耗时最短的计算指令,作为实现所述预设张量计算时所使用的计算指令。
3.根据权利要求2所述的方法,其特征在于,所述针对每个所述计算指令,将所述多个设备端中一个设备端确定为该计算指令对应的设备端,包括:
针对每个所述计算指令,将所述多个设备端中一个未在进行张量计算的设备端确定为该计算指令对应的设备端。
4.一种张量计算运行装置,其特征在于,应用于运算系统中的主机端,所述运算系统还包括多个设备端,所述装置包括:
编译模块,用于生成多个计算指令,所述计算指令用于表示张量计算方式;
调度模块,针对每个所述计算指令,将所述多个设备端中一个设备端确定为该计算指令对应的设备端;
封装模块,用于针对每个计算指令,以该计算指令所对应的设备端的预设运行环境能够解析的封装方式,封装所述计算指令,得到该设备端对应的任务信息;
通信模块,用于针对每个所述任务信息,向该任务信息所对应的设备端发送该任务信息,以使得所述多个设备端按照所述多个计算指令所表示的张量计算方式并行地进行张量计算。
5.根据权利要求4所述的装置,其特征在于,所述多个计算指令中不同的计算指令用于表示预设张量计算的不同张量计算方式;
所述通信模块,还用于针对每个所述计算指令,获取设备端按照该计算指令所表示的张量计算方式完成所述预设张量计算所花费的时长,作为该计算指令的耗时;
所述装置还包括自动优化模块,用于确定所述多个计算指令中所述耗时最短的计算指令,作为实现所述预设张量计算时所使用的计算指令。
6.根据权利要求5所述的装置,其特征在于,所述调度模块,具体用于针对每个所述计算指令,将所述多个设备端中一个未在进行张量计算的设备端确定为该计算指令对应的设备端。
7.一种运算系统,其特征在于,所述运算系统包括主机端和多个设备端;
所述主机端,用于生成多个计算指令,所述计算指令用于表示张量计算方式;
所述主机端,还用于针对每个所述计算指令,将所述多个设备端中一个设备端确定为该计算指令对应的设备端;并针对每个计算指令,以该计算指令所对应的设备端的预设运行环境能够解析的封装方式,封装所述计算指令,得到该设备端对应的任务信息;针对每个所述任务信息,向该任务信息所对应的设备端发送该任务信息,以使得所述多个设备端按照所述多个计算指令所表示的张量计算方式并行地进行张量计算;
所述多个设备端,具体用于按照所述多个计算指令所表示的张量计算方式并行地进行张量计算。
8.根据权利要求7所述的系统,其特征在于,所述多个计算指令中不同的计算指令用于表示预设张量计算的不同张量计算方式;
所述主机端,还用于针对每个所述计算指令,获取设备端按照该计算指令所表示的张量计算方式完成所述预设张量计算所花费的时长,作为该计算指令的耗时;
所述主机端,还用于确定所述多个计算指令中所述耗时最短的计算指令,作为实现所述预设张量计算时所使用的计算指令。
9.根据权利要求8所述的系统,其特征在于,所述多个设备端,还用于在按照所述多个计算指令中任一计算指令所表示的张量计算方式完成所述预设张量计算后,向所述主机端反馈按照该张量计算方式完成所述预设张量计算所花费的时长。
10.根据权利要求7-9任一所述的系统,其特征在于,所述主机端,具体用于针对每个所述计算指令,将所述多个设备端中一个未在进行张量计算的设备端确定为该计算指令对应的设备端。
11.一种主机端,其特征在于,应用于运算系统,所述运算系统还包括设备端,所述主机端包括:
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-3任一所述的方法步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-3任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010437327.0A CN113704687B (zh) | 2020-05-21 | 2020-05-21 | 一种张量计算运行方法、装置及运算系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010437327.0A CN113704687B (zh) | 2020-05-21 | 2020-05-21 | 一种张量计算运行方法、装置及运算系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113704687A true CN113704687A (zh) | 2021-11-26 |
CN113704687B CN113704687B (zh) | 2024-04-05 |
Family
ID=78645912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010437327.0A Active CN113704687B (zh) | 2020-05-21 | 2020-05-21 | 一种张量计算运行方法、装置及运算系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113704687B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440229A (zh) * | 2013-08-12 | 2013-12-11 | 浪潮电子信息产业股份有限公司 | 一种基于mic架构处理器的向量化优化方法 |
CN103959233A (zh) * | 2011-09-15 | 2014-07-30 | 埃克森美孚上游研究公司 | 在执行eos计算的指令受限算法中最优化矩阵和向量运算 |
US20160125263A1 (en) * | 2014-11-03 | 2016-05-05 | Texas Instruments Incorporated | Method to compute sliding window block sum using instruction based selective horizontal addition in vector processor |
US20170109210A1 (en) * | 2014-03-30 | 2017-04-20 | Universiteit Gent | Program Execution On Heterogeneous Platform |
US20180107456A1 (en) * | 2016-10-19 | 2018-04-19 | 1026 Labs, Inc. | Preprocessing tensor operations for optimal compilation |
CN107977231A (zh) * | 2017-12-15 | 2018-05-01 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
CN110058884A (zh) * | 2019-03-15 | 2019-07-26 | 佛山市顺德区中山大学研究院 | 用于计算型存储指令集运算的优化方法、系统及存储介质 |
CN110096309A (zh) * | 2018-11-14 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110580524A (zh) * | 2018-06-08 | 2019-12-17 | 英特尔公司 | 使用灵活浮点张量的人工神经网络训练 |
CN110647356A (zh) * | 2018-06-27 | 2020-01-03 | 北京中科寒武纪科技有限公司 | 运算装置及相关产品 |
CN111079925A (zh) * | 2018-10-19 | 2020-04-28 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111124656A (zh) * | 2018-10-31 | 2020-05-08 | 伊姆西Ip控股有限责任公司 | 用于向专用计算资源分配任务的方法、设备和计算机程序产品 |
-
2020
- 2020-05-21 CN CN202010437327.0A patent/CN113704687B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103959233A (zh) * | 2011-09-15 | 2014-07-30 | 埃克森美孚上游研究公司 | 在执行eos计算的指令受限算法中最优化矩阵和向量运算 |
CN103440229A (zh) * | 2013-08-12 | 2013-12-11 | 浪潮电子信息产业股份有限公司 | 一种基于mic架构处理器的向量化优化方法 |
US20170109210A1 (en) * | 2014-03-30 | 2017-04-20 | Universiteit Gent | Program Execution On Heterogeneous Platform |
US20160125263A1 (en) * | 2014-11-03 | 2016-05-05 | Texas Instruments Incorporated | Method to compute sliding window block sum using instruction based selective horizontal addition in vector processor |
US20180107456A1 (en) * | 2016-10-19 | 2018-04-19 | 1026 Labs, Inc. | Preprocessing tensor operations for optimal compilation |
CN107977231A (zh) * | 2017-12-15 | 2018-05-01 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
CN110580524A (zh) * | 2018-06-08 | 2019-12-17 | 英特尔公司 | 使用灵活浮点张量的人工神经网络训练 |
CN110647356A (zh) * | 2018-06-27 | 2020-01-03 | 北京中科寒武纪科技有限公司 | 运算装置及相关产品 |
CN111079925A (zh) * | 2018-10-19 | 2020-04-28 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111124656A (zh) * | 2018-10-31 | 2020-05-08 | 伊姆西Ip控股有限责任公司 | 用于向专用计算资源分配任务的方法、设备和计算机程序产品 |
CN110096309A (zh) * | 2018-11-14 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110058884A (zh) * | 2019-03-15 | 2019-07-26 | 佛山市顺德区中山大学研究院 | 用于计算型存储指令集运算的优化方法、系统及存储介质 |
Non-Patent Citations (1)
Title |
---|
徐章宁;王兴东;: "SIMD指令集技术在优化MPEG-2码流处理的研究", 微计算机信息, no. 23, 15 August 2010 (2010-08-15), pages 161 - 163 * |
Also Published As
Publication number | Publication date |
---|---|
CN113704687B (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110515739B (zh) | 深度学习神经网络模型负载计算方法、装置、设备及介质 | |
EP3832499A1 (en) | Matrix computing device | |
US8607246B2 (en) | Multiprocessor circuit using run-time task scheduling | |
US8214814B2 (en) | Sharing compiler optimizations in a multi-node system | |
CN109669772B (zh) | 计算图的并行执行方法和设备 | |
US8122441B2 (en) | Sharing compiler optimizations in a multi-node system | |
Zheng et al. | AStitch: enabling a new multi-dimensional optimization space for memory-intensive ML training and inference on modern SIMT architectures | |
CN112711478B (zh) | 基于神经网络的任务处理方法、装置、服务器和存储介质 | |
Fursin et al. | Collective knowledge: Towards R&D sustainability | |
CN116467061B (zh) | 一种任务执行的方法、装置、存储介质及电子设备 | |
CN112925587A (zh) | 用于初始化应用的方法和装置 | |
US11361050B2 (en) | Assigning dependent matrix-vector multiplication operations to consecutive crossbars of a dot product engine | |
US10990073B2 (en) | Program editing device, program editing method, and computer readable medium | |
CN111124685A (zh) | 大数据处理方法、装置、电子设备和存储介质 | |
CN108139929B (zh) | 用于调度多个任务的任务调度装置和方法 | |
US20190370076A1 (en) | Methods and apparatus to enable dynamic processing of a predefined workload | |
Hosny et al. | Characterizing and optimizing EDA flows for the cloud | |
CN113704687B (zh) | 一种张量计算运行方法、装置及运算系统 | |
US20210182041A1 (en) | Method and apparatus for enabling autonomous acceleration of dataflow ai applications | |
CN110879744B (zh) | 利用多线程执行计算图的方法和系统 | |
KR102512704B1 (ko) | 매트릭스 연산 방법 및 그 장치 | |
US20230418666A1 (en) | Graph streaming neural network processing system and method thereof | |
US20170192759A1 (en) | Method and system for generation of machine-executable code on the basis of at least dual-core predictive latency | |
US20230131430A1 (en) | Compiler device, instruction generation method, program, compiling method, and compiler program | |
US20220019531A1 (en) | Allocating Variables to Computer Memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |