当前位置: 首页 > 专利查询>辉达公司专利>正文

用于执行扫描运算的系统、方法及计算机程序产品技术方案

技术编号:2916715 阅读:224 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种用于有效地执行扫描运算的系统、方法及计算机程序产品。在使用中,通过利用并行处理器架构来遍历元阵列。此并行处理器架构包含各自能够物理上并行执行预定数目的线程的多个处理器。出于效率目的,可执行所述处理器中的至少一者的所述预定数目的线程以执行涉及所述元的数目的扫描运算,所述元的数目是所述预定数目的线程的函数(例如,倍数等)。

【技术实现步骤摘要】

本专利技术涉及并行处理器架构,且更明确地说涉及使用并行处理器架构执行计算算法。
技术介绍
并行处理器架构通常用于执行不同计算算法的宽广阵列。通常使用所述架构来执行的算法的实例是扫描运算(例如,“all-prefix-sums”运算等)。一个此扫描运算定义于表1中。                   表1      [I,a0,(a0⊕a1),···,(a0⊕a1⊕···an-1]),]]>具体来说,假设阵列[a0,a1,…,an-1]及“I”是算子的单位元,那么返回表1的阵列。例如,如果算子是加法算子,那么对阵列[3 1 7 0 4 1 6 3]执行扫描运算将返回[0 3 4 11 11 15 16 22]依此类推。尽管以上实例中阐述为加法算子,但此算子可以是以两个运算数运算的二元结合算子。为对具有大量元的阵列有效地执行此扫描运算,可以“树”样方式遍历所述元。例如,可将所述元视为“树叶”,可在第一层级处处理“树叶”以产生并临时存储包含第一元的和的第二层级元等。此后,可以类似方式处理所述第二层级元,且直到已达到根。为适应使用并行处理器架构的此处理,将每一阵列元指派给处理器的特定线程。通常,存在有限数目的处理器,而处理器各自又具有有限数目的线程(线程的量通常远小于阵列元的数目)。此外,由于线程共享从一个层级到下一层级的数据,因此在移动到下一层级之前必须完全完成每一前面层级的处理,等等。而,此在每一层级的处理时需要同步。换句话说,扫描运算必须等到线程的指派且在移动到下一层级之前完成对特定层级处的每一阵列元的处理。例如,假设1024个元正由能够处理1元/时钟循环的32个线程来运算,那么以上算法在移动到下一层级的处理之前必须等待32个时钟循环。在使用中,前述同步可能造成闲置线程及额外的等待时间。
技术实现思路
-->附图说明图1显示根据本专利技术的一个实施例用于利用并行处理器架构有效地执行扫描运算的系统。图2显示根据本专利技术的另一实施例用于对阵列执行“异或”扫描运算的方法。图3图解说明根据本专利技术的另一实施例的实例性“异或”扫描运算。图4显示根据本专利技术的再一实施例用于对较大的元阵列执行扫描运算的框架。图5图解说明其中可实施各种先前实施例的各种架构及/或功能性的实例性系统。具体实施方式图1显示根据本专利技术的一个实施例用于利用并行处理器架构101有效地执行扫描运算的系统100。在本说明的上下文中,并行处理器架构可包含任一架构,只要其包含并行运算的两个或两个以上处理器102A-N。在一个实施例中,此并行处理器架构可采取以下形式:图形处理器[例如,图形处理单元(GPU)等]或中央处理器单元(CPU)或配备有图形处理能力的芯片组。然而,当然,本专利技术预期其中并行处理器架构还采取其它形式(例如,通用计算处理器等)的其它实施例。如进一步所示,并行处理器架构的多个处理器各自能够物理上并行地执行预定数目的线程104。在一个实施例中,此对线程的物理执行是指能够同时物理上执行的线程的数目,此不同于以逻辑方式的执行(例如,使用时间分片技术等)。作为选项,每一处理器的线程可以单指令多数据(SIMD)方式运算。换句话说,处理器的所有线程可同时对不同数据执行同一指令。在一个实施例中,可将以此方式运算的此一组线程称为“卷曲”。此外,预定数目的线程可称为对应处理器的“卷曲大小”。在使用中,通过利用并行处理器架构来遍历元阵列。在本说明的上下文中,此阵列的元可包含能够经受扫描运算的任一组的值。例如,在一个实施例中,通常可由表达式[A,B,C…N]来表示所述阵列的值,其中所显示的值为数字值。当然,阐述此元阵列仅出于说明目的而无论如何不应被视为以任何方式加以限制。在遍历阵列元期间,可执行扫描运算。在本说明的上下文中,扫描运算可指涉及所述阵列的当前元及至少一个先前元的任一运算(如果可用的话)。在一个实施例中,扫描运算可包含all-prefix-sums运算。将在描述图2中所图解说明的不同实施例期间阐述关于实例性all-prefix-sums运算的更多信息。当然,本专利技术预期其它扫描运算(例如,涉及更多或更少元及其它算子等),只要所述扫描运算满足以上定义。出于效率目的,可执行至少一个处理器的预定数目的线程来执行涉及所述元的数目的扫描运算(例如,前述“卷曲大小”等),所述元的数目是预定数目的线程的函数。例如,在一个实施例中,可执行预定数目的线程以执行涉及所述元的数目是所述预定数目的倍数的扫描运算。在本说明的上下文中,线程的预定数目的前述倍数可包含任-->一整数(例如,1、2、3、4、5…N等)。在图1中所示实施例中,扫描运算可涉及等于线程的预定数目的元的数目(即,所述倍数等于1)。在任何情况下,可给特定处理器的每一线程指派一元以用于执行相关扫描运算。为此,如果不能一起避免的话,那么也可减小与线程之间的同步相关联的处理。换句话说,作为以上设计的结果,可准确地给每一线程指派一个元以执行扫描运算,从而使得特定处理器的所有线程可同时终止。作为选项,可利用任选XOR运算或类似运算来遍历所述阵列的元,以提供额外的效率。现在将关于各种任选架构及特征阐述更多说明性信息,按照用户的需要可以或可不利用所述各种任选架构及特征来实施前述框架。具体来说,将阐述至少一个额外实施例,其结合扫描运算使用“异或”来遍历元阵列。应极其注意,阐述以下信息仅出于说明目的,而不应被视为以任何方式加以限制。任一以下的特征可视需要并入,而并不排除所述的其它特征。图2显示根据本专利技术的另一实施例用于对阵列P执行“异或”扫描运算的方法200。作为选项,本方法可在图1的功能性及架构的上下文中实施。例如,可通过并行处理器架构(例如图1中所示的并行处理器架构)中的特定处理器的线程跨越多个阵列元来实施本专利技术。然而,当然,可在所需的环境中实施所述方法(例如,在没有图1的设计准则的情况下等)。还应注意可在本说明期间应用前述定义。如所示,所述方法通过将变量D设定为“1”初始化变量D而开始。参见运算202。当然,此初始化是任选的且如果存在的话,那么可以任一所需的方式来执行。接下来,所述方法在当回路203中继续直到变量D达到卷曲大小。参见决定204。同样,此卷曲大小是指能够物理上并行运行于并行处理器架构的特定处理器上的预定数目的线程。此外,在当回路内同步可能未必是需要的。具体来说,通过将阵列元的数目限制为小于或等于卷曲大小,那么在线程中间未必需要同步。如早期所提及,此同步涉及其中扫描运算必须等待线程的指派的情况且在移动到下一层级之前完成对每一阵列元的处理等。为此,本锁定步骤设计可避免其中第一线程尚未完成写入到存储器中后续线程需要读取或写入的共享部分的情况等。如不久将变得明了,变量D针对当回路203的每一迭代增加一倍。通过以此方式将变量D增加到两倍,便可将所述阵列处理为二元树。在此上下文中,变量D与此树的层级相关。在使用当期间,变量D保持小于卷曲大小,条件分支继续进行,如运算206-208中所示。具体来说,首先确定涉及变量D及线程-局部变量idx本文档来自技高网
...

