CN109542596A - 一种基于OpenCL内核任务的调度框架 - Google Patents
一种基于OpenCL内核任务的调度框架 Download PDFInfo
- Publication number
- CN109542596A CN109542596A CN201811231275.0A CN201811231275A CN109542596A CN 109542596 A CN109542596 A CN 109542596A CN 201811231275 A CN201811231275 A CN 201811231275A CN 109542596 A CN109542596 A CN 109542596A
- Authority
- CN
- China
- Prior art keywords
- feature
- task
- gpu
- cpu
- algorithm
- 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
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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于OpenCL内核任务的调度框架。该框架包括经LLVM编译器对OpenCL内核任务进行特征提取与特征选择,得到内核代码的编译时静态特征与运行时特征;在特征提取过程中,使用Greedy Feature Selection算法选出最重要的几个特征,避免过拟合现象;然后将选择出来的特征使用机器学习中的静态分类器预测CPU与GPU的任务划分比例;最后使用调度算法对获得的任务划分比例与平台可利用设备信息,对任务进行实际的调度,本发明完成了上述功能的设计细节、实现算法和编码工作,实现了在异构系统中通过机器学习与调度算法结合,实现对计算资源的最大化利用的一种自动化调度,提高异构系统资源利用率。
Description
技术领域
本发明属于计算机应用领域,具体涉及一种在异构系统中使用机器学习方法实现任务划分的任务调度框架。
背景技术
在近十年以来,各大处理器厂商热切关注高性能计算领域,尝试研发最新最前沿的计算加速卡。英特尔、英伟达、AMD公司开发的GPU、FPGA等加速卡被广泛应用于各个领域。异构计算技术在上世纪80年代就已经产生,具有高性能、可扩展性好的特点。另外,在目前的加速卡市场火热、人工智能技术的发展下,异构计算已经成为了并行计算与分布式计算领域中的研究热点之一。
对于计算密集型的应用,由多CPU和多GPU组成的异构计算平台提供了更高的性能,现如今已经成为主流计算架构,在分子物理和生物医学领域都被广泛地应用。
目前市场广泛接受的并行编程语言中,相对于只可以应用于英伟达GPU加速卡的CUDA语言,OpenCL则可以应用于不同类型、不同品牌的设备之间,具有良好的可移植性和跨平台特征,得到了主流处理器厂家如AMD、Intel等的大力支持,OpenCL提供了丰富的API以方便程序员在异构系统中编写数据并行的程序,OpenCL正在成为异构处理器的性能调优利器。但想要更充分利用目标设备中PE(Processing Elements)的计算资源和编写更有效的代码,要求程序员必须熟悉目标设备的底层架构,这加重了程序员的负担和经验要求。
所以,为了能充分利用异构系统的资源,减轻异构编程人员的编程负担与经验要求,实现一个基于OpenCL编程语言使设备之间自动完成划分调度的任务调度框架具有十分重要的现实意义。
通过研究发现,要实现对于任务的自动划分与调度,减少异构编程人员的工作量,需要将任务调度与机器学习的方法相结合。
综合以上分析,我们可以设计出该任务调度框架的特征提取方法,基于机器学习的预测划分方法与任务调度方法。其中,特征提取方法包括特征的提取与避免训练结果过拟合的特征选择。
发明内容
本发明的目的在于提供一种基于OpenCL内核任务的调度框架。该框架包括经LLVM编译器对OpenCL内核任务进行特征提取与特征选择,得到内核代码的编译时静态特征与运行时特征;在特征提取过程中,使用Greedy Feature Selection算法选出最重要的几个特征,避免过拟合现象;然后将选择出来的特征使用机器学习中的静态分类器预测CPU与GPU的任务划分比例;最后使用调度算法对获得的任务划分比例与平台可利用设备信息,对任务进行实际的调度,如说明书附图1所示。本发明完成了上述功能的设计细节、实现算法以及编码工作。本发明实现了在异构系统中通过机器学习与调度算法结合,实现对计算资源的最大化利用的一种自动化调度,提高异构系统资源利用率,并且该调度框架具有充分的灵活性,可移植性和可扩展性。
为了实现上述目的,本发明采用如下技术方案:
一种基于OpenCL内核任务的调度框架,采用如下技术方案:
该框架中对于输入的每个OpenCL内核任务,在编译阶段生成其二进制文件,并得到AST抽象语法树,通过LLVM编译器从AST抽象语法树中分析抽取OpenCL内核静态代码特征,再经运行阶段得到动态代码特征,其中为了避免出现过拟合现象,使用Greedy FeatureSelection算法对选出来的特征进行排序,选出最重要的几个特征,然后利用机器学习的SVM分类器预测得到任务划分比例,比例值是处于0到10之间的整数,最后将输入的OpenCL内核任务按照预测得到的划分比例值以Baseline调度算法调度到实际可用的设备CPU或GPU上,但对于有明显倾向的任务,比如得到的划分比例是9,表明该任务倾向于在GPU上执行,就按照添加了阈值机制的BIAS算法调度到具体的设备上。
基于LLVM编译器抽取OpenCL内核程序特征的过程,是基于Clang和LLVM完成的,在特征抽取过程中,将特征抽取分为编译阶段特征抽取与运行阶段特征抽取。在编译阶段特征抽取中,OpenCL内核程序通过Clang生成一棵AST抽象语法树,遍历AST,抽取代码静态特征,如:浮点运算操作、定点运算操作、内存访问操作、OpenCL内建函数。在运行时阶段,抽取运行时特征,诸如问题大小特征,主机与内存之间的数据转换、全局工作项数目等。
针对特征提取过程中,为了避免出现过拟合现象,使用Greedy FeatureSelection算法对选出来的特征进行排序,选出最重要的几个特征,过程为所有的特征集为S,单个特征s∈S,已选择的特征集F,给F定义一个最小的错误mse,从S中抽取一个s,加入到F中,训练新的F,若mse减小,则确定将该特征加入F,并由mse值对其F中的特征进行排序,其中用SVM(support vector machine)完成这个贪心算法的训练。
基于机器学习算法预测划分比例,将得到的特征值作为输入,使用静态分类器,预测得到任务划分比例p值。p代表计算量数据空间的分配,代表任务在CPU/GPU上执行的比例,如,0代表完全在CPU上执行,10代表完全在GPU上执行,0与10之间的p值代表在CPU-GPU上同时执行。
基于Baseline调度算法,该算法中定义了三种任务队列C、G、M,分别表示任务只在CPU或者GPU或者单个CPU与GPU之间执行。在Baseline调度算法执行过程中,若两种设备类型都处于空闲状态,就从等待队列Q中选择一个任务,将其调度模式改为CPU-GPU混合模式后执行调度;若只有一个设备可用,从队列Q中选择一个任务,将调度模式改为在空闲GPU或在CPU上调度执行。
对于添加了阈值机制的BIAS算法,通过定义阈值使具有明显偏向特征的任务,即偏向在CPU或GPU上执行,避免跨设备共同执行的多余开销,不按照划分比例执行,直接调度到单类设备上执行,根据实验经验设置阈值上界和阈值下界,当系统中两种设备都可用时,先将任务的执行模式设置为CPU和GPU共同执行,之后根据阈值的上下界确定实际使用的调用模式,若其中一个任务的划分比例小于等于阈值下界,将其完全调度到CPU上执行;当其划分比例比例大于等于阈值上界,将其全调度到GPU上执行,当系统中只有一个设备可用时,以Baseline算法执行。
本发明包括经LLVM编译器对OpenCL内核任务进行特征提取与特征选择,得到内核代码的编译时静态特征与运行时特征;在特征提取过程中,使用Greedy FeatureSelection算法选出最重要的几个特征,避免过拟合现象;然后将选择出来的特征使用机器学习中的静态分类器预测CPU与GPU的任务划分比例;最后使用调度算法对获得的任务划分比例与平台可利用设备信息,对任务进行实际的调度,本发明完成了上述功能的设计细节、实现算法和编码工作,实现了在异构系统中通过机器学习与调度算法结合,实现对计算资源的最大化利用的一种自动化调度,提高异构系统资源利用率。
附图说明
图1是本发明一种基于OpenCL内核任务的调度整体框架示意图。
图2是本发明一种基于OpenCL内核任务的具体实现调度示意图。
图3是本发明一种基于OpenCL内核任务的调度框架中内核任务训练图。
图4是本发明一种基于OpenCL内核任务的调度框架中内核任务调度部署图。
图5是本发明一种基于OpenCL内核任务调度中抽取特征的种类图。
图6是本发明一种基于OpenCL内核任务调度中的特征排序图。
具体实施方式
本发明目的在于提供一个适用于CPU/GPU异构环境,自动进行任务划分预测与任务调度的调度框架,该框架包括两个阶段和三个部分,编译阶段和调度阶段,特征选取,任务划分预测和调度算法三个部分,如说明书附图1所示。该框架可以实现在异构环境下自动进行任务调度,达到提高异构平台资源利用率,减轻并行编程开发人员工作负担与经验要求的目的。
为了实现上述目的,本发明的一种基于OpenCL内核任务的调度框架采用如下技术方案:
该OpenCL内核任务的调度框架基于OpenCL并行编程语言进行开发,使用Clang和LLVM编译器进行特征提取阶段的工作,使用静态分类器对任务划分进行预测,使用Bias调度算法对任务进行实际调度,整个发明的具体实现调度图参见说明书附图2。
整个框架主要有两个阶段训练阶段和部署阶段。训练阶段主要目的是建立任务划分预测模型。对输入的内核任务通过代码分析器,得到静态代码特征,将得到的特征值存入数据库,编译阶段产生的IR(intermediate representation)传入到后端,用于运行时产生多设备OpenCL代码,产生的特征值输入到训练器进行训练,训练过程参加说明书附图3。在部署阶段,一个新输入的OpenCL程序输入到分析器进行优化操作,当程序被执行时,抽取得到的运行时特征值被输入到前一步的训练模型中,将静态特征与运行时特征相结合预测产生最佳任务划分比例,最后将任务按照划分比例调度到硬件设备上,部署阶段参加说明书附图4。
本发明进一步的改进在于:使用Clang与LLVM对特征进行提取。在该方法中使用Clang作为LLVM的前端。
所述特征提取方法中在编译阶段,使用OpenCL语言描述的内核程序经过Clang生成抽象语法树AST(abstract syntax tree),通过遍历抽象语法树,抽取内核代码的静态特征,建立AnalyseFunction()函数,通过switch-case语句得到不同种类的特征个数。抽取的内核代码特征有:浮点运算操作特征、定点运算操作特征、内存访问操作特征、OpenCL内建函数特征等。
所述特征提取方法在运行阶段,抽取问题大小特征:主机和内存之间的数据转换、全局工作项数目特征。抽取的静态以及运行时特征的种类参见说明书附图5。
本发明进一步的改进在于:为了避免机器学习训练过程中的过拟合现象,采用基于Greedy Feature Selection算法,选择出最重要的几个特征,以避免过拟合现象,加快了后续预测任务划分机器学习方法训练的速度,其中使用了SVM(support vector machine)用于实现Greedy Feature Selection的训练过程。Greedy Feature Selection算法步骤如下:
1:S←non empty set of all features
2:mse←∞;improved←true
3:while improved>0do
4:improved←false
5:for all s∈S do
6:model←trainedModel({s}∪F)
7:msetmp←evaluate(model)
8:if msetmp<mse then
9:mse←msetmp
10:f←s
11:improved←true
12:end if
13:end for
14:if improved then
15:S←S\{f}
16:F←F∪{f}
17:end if
18:end while
所有的特征集为S,单个特征s∈S,已选择的特征集F,给F定义一个最小的错误mse,从S中抽取一个s,加入到F中,训练新的F,若mse减小,则确定将该特征加入F,并由mse值对其F中的特征进行排序。最终选择得到的F参见说明书附图6。
所述基于机器学习算法预测划分比例的方法中,将前面得到的代码特征输入静态分类器,预测得到划分比例p值。所使用的静态分类器中定义了一个函数F(P)=<f1(p),…,fn(p)>表示程序P的一系列静态代码特征,其中每一个fi表示在编译阶段从程序P中抽取出来的特征feature。得到的划分等级用来将一个计算任务按比例划分成两部分,分别分配到CPU和GPU上执行。
本发明进一步的改进在于:分类器函数输入的是存入数据库的代码特征值,输出的是划分等级,即划分等级rt={0,1,2,3,…,10}表示程序P计算量数据空间的分配,(100-i*10)%在CPU上执行,剩下的在GPU上执行。所以,0代表完全在CPU上执行,10代表完全在GPU上执行,混合比例在CPU-GPU上执行。
所述调度算法中结合预测得到每个任务的划分比例与可供利用的设备两个信息,作为用户定义的调度算法的输入参数,最终将每个任务调度到具体设备上执行。具体步骤如下:
1:compute_requirement(K),host_initialize(nCPU,mGPU)
2:input_datainitialize(K),initialize_queues(K)
3:while queue set Q is not empty do
4:Update nCPU,mGPU,rCPU,rGPU
5:if nCPU>0 or mGPU>0 then k,U←select(Q,nCPU,mGPU)
6:if nCPU>rCPU and mGPU>rGPU then
7:
8:dispatch_multiple(nC,mG,k,U)
9:else
10:dispatch(k,U)
其中,输入是用K表示。定义nCPU,mGPU分别表示设备CPU和GPU可用的个数,定义rCPU,rGPU分别表示被请求的设备CPU和GPU个数,并在每次调度阶段的一开始更新这些数据。步骤1和2为初始化阶段,每个调度算法都会先执行这两步。步骤3至10描述的是初始化阶段完成后,调度框架分配任务到可用的设备上执行的过程。
所述步骤3至10的具体过程为:在系统中只有一个设备可用时,调度器将只分配一个任务到设备上。使用回调函数notify_callback()更新nCPU和mGPU的值,提供设备可用信息;当nCPU>0或mGPU>0,且队列Q不为空时,调度器调用选择函数select(),返回一个任务t,这个任务的分配模式为U∈{cpu,gpu,partitioned},按照该任务的U进行分配执行;系统中有多个设备可用,即nCPU>rCPU且mGPU>rGPU时,按步骤6至8多个设备并行调度执行;若不满足nCPU>rCPU且mGPU>rGPU的条件,任务被调度到单个设备上执行。
本发明进一步的改进在于:由于在GPU和CPU之间进行通信等操作会有一定的开销,对于有些任务不完全按照预测值执行效率会更高。所以按照实际经验与调研结果设置阈值,使用基于Baseline算法改进的BIAS调度算法:如果有一个任务有很大程度倾向于适合在CPU或GPU上执行的特点,达到阈值的上限,就不需要再对它进行划分,直接调度到单个设备CPU或GPU上。所述BIAS算法具体步骤如下:
1:procedure SELECT(Q,nCPU,mGPU)
2:if pending_task is non-empty then return pending_task
3:if nCPU>0 and mGPU>0 then
4:k1←Q.M.pop(),k2←Q.M.pop()
5:if k1.r>=uth and k2.r<=lth then
6:pending_task←{k2,cpu},k←k1,U←gpu
7:else if k1.r<=lth and k2.r>=uth then
8:pending_task←{k1,cpu},k←k2,U←gpu
9:else if nCPU>0then
10:k←Q.C.top(),U←cpu
11:else
12:k←Q.G.top(),U←gpu
13:return{k,U}
所述BIAS算法中根据实验经验设置上界uth为8,下界lth设置为2。在BIAS算法中定义的pending_task,表示一个任务的分配模式。当系统中两种设备都可用时,设置任务调度模式为M。之后根据阈值的上下界调uth和lth(uth,lth∈{1,…,9})确定实际使用的调用模式。若其中一个任务的划分比例小于等于下界lth,或是比例大于等于上界uth,将其分配模式U设置为单类设备。当系统中只有一个设备可用时,以Baseline算法执行。
所述Baseline算法中含有三种任务队列C,G,M,分别表示任务只在CPU或者GPU或者单个CPU与GPU之间执行,即Q=<C,M,G>=<[0,1),[1,10),[10,10]>。具体实现步骤伪代码如下:
1:procedure SELECT(Q,nCPU,mGPU)
2:if nCPU>0 and mGPU>0 then k←Q.M.top(),U←partition
3:else if nCPU>0 then k←Q.C.top(),U←cpu
4:else if mGPU>0then k←Q.G.top(),U←gpu
5:return{k,U}
所述Baseline算法具体步骤中若两种设备类型都处于空闲状态,从等待队列Q中调用函数select()选择一个任务,将其模式U设置为M后调度执行;若只有一个设备可用,从队列Q中调用函数select()选择一个任务,将模式U设置为C或G后调度执行。
本发明进一步的改进在于:在Baseline算法的基础上添加了BIAS算法,若有一个任务很大程度上倾向于在CPU或GPU上执行,就不需要对它进行划分,以BIAS算法可以直接调度到单类设备CPU或GPU上,这样解决了Baseline等待时间上的问题。具体调度过程参见说明书附图2。
本发明是一种适应当今计算平台发展现状的技术发明,对于异构平台有较好的可移植性,本发明可能产生的经济效益将取决于推广的范围和应用程度,如果能够很好地利用,将异构平台的推广以及利用将有非常重要的作用,对国民经济的发展起到强有力的推动效果,将产生较好的经济效益。所以该发明创造将会对未来技术市场的走向能起到很重要的作用。
Claims (6)
1.一种基于OpenCL内核任务的调度框架,其特征在于,该框架中对于输入的每个OpenCL内核任务,在编译阶段生成其二进制文件,并得到AST抽象语法树,通过LLVM编译器从AST抽象语法树中分析抽取OpenCL内核静态代码特征,再经运行阶段得到动态代码特征,其中为了避免出现过拟合现象,使用Greedy Feature Selection算法对选出来的特征进行排序,选出最重要的几个特征,然后利用机器学习的SVM分类器预测得到任务划分比例,比例值是处于0到10之间的整数,最后将输入的OpenCL内核任务按照预测得到的划分比例值以Baseline调度算法调度到实际可用的设备CPU或GPU上,但对于有明显倾向的任务,比如得到的划分比例是9,表明该任务倾向于在GPU上执行,就按照添加了阈值机制的BIAS算法调度到具体的设备上。
2.根据权利要求1所述的一种基于OpenCL内核任务的调度框架,其特征在于,所述的通过LLVM编译器从AST抽象语法树中分析抽取OpenCL内核静态代码特征,是基于Clang和LLVM完成的,将特征抽取分为编译阶段特征抽取与运行时阶段特征抽取,在编译阶段特征抽取中,OpenCL内核程序通过Clang生成一棵AST抽象语法树,遍历AST,抽取代码静态特征,如:浮点运算操作、定点运算操作、内存访问操作、OpenCL内建函数;在运行时阶段,抽取运行时特征,诸如问题大小特征,主机与内存之间的数据转换、全局工作项数目。
3.根据权利要求1所述的一种基于OpenCL内核任务的调度框架,其特征在于,所述的为了避免出现过拟合现象,使用Greedy Feature Selection算法对选出来的特征进行排序,选出最重要的几个特征,过程为所有的特征集为S,单个特征s∈S,已选择的特征集F,给F定义一个最小的错误mse,从S中抽取一个s,加入到F中,训练新的F,若mse减小,则确定将该特征加入F,并由mse值对其F中的特征进行排序,其中用SVM(support vector machine)完成这个贪心算法的训练。
4.根据权利要求1所述的一种基于OpenCL内核任务的调度框架,其特征在于,所述的基于机器学习的分类器预测得到任务划分比例,将选出来的几个重要特征作为输入,使用静态分类器,预测得到任务划分比例p值,p代表计算量数据空间的分配,代表任务在CPU/GPU上执行的比例,如,0代表完全在CPU上执行,10代表完全在GPU上执行,0与10之间的p值代表在CPU-GPU上同时执行。
5.根据权利要求1所述的一种基于OpenCL内核任务的调度框架,其特征在于,所述的基于Baseline调度算法,该算法中定义了三种任务队列C、G、M,分别表示任务只在CPU或者GPU或者单个CPU与GPU之间执行,在算法执行过程中,若两种设备类型都处于空闲状态,就从等待队列Q中选择一个任务,将其调度模式改为CPU-GPU混合模式后执行调度;若只有一个设备可用,从队列Q中选择一个任务,将调度模式改为在空闲GPU或在CPU上调度执行。
6.根据权利要求1所述的一种基于OpenCL内核任务的调度框架,其特征在于,所述的添加了阈值机制的BIAS算法,通过定义阈值使具有明显偏向特征的任务,即偏向在CPU或GPU上执行,避免跨设备共同执行的多余开销,不按照划分比例执行,直接调度到单类设备上执行,根据实验经验设置阈值上界和阈值下界,当系统中两种设备都可用时,先将任务的执行模式设置为CPU和GPU共同执行,之后根据阈值的上下界确定实际使用的调用模式,若其中一个任务的划分比例小于等于阈值下界,将其完全调度到CPU上执行;当其划分比例比例大于等于阈值上界,将其全调度到GPU上执行,当系统中只有一个设备可用时,以Baseline算法执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811231275.0A CN109542596B (zh) | 2018-10-22 | 2018-10-22 | 一种基于OpenCL内核任务的调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811231275.0A CN109542596B (zh) | 2018-10-22 | 2018-10-22 | 一种基于OpenCL内核任务的调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542596A true CN109542596A (zh) | 2019-03-29 |
CN109542596B CN109542596B (zh) | 2023-09-12 |
Family
ID=65844170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811231275.0A Active CN109542596B (zh) | 2018-10-22 | 2018-10-22 | 一种基于OpenCL内核任务的调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542596B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262887A (zh) * | 2019-06-26 | 2019-09-20 | 北京邮电大学 | 基于特征识别的cpu-fpga任务调度方法及装置 |
CN110569106A (zh) * | 2019-08-27 | 2019-12-13 | Oppo广东移动通信有限公司 | 代码加载方法、装置、电子设备及计算机可读介质 |
CN111090508A (zh) * | 2019-11-29 | 2020-05-01 | 西安交通大学 | 一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法 |
CN117311728A (zh) * | 2023-09-27 | 2023-12-29 | 北京计算机技术及应用研究所 | 一种OpenCL自动转译方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185779A (zh) * | 2011-05-11 | 2011-09-14 | 田文洪 | 与综合配置能力成比例的数据中心资源负载均衡的方法及装置 |
US20120290510A1 (en) * | 2011-05-12 | 2012-11-15 | Xerox Corporation | Multi-task machine learning using features bagging and local relatedness in the instance space |
CN104714850A (zh) * | 2015-03-02 | 2015-06-17 | 心医国际数字医疗系统(大连)有限公司 | 一种基于opencl的异构共同计算均衡方法 |
CN104965761A (zh) * | 2015-07-21 | 2015-10-07 | 华中科技大学 | 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法 |
CN107122244A (zh) * | 2017-04-25 | 2017-09-01 | 华中科技大学 | 一种基于多gpu的图数据处理系统及方法 |
CN107861606A (zh) * | 2017-11-21 | 2018-03-30 | 北京工业大学 | 一种通过协调dvfs和任务映射的异构多核功率封顶方法 |
-
2018
- 2018-10-22 CN CN201811231275.0A patent/CN109542596B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185779A (zh) * | 2011-05-11 | 2011-09-14 | 田文洪 | 与综合配置能力成比例的数据中心资源负载均衡的方法及装置 |
US20120290510A1 (en) * | 2011-05-12 | 2012-11-15 | Xerox Corporation | Multi-task machine learning using features bagging and local relatedness in the instance space |
CN104714850A (zh) * | 2015-03-02 | 2015-06-17 | 心医国际数字医疗系统(大连)有限公司 | 一种基于opencl的异构共同计算均衡方法 |
CN104965761A (zh) * | 2015-07-21 | 2015-10-07 | 华中科技大学 | 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法 |
CN107122244A (zh) * | 2017-04-25 | 2017-09-01 | 华中科技大学 | 一种基于多gpu的图数据处理系统及方法 |
CN107861606A (zh) * | 2017-11-21 | 2018-03-30 | 北京工业大学 | 一种通过协调dvfs和任务映射的异构多核功率封顶方法 |
Non-Patent Citations (3)
Title |
---|
YUAN WEN: "Smart multi-task scheduling for OpenCL programs on CPU/GPU heterogeneous platforms", 《 2014 21ST INTERNATIONAL CONFERENCE ON HIGH PERFORMANCE COMPUTING (HIPC)》 * |
徐晓明: "基于SVM机器学习的仿真网格资源调度模型", 《武汉理工大学学报(信息与管理工程版)》 * |
李涛等: "基于线程池的GPU任务并行计算模式研究", 《计算机学报》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262887A (zh) * | 2019-06-26 | 2019-09-20 | 北京邮电大学 | 基于特征识别的cpu-fpga任务调度方法及装置 |
CN110262887B (zh) * | 2019-06-26 | 2022-04-01 | 北京邮电大学 | 基于特征识别的cpu-fpga任务调度方法及装置 |
CN110569106A (zh) * | 2019-08-27 | 2019-12-13 | Oppo广东移动通信有限公司 | 代码加载方法、装置、电子设备及计算机可读介质 |
CN110569106B (zh) * | 2019-08-27 | 2022-11-15 | Oppo广东移动通信有限公司 | 代码加载方法、装置、电子设备及计算机可读介质 |
CN111090508A (zh) * | 2019-11-29 | 2020-05-01 | 西安交通大学 | 一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法 |
CN111090508B (zh) * | 2019-11-29 | 2023-04-14 | 西安交通大学 | 一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法 |
CN117311728A (zh) * | 2023-09-27 | 2023-12-29 | 北京计算机技术及应用研究所 | 一种OpenCL自动转译方法 |
CN117311728B (zh) * | 2023-09-27 | 2024-07-19 | 北京计算机技术及应用研究所 | 一种OpenCL自动转译方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109542596B (zh) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542596A (zh) | 一种基于OpenCL内核任务的调度框架 | |
Singler et al. | MCSTL: The multi-core standard template library | |
Yu et al. | Automated runtime-aware scheduling for multi-tenant dnn inference on gpu | |
US11036477B2 (en) | Methods and apparatus to improve utilization of a heterogeneous system executing software | |
CN101833439B (zh) | 基于分合思想的并行计算硬件结构 | |
Cid-Fuentes et al. | Efficient development of high performance data analytics in Python | |
He et al. | Design and implementation of a parallel priority queue on many-core architectures | |
Jääskeläinen et al. | Exploiting task parallelism with OpenCL: a case study | |
US20240193721A1 (en) | System and method for adaptive graph-to-stream scheduling | |
CN103810041A (zh) | 一种支持动态伸缩的并行计算的方法 | |
Li et al. | A static task scheduling framework for independent tasks accelerated using a shared graphics processing unit | |
Morchdi et al. | A Resource-efficient Task Scheduling System using Reinforcement Learning | |
Buono et al. | A lightweight run-time support for fast dense linear algebra on multi-core | |
Papadimitriou et al. | Multiple-tasks on multiple-devices (MTMD): exploiting concurrency in heterogeneous managed runtimes | |
Pinel et al. | Savant: Automatic generation of a parallel scheduling heuristic for map-reduce | |
Shekhar et al. | Comparison of parallel programming models for multicore architectures | |
Lopes et al. | MASA-StarPU: Parallel sequence comparison with multiple scheduling policies and pruning | |
Ghose et al. | A framework for OpenCL task scheduling on heterogeneous multicores | |
Aghapour et al. | Pipelined CNN Inference on Heterogeneous Multi-processor System-on-Chip | |
Hu et al. | A parallel approach for svm with multi-core cpu | |
Song et al. | Compiling optimization for neural network accelerators | |
Yu | Multilevel Interference-aware Scheduling on Modern GPUs | |
Wang et al. | Hetrocv: Auto-tuning framework and runtime for image processing and computer vision applications on heterogeneous platform | |
Zumar | Inferline: Ml inference pipeline composition framework | |
Yu | Heterogeneity-aware scheduling and data partitioning for system performance acceleration |
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 |