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

文档序号:26590815发布日期:2021-09-10 20:51阅读:223来源:国知局
一种面向GPU数据重用的存储计算协同调度方法及系统
一种面向gpu数据重用的存储计算协同调度方法及系统
技术领域
1.本发明涉及计算机的计算调度技术,具体涉及一种面向gpu数据重用的存储计算协同调度方法及系统。


背景技术:

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


技术实现要素:

4.本发明要解决的技术问题:针对现有技术的上述问题,提供一种面向gpu数据重用的存储计算协同调度方法及系统,本发明实现了线程块和数据页协同调度,通过重用共享数据来降低内存超额配置对系统性能的影响,能够有效提高系统的性能。
5.为了解决上述技术问题,本发明采用的技术方案为:
6.一种面向gpu数据重用的存储计算协同调度方法,包括:
7.1)在当前程序出现gpu内存容量超额、且内核程序间存在数据共享的条件下,检测是否有内核程序启动,若有内核程序启动则将该内核程序的倒转标志翻转;
8.2)在gpu驱动中,针对该内核程序的数据页替换,根据该内核程序的倒转标志在正向数据页替换策略和反向数据页替换策略两种预设的数据页替换策略中来轮流选择其中一种数据页替换策略来从gpu端数据页队列中选择gpu端数据页进行替换,所述正向数据页替换策略和反向数据页替换策略选择gpu端数据页的方向不同;在gpu的线程块调度器中,针对该内核程序的线程块调度,根据该内核程序的倒转标志在正向线程块派发策略和反向线程块派发策略两种预设的线程块派发策略中来轮流选择其中一种线程块派发策略来从线程块待发射队列中选择线程块发射,所述正向线程块派发策略和反向线程块派发策略选择线程块的方向不同。
9.可选地,步骤1)中将该内核程序的倒转标志翻转包括:首先检测该内核程序的倒转标志是否已经存在,若该内核程序的倒转标志不存在,则为该内核程序初始化倒转标志,若该内核程序的倒转标志存在,则将该内核程序的倒转标志翻转。
10.可选地,所述初始化倒转标志时,倒转标志的初始化值为0或1。
11.可选地,所述将该内核程序的倒转标志翻转是指:若内核程序的倒转标志的原值为0,则将该内核程序的倒转标志从0变为1,若内核程序的倒转标志的原值为1,则将该内核程序的倒转标志从1变为0。
12.可选地,步骤2)中根据该内核程序的倒转标志在正向数据页替换策略和反向数据页替换策略两种预设的数据页替换策略中来轮流选择其中一种数据页替换策略来从gpu端数据页队列中选择gpu端数据页进行替换时,若倒转标志为0,则选择正向数据页替换策略;若倒转标志为1,则选择反向数据页替换策略。
13.可选地,步骤2)中根据倒转标志在正向线程块派发策略和反向线程块派发策略两种预设的线程块派发策略中来轮流选择其中一种线程块派发策略时,若倒转标志为0,则选择正向线程块派发策略;若倒转标志为1,则选择反向线程块派发策略。
14.可选地,步骤1)中当前程序出现gpu内存容量超额是指:位于主机端的gpu驱动监测到gpu端产生的数据页请求时,如果此时gpu驱动所维护的数据页队列长度达到gpu内存容量时,则需要依据数据页替换策略将gpu内存中的数据页逐出到cpu内存中去,同时将内存超额配置标志进行置位来表示当前程序出现内存超额配置。
15.可选地,步骤1)中内核程序间存在数据共享是指:依据编译时的信息去判断内核程序间是否共享着相同的指针,以此作为内核程序间存在数据共享的指标,并为每一个将启动的内核程序分配一个数据共享标志,以此来表明其是否与前一个内核程序存在数据共享;当一个内核程序启动时,将分别判断内存超额配置标志位以及此内核程序所对应的数据共享标志位是否都为1,如果是,则判定需要使用协同调度方法。
16.此外,本发明还提供一种面向gpu数据重用的存储计算协同调度系统,包括相互连接的处理单元和存储器,所述处理单元被编程或配置以执行前述面向gpu数据重用的存储计算协同调度方法的步骤。
17.此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述面向gpu数据重用的存储计算协同调度方法的计算机程序。
18.和现有技术相比,本发明具有下述优点:由于gpu具有很高的计算吞吐量和很好的可编程性,其已经被广泛用于包括机器学习、目标检测以及图像去噪等高性能领域。然而由于gpu上有限的内存空间已经无法容纳应用程序不断扩大的工作集(单位时间的gpu数据访问量)。统一虚拟内存和按需取页技术的引入为内存超额配置提供了很好的支持,但是由于cpu内存与gpu内存间存在额外的数据页传输,引起了系统性能的损失。因此如何减少这些多余的数据迁移对于性能的改善是至关重要的。在研究了大量的被测程序集后,我们发现有很多的应用程序中存在内核程序间数据共享的情况。而且对于大多数这样的程序,其中的每一个内核程序都按照相似的数据访问顺序去访问同一片数据区域。当gpu的内存无法容纳整个内核程序的工作集时,旧的数据页会被换出到cpu的内存中而需要的数据页会被取到gpu的内存中。当一个内核程序结束时只有最新访问的数据页会被保留在gpu的内存中,而后续的内核程序启动后还会再去访问那些已经被换入到cpu内存中的数据页。我们发现虽然这些应用程序中的内核程序间存在大量的共享数据,但是当发生内存超额配置时这样的数据共享特性就会消失,进而引发系统性能的急剧下降。基于以上观察,本发明提出了一个线程块和数据页协同调度的方法来通过有效利用内核程序间的共享数据去提升系统的性能,通过协调线程块分配顺序的切换,即改变线程块分配的顺序、数据页替换策略的切换,来充分利用内核程序间的共享数据,通过大量的gpu测试集来评估我们的方法的性能,结果显示本发明的方法比最新研究的性能提升了65%。
附图说明
19.图1为gpu内存超额配置对于系统性能的影响。
20.图2为当gpu内存只可以容纳fft程序75%的数据访问大小时它的数据页访问特征和页失效率的变化情况。
21.图3为本发明实施例方法的基本原理示意图。
22.图4为本发明实施例方法和现有方法的性能对比示意图。
23.图5为本发明实施例中当gpu内存容量设置为fft所访问数据量的75%时,使用本实施例方法(倒转分配)时,fft执行过程中的数据页访问特征与数据页失效率的变化。
24.图6为本发明实施例中当gpu内存容量设置为fft所访问数据量的75%时,使用现有的协同方法时,fft执行过程中的数据页访问特征与数据页失效率的变化。
25.图7为本发明实施例中基准配置下的执行过程。
26.图8为本发明实施例中使用倒转分配时的执行过程。
27.图9为本发明实施例中使用协同方法时的执行过程。
28.图10为本发明实施例中基于加载时间的最近最少使用的数据页替换策略示意图。
29.图11为本发明实施例中反向基于加载时间的最近最少使用的数据页替换策略示意图。
30.图12为本发明实施例中使用基准配置作为性能参考时基于不同优化机制的ipc对比。
具体实施方式
31.如图3所示,本实施例面向gpu数据重用的存储计算协同调度方法包括:
32.1)在当前程序出现gpu内存容量超额、且内核程序间存在数据共享的条件下,检测是否有内核程序启动,若有内核程序启动则将该内核程序的倒转标志翻转;
33.2)在gpu驱动中,针对该内核程序的数据页替换,根据该内核程序的倒转标志在正向数据页替换策略和反向数据页替换策略两种预设的数据页替换策略中来轮流选择其中一种数据页替换策略来从gpu端数据页队列中选择gpu端数据页进行替换,所述正向数据页替换策略和反向数据页替换策略选择gpu端数据页的方向不同;在gpu的线程块调度器中,针对该内核程序的线程块调度,根据该内核程序的倒转标志在正向线程块派发策略和反向线程块派发策略两种预设的线程块派发策略中来轮流选择其中一种线程块派发策略来从线程块待发射队列中选择线程块发射,所述正向线程块派发策略和反向线程块派发策略选择线程块的方向不同。
34.正如前文所示,将线程块和内存中的数据配合起来是降低在内核程序边界处的页失效率的关键,然而如何确定与这些数据相关的线程块是设计遇到的最大挑战。基于对这类应用程序的观察分析,本实施例方法发现在大多数这类程序中,每一个内核程序都由相似的数据访问特征和顺序(如图2所示),在每一个内核程序中,对数据页的访问行为都与线程块的调度机制相关,因为每一个线程一般都是使用其对应的线程标号和线程块标号去表明要操作的数据位置。鉴于此,本实施例方法提出了叫做倒转分配的线程块分配机制,如图3中标记b所示,通过对线程块调度机制进行调整来动态改变线程块的派发策略。默认的线程块派发策略如图3中标记b中左边所示,线程块按照序号从低到高的顺序进行派发。每当有内核程序启动时,倒转标志都进行翻转,调度器都会依据命令处理器中的倒转标志在图3中标记b中所示的两种线程块派发策略中来选择,当倒转标志为0时,选择正向线程块派发策略,反之则选择反向线程块派发策略,这样可以使派发的线程块和存储器中保留的数据相吻合来最大化地去重用数据。
35.本实施例中,步骤1)中当前程序出现gpu内存容量超额是指:位于主机端的gpu驱动监测到gpu端产生的数据页请求时,如果此时gpu驱动所维护的数据页队列长度达到gpu内存容量时,则需要依据数据页替换策略将gpu内存中的数据页逐出到cpu内存中去,同时将内存超额配置标志进行置位来表示当前程序出现内存超额配置。
36.本实施例中,步骤1)中内核程序间存在数据共享是指:依据编译时的信息去判断内核程序间是否共享着相同的指针,以此作为内核程序间存在数据共享的指标,并为每一个将启动的内核程序分配一个数据共享标志,以此来表明其是否与前一个内核程序存在数据共享;当一个内核程序启动时,将分别判断内存超额配置标志位以及此内核程序所对应的数据共享标志位是否都为1,如果是,则判定需要使用协同调度方法。
37.本实施例提出的协同调度方法的应用场景是当应用程序存在内存超额配置,且多个内核程序间存在数据共享,因此对于内存超额配置和内核程序间数据共享的检测是本机制触发的关键。当位于主机端的gpu驱动监测到gpu端产生的数据页请求时,如果此时gpu驱
动所维护的数据页队列长度达到gpu内存容量时,则需要依据数据页替换策略将gpu内存中的数据页逐出到cpu内存中去,同时将内存超额配置标志进行置位来说明当前程序出现内存超额配置,并以此标志作为本实施例协同调度机制启动的指标之一。依据编译时的信息去判断内核程序间是否共享着相同的指针,以此作为内核程序间存在数据共享的指标。并为每一个将启动的内核程序分配一个数据共享标志,以此来表明其是否与前一个内核程序存在数据共享。当一个内核程序启动时,本实施例提出的协同调度机制将分别判断内存超额配置标志位以及此内核程序所对应的数据共享标志位是否都为1,如果是则触发协同调度机制,否则按照默认配置进行执行。
38.本实施例中,步骤1)中将该内核程序的倒转标志翻转包括:首先检测该内核程序的倒转标志是否已经存在,若该内核程序的倒转标志不存在,则为该内核程序初始化倒转标志,若该内核程序的倒转标志存在,则将该内核程序的倒转标志翻转。
39.本实施例中,所述初始化倒转标志时,倒转标志的初始化值为0或1。
40.本实施例中,所述将该内核程序的倒转标志翻转是指:若内核程序的倒转标志的原值为0,则将该内核程序的倒转标志从0变为1,若内核程序的倒转标志的原值为1,则将该内核程序的倒转标志从1变为0。
41.本实施例中,步骤2)中根据该内核程序的倒转标志在正向数据页替换策略和反向数据页替换策略两种预设的数据页替换策略中来轮流选择其中一种数据页替换策略来从gpu端数据页队列中选择gpu端数据页进行替换时,若倒转标志为0,则选择正向数据页替换策略;若倒转标志为1,则选择反向数据页替换策略。
42.本实施例中,步骤2)中根据倒转标志在正向线程块派发策略和反向线程块派发策略两种预设的线程块派发策略中来轮流选择其中一种线程块派发策略时,若倒转标志为0,则选择正向线程块派发策略;若倒转标志为1,则选择反向线程块派发策略。
43.为了展示本实施例方法的有效性,本实施例中分别引入了叫做oracle、etc的现有技术与本实施例方法(倒转分配)进行对比,其中oracle可以完全利用存储器中所保留的内核程序间的共享数据。图4展示了使用默认配置作为基准,本实施例方法(倒转分配)和oracle、etc的平均性能对比,其中baseline为作为对比的基准性能。图5展示了应用本实施例方法(倒转分配)和协同方法时fft程序的数据页访问特征和页失效变化情况。基于图4的分析可知,首先,相比于最新的方法etc,本实施例方法(倒转分配)平均提升了20.2%的性能,这与图5所展示的内核程序边界处页失效率下降是一致的;其次,相比于oracle,倒转分配的性能差了58.5%,说明还有很大的提升空间。基于对图5的分析可知,偶数号的内核程序的执行时间比奇数号的内核程序执行时间短,参见图5,当gpu内存容量设置为fft所访问数据量的75%时,使用本实施例方法(倒转分配)时,fft执行过程中的数据页访问特征与数据页失效率的变化(多个内核程序程序按照相同的顺序访问相同的顺序,虚线表示每个内核程序程序结束边界)。
44.为了深入探究本实施例方法(倒转分配)与oracle之间存在巨大性能差距以及不同内核程序执行时间差异的原因,本实施例中分析了一个简单测试程序的执行过程,这个应用程序包含多个内核程序程序,并且每一个内核程序程序都访问相同的数据,具体的执行过程如图7~图9所示。为了简化分析,我们做了一些假设:1)gpu同时只能执行一个线程块;2)五个内核程序程序(a,b,c,d,e)访问相同的数据,并且每个内核程序由5个线程块
(c1

c5)组成,它们仅访问一个数据页(分别访问p1

p5);3)gpu的内存容量是3个数据页。首先我们分析如图7所示的使用基本配置时的程序执行过程,这些内核程序顺序启动并且相关的线程块也被按顺序派发到相应的执行单元。起初,请求的数据页之间被装载到没有满的gpu的内存中。然而由于有限的存储空间和基于加载时间的最近最少使用的数据页替换策略,最先装载到内存中的数据页会被新访问的数据页替换出去,因此在整个执行过程中一直会产生数据页缺失异常,导致很大的性能损失,这与图1所示的结果一致。
45.应用了本实施例方法(倒转分配)的执行过程如图8所示,与图7不同的是,每个内核程序的线程块分配顺序在不断切换。我们得到了两个发现,首先,与基本配置的执行过程相比,在内核程序边界的页失效率很低,这与图5的结果吻合。其次,对于奇数次执行的内核程序,gpu内存中保留的数据没有被充分利用到,这也解释了本实施例方法(倒转分配)与oracle之间存在性能差距的原因。总之,虽然本实施例方法(倒转分配)可以较好地提升性能,但是取得与oracle相近的性能提升是不可能的。配合数据页的替换策略与本实施例方法(倒转分配)是弥补这一性能差距的关键。
46.奇数次执行的内核程序程序没有充分利用到存储器中的共享数据。图10展示了默认的数据页替换策略的基本原理,位于主机上的gpu的驱动维护着一个用来记录从cpu内存向gpu内存进行数据页迁移顺序的线性表。尽管它不能反映数据页的访问顺序,但是与理想的最近最少使用策略相比有更低的开销。因为倒转分配切换了线程块的分配顺序,基本的数据页替换策略不再能很好地与倒转分配相互配合使用。如图5所示,依据基于加载时间的最近最少使用策略,数据页3(p3)而不是数据页5(p5)在内核程序b中的线程块c2执行过程中被逐出到cpu的内存中去。然而,对于内核程序b来说,更希望将数据页5(p5)逐出,这样后续的内核程序程序才可以充分利用共享数据。
47.为了解决这个问题,我们提出了叫做倒转替换数据页替换策略,如图10(同图3中的标记a)所示。协同倒转策略在线程块倒转替换的基础上引入了一个叫做反向基于加载时间的最近最少使用的数据页替换策略,如图11所示。这个新的替换策略与默认的相比,数据页的分配和逐出方向发生了切换。如图3中标记a所示,每当有一个新的内核程序启动时,位于主机端的gpu驱动会根据命令处理器中倒转标志位选择相应的数据页替换策略,当倒转标志为0时,使用图7所示的正向数据页替换策略,反之则使用图11所示的反向数据页替换策略,这样可以更好配合倒转分配机制来充分利用共享数据。
48.图8展示了同时运用倒转分配机制与倒转替换机制的协同倒转机制时,在前一节中引入的简单测试程序的执行过程。正如期望的结果,数据页5(p5)在当内核程序b中线程块c2执行时被替换到了cpu内存中。因此在内核程序c执行时,之前所有在gpu内存中保留的数据会被完全使用到,从而在内核程序边界处不会产生页失效错误。图6展示了当使用协同倒转策略时fft程序的数据页访问特征和页失效率,我们得到了两个发现,首先,奇数次内核程序程序的性能得到了很大的提升,从而得到了比倒转分配更好的性能;其次,更多的共享数据被重新利用,从而在内核程序边界处会产生更少的数据页失效错误。我们得出结论,通过重新使用共享数据可以有效减少内核程序边界处的数据页失效错误。
49.本实施例中扩展了gpgpu