【技术保护点】
一种方法,其包括: 通过利用包含多个处理器的并行处理器架构来遍历元阵列,所述多个处理器各自能够物理上并行地执行预定数目的线程;及 执行所述处理器中的至少一者的所述预定数目的线程,以执行涉及所述元的数目的扫描运算,所述元的数目是所述预定数目的线程的函数。

【技术特征摘要】
US 2007-9-27 11/862,9381、一种方法,其包括:通过利用包含多个处理器的并行处理器架构来遍历元阵列,所述多个处理器各自能够物理上并行地执行预定数目的线程;及执行所述处理器中的至少一者的所述预定数目的线程,以执行涉及所述元的数目的扫描运算,所述元的数目是所述预定数目的线程的函数。2、如权利要求1所述的方法,其中所述线程各自对不同数据执行单个指令。3、如权利要求1所述的方法,其中所述并行处理器架构包含图形处理器。4、如权利要求1所述的方法,其中所述扫描运算包含all-prefix-sums运算。5、如权利要求1所述的方法,其中在单个方向上遍历所述元阵列。6、如权利要求1所述的方法,其中利用“异或”运算来遍历所述元阵列。7、如权利要求1所述的方法,其中所述函数包含倍数。8、如权利要求7所述的方法,其中所述倍数为1。9、如权利要求7所述的方法,其中所述倍数至少为2。10、如权利要求9所述的方法,其中对所述阵列的多个部分执行所述扫描运算,所述多个部分各自包含等于所述预定数目的元数目。11、如权利要求10所述的方法,其中所述阵列的所述部分不重叠。12、如权利要求10所述的方法,其中在对所述部分中的第一者执行所述扫描运算的所述线程与对所述部分中的第二者执行所述扫描运算的所述线程中间执行同步。1...

【专利技术属性】
技术研发人员:萨姆拉M莱内蒂莫O艾拉马克J阿利斯
申请(专利权)人:辉达公司
类型:发明
国别省市:US[美国]

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

1
相关领域技术
  • 暂无相关专利