[发明专利]用于管理嵌套执行流的方法和系统有效
申请号: | 201310167916.1 | 申请日: | 2013-05-09 |
公开(公告)号: | CN103425533B | 公开(公告)日: | 2017-05-03 |
发明(设计)人: | 卢克·杜兰特 | 申请(专利权)人: | 辉达公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京市磐华律师事务所11336 | 代理人: | 徐丁峰,魏宁 |
地址: | 美国加利*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 管理 嵌套 执行 方法 系统 | ||
技术领域
本发明总地涉及计算机架构,并且,更具体地,涉及用于管理嵌套(nested)执行流的方法和系统。
背景技术
在具有中央处理单元(CPU)和图形处理单元(GPU)二者的常规计算系统中,CPU确定由GPU实施哪些具体计算任务以及以什么次序实施。GPU计算任务典型地包括跨并行数据集的高度并行、高度类似的操作,该并行数据集诸如图像或图像集。在常规GPU执行模型中,CPU通过选择相应的线程程序并且指导GPU执行线程程序的并行实例集来发起特定计算任务。在常规GPU执行模型中,CPU经常是可在GPU上发起线程程序的执行的仅有的实体。在所有线程实例完成执行后,GPU必须通知CPU并等待将由CPU所发出的另一个计算任务。通知CPU并等待下一个计算任务是使GPU内的某些资源暂时闲置的典型的阻塞型、序列化操作,从而降低整体系统性能。
在某些场景中可通过在入栈缓冲区中对顺序的计算任务进行排队,GPU可从该入栈缓冲区中拉取工作用于执行而不用等待CPU,从而改进性能。当CPU能够足够快地生成用于GPU的工作,使每当GPU能够开始新任务时工作均在入栈缓冲区内挂起(pending)时,包括固定数据流处理管线的计算任务从该入栈缓冲区模型中受益。然而,依赖于数据的计算任务仍在GPU结果、CPU任务管理、以及后续的必须由CPU来启动的GPU任务执行之间存在顺序依赖性。解决该问题的一个办法是提供用于GPU线程程序的机制来对附加的计算任务进行排队而不要求来自CPU的干预,并等待那些计算任务的完成。然而,这种方法有几个缺点。首先,常规地,CPU具有动态地分配存储器的装置,但GPU没有。当新计算任务由GPU所启动时,计算任务被分配到存储器以存储在任务执行期间所访问的上下文和参数信息。在这种情况下,GPU使CPU分配存储器用于新计算任务。然后,在对新任务进行排队之前,GPU等待CPU给计算任务分配存储器,从而降低性能。
其次,在CPU和GPU均能够启动新计算任务进入入栈缓冲区之处可能发生死锁的情况。CPU可能出于对新计算任务进行排队的目的而占据对GPU的所有通信信道。然后GPU可能对为完成而访问CPU的新计算任务进行排队。在这种情况下,CPU在释放任意通信信道前等待GPU任务以完成,同时GPU任务不能完成直到任务被许可经由所阻塞的通信信道之一访问CPU为止,这导致死锁。
最后,对新计算任务进行排队和从入栈缓冲区拉取任务用于执行典型地利用锁定操作以确保任务顺序地执行以及确保正确地保存和管理入栈缓冲区中的信息。尽管GPU实施类似的锁定操作,但锁定操作本身是缓慢的。如果GPU在对新任务进行排队的同时采用锁定操作,那么系统性能将受到负面的影响。
如前所述,本领域中所需要的是允许GPU更有效率地对工作进行排队用于执行的技术。
发明内容
本发明的一个实施例阐述用于处理正由第一组线程所执行并存储在多个任务元数据描述符队列(TMDQ)内的多个任务的计算机实现的方法。方法包括接收包括在多个任务中的第一任务已完成的通知,以及在协处理单元内确定是否包括在多个任务的子集中并与第一TMDQ相关联的所有任务已经执行。如果并非包括在多个任务的子集中的所有任务已经执行,那么方法进一步包括启动包括在多个任务中的第二任务。如果包括在多个任务的子集中的所有任务已经执行,那么方法进一步包括更新与第一TMDQ相关联的第一数据结构中的指针、确定将在第一TMDQ中对包括在多个任务中的第三任务进行排队、以及启动第三任务。
所公开的技术的一个优点是GPU使能以在任务队列内对计算任务进行排队,还将任意数目的新任务队列创建到任何任意嵌套级别,而不用CPU干预。在当CPU创建任务并对任务进行排队的同时GPU不进行等待的情况下,提高了处理效率。
附图说明
因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。
图1是示出配置为实现本发明的一个或多个方面的计算机系统的框图;
图2是根据本发明的一个实施例的、用于图1的计算机系统的并行处理子系统的框图;
图3A是根据本发明的一个实施例的、图2的前端的框图;
图3B是根据本发明的一个实施例的、图2的并行处理单元之一内的通用处理集群的框图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于辉达公司,未经辉达公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310167916.1/2.html,转载请声明来源钻瓜专利网。