一种面向GPU数据重用的存储计算协同调度方法及系统技术方案

技术编号:30017953 阅读:18 留言:0更新日期:2021-09-11 06:30
本发明专利技术公开了一种面向GPU数据重用的存储计算协同调度方法及系统,本发明专利技术方法包括有内核程序启动则将该内核程序的倒转标志翻转;在GPU的线程块调度器中,针对该内核程序的线程块调度,根据该内核程序的倒转标志在正向线程块派发策略和反向线程块派发策略中轮流选择一种线程块派发策略来从线程块待发射队列中选择线程块发射;在GPU驱动中,针对该内核程序的数据页替换,根据该内核程序的倒转标志在正向数据页替换策略和反向数据页替换策略中轮流选择其中一种来从GPU端数据页队列中选择GPU端数据页进行替换。本发明专利技术实现了线程块和数据页协同调度,通过重用共享数据来降低内存超额配置对系统性能的影响,能够有效提高系统的性能。的性能。的性能。

【技术实现步骤摘要】
一种面向GPU数据重用的存储计算协同调度方法及系统


[0001]本专利技术涉及计算机的计算调度技术,具体涉及一种面向GPU数据重用的存储计算协同调度方法及系统。

技术介绍

[0002]由于GPU具有很高的计算吞吐量和很好的可编程性,其已经被广泛用于包括机器学习、目标检测以及图像去噪等高性能领域。然而由于GPU上有限的内存空间已经无法容纳应用程序不断扩大的工作集(单位时间的GPU数据访问量)。统一虚拟内存和按需取页技术的引入为内存超额配置提供了很好的支持,但是由于CPU内存与GPU内存间存在额外的数据页传输,引起了系统性能的损失。因此如何减少这些多余的数据迁移对于性能的改善是至关重要的。在研究了大量的被测程序集后,我们发现有很多的应用程序中存在内核程序(Kernel)间数据共享的情况。而且对于大多数这样的程序,其中的每一个内核程序都按照相似的数据访问顺序去访问同一片数据区域。当GPU的内存无法容纳整个内核程序的工作集时,旧的数据页会被换出到CPU的内存中而需要的数据页会被取到GPU的内存中。当一个内核程序结束时只有最新访问的数据页会保留在GPU的内存中,而后续的内核程序启动后还会再去访问那些已经被换入到CPU内存中的数据页。我们发现虽然这些应用程序中的内核程序间存在大量的共享数据,但是当发生内存超额配置时这样的数据共享特性就会消失,进而引发系统性能的急剧下降。
[0003]有效地去使用GPU内存中现有的数据,是避免由页失效引起长时延开销的关键,在内存超额配置的情形下更是如此。图1展示了内核程序间存在数据共享的应用程序由于内存超额配置而引起的性能下降。我们发现这类应用程序对于内存超额配置的程度是不敏感的,只要有一点内存超额配置就会引起性能的急剧下降。图2展示了当GPU内存只可以容纳FFT程序75%的数据访问大小时它的数据页访问特征和页失效率的变化情况(多个内核程序程序按照相同的顺序访问相同的顺序,虚线表示每个内核程序程序结束边界)。我们发现FFT中的每一个内核程序都有相似的数据访问特征和顺序,在每一个内核程序开始的边界(图2中圈住的区域)都有很高的页失效率,这是因为早些访问的数据页被新访问的数据页替换,从而导致后续的内核程序再访问这些被逐出的数据页会产生数据页失效。为了在内存超额配置时从根本上减少页的迁移次数,提出了许多的相关技术包括预取、使用计算时间来隐藏传输时间以及批量处理页失效等。然而这些技术对于这类应用程序的性能提升几乎没有作用。预取由于会将有用的数据页逐出引起系统的抖动,由大量页失效引起的长时延是无法通过预逐出数据页以及批处理页失效来隐藏的。基于以上分析,我们对于内核程序间存在数据共享这类应用程序得到了三个发现。首先,一旦发生内存超额配置,程序的性能会急剧下降。其次,之前针对发生内存超额配置时程序性能的优化方法对于此类程序是不适用的。最后,在内核程序边界处的页失效率非常高。因此,我们的研究目标是通过重用内核程序间共享数据的方式来降低在内核程序边界处的页失效率。

技术实现思路

