CN107329818A - 一种任务调度处理方法及装置 - Google Patents
一种任务调度处理方法及装置 Download PDFInfo
- Publication number
- CN107329818A CN107329818A CN201710532362.9A CN201710532362A CN107329818A CN 107329818 A CN107329818 A CN 107329818A CN 201710532362 A CN201710532362 A CN 201710532362A CN 107329818 A CN107329818 A CN 107329818A
- Authority
- CN
- China
- Prior art keywords
- task
- subtask
- execution function
- scheduling
- shared drive
- 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
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明提供一种任务调度处理方法及装置,上述方法包括以下步骤:在全局内存中建立映射表;其中,所述映射表包括任务名称、任务对应的调度单元、任务对应的执行函数;所述调度单元调用所述执行函数,对所述任务进行处理。通过在GPU上对多个任务进行科学管理调度,大大提高了任务执行效率。
Description
技术领域
本发明属于调度控制领域,尤其涉及一种任务调度处理方法及装置。
背景技术
CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题,它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎;由于GPU具有远远高于CPU的浮点运算能力和内存带宽,同时由于其高度的并行性,非常适合于大规模数据处理。
但是,目前在CPU上进行任务处理,且写入到全局内存global memory的数据数量很大(8192bit),大大影响了任务处理效率。
因此,迫切需要提供一种利用GPU性能,实现高效的任务调度处理方案来解决上述技术问题。
发明内容
本发明提供一种任务调度处理方法及装置,以解决上述问题。
本发明提供一种任务调度处理方法,包括以下步骤:在全局内存中建立映射表;其中,所述映射表包括任务名称、任务对应的调度单元、任务对应的执行函数;所述调度单元调用所述执行函数,对所述任务进行处理。
本发明提供一种任务调度处理装置,包括处理器,适于实现各指令;存储设备,适于存储多条指令,所述指令适于由所述处理器加载并执行;
在全局内存中建立映射表;其中,所述映射表包括任务名称、任务对应的调度单元、任务对应的执行函数;
所述调度单元调用所述执行函数,对所述任务进行处理。
本发明实施例提供的技术方案:在全局内存中建立映射表;其中,所述映射表包括任务名称、任务对应的调度单元、任务对应的执行函数;所述调度单元调用所述执行函数,对所述任务进行处理。通过在GPU上对多个任务进行科学管理调度,大大提高了任务执行效率。
本发明实施例提供的技术方案:将任务处理结果存储至共享内存;其中,所述全局内存、所述共享内存均位于图形处理器GPU。通过使用在GPU上的共享内存进行数据的操作,大大提高的处理速度,提高了任务执行效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1所示为本发明实施例1的任务调度处理方法流程图;
图2所示为本发明实施例2的任务调度处理装置结构图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图1所示为本发明实施例1的任务调度处理方法流程图,包括以下步骤:
步骤101:在全局内存中建立映射表;其中,所述映射表包括任务名称、任务对应的调度单元、任务对应的执行函数;
步骤102:所述调度单元调用所述执行函数,对所述任务进行处理。
进一步地,将任务处理结果存储至共享内存;其中,所述全局内存、所述共享内存均位于图形处理器GPU。
进一步地,若所述任务被划分为多个子任务,则所述映射表还包括:子任务名称、子任务对应的调度子单元、子任务对应的执行函数;
所述调度子单元调用所述子任务对应的执行函数,对所述子任务进行处理。
其中,建立共享内存数组并将共享内存数组地址传给所述执行函数;
所述调度子单元调用所述子任务对应的执行函数,并将子任务处理结果传输至所述共享内存数组中选择的同一地址的共享内存。
进一步地,所述调度子单元调用所述子任务对应的执行函数,通过运行多个线程,对所述子任务进行处理。
其中,所述多个线程对应同一地址的共享内存。
下面进行详细说明:
本发明实施例充分利用众核并行计算形式对矩阵向量乘法进行加速,在全局内存GlobalMemory中建立映射表,并确定执行函数即Kernel函数,对于共享内存SharedMemory,采用静态分配的方式对多任务进行分配。
进一步地,在全局内存中建立映射表;其中,所述映射表包括任务名称、任务对应的调度单元、任务对应的执行函数。
若所述任务被划分为多个子任务,则所述映射表还包括:子任务名称、子任务对应的调度子单元、子任务对应的执行函数。
本发明实施例的实施,关键环节之一为:a)确定某个调度子单元Block执行哪个任务的哪个分块;b)任务在映射表中的排布要求满足约束条件的拓扑顺序,c)对于Block的维数不一致情况,按照较大维度选取,让其他较小的Block添加空线程补足,保证Block维数和维度的合理性。
另外,预先在Kernel开始的时候,申请一个足够大的Shared Memory数组,其大小至少应该等于每个任务所需要的Shared Memory用量的最大值;每个任务单独写成一个函数,将Shared Memory数组地址传给这个函数,函数中需要使用Shared Memory的时候,直接在这个数组中静态分配使用。
在CUDA架构下,显示芯片执行时的最小单位是线程thread;数个thread可以组成一个调度子单元block。一个block中的thread能存取同一块共享内存Shared Memory,而且可以快速进行同步的动作。
每一个block所能包含的thread数目是有限的。执行相同程序的block,可以组成grid。不同block中的thread无法存取同一个共享内存,因此无法直接互通或进行同步。因此,不同block中的thread能合作的程度是比较低的。不过,利用这个模式,可以让程序不用担心显示芯片实际上能同时执行的thread数目限制。
每个thread都有自己的一份register和local memory的空间。同一个block中的每个thread则有共享的一份share memory。此外,所有的thread(包括不同block的thread)都共享一份全局内存global memory、常量内存constant memory、和纹理内存texturememory。不同的grid则有各自的global memory、constant memory和texture memory。
最适合利用CUDA处理的问题,是可以大量并行化的问题,才能有效隐藏内存的延迟latency,并有效利用显示芯片上的大量执行单元。使用CUDA时,同时有数千个thread在执行是很正常的。因此,解决CUDA大量并行化的问题,可以使CUDA达到最好的效率。
利用_shared_声明的变量表示这是shared memory,是一个block中每个thread都共享的内存。它会使用在GPU上的内存,所以存取的速度相当快,不需要担心latency的问题。_syncthreads()是一个CUDA的内部函数,表示block中所有的thread都要同步到这个点,才能继续执行。在本发明实施例中,由于之后要把所有thread计算的结果进行加总,所以需要确定每个thread都已经把结果写到shared[]里面。
对于矩阵规模为10000的运算,修改后的CUDA程序在Tesla M40上执行需要的时间为0.316032ms,速度大于完全不在GPU上进行加总的版本,由于在CPU上进行加总的版本,写入到global memory的数据数量很大(8192bit),也对效率会有影响,因此,速度上明显优于CPU上的计算。
同时,对于采用cuBLAS库加速的矩阵向量乘运算结果,当矩阵规模为10000时,CUDA+cuBLSA(cublasSgemv)所需时间为1.651712ms,运行时间小于常规Shared Memory模式,大于改进后的CUDA Shared Memory,显示出了这个加速方法在计算速度上的优越性。
图2所示为本发明实施例2的任务调度处理装置结构图,包括处理器,适于实现各指令;存储设备,适于存储多条指令,所述指令适于由所述处理器加载并执行;
在全局内存中建立映射表;其中,所述映射表包括任务名称、任务对应的调度单元、任务对应的执行函数;
所述调度单元调用所述执行函数,对所述任务进行处理。
进一步地,将任务处理结果存储至共享内存。
进一步地,若所述任务被划分为多个子任务,则所述映射表还包括:子任务名称、子任务对应的调度子单元、子任务对应的执行函数;
所述调度子单元调用所述子任务对应的执行函数,对所述子任务进行处理。
进一步地,建立共享内存数组并将共享内存数组地址传给所述执行函数;
所述调度子单元调用所述子任务对应的执行函数,并将子任务处理结果传输至所述共享内存数组中选择的同一地址的共享内存。
本发明实施例提供的技术方案:在全局内存中建立映射表;其中,所述映射表包括任务名称、任务对应的调度单元、任务对应的执行函数;所述调度单元调用所述执行函数,对所述任务进行处理。通过在GPU上对多个任务进行科学管理调度,大大提高了任务执行效率。
本发明实施例提供的技术方案:将任务处理结果存储至共享内存;其中,所述全局内存、所述共享内存均位于图形处理器GPU。通过使用在GPU上的共享内存进行数据的操作,大大提高的处理速度,提高了任务执行效率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种任务调度处理方法,其特征在于,包括以下步骤:
在全局内存中建立映射表;其中,所述映射表包括任务名称、任务对应的调度单元、任务对应的执行函数;
所述调度单元调用所述执行函数,对所述任务进行处理。
2.根据权利要求1所述的方法,其特征在于,将任务处理结果存储至共享内存;其中,所述全局内存、所述共享内存均位于图形处理器GPU。
3.根据权利要求1所述的方法,其特征在于,若所述任务被划分为多个子任务,则所述映射表还包括:子任务名称、子任务对应的调度子单元、子任务对应的执行函数;
所述调度子单元调用所述子任务对应的执行函数,对所述子任务进行处理。
4.根据权利要求3所述的方法,其特征在于,建立共享内存数组并将共享内存数组地址传给所述执行函数;
所述调度子单元调用所述子任务对应的执行函数,并将子任务处理结果传输至所述共享内存数组中选择的同一地址的共享内存。
5.根据权利要求3所述的方法,其特征在于,所述调度子单元调用所述子任务对应的执行函数,通过运行多个线程,对所述子任务进行处理。
6.根据权利要求5所述的方法,其特征在于,所述多个线程对应同一地址的共享内存。
7.一种任务调度处理装置,其特征在于,包括处理器,适于实现各指令;存储设备,适于存储多条指令,所述指令适于由所述处理器加载并执行;
在全局内存中建立映射表;其中,所述映射表包括任务名称、任务对应的调度单元、任务对应的执行函数;
所述调度单元调用所述执行函数,对所述任务进行处理。
8.根据权利要求7所述的装置,其特征在于,将任务处理结果存储至共享内存。
9.根据权利要求7所述的装置,其特征在于,若所述任务被划分为多个子任务,则所述映射表还包括:子任务名称、子任务对应的调度子单元、子任务对应的执行函数;
所述调度子单元调用所述子任务对应的执行函数,对所述子任务进行处理。
10.根据权利要求9所述的装置,其特征在于,建立共享内存数组并将共享内存数组地址传给所述执行函数;
所述调度子单元调用所述子任务对应的执行函数,并将子任务处理结果传输至所述共享内存数组中选择的同一地址的共享内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710532362.9A CN107329818A (zh) | 2017-07-03 | 2017-07-03 | 一种任务调度处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710532362.9A CN107329818A (zh) | 2017-07-03 | 2017-07-03 | 一种任务调度处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107329818A true CN107329818A (zh) | 2017-11-07 |
Family
ID=60198859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710532362.9A Pending CN107329818A (zh) | 2017-07-03 | 2017-07-03 | 一种任务调度处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107329818A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108109104A (zh) * | 2017-12-06 | 2018-06-01 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向统一染色架构gpu的三级任务调度电路 |
WO2020056620A1 (en) * | 2018-09-19 | 2020-03-26 | Intel Corporation | Hybrid virtual gpu co-scheduling |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101556534A (zh) * | 2009-04-21 | 2009-10-14 | 浪潮电子信息产业股份有限公司 | 一种众核结构的大规模数据并行计算方法 |
CN102708009A (zh) * | 2012-04-19 | 2012-10-03 | 华为技术有限公司 | 一种基于cuda实现多任务共享gpu的方法 |
US8374242B1 (en) * | 2008-12-23 | 2013-02-12 | Elemental Technologies Inc. | Video encoder using GPU |
CN103414901A (zh) * | 2013-08-26 | 2013-11-27 | 江苏新瑞峰信息科技有限公司 | 一种快速jpeg2000图像压缩系统 |
CN103761215A (zh) * | 2014-01-15 | 2014-04-30 | 北京新松佳和电子系统股份有限公司 | 基于图形处理器的矩阵转置优化方法 |
CN106598688A (zh) * | 2016-12-09 | 2017-04-26 | 曙光信息产业(北京)有限公司 | 一种深度学习汇编优化中的寄存器冲突避免方法 |
-
2017
- 2017-07-03 CN CN201710532362.9A patent/CN107329818A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8374242B1 (en) * | 2008-12-23 | 2013-02-12 | Elemental Technologies Inc. | Video encoder using GPU |
CN101556534A (zh) * | 2009-04-21 | 2009-10-14 | 浪潮电子信息产业股份有限公司 | 一种众核结构的大规模数据并行计算方法 |
CN102708009A (zh) * | 2012-04-19 | 2012-10-03 | 华为技术有限公司 | 一种基于cuda实现多任务共享gpu的方法 |
CN103414901A (zh) * | 2013-08-26 | 2013-11-27 | 江苏新瑞峰信息科技有限公司 | 一种快速jpeg2000图像压缩系统 |
CN103761215A (zh) * | 2014-01-15 | 2014-04-30 | 北京新松佳和电子系统股份有限公司 | 基于图形处理器的矩阵转置优化方法 |
CN106598688A (zh) * | 2016-12-09 | 2017-04-26 | 曙光信息产业(北京)有限公司 | 一种深度学习汇编优化中的寄存器冲突避免方法 |
Non-Patent Citations (1)
Title |
---|
邵延飞: "基于GPU加速的三维扫描重建系统", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108109104A (zh) * | 2017-12-06 | 2018-06-01 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向统一染色架构gpu的三级任务调度电路 |
CN108109104B (zh) * | 2017-12-06 | 2021-02-09 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向统一染色架构gpu的三级任务调度电路 |
WO2020056620A1 (en) * | 2018-09-19 | 2020-03-26 | Intel Corporation | Hybrid virtual gpu co-scheduling |
US11900157B2 (en) | 2018-09-19 | 2024-02-13 | Intel Corporation | Hybrid virtual GPU co-scheduling |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105487838B (zh) | 一种动态可重构处理器的任务级并行调度方法与系统 | |
KR101759266B1 (ko) | 프로세서들에 걸쳐 데이터-병렬 쓰레드들을 지닌 프로세싱 로직을 매핑하는 방법 | |
US9146777B2 (en) | Parallel processing with solidarity cells by proactively retrieving from a task pool a matching task for the solidarity cell to process | |
CN1983196B (zh) | 用于将执行线程分组的系统和方法 | |
CN103218208B (zh) | 用于实施成形的存储器访问操作的系统和方法 | |
US20120256922A1 (en) | Multithreaded Processor and Method for Realizing Functions of Central Processing Unit and Graphics Processing Unit | |
CN103197916A (zh) | 用于源操作数收集器高速缓存的方法和装置 | |
CN103279445A (zh) | 运算任务的计算方法及超算系统 | |
US11163677B2 (en) | Dynamically allocated thread-local storage | |
CN103207774A (zh) | 用于解决线程发散的方法和系统 | |
Elteir et al. | Performance characterization and optimization of atomic operations on amd gpus | |
CN103176848A (zh) | 计算工作分布参考计数器 | |
CN104050032A (zh) | 用于有条件的屏障和急迫的屏障的硬件调度的系统和方法 | |
Navarro et al. | Strategies for maximizing utilization on multi-CPU and multi-GPU heterogeneous architectures | |
CN110308982A (zh) | 一种共享内存复用方法及装置 | |
US9286114B2 (en) | System and method for launching data parallel and task parallel application threads and graphics processing unit incorporating the same | |
He et al. | Design and implementation of a parallel priority queue on many-core architectures | |
CN111078394A (zh) | 一种gpu线程负载均衡方法与装置 | |
WO2016024508A1 (ja) | マルチプロセッサ装置 | |
CN107329818A (zh) | 一种任务调度处理方法及装置 | |
CN103294449B (zh) | 发散操作的预调度重演 | |
US20110247018A1 (en) | API For Launching Work On a Processor | |
CN114035847B (zh) | 用于并行执行核心程序的方法和装置 | |
CN115775199A (zh) | 数据处理方法和装置、电子设备和计算机可读存储介质 | |
Maier et al. | Locality aware dag-scheduling for lu-decomposition |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171107 |