[发明专利]基于工作队列的图形处理单元工作创建无效
申请号: | 201310518042.X | 申请日: | 2013-10-28 |
公开(公告)号: | CN103793206A | 公开(公告)日: | 2014-05-14 |
发明(设计)人: | 依格纳西奥·利亚马斯;克雷格·罗斯·杜特韦勒;杰弗里·A·博尔兹;丹尼尔·埃利奥特·韦克斯勒 | 申请(专利权)人: | 辉达公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/445 |
代理公司: | 北京市磐华律师事务所 11336 | 代理人: | 谢栒;董巍 |
地址: | 美国加利*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 工作 队列 图形 处理 单元 创建 | ||
技术领域
本发明总地涉及计算机处理,并且更具体地,涉及使能图形处理单元(GPU)内的工作的本地生成。
背景技术
图形处理单元(GPU)设计为处理计算系统内的各种密集任务,诸如图形处理工作和计算应用工作。在典型的配置中,中央处理单元(CPU)生成基于GPU的工作并且将基于GPU的工作加载到CPU和GPU二者都可访问的全局存储器中。CPU之后访问GPU的工作队列-通常称为“信道”-CPU能够通过其使GPU处理存储在全局存储器中的基于GPU的工作。
在一个配置中,GPU的处理活动由两个分开的指针的操纵所控制,每个指针涉及工作队列中的条目,本文称为GP_GET指针和GP_PUT指针。GP_GET指针指向工作队列中的特定条目并且向CPU指示GPU在执行存储在工作队列中的工作方面的进展情况。可替换地,GP_PUT指针指向工作队列中刚好在由CPU所写的最后条目之后的条目。当GPU完成由给定的工作队列条目所指向的基于GPU的工作的执行时,GPU增大GP_GET。显而易见地,因为工作队列是循环的,所以当GP_GET达到工作队列的条目计数时,将GP_GET重新设置为零值。如果在被增大之后,GP_GET等于GP_PUT,那么工作队列中没有更多的条目留待处理。否则,GPU执行由GP_GET所指向的工作。另外,如果GP_GET等于“(GP_PUT+1)对‘工作队列中的条目的数目’取模”,那么工作队列被认为是满的。只要工作队列不是满的,CPU就能够增大GP_PUT指针以提交在工作队列中所写的新的条目用于GPU处理。GPU监视由CPU所实施的对GP_PUT的改变,使得CPU所提交的工作队列条目以及时的方式加以处理。
在许多情况下,使得GPU能够生成能够由GPU加载到工作队列中并且由GPU所处理的附加(即嵌套(nested))工作是可取的。不幸地,特定硬件限制存在于流行的CPU至GPU通信信道之间-诸如快速外围部件互连(PCI-E)-并且防止GPU能够修改GP_PUT指针,如以上所描述的,该GP_PUT指针需要在将新的工作插入工作队列之后被增大。结果是,GPU必须依赖CPU来生成并执行嵌套工作,其与在GPU内本地生成并执行嵌套工作相比是低效的。
因此,本领域需要的是用于在CPU至GPU通信信道硬件限制存在的情况下使得GPU能够本地生成工作的技术。
发明内容
本发明的一个实施例阐述了用于配置工作队列以使得在并行处理子系统中执行的线程能够在并行处理子系统内生成并执行工作的方法。方法包括生成工作队列的步骤,其中工作队列包括多个条目并且与第一指针和第二指针相关联,其中第一指针和第二指针中的每一个对线程是不可访问的,建立工作队列中的自由条目的范围,通过:将第一指针指向多个条目的第一条目;以及将第二指针指向多个条目的最后条目;生成指向多个条目的第一条目的第三指针,其中第三指针对线程是可访问的,生成指向多个条目的最后条目的第四指针,其中第四指针对线程是可访问的,将工作队列的第一条目指向包含指向被阻塞的信号量的信号量获得命令的命令块,经由第三和第四指针将工作加载到工作队列中,确定线程已经完成加载工作;以及释放信号量以使第一指针前进到工作队列中的下一个条目并且使并行处理子系统执行由线程所生成的工作。
本发明所公开的实施例的一个优势是它们使得在处理单元上执行的线程能够在处理单元内创建嵌套工作而不需要向CPU发出这样做的请求。结果是,跨CPU和处理单元之间的通信路径消耗较少的带宽,并且进一步地,CPU102的工作负载减少,从而提高效率。此外,线程能够执行有用的嵌套工作而不需要依赖CPU授权或不必等待CPU响应将所生成的嵌套工作提交到GPU的请求。
附图说明
因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。
图1是示出了配置为实现本发明的一个或多个方面的计算机系统的框图。
图2是根据本发明的一个实施例的、用于图1的计算机系统的并行处理子系统的框图。
图3A是根据本发明的一个实施例的、图2的任务/工作单元的框图。
图3B是根据本发明的一个实施例的、图2的并行处理单元之一内的通用处理集群的框图。
图3C是根据本发明的一个实施例的、图3B的流多处理器的一部分的框图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于辉达公司,未经辉达公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310518042.X/2.html,转载请声明来源钻瓜专利网。