simv4.0.0来进行评估。表1中显示了包括内核和存储在内的gpu系统的相关配置信息。我们认真地模拟了cpu内存和gpu内存间数据的按需迁移过程,将数据页失效处理延迟设为最乐观的20μs。如果gpu的内存已满,则gpu的驱动程序依据
相应的数据页替换策略将对应的数据页替换出去。为了在不同程度的内存超额配置性进行实验,我们将gpu的内存容量设置为每个应用程序需要占用空间的一定比例(75%

95%)。我们从cudasdk、rodinia、ispass以及polibench等基准被测程序套件中选取了12个应用程序进行实验,这些程序的占用空间从1mb到96mb不等,平均占用为18.5mb。有限的模拟速度阻碍了我们对更大占用空间的应用程序进行模拟。
50.表1模拟器基本配置信息:
[0051][0052]
为了评估我们的方法的有效性,我们实现了最新的技术etc。图12显示了以基本配置作为基准的多个应用程序在倒转分配、协同倒转、etc以及oracle配置下的性能对比。我们得到了3个发现,首先,etc表现出较弱的性能优化能力,平均提高了15%的性能。相比于etc,倒转分配和协同倒转分别提升了20.2%和65%。其次,对于几乎所有的应用程序,协同倒转都可以达到与oracle相近的性能,主要由于大多数内核程序间的共享数据被有效地利用了。最后,对于bfs和fwt程序,协同倒转都没有较好地改善它们的性能,这是因为这两个程序的不同内核程序具有不规则的数据访问特征,不可以很好地被协同倒转捕获和利用。因此,对于内核程序间存在大量数据共享地应用程序而言,它们在内存超额配置地情况下会遭受极大的性能损失。在本实施例方法中,提出了一个线程块和数据页协同调度的方法,旨在通过重用共享数据来降低内存超额配置对系统性能的影响。
[0053]
综上所述,虽然最新的gpu配备了越来越大的内存,但是仍然无法容纳大型应用程序的整个工作集。在统一虚拟内存以及按需数据页置入技术的支持下,这些大型程序无需程序员的主动干预仍然可以正常运行,然而这个优势引起了一定的性能损失。我们发现尽管当前有很多关于减少cpu与gpu间大量页迁移的研究,但是对于内核程序之间存在数据共享的应用程序来说仍然无法获得较好的性能改善。在本实施例中,本实施例方法提出了一个线程块和数据页协同调度方法,以对程序员透明的方式去减小内存超额配置带来的影响,本实施例面向gpu数据重用的存储计算协同调度方法的基本原理是通过协调线程块分配顺序以及数据页替换顺序的策略来有效地使用内核程序间的共享数据,实验表明采用本实施例面向gpu数据重用的存储计算协同调度方法的系统性能比采用最新研究方法提升了65%。
[0054]
此外,本实施例还提供一种面向gpu数据重用的存储计算协同调度系统,包括:
[0055]
倒转标志管理程序单元,用于检测是否有内核程序启动,若有内核程序启动则将该内核程序的倒转标志翻转;
[0056]
数据页替换程序单元,用于在gpu驱动中,针对该内核程序的数据页替换,根据该内核程序的倒转标志在正向数据页替换策略和反向数据页替换策略两种预设的数据页替换策略中来轮流选择其中一种数据页替换策略来从gpu端数据页队列中选择gpu端数据页
进行替换,所述正向数据页替换策略和反向数据页替换策略选择gpu端数据页的方向不同;
[0057]
线程块选择程序单元,用于在gpu的线程块调度器中,针对该内核程序的线程块调度,根据该内核程序的倒转标志在正向线程块派发策略和反向线程块派发策略两种预设的线程块派发策略中来轮流选择其中一种线程块派发策略来从线程块待发射队列中选择线程块发射,所述正向线程块派发策略和反向线程块派发策略选择线程块的方向不同。
[0058]
此外,本实施例还提供一种面向gpu数据重用的存储计算协同调度系统,包括:
[0059]
cpu,用于检测是否有内核程序启动,若有内核程序启动则将该内核程序的倒转标志翻转,以及在gpu驱动中,针对该内核程序的数据页替换,根据该内核程序的倒转标志在正向数据页替换策略和反向数据页替换策略两种预设的数据页替换策略中来轮流选择其中一种数据页替换策略来从gpu端数据页队列中选择gpu端数据页进行替换,所述正向数据页替换策略和反向数据页替换策略选择gpu端数据页的方向不同;
[0060]
gpu,用于在gpu的线程块调度器中,针对该内核程序的线程块调度,根据该内核程序的倒转标志在正向线程块派发策略和反向线程块派发策略两种预设的线程块派发策略中来轮流选择其中一种线程块派发策略来从线程块待发射队列中选择线程块发射,所述正向线程块派发策略和反向线程块派发策略选择线程块的方向不同;
[0061]
所述cpu和gpu之间相互连接。
[0062]
此外,本实施例还提供一种面向gpu数据重用的存储计算协同调度系统,包括相互连接的处理单元和存储器,所述处理单元被编程或配置以执行所述面向gpu数据重用的存储计算协同调度方法的步骤。
[0063]
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行所述面向gpu数据重用的存储计算协同调度方法的计算机程序。
[0064]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0065]
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施
例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1