[0004]本专利技术要解决的技术问题:针对现有技术的上述问题,提供一种面向GPU数据重用的存储计算协同调度方法及系统,本专利技术实现了线程块和数据页协同调度,通过重用共享数据来降低内存超额配置对系统性能的影响,能够有效提高系统的性能。
[0005]为了解决上述技术问题,本专利技术采用的技术方案为:
[0006]一种面向GPU数据重用的存储计算协同调度方法,包括:
[0007]1)在当前程序出现GPU内存容量超额、且内核程序间存在数据共享的条件下,检测是否有内核程序启动,若有内核程序启动则将该内核程序的倒转标志翻转;
[0008]2)在GPU驱动中,针对该内核程序的数据页替换,根据该内核程序的倒转标志在正向数据页替换策略和反向数据页替换策略两种预设的数据页替换策略中来轮流选择其中一种数据页替换策略来从GPU端数据页队列中选择GPU端数据页进行替换,所述正向数据页替换策略和反向数据页替换策略选择GPU端数据页的方向不同;在GPU的线程块调度器中,针对该内核程序的线程块调度,根据该内核程序的倒转标志在正向线程块派发策略和反向线程块派发策略两种预设的线程块派发策略中来轮流选择其中一种线程块派发策略来从线程块待发射队列中选择线程块发射,所述正向线程块派发策略和反向线程块派发策略选择线程块的方向不同。
[0009]可选地,步骤1)中将该内核程序的倒转标志翻转包括:首先检测该内核程序的倒转标志是否已经存在,若该内核程序的倒转标志不存在,则为该内核程序初始化倒转标志,若该内核程序的倒转标志存在,则将该内核程序的倒转标志翻转。
[0010]可选地,所述初始化倒转标志时,倒转标志的初始化值为0或1。
[0011]可选地,所述将该内核程序的倒转标志翻转是指:若内核程序的倒转标志的原值为0,则将该内核程序的倒转标志从0变为1,若内核程序的倒转标志的原值为1,则将该内核程序的倒转标志从1变为0。
[0012]可选地,步骤2)中根据该内核程序的倒转标志在正向数据页替换策略和反向数据页替换策略两种预设的数据页替换策略中来轮流选择其中一种数据页替换策略来从GPU端数据页队列中选择GPU端数据页进行替换时,若倒转标志为0,则选择正向数据页替换策略;若倒转标志为1,则选择反向数据页替换策略。
[0013]可选地,步骤2)中根据倒转标志在正向线程块派发策略和反向线程块派发策略两种预设的线程块派发策略中来轮流选择其中一种线程块派发策略时,若倒转标志为0,则选择正向线程块派发策略;若倒转标志为1,则选择反向线程块派发策略。
[0014]可选地,步骤1)中当前程序出现GPU内存容量超额是指:位于主机端的GPU驱动监测到GPU端产生的数据页请求时,如果此时GPU驱动所维护的数据页队列长度达到GPU内存容量时,则需要依据数据页替换策略将GPU内存中的数据页逐出到CPU内存中去,同时将内存超额配置标志进行置位来表示当前程序出现内存超额配置。
[0015]可选地,步骤1)中内核程序间存在数据共享是指:依据编译时的信息去判断内核程序间是否共享着相同的指针,以此作为内核程序间存在数据共享的指标,并为每一个将启动的内核程序分配一个数据共享标志,以此来表明其是否与前一个内核程序存在数据共享;当一个内核程序启动时,将分别判断内存超额配置标志位以及此内核程序所对应的数据共享标志位是否都为1,如果是,则判定需要使用协同调度方法。
[0016]此外,本专利技术还提供一种面向GPU数据重用的存储计算协同调度系统,包括相互连接的处理单元和存储器,所述处理单元被编程或配置以执行前述面向GPU数据重用的存储计算协同调度方法的步骤。
[0017]此外,本专利技术还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述面向GPU数据重用的存储计算协同调度方法的计算机程序。
[0018]和现有技术相比,本专利技术具有下述优点:由于GPU具有很高的计算吞吐量和很好的可编程性,其已经被广泛用于包括机器学习、目标检测以及图像去本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向GPU数据重用的存储计算协同调度方法,其特征在于,包括:1)在当前程序出现GPU内存容量超额、且内核程序间存在数据共享的条件下,检测是否有内核程序启动,若有内核程序启动则将该内核程序的倒转标志翻转;2)在GPU驱动中,针对该内核程序的数据页替换,根据该内核程序的倒转标志在正向数据页替换策略和反向数据页替换策略两种预设的数据页替换策略中来轮流选择其中一种数据页替换策略来从GPU端数据页队列中选择GPU端数据页进行替换,所述正向数据页替换策略和反向数据页替换策略选择GPU端数据页的方向不同;在GPU的线程块调度器中,针对该内核程序的线程块调度,根据该内核程序的倒转标志在正向线程块派发策略和反向线程块派发策略两种预设的线程块派发策略中来轮流选择其中一种线程块派发策略来从线程块待发射队列中选择线程块发射,所述正向线程块派发策略和反向线程块派发策略选择线程块的方向不同。2.根据权利要求1所述的面向GPU数据重用的存储计算协同调度方法,其特征在于,步骤1)中将该内核程序的倒转标志翻转包括:首先检测该内核程序的倒转标志是否已经存在,若该内核程序的倒转标志不存在,则为该内核程序初始化倒转标志,若该内核程序的倒转标志存在,则将该内核程序的倒转标志翻转。3.根据权利要求2所述的面向GPU数据重用的存储计算协同调度方法,其特征在于,所述初始化倒转标志时,倒转标志的初始化值为0或1。4.根据权利要求2所述的面向GPU数据重用的存储计算协同调度方法,其特征在于,所述将该内核程序的倒转标志翻转是指:若内核程序的倒转标志的原值为0,则将该内核程序的倒转标志从0变为1,若内核程序的倒转标志的原值为1,则将该内核程序的倒转标志从1变为0。5.根据权利要求1所述的面向GPU数据重用的存储计算协同调度方法,其特征在于,步骤2)中根据该内核程序的倒转标志在正向数据页替换策略和反向数据页替换策略两种预设的数据页替换策略中来轮流选择其中一种数据...

【专利技术属性】
技术研发人员:李晨李宣佚郭阳鲁建壮陈小文刘胜张洋刘畅曹壮
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1