CN112463377A - 异构计算系统执行计算任务的方法及装置 - Google Patents
异构计算系统执行计算任务的方法及装置 Download PDFInfo
- Publication number
- CN112463377A CN112463377A CN202011352914.6A CN202011352914A CN112463377A CN 112463377 A CN112463377 A CN 112463377A CN 202011352914 A CN202011352914 A CN 202011352914A CN 112463377 A CN112463377 A CN 112463377A
- Authority
- CN
- China
- Prior art keywords
- computing
- calculation
- task
- code
- time
- 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
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/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06C—DIGITAL COMPUTERS IN WHICH ALL THE COMPUTATION IS EFFECTED MECHANICALLY
- G06C3/00—Arrangements for table look-up, e.g. menstruation table
-
- 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
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种异构计算系统执行计算任务的方法,包括:依据当前的计算任务,确定需要计算的数据量、计算类型和代码复杂度;依据所述数据量、计算类型和所述代码复杂度,在异构计算系统中确定计算时间最短的计算设备;采用计算时间最短的计算设备对当前的计算任务进行计算。本发明能够将计算任务执行在对应的计算时间最短的设备上,从而充分发挥异构计算系统的优势。
Description
技术领域
本发明涉及异构计算系统技术领域,尤其涉及一种异构计算系统执行计算任务的装置方法及装置。
背景技术
用户在进行异构编程时,常常使用统一的异构计算编程语言,例如OpenCL来进行异构计算的编程,同时由用户指定一个具体的设备,来执行计算任务。该计算任务根据用户指定的设备类型,进行编译,链接后,转换为该设备可运行的二进制,最后在设备上执行。由于系统内不同的硬件设备存在差异,例如中央处理器的强项是控制与逻辑算法,图形处理器设备的强项是算术逻辑,因此当计算任务是矩阵的算术运算时,图形处理器的耗时要低于中央处理器,当计算任务主要是逻辑判断,例如排序问题等,中央处理器的耗时又会低于图形处理器。
在实现本发明的过程中,发明人发现现有技术中至少存在如下技术问题:
由于用户在异构计算系统中,因为无法感知计算任务在不同计算设备上的运行特性,因此用户自己选定的设备,不一定就是运行计算任务耗时最少的设备,无法充分发挥异构计算系统的优势。
发明内容
本发明提供的异构计算系统执行计算任务的装置方法及装置,能够将计算任务执行在对应的计算时间最短的设备上,从而充分发挥异构计算系统的优势。
第一方面,本发明提供一种异构计算系统执行计算任务的方法,包括:
依据当前的计算任务,确定需要计算的数据量、计算类型和代码复杂度;
依据所述数据量、计算类型和所述代码复杂度,在异构计算系统中确定计算时间最短的计算设备;
采用计算时间最短的计算设备对当前的计算任务进行计算。
可选地,在异构计算系统中确定计算时间最短的计算设备包括:
依据所述数据量、计算类型和所述代码复杂度,通过查表的方式确定所述异构计算系统中各个计算设备的计算时间;
依据各个计算设备的计算时间,确定计算时间最短的计算设备。
可选地,通过查表的方式确定所述异构计算系统中各个计算设备的计算时间包括:
依据多个计算类型、多个代码复杂度以及分别与多个代码复杂度对应的数据量,将当前计算任务划分为多个计算子任务,其中,每个计算子任务包含至少一个计算类型、代码复杂度以及对应的数据量;
通过查表的方式确定每个计算子任务在各计算设备的计算时间;
依据每个计算子任务在各计算设备的计算时间,确定当前计算任务在各计算设备的计算时间。
可选地,确定需要计算的数据量、计算类型和代码复杂度包括:
对当前的计算任务进行语法分析,确定当前计算任务的多个计算类型;
对每个计算类型对应的代码进行语法分析,确定每个计算类型对应的多个代码复杂度;
对每个代码复杂度对应的代码进行语法分析,确定每个代码复杂度对应的数据量。
可选地,所述方法还包括:
在各计算设备上执行基准测试程序,以得到多个代码复杂度、多个预定数据量以及多个计算类型在各计算设备上的计算时间;
以多个代码复杂度、多个预定数据量以及多个计算类型为坐标轴,在三维空间内确定以计算时间为内容的计算时间表格。
可选地,在依据当前的计算任务,确定需要计算的数据量、计算类型和代码复杂度之前还包括:
依据代码复杂度,将程序划分为多个代码模块,将代码复杂度符合预定条件的代码模块作为计算任务。
可选地,采用计算时间最短的计算设备对当前的计算任务进行计算包括:
依据所述计算任务与计算时间最短的计算设备的对应关系,将多个所述计算任务分配至多个计算设备进行并行计算。
可选地,所述代码复杂度包括常数阶代码复杂度、线性阶代码复杂度、对数阶代码复杂度、平方阶代码复杂度、线性对数阶代码复杂度或指数阶代码复杂度。
可选地,所述计算设备包括中央处理器、图形处理器、现场可编程逻辑门阵列或数字信号处理器。
第二方面,本发明提供一种异构计算系统执行计算任务的装置,包括:
语法分析模块,用于依据当前的计算任务,确定需要计算的数据量、计算类型和代码复杂度;
时间查询模块,用于依据所述数据量、计算类型和所述代码复杂度,在异构计算系统中确定计算时间最短的计算设备;
任务分配模块,用于采用计算时间最短的计算设备对当前的计算任务进行计算。
本发明提供的技术方案中,对并行计算任务进行静态分析,得到计算任务使用到哪些计算类型以及对应的复杂度和数据量。将同一计算类型划分为复杂度与数据量的组合,并基于这个组合,得到各个设备的算术逻辑运算的时间运行值;通过查表,得到计算任务在各设备上的运行时间的预估,从而选择运行时间最短的设备执行计算任务。依据前述的过程,能够使计算任务执行在计算时间最短的设备上,从而,能够充分发挥异构计算系统的优势。
附图说明
图1为本发明一实施例异构计算系统执行计算任务的方法的流程图;
图2为本发明另一实施例异构计算系统执行计算任务的方法的确定计算时间最短的设备的流程图;
图3为本发明另一实施例异构计算系统执行计算任务的方法的确定计算类型、代码复杂度以及数据量的流程图;
图4为本发明另一实施例异构计算系统执行计算任务的方法确定当前计算任务在各个计算设备计算时间的流程图;
图5为本发明另一实施例异构计算系统执行计算任务的方法确定计算时间表格的流程图;
图6为本发明一实施例异构计算系统执行计算任务的方法的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种异构计算系统执行计算任务的方法,如图1所示,包括:
步骤100,依据当前的计算任务,确定需要计算的数据量、计算类型和代码复杂度;
在一些实施例中,计算任务是指完成既定的计算目标的计算过程,计算类型是指在计算过程中涉及到的算术逻辑,计算数据量是指在计算过程中的数据多少,代码复杂度是指代码执行次数与数据量的关系。例如,以for循环函数作为一个计算任务为例:
在上述的for循环函数中,其计算式采用A[i]=B[i]*C[i],即其计算类型乘法运算,其结束条件为i<n,即其计算数据量为n,每次循环叠加的条件为i++,即i以单步为1的数量步进,从而,执行整个循环函数需要执行n次,即该循环函数的代码复杂度为线性阶代码复杂度。
步骤200,依据所述数据量、计算类型和所述代码复杂度,在异构计算系统中确定计算时间最短的计算设备;
在一些实施例中,预先确定了每个设备以不同的数据量、不同的计算类型以及不同的代码复杂度为坐标轴的三维数据表,数据量、计算类型以及代码复杂度为三个坐标轴,计算时间为数据内容。例如,在计算类型的坐标轴上选取了浮点数乘法运算的一个点得到的二维数据表,该二维数据表中,其横坐标轴为数据量,纵坐标轴为代码复杂度。
仍以前一步骤中的for循环函数为例,由于其计算类型为浮点数乘法运算,符合上述表格的要求,当N为5000时,经过查表可得到其计算时间为T32。对多个设备的数据表进行查表,即可得到多个设备上的计算时间。
步骤300,采用计算时间最短的计算设备对当前的计算任务进行计算。
在一些实施例中,将在前一步骤中得到的多个设备上的计算时间进行比较,即可确定该计算任务在哪一个设备上进行计算的时间最短。
本实施例提供的技术方案中,对并行计算任务进行静态分析,得到计算任务使用到哪些计算类型以及对应的复杂度和数据量。将同一计算类型划分为复杂度与数据量的组合,并基于这个组合,得到各个设备的算术逻辑运算的时间运行值;通过查表,得到计算任务在各设备上的运行时间的预估,从而选择运行时间最短的设备执行计算任务。依据前述的过程,能够使计算任务执行在计算时间最短的设备上,从而,能够充分发挥异构计算系统的优势。
在上述图1所示的实施例基础上,如图2所示,步骤200包括:
步骤210,依据所述数据量、计算类型和所述代码复杂度,通过查表的方式确定所述异构计算系统中各个计算设备的计算时间;
在一些实施例中,进行静态分析,可以得到当前计算任务的数据量、计算类型以及代码复杂度,依据数据量、计算类型以及代码复杂度对各个设备的三维数据表格进行查询,即得到当前任务在各个计算设备中的计算时间。
步骤220,依据各个计算设备的计算时间,确定计算时间最短的计算设备。
在一些实施例中,在确定当前任务在各个计算设备中的计算时间之后,对各个计算设备的计算时间进行比较即可确定计算时间最短的计算设备。
在本实施中,通过静态分析,得到数据量、计算类型以及代码复杂度等参数,再通过预先确定的三维数据表格进行查表即可得到结果,其处理过程简单,执行效率较高,无需额外的计算开销。
在上述图2所示的实施例的基础上,如图3所示,步骤210包括:
步骤211,依据多个计算类型、多个代码复杂度以及分别与多个代码复杂度对应的数据量,将当前计算任务划分为多个计算子任务,其中,每个计算子任务包含至少一个计算类型、代码复杂度以及对应的数据量;
在一些实施例中,将计算任务划分为子任务,每个子任务包含的计算类型、代码复杂度以及数据量将大幅度减少,从而,能够更加明确的在三维数据表中进行计算时间的查询。
步骤212,通过查表的方式确定每个计算子任务在各计算设备的计算时间;
在一些实施例中,由于前一步骤中将计算任务划分为了在三维数据表中更加清晰且容易查询的子任务,从而,能够快速的在三维数据表中查询到每个子任务在各个设备的计算时间。
步骤213,依据每个计算子任务在各计算设备的计算时间,确定当前计算任务在各计算设备的计算时间。
在一些实施例中,在得到每个子任务在各计算设备的计算时间之后,将每个子任务的时间进行累加,即可确定当前的计算任务在各设备的总的计算时间,从而,通过比较即可得到总的计算时间最短的计算设备。通常情况下,会采用总的计算时间最短的设备进行整个计算任务的计算,而不会采用每个子任务分散在对应的计算时间最短的设备上进行计算。这是由于将子任务分散在多个设备上进行计算时,各个设备之间的数据交互会形成额外的开销,导致整个任务的计算时间反而会延长。
本实施例中,采用将计算任务划分为多个子任务的方式进行查表并得到计算时间,其查表的过程更加清晰和明确,效率更高。
在上述图1所示的实施例基础上,如图4所示,步骤100包括:
步骤110,对当前的计算任务进行语法分析,确定当前计算任务的多个计算类型;
在一些实施例中,同一个计算任务中可能包含多种计算类型,并且,由于计算类型对于计算设备的计算时间影响最大,因此,可以首先对多个计算类型进行确定和分组。
步骤120,对每个计算类型对应的代码进行语法分析,确定每个计算类型对应的多个代码复杂度;
在一些实施例中,对应于同一个计算类型对应的代码中,可能包含有多个代码片段,每个代码片段的代码复杂度可能不同,因此,在本步骤中,将不同的代码复杂度进行分类。
步骤130,对每个代码复杂度对应的代码进行语法分析,确定每个代码复杂度对应的数据量。
在一些实施例中,对应与同一个代码复杂度的代码中,可能包含有多个代码片段,每个代码片段的数据量可能不同,因此,在本步骤中,将不同的数据量进行分类。
在本实施例中,通过对计算任务的代码进行逐步的语法分析,将整个计算任务能够划分为多个计算子任务,每个计算子任务对应至少一个计算类型、一个代码复杂度和一个数据量。这种划分方式有利于对计算时间进行明确的分类和计算。
在上述的图1所示的实施例基础上,如图5所示,在步骤100之前还包括:
步骤010,在各计算设备上执行基准测试程序,以得到多个代码复杂度、多个预定数据量以及多个计算类型在各计算设备上的计算时间;
在一些实施例中,基准测试程序是用来测试计算设备执行不同的计算类型、代码复杂度以及数据量的计算时间的程序,通过基准程序的执行,即可得到多个代码复杂度、多个预定数据量以及多个计算类型在各计算设备上的计算时间。预定的数据量通常是依据计算时间认为设定的,例如,当数据量增加到某个数值时,计算时间出现了较大幅度的增加,此时,将当前的数据量作为一个预定的数据量。
步骤020,以多个代码复杂度、多个预定数据量以及多个计算类型为坐标轴,在三维空间内确定以计算时间为内容的计算时间表格。
在一些实施例中,采用代码复杂度、预定数据量以及计算类型作为坐标轴,构建一个三维的数据表格,将步骤010得到的时间填入表格,即形成了步骤200的三维数据表格。
本实施例中,通过制定三维数据表格,为后续的查表过程提供了基础。本实施例的两个步骤可以预先执行形成固定的表格,也可以在每次程序初始化时执行,形成动态的表格,从而,在计算设备由于环境变化导致的性能变化时,能够选定在当前环境下计算时间最短的计算设备。
在上述图1所示的实施例基础上,步骤100之前还包括:
依据代码复杂度,将程序划分为多个代码模块,将代码复杂度符合预定条件的代码模块作为计算任务。在一些实施例中,由于程序并不仅仅具有计算任务,还包括一些控制指令,因此,在计算过程中,会首先依据代码复杂度将程序划分为多个代码模块,将划分出的符合预定条件的代码模块作为计算任务,其他的控制指令则不作为计算任务进行处理。预定条件是指代码复杂度符合指定的代码复杂度,例如,指定常数阶代码复杂度、线性阶代码复杂度、对数阶代码复杂度、平方阶代码复杂度、线性对数阶代码复杂度或指数阶代码复杂度的代码模块作为计算任务。
在上述图1所示的实施例基础上,步骤300包括:
依据所述计算任务与计算时间最短的计算设备的对应关系,将多个所述计算任务分配至多个计算设备进行并行计算。在一些实施例中,由于在异构计算系统中,通常具有多个不同的计算设备,因此,可以在计算过程中,将无数据关联的计算任务同时分配到不同的计算设备上同时进行计算。在分配过程中,将每个计算任务分配至计算该任务的计算时间最短的设备上。
在上述的各实施例中,作为优选的实施方式,所述代码复杂度包括常数阶代码复杂度、线性阶代码复杂度、对数阶代码复杂度、平方阶代码复杂度、线性对数阶代码复杂度或指数阶代码复杂度。
在上述的各实施例中,作为优选的实施方式,所述计算设备包括中央处理器、图形处理器、现场可编程逻辑门阵列或数字信号处理器。
本发明实施例还提供一种异构计算系统执行计算任务的装置,如图6所示,包括:
语法分析模块910,用于依据当前的计算任务,确定需要计算的数据量、计算类型和代码复杂度;
在一些实施例中,计算任务是指完成既定的计算目标的计算过程,计算类型是指在计算过程中涉及到的算术逻辑,计算数据量是指在计算过程中的数据多少,代码复杂度是指代码执行次数与数据量的关系。例如,以for循环函数作为一个计算任务为例:
在上述的for循环函数中,其计算式采用A[i]=B[i]*C[i],即其计算类型乘法运算,其结束条件为i<n,即其计算数据量为n,每次循环叠加的条件为i++,即i以单步为1的数量步进,从而,执行整个循环函数需要执行n次,即该循环函数的代码复杂度为线性阶代码复杂度。
时间查询模块920,用于依据所述数据量、计算类型和所述代码复杂度,在异构计算系统中确定计算时间最短的计算设备;
在一些实施例中,预先确定了每个设备以不同的数据量、不同的计算类型以及不同的代码复杂度为坐标轴的三维数据表,数据量、计算类型以及代码复杂度为三个坐标轴,计算时间为数据内容。例如,在计算类型的坐标轴上选取了浮点数乘法运算的一个点得到的二维数据表,该二维数据表中,其横坐标轴为数据量,纵坐标轴为代码复杂度。
仍以前一步骤中的for循环函数为例,由于其计算类型为浮点数乘法运算,符合上述表格的要求,当N为5000时,经过查表可得到其计算时间为T32。对多个设备的数据表进行查表,即可得到多个设备上的计算时间。
任务分配模块930,用于采用计算时间最短的计算设备对当前的计算任务进行计算。
在一些实施例中,将在前一步骤中得到的多个设备上的计算时间进行比较,即可确定该计算任务在哪一个设备上进行计算的时间最短。
本实施例提供的技术方案中,对并行计算任务进行静态分析,得到计算任务使用到哪些计算类型以及对应的复杂度和数据量。将同一计算类型划分为复杂度与数据量的组合,并基于这个组合,得到各个设备的算术逻辑运算的时间运行值;通过查表,得到计算任务在各设备上的运行时间的预估,从而选择运行时间最短的设备执行计算任务。依据前述的过程,能够使计算任务执行在计算时间最短的设备上,从而,能够充分发挥异构计算系统的优势。
在上述图6所示的实施例基础上,时间查询模块920包括:
查表子模块,用于依据所述数据量、计算类型和所述代码复杂度,通过查表的方式确定所述异构计算系统中各个计算设备的计算时间;
在一些实施例中,进行静态分析,可以得到当前计算任务的数据量、计算类型以及代码复杂度,依据数据量、计算类型以及代码复杂度对各个设备的三维数据表格进行查询,即得到当前任务在各个计算设备中的计算时间。
设备确定子模块,依据各个计算设备的计算时间,确定计算时间最短的计算设备。
在一些实施例中,在确定当前任务在各个计算设备中的计算时间之后,对各个计算设备的计算时间进行比较即可确定计算时间最短的计算设备。
在本实施中,通过静态分析,得到数据量、计算类型以及代码复杂度等参数,再通过预先确定的三维数据表格进行查表即可得到结果,其处理过程简单,执行效率较高,无需额外的计算开销。
在上述所示的实施例的基础上,查表子模块包括:
任务划分单元,依据多个计算类型、多个代码复杂度以及分别与多个代码复杂度对应的数据量,将当前计算任务划分为多个计算子任务,其中,每个计算子任务包含至少一个计算类型、代码复杂度以及对应的数据量;
在一些实施例中,将计算任务划分为子任务,每个子任务包含的计算类型、代码复杂度以及数据量将大幅度减少,从而,能够更加明确的在三维数据表中进行计算时间的查询。
查表单元,通过查表的方式确定每个计算子任务在各计算设备的计算时间;
在一些实施例中,由于前一步骤中将计算任务划分为了在三维数据表中更加清晰且容易查询的子任务,从而,能够快速的在三维数据表中查询到每个子任务在各个设备的计算时间。
时间确定单元,依据每个计算子任务在各计算设备的计算时间,确定当前计算任务在各计算设备的计算时间。
在一些实施例中,在得到每个子任务在各计算设备的计算时间之后,将每个子任务的时间进行累加,即可确定当前的计算任务在各设备的总的计算时间,从而,通过比较即可得到总的计算时间最短的计算设备。通常情况下,会采用总的计算时间最短的设备进行整个计算任务的计算,而不会采用每个子任务分散在对应的计算时间最短的设备上进行计算。这是由于将子任务分散在多个设备上进行计算时,各个设备之间的数据交互会形成额外的开销,导致整个任务的计算时间反而会延长。
本实施例中,采用将计算任务划分为多个子任务的方式进行查表并得到计算时间,其查表的过程更加清晰和明确,效率更高。
在上述图6所示的实施例基础上,语法分析模块910包括:
计算类型子模块,对当前的计算任务进行语法分析,确定当前计算任务的多个计算类型;
在一些实施例中,同一个计算任务中可能包含多种计算类型,并且,由于计算类型对于计算设备的计算时间影响最大,因此,可以首先对多个计算类型进行确定和分组。
复杂度子模块,对每个计算类型对应的代码进行语法分析,确定每个计算类型对应的多个代码复杂度;
在一些实施例中,对应于同一个计算类型对应的代码中,可能包含有多个代码片段,每个代码片段的代码复杂度可能不同,因此,在本步骤中,将不同的代码复杂度进行分类。
数据量子模块,对每个代码复杂度对应的代码进行语法分析,确定每个代码复杂度对应的数据量。
在一些实施例中,对应与同一个代码复杂度的代码中,可能包含有多个代码片段,每个代码片段的数据量可能不同,因此,在本步骤中,将不同的数据量进行分类。
在本实施例中,通过对计算任务的代码进行逐步的语法分析,将整个计算任务能够划分为多个计算子任务,每个计算子任务对应至少一个计算类型、一个代码复杂度和一个数据量。这种划分方式有利于对计算时间进行明确的分类和计算。
在上述的图6所示的实施例基础上,所述装置还包括:
基准程序执行模块,用于在各计算设备上执行基准测试程序,以得到多个代码复杂度、多个预定数据量以及多个计算类型在各计算设备上的计算时间;
在一些实施例中,基准测试程序是用来测试计算设备执行不同的计算类型、代码复杂度以及数据量的计算时间的程序,通过基准程序的执行,即可得到多个代码复杂度、多个预定数据量以及多个计算类型在各计算设备上的计算时间。预定的数据量通常是依据计算时间认为设定的,例如,当数据量增加到某个数值时,计算时间出现了较大幅度的增加,此时,将当前的数据量作为一个预定的数据量。
表格构建模块,用于以多个代码复杂度、多个预定数据量以及多个计算类型为坐标轴,在三维空间内确定以计算时间为内容的计算时间表格。
在一些实施例中,采用代码复杂度、预定数据量以及计算类型作为坐标轴,构建一个三维的数据表格,将基准程序执行模块得到的时间填入表格,即形成了时间查询模块的三维数据表格。
本实施例中,通过制定三维数据表格,为后续的查表过程提供了基础。本实施例的两个步骤可以预先执行形成固定的表格,也可以在每次程序初始化时执行,形成动态的表格,从而,在计算设备由于环境变化导致的性能变化时,能够选定在当前环境下计算时间最短的计算设备。
在上述图6所示的实施例基础上,所述装置还包括:
程序划分模块,用于依据代码复杂度,将程序划分为多个代码模块,将代码复杂度符合预定条件的代码模块作为计算任务。在一些实施例中,由于程序并不仅仅具有计算任务,还包括一些控制指令,因此,在计算过程中,会首先依据代码复杂度将程序划分为多个代码模块,将划分出的符合预定条件的代码模块作为计算任务,其他的控制指令则不作为计算任务进行处理。预定条件是指代码复杂度符合指定的代码复杂度,例如,指定常数阶代码复杂度、线性阶代码复杂度、对数阶代码复杂度、平方阶代码复杂度、线性对数阶代码复杂度或指数阶代码复杂度的代码模块作为计算任务。
在上述图6所示的实施例基础上,任务分配模块包括:
并行分配子模块,用于依据所述计算任务与计算时间最短的计算设备的对应关系,将多个所述计算任务分配至多个计算设备进行并行计算。在一些实施例中,由于在异构计算系统中,通常具有多个不同的计算设备,因此,可以在计算过程中,将无数据关联的计算任务同时分配到不同的计算设备上同时进行计算。在分配过程中,将每个计算任务分配至计算该任务的计算时间最短的设备上。
在上述的各实施例中,作为优选的实施方式,所述代码复杂度包括常数阶代码复杂度、线性阶代码复杂度、对数阶代码复杂度、平方阶代码复杂度、线性对数阶代码复杂度或指数阶代码复杂度。
在上述的各实施例中,作为优选的实施方式,所述计算设备包括中央处理器、图形处理器、现场可编程逻辑门阵列或数字信号处理器。
本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种异构计算系统执行计算任务的方法,其特征在于,包括:
依据当前的计算任务,确定需要计算的数据量、计算类型和代码复杂度;
依据所述数据量、计算类型和所述代码复杂度,在异构计算系统中确定计算时间最短的计算设备;
采用计算时间最短的计算设备对当前的计算任务进行计算。
2.根据权利要求1所述异构计算系统执行计算任务的方法,其特征在于,在异构计算系统中确定计算时间最短的计算设备包括:
依据所述数据量、计算类型和所述代码复杂度,通过查表的方式确定所述异构计算系统中各个计算设备的计算时间;
依据各个计算设备的计算时间,确定计算时间最短的计算设备。
3.根据权利要求2所述异构计算系统执行计算任务的方法,其特征在于,通过查表的方式确定所述异构计算系统中各个计算设备的计算时间包括:
依据多个计算类型、多个代码复杂度以及分别与多个代码复杂度对应的数据量,将当前计算任务划分为多个计算子任务,其中,每个计算子任务包含至少一个计算类型、代码复杂度以及对应的数据量;
通过查表的方式确定每个计算子任务在各计算设备的计算时间;
依据每个计算子任务在各计算设备的计算时间,确定当前计算任务在各计算设备的计算时间。
4.根据权利要求1所述异构计算系统执行计算任务的方法,其特征在于,确定需要计算的数据量、计算类型和代码复杂度包括:
对当前的计算任务进行语法分析,确定当前计算任务的多个计算类型;
对每个计算类型对应的代码进行语法分析,确定每个计算类型对应的多个代码复杂度;
对每个代码复杂度对应的代码进行语法分析,确定每个代码复杂度对应的数据量。
5.根据权利要求1所述异构计算系统执行计算任务的方法,其特征在于,所述方法还包括:
在各计算设备上执行基准测试程序,以得到多个代码复杂度、多个预定数据量以及多个计算类型在各计算设备上的计算时间;
以多个代码复杂度、多个预定数据量以及多个计算类型为坐标轴,在三维空间内确定以计算时间为内容的计算时间表格。
6.根据权利要求1所述异构计算系统执行计算任务的方法,其特征在于,在依据当前的计算任务,确定需要计算的数据量、计算类型和代码复杂度之前还包括:
依据代码复杂度,将程序划分为多个代码模块,将代码复杂度符合预定条件的代码模块作为计算任务。
7.根据权利要求1所述异构计算系统执行计算任务的方法,其特征在于,采用计算时间最短的计算设备对当前的计算任务进行计算包括:
依据所述计算任务与计算时间最短的计算设备的对应关系,将多个所述计算任务分配至多个计算设备进行并行计算。
8.根据权利要求1所述异构计算系统执行计算任务的方法,其特征在于,所述代码复杂度包括常数阶代码复杂度、线性阶代码复杂度、对数阶代码复杂度、平方阶代码复杂度、线性对数阶代码复杂度或指数阶代码复杂度。
9.根据权利要求1所述异构计算系统执行计算任务的方法,其特征在于,所述计算设备包括中央处理器、图形处理器、现场可编程逻辑门阵列或数字信号处理器。
10.一种异构计算系统执行计算任务的装置,其特征在于,包括:
语法分析模块,用于依据当前的计算任务,确定需要计算的数据量、计算类型和代码复杂度;
时间查询模块,用于依据所述数据量、计算类型和所述代码复杂度,在异构计算系统中确定计算时间最短的计算设备;
任务分配模块,用于采用计算时间最短的计算设备对当前的计算任务进行计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011352914.6A CN112463377B (zh) | 2020-11-26 | 2020-11-26 | 异构计算系统执行计算任务的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011352914.6A CN112463377B (zh) | 2020-11-26 | 2020-11-26 | 异构计算系统执行计算任务的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112463377A true CN112463377A (zh) | 2021-03-09 |
CN112463377B CN112463377B (zh) | 2023-03-14 |
Family
ID=74808907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011352914.6A Active CN112463377B (zh) | 2020-11-26 | 2020-11-26 | 异构计算系统执行计算任务的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463377B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140115596A1 (en) * | 2010-08-25 | 2014-04-24 | Et International, Inc. | Codeletset representation, manipulatoin, and execution - method, system and apparatus |
CN107004253A (zh) * | 2015-01-16 | 2017-08-01 | 英特尔公司 | 用于增强的图像处理并行性的具有等价类的基于图形的应用程序编程接口架构 |
CN107391124A (zh) * | 2017-06-30 | 2017-11-24 | 东南大学 | 一种基于黄金分割搜索及软件执行轨迹的条件切片方法 |
CN110490310A (zh) * | 2018-05-14 | 2019-11-22 | 北京深鉴智能科技有限公司 | 神经网络数据压缩及其相关计算方法和装置 |
CN110515823A (zh) * | 2018-05-21 | 2019-11-29 | 百度在线网络技术(北京)有限公司 | 程序代码复杂度评估方法和装置 |
US20200026580A1 (en) * | 2017-05-04 | 2020-01-23 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a scheduler and workload manager with snapshot and resume functionality |
US10592544B1 (en) * | 2019-02-12 | 2020-03-17 | Live Objects, Inc. | Generation of process models in domains with unstructured data |
CN111488205A (zh) * | 2019-01-25 | 2020-08-04 | 上海登临科技有限公司 | 面向异构硬件架构的调度方法和调度系统 |
CN111930471A (zh) * | 2020-08-14 | 2020-11-13 | 中国科学院上海高等研究院 | 一种基于gpu的并行仿真评估选择方法 |
-
2020
- 2020-11-26 CN CN202011352914.6A patent/CN112463377B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140115596A1 (en) * | 2010-08-25 | 2014-04-24 | Et International, Inc. | Codeletset representation, manipulatoin, and execution - method, system and apparatus |
CN107004253A (zh) * | 2015-01-16 | 2017-08-01 | 英特尔公司 | 用于增强的图像处理并行性的具有等价类的基于图形的应用程序编程接口架构 |
US20200026580A1 (en) * | 2017-05-04 | 2020-01-23 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a scheduler and workload manager with snapshot and resume functionality |
CN107391124A (zh) * | 2017-06-30 | 2017-11-24 | 东南大学 | 一种基于黄金分割搜索及软件执行轨迹的条件切片方法 |
CN110490310A (zh) * | 2018-05-14 | 2019-11-22 | 北京深鉴智能科技有限公司 | 神经网络数据压缩及其相关计算方法和装置 |
CN110515823A (zh) * | 2018-05-21 | 2019-11-29 | 百度在线网络技术(北京)有限公司 | 程序代码复杂度评估方法和装置 |
CN111488205A (zh) * | 2019-01-25 | 2020-08-04 | 上海登临科技有限公司 | 面向异构硬件架构的调度方法和调度系统 |
US10592544B1 (en) * | 2019-02-12 | 2020-03-17 | Live Objects, Inc. | Generation of process models in domains with unstructured data |
CN111930471A (zh) * | 2020-08-14 | 2020-11-13 | 中国科学院上海高等研究院 | 一种基于gpu的并行仿真评估选择方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112463377B (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6898496B2 (ja) | 計算グラフの処理 | |
US20180032375A1 (en) | Data Processing Method and Apparatus | |
KR20190049593A (ko) | 콘볼루션 신경망에서의 연산들을 수행하는 방법 및 장치 | |
US20170255496A1 (en) | Method for scheduling data flow task and apparatus | |
CN111488205B (zh) | 面向异构硬件架构的调度方法和调度系统 | |
WO2020108371A1 (en) | Partitioning of deep learning inference with dynamic offloading | |
CN107122490B (zh) | 一种分组查询中聚合函数的数据处理方法及系统 | |
CN108205469B (zh) | 一种基于MapReduce的资源分配方法及服务器 | |
CN113038302B (zh) | 流量预测方法及装置、计算机可存储介质 | |
CN107908536B (zh) | Cpu-gpu异构环境中对gpu应用的性能评估方法及系统 | |
CN107343164B (zh) | 视频监控任务的分配方法及装置 | |
CN110413539B (zh) | 一种数据处理方法及装置 | |
US11429525B2 (en) | Reducing cache interference based on forecasted processor use | |
CN117311998B (zh) | 一种大模型部署方法及系统 | |
CN112463377B (zh) | 异构计算系统执行计算任务的方法及装置 | |
CN111694648B (zh) | 一种任务调度方法、装置以及电子设备 | |
CN113452546A (zh) | 深度学习训练通信的动态服务质量管理 | |
CN111984392A (zh) | 任务调度方法、装置、电子设备及存储介质 | |
CN115456188B (zh) | 量子计算任务优化处理方法、装置及量子计算机 | |
CN114880108B (zh) | 基于cpu-gpu异构架构的性能分析方法、设备以及存储介质 | |
CN110415162B (zh) | 大数据中面向异构融合处理器的自适应图划分方法 | |
CN115061825A (zh) | 隐私计算、隐私数据和联邦学习的异构计算系统及方法 | |
CN114546652A (zh) | 一种参数预估方法、装置及电子设备 | |
KR102022972B1 (ko) | 이종 멀티 프로세싱 시스템 환경 기반 런타임 관리장치 및 방법 | |
US20160042033A1 (en) | Query execution apparatus and method, and system for processing data employing the same |
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 |