充分利用并行处理器用于数据处理的制作方法

文档序号:6532907阅读:118来源:国知局
充分利用并行处理器用于数据处理的制作方法
【专利摘要】提供用于充分利用并行处理器以用于数据处理的示例性方法、系统和计算机程序产品实施例。在一个实施例中,仅举例而言,将并行处理器集合根据并行处理器的集合的索引分割成不相交子集。不相交子集中的每个不相交子集的大小对应于被指派为处理该层之一的数据组块的处理器的数目。向在不同数据组块中的不同层指派处理器中的每个处理器,从而处理器中的每个处理器忙碌、并且数据组块在数目等同于层的数目的时间步骤内被完全处理。设计从并行处理器的集合在时间步骤之一的索引到并行处理器的集合在后继时间步骤的索引的转换函数。
【专利说明】充分利用并行处理器用于数据处理

【技术领域】
[0001]本发明总体涉及计算机,并且更具体地涉及用于充分利用并行处理器以用于在计算环境中的数据处理的计算机。

【背景技术】
[0002]在如今的社会中,计算机系统司空见惯。可以在工作地、在家里或者在学校找到计算机系统。计算机系统可以包括用于处理和存储数据的数据存储系统或者盘存储系统。每天需要处理大量数据,并且当前趋势表明这些数量将在可预见的将来继续不断增加。一种用于缓解该问题的高效方式是通过使用去重。在去重系统下面的思想是通过对重复的数据进行定位并且仅存储它的第一出现来利用反复复制和转发可用数据的大量部分而无任何改变这样的事实。用指向存储的出现的指针替换后续部分,如果数据确实重复则这显著减少存储要求。处理很大量信息是待解决的关键问题,因此存在对例如通过使用并行工作的处理器的集合来改善处理的需要。在某些应用中,可以指派处理器集合以在若干级或者层中执行某个任务,并且可以用分级方式将任务反复拆分成子任务。系统的性能最终依赖于如何确切地将处理器分配给它们的子任务的布局,因此存在对于用于分级并行计算的改进的处理器布局的需求。
[0003]因此,在本领域中存在对解决前述问题的需求。


【发明内容】

[0004]如提到的那样,处理在存储系统中出现的很大量信息和数据是待解决的关键问题。例如在数据去重(数据去重指减少和/或者消除冗余数据)中,使用分组块方法将数据对象——该数据对象可以是文件、数据流或者某个其它形式的数据——分解成称为组块的一个或者多个部分。在数据去重过程中,数据的重复副本被减少或者消除,从而相应地留下最少量的冗余副本或者数据的单个副本。使用去重过程提供诸多益处、比如减少所需存储容量和增加网络带宽。由于这些和其它益处,去重在近年来已经在计算存储系统中作为高度地重要的【技术领域】而显现。在另一存储系统中,可以存在并发写入无关数据的多个事务。
[0005]因而并且鉴于前文,提供用于在多个初始化步骤之后充分利用并行处理器集合以对数据组块序列执行任务的各种示例方法、系统和计算机程序产品实施例,其中数据组块中的每个数据组块在若干时间步骤中且被多个层处理,而多个层在时间步骤中的每个时间步骤被多个处理器中的至少一个处理器处置。在一个实施例中,仅举例而言,将并行处理器集合根据并行处理器的集合的索引分割成不相交子集,从而不相交子集中的每个不相交子集的大小对应于被指派为处理该层之一的数据组块的处理器的数目。根据分割向在数据组块中的不同数据组块中的不同层指派处理器中的每个处理器,从而处理器中的每个处理器忙碌、并且数据组块中的每个数据组块在数目等同于多个层的数目的时间步骤内被完全处理。设计从并行处理器的集合在时间步骤之一的索引到并行处理器的集合在后继时间步骤的索引的转换函数。转换函数与指派相一致。附加系统和计算机程序产品实施例被公开并且提供有关优点。
[0006]从第一方面来看,本发明提供一种用于在多个初始化步骤之后充分利用多个并行处理器的集合、以在计算环境中由处理器设备对数据组块序列执行任务的方法,其中数据组块中的每个数据组块在若干时间步骤中且被多个层处理,多个层在时间步骤中的每个时间步骤被多个处理器中的至少一个处理器处置,该方法包括:将多个并行处理器的集合根据多个并行处理器的集合的索引分割成不相交子集,从而不相交子集中的每个不相交子集的大小对应于被指派为在多个层之一处理数据组块的多个处理器的数目;根据分割向在数据组块中的不同数据组块中的多个层中的不同层指派多个处理器中的每个处理器,从而多个处理器中的每个处理器忙碌、并且数据组块中的每个数据组块在数目等同于多个层的数目的时间步骤内被完全处理;以及设计从多个并行处理器的集合在时间步骤之一的索引到多个并行处理器的集合在后继时间步骤的索引的转换函数,其中转换函数与指派相一致。
[0007]从又一方面来看,本发明提供一种用于在多个初始化步骤之后充分利用多个并行处理器的集合、以在计算环境中对数据组块序列执行任务的系统,其中数据组块中的每个数据组块在若干时间步骤中且被多个层处理,多个层在时间步骤中的每个时间步骤被多个处理器中的至少一个处理器处置,该系统包括:在计算环境中操作的处理器设备,其中处理器设备适于执行用于执行本发明的步骤的方法。
[0008]从又一方面来看,本发明提供一种用于在多个初始化步骤之后充分利用多个并行处理器的集合、以在计算环境中由处理器设备对数据组块序列执行任务的计算机程序产品,其中数据组块中的每个数据组块在若干时间步骤中并且被多个层处理,多个层在时间步骤中的每个时间步骤被多个处理器中的至少一个处理器处置,该计算机程序产品包括非瞬态计算机可读存储介质,该非瞬态计算机可读存储介质具有其中存储的计算机可读程序代码部分,这些计算机可读程序代码部分包括:第一可执行部分,用于将多个并行处理器的集合根据多个并行处理器的集合的索引分割成不相交子集、从而不相交子集中的每个不相交子集的大小对应于被指派为在多个层之一处理数据组块的多个处理器的数目;第二可执行部分,用于根据分割向在数据组块中的不同数据组块中的多个层中的不同层指派多个处理器中的每个处理器、从而多个处理器中的每个处理器忙碌、并且数据组块中的每个数据组块在数目等同于多个层的数目的时间步骤内被完全处理;以及第三可执行部分,用于设计从多个并行处理器的集合在时间步骤之一的索引到多个并行处理器的集合在后继时间步骤的索引的转换函数,其中转换函数与指派相一致。
[0009]从又一方面来看,本发明提供一种用于在多个初始化步骤之后充分利用多个并行处理器的集合以在计算环境中由处理器设备对数据组块序列执行任务的计算机程序产品,其中数据组块中的每个数据组块在若干时间步骤中且被多个层处理,多个层在时间步骤中的每个时间步骤被多个处理器中的至少一个处理器处置,该计算机程序产品包括可由处理电路读取并且存储有指令的计算机可读存储介质,这些指令用于由处理电路执行用于执行用于执行本发明的步骤的方法。
[0010]从另一方面来看,本发明提供一种在计算机可读介质上存储并且可向数字计算机的内部处理器中加载的计算机程序,该计算机程序包括在所述程序在计算机上被运行时用于执行本发明的步骤的软件代码部分。
[0011]除了前述示例方法实施例之外,其它示例系统和计算机产品实施例被提供并且供应有关优点。已经提供前述
【发明内容】
以用简化形式介绍以下在【具体实施方式】中进一步描述的概念选集。这一
【发明内容】
未旨在于标识要求保护的主题内容的关键特征或者实质特征,它也未旨在于用作辅助确定要求保护的主题内容的范围。要求保护的主题内容不限于解决了在【背景技术】中指出的任何或者所有缺点的实现方式。

【专利附图】

【附图说明】
[0012]现在将参照如以下各图中所示优选实施例仅通过示例描述本发明:
[0013]图1图示了根据现有技术的具有示例存储设备的计算机存储环境,并且在该计算机存储环境中可以实施本发明的优选实施例;
[0014]图2图示了根据现有技术示出计算机中的数据存储系统的硬件结构的示例性框图,在该示例框图中可以实施本发明的优选实施例;
[0015]图3是图示根据本发明的优选实施例的用于为用于处理数据组块的分级并行计算而改进处理器布局的示例性方法的流程图;
[0016]图4是图示根据本发明的优选实施例的用于使转换函数受到约束的示例性方法的流程图;
[0017]图5图示了示出根据本发明的优选实施例的用于贮存库的数据组块的第一种子的示例性框图;
[0018]图6图示了示出根据本发明的优选实施例的用于若干初始数据组块的处理器布局的示例性框图;
[0019]图7图示了示出根据本发明的优选实施例的其中可以实现本发明的方面的处理器分布的示例性框图;
[0020]图8图示了根据本发明的优选实施例的索引0(零)至30(三十)=2n_2到编索引为O至4的层中的示例性分割;
[0021]图9图示了示出根据本发明的优选实施例的索引0(零)至30(三十)到与并行工作的处理器集合对应的子集中的另一分割的示例性表图;并且
[0022]图10图示了示出根据本发明的优选实施例的用于从时间步骤i向时间步骤i+1转换的索引集合布局的示例性框图。

【具体实施方式】
[0023]如先前提到的那样,随着对于用于存储信息的更快、更强大和更高效方式的增长需求,对存储技术的优化正在变成关键挑战。如以下将描述的那样,所示实施例的机制寻求解决用于处理数据组块的解决方案,其中指派一个或者多个并行处理器集合以在若干级中对数据组块执行任务,并且可以用分级方式将任务重复拆分成子任务,从而如果在某一级需要η个处理器,则在下一级中仅需它们的一半、也就是n/2个处理器。使用并行处理器集合以在若干分级连接的层中执行任务的可能性具有许多应用。
[0024]大型存储和备份系统可以借助如先前描述的去重来压缩,该去重通过对文本的重现(recurrent)子部分进行定位并且用指向先前出现的指针替换它们。可以向每个数据块指派哈希值,但是这仅可以检测相同块并且可能在使用大的块大小时不适合。用相似性替换相同性使得能够使用更大得多的数据组块,使用相似性的过程可以基于为用于大量串的哈希函数赋值。例如可以将例如I拍字节(PB) = 25°字节级的很大贮存库分割成固定或者可变大小的组块,向组块中的每个组块指派一个或者多个签名。组块的签名可以是为在组块内的k字节的每个连续子串产生的哈希值集合的函数。贯穿本说明书可以称为“种子”的这些子串的长度k可以是512位或者更多,但是赋值可能给处理时间带来负担。在本申请中使用的哈希函数是以大素数P为模的余数函数。换而言之,将种子B——该种子是长度为K的字符串一用它的ASCII编码来标识,并且将这一编码视为大的8k位长的整型标准二进制表示。哈希函数然后由下式表示:
[0025]h ⑶=B mod P
[0026](I)
[0027]其中B是余数函数并且P是大素数。给定组块C=X1 X2...Xi,其中Xi表示字母表的字符,哈希函数h可以被应用于长度为k的C的子串Bi的集合,其中:
[0028]Bi = Xi xi+l...xi+k_i
[0029](2)
[0030]是在C的第i个字符开始的子串。这可以对于在恒定时间i > I内被完成,因为赋值可以基于更早为Bh获得的值,但是这显然对于要使用的第一个值而言不成立。也就是说,Bi可能需要与k成比例的赋值时间。
[0031]具体而言,在改进余数函数的赋值时间时,在称为步骤O的第一级中,可以指派η个处理器的集合以对η个数据组块同时工作。在步骤I中,仅使用n/2个处理器,每个处理器对在先前步骤中赋值的两个组块作用,并且一般而言,在步骤i中,仅使用11/21个处理器,每个处理器对在先前步骤1-Ι中赋值的两个组块作用。最后,在步骤log a中,仅使用单个处理器。尽管所有处理器一起的总工作相对于在单个处理器上的等效依次赋值未减少,但是总处理时间如果对于并行执行的命令仅考虑一次则从0(n)运算减少至0(log η)运算。
[0032]然而仅在第一级中充分利用了处理器集合,并且事实上,对于η的合理选择而言,处理器中的多数处理器在多数时间保持空闲。占用的处理器的平均数目由下式给出:
[0033]((n+(n/2) + (n/4) +...+2+1)/(1+log η)) = ((2n_l)/(1+log n))
[0034](3)
[0035]其中对于n = 64,造成处理器的平均仅约28%忙碌。为了解决先前描述的低效率,所示实施例的机制寻求通过将若干任务分组到一起来增加处理器的效率以便实现对可用处理能力的充分利用、由此将非工作处理器的低效率减少至零。η个处理器的这一最优利用如以下描述的那样通过向在数据组块的各级的各种任务指派处理器来实现。在这样做时,贯穿说明书,对具体处理器指派的引用可以称为布局。
[0036]为了实现总是充分利用数目为η的处理器,可以并行执行在计算环境内的所需任务。更准确而言,由于给定的函数的对单个组块的赋值需要log η级,所以可以以使得可以并行同时处理log η个连续组块的序列的方式来指派处理器。因此,所示实施例的机制设计适当布局,该布局示出如何在每个时间步骤指派可用处理器。具体而言,布局在从步骤i向步骤i+Ι的时间转换内一致,而又符合待赋值的函数的分级定义。
[0037]转向图1,描绘其中可以实现本发明的方面的示例计算机系统10。计算机系统10包括连接到海量存储设备14和存储器设备16的中央处理单元(CPU) 12。海量存储设备可以包括可以在独立盘冗余阵列(RAID)中配置的硬盘驱动(HDD)设备。存储器设备16可以包括比如电可擦除可编程只读存储器(EEPROM)这样的存储器或者有关设备的主机。存储器设备16和海量存储设备14经由信号承载介质连接到CPU 12。此外,CPU 12还通过通信端口 18连接到具有附着的多个附加计算机系统22和24的通信网络20。计算机系统10可以包括用于计算机系统10的每个个体部件的一个或者多个处理器设备(例如CPU 12)和附加存储器设备16。
[0038]图2是示出根据本发明的计算机系统中的数据存储系统的硬件架构的示例框图200。示出主机计算机210、220、225,每个主机计算机充当用于执行数据处理的中央处理单元作为数据存储系统200的一部分。集群主机/节点(物理或者虚拟设备)210,220和225可以是用于在数据存储系统200中实现本发明的目的的一个或者多个新物理设备或者逻辑设备。网络(例如存储结构)连接260可以是光纤信道结构、光纤信道点到点链路、在以太网之上的光纤信道结构或者点到点链路、FICON或者ESCON I/O接口。主机210、220和225可以在本地或者分布于一个或者多个位置之中并且可以被配备有去往存储控制器240的任何类型的结构(或者结构信道)(在图2中未示出)或者网络适配器260、比如光纤信道、FIC0N、ESC0N、以太网、光纤、无线或者同轴适配器。数据存储系统200被相应地配备有用于通信的适当结构(在图2中未示出)或者网络适配器260。在图2中描绘包括存储控制器240以及集群主机210、220和225的数据存储系统200。集群主机210、220和225可以包括集群节点。
[0039]为了有助于更清楚理解这里描述的方法,在图2中示出存储控制器240为如以下将更具体描述的包括微处理器242、系统存储器243和非易失性存储装置(“NVS”)216的单个处理单元。注意在一些实施例中,存储控制器240由多个处理单元组成,每个处理单元具有它们自己的处理器综合体和系统存储器,并且由在数据存储系统200内的专用网络进行互连。另外,给定使用存储结构网络连接260,可以通过使用存储结构260以将多个存储控制器240与连接到每个存储控制器240的一个或者多个集群主机210、220和225连接到一起来运用附加架构配置。
[0040]在一些实施例中,存储控制器240的系统存储器243包括操作软件250并且存储程序指令和数据,处理器242可以访问这些程序指令和数据用于执行与执行本发明的步骤和方法关联的功能和方法步骤。如图2中所示,系统存储器243也可以包括这里也称为“高速缓存存储器”的高速缓存245或者与高速缓存245通信,该高速缓存用于缓冲分别是指写入/读取请求及其关联数据的“写入数据”和“读取数据”。在一个实施例中,高速缓存245在系统存储器243外部的设备中被分配、仍然保持可由微处理器242访问并且可以用来除了执行如这里描述的操作之外还提供防范数据丢失的附加安全性。
[0041]在一些实施例中,高速缓存245可以用易失性存储器和非易失性存储器来实施并且经由本地总线(在图2中未示出)耦合到微处理器242用于增强数据存储系统200的性能。在数据存储控制器中包括的NVS 216可由微处理器242访问并且服务于为如在其它图中描述的操作和执行提供附加支持。NVS 216也可以称为“持久”高速缓存或者“高速缓存存储器”,并且用可以或者可以未利用外部功率以保持其中存储的数据的非易失性存储器来实施。NVS可以出于适合于完成本发明的目的任何目的而被存储于高速缓存245中和与高速缓存245 —起存储。在一些实施例中,备用功率源(在图2中未示出)、比如电池向NVS 216供应充足功率以在丢失供给数据存储系统200的功率的情况下保持其中存储的数据。在某些实施例中,NVS 216的容量小于或者等于高速缓存245的总容量。
[0042]存储控制器240可以包括处理器指派模块255和转换函数模块257。处理器指派模块255和转换函数模块257可以是同时工作的一个完整模块或者是分离模块。处理器指派模块255和转换函数模块257可以具有某个内部存储器(未示出),转换函数算法可以在该内部存储器中存储未处理、已处理或者“半处理”的数据。处理器指派模块255和转换函数模块257可以与存储控制器240、主机210、220、225以及可以经由存储结构260远程连接的其它存储控制器240以及主机210、220和225的每个部件结合工作。处理器指派模块255和转换函数模块257 二者可以在结构上是一个完整模块或者可以与其它个体模块关联和/或包括在一起。处理器指派模块255和转换函数模块257也可以位于高速缓存245或者存储控制器240的其它部件中。
[0043]存储控制器240包括用于控制与主机计算机210、220、225的光纤信道协议的控制交换机241,用于控制全部存储控制器240的微处理器242,用于存储用于控制存储控制器240的操作的微程序(操作软件)250的非易失性控制存储器243,用于暂时存储(缓冲)数据的高速缓存245和用于辅助高速缓存245读取和写入数据的缓冲器244,用于控制用于向或者从处理器指派模块255和转换函数模块257传送数据的协议的、其中可以设置信息的控制交换机241。可以实施多个缓冲器244以辅助如这里描述的方法和步骤。
[0044]在一个实施例中,通过作为接口的网络适配器(这可以是光纤信道)260—即,经由称为“结构”的交换机——连接集群主机/节点210、220、225和存储控制器240。在一个实施例中,描述图2中所示系统的操作如下。微处理器242可以控制存储器243以存储来自集群主机/节点设备(物理或者虚拟)210的命令信息和用于标识集群主机/节点设备(物理或者虚拟)210的信息。控制交换机241、缓冲器244、高速缓存245、操作软件250、微处理器242、存储器243、NVS 216、处理器辅助模块255和转换函数模块257相互通信并且可以是分离部件或者一个个体部件。也可以与存储器243 —起包括若干部件(如果并非包括所有部件)、比如操作软件250。在所示设备内的部件内的每个部件可以被链接在一起并且可以相互通信用于与本发明相适的目的。
[0045]在一个实施例中,仅举例而言,可以考虑两个可能场景。首先,本发明的机制可以忽略每个处理器读取指派的数据而需要的时间、而是实际上考虑使用一些参数的可能性,这些参数仅依赖于数据组块的当前处理的层的索引而不是具体组块本身。这提供其中总是指派处理器以在数据(即数据组块)的相同层执行任务的布局。在一些场景中,也考虑输入操作,这带来其中对处理器的新数据的指派被减少至可能的最少处理器指派这样的布局。处理器仅在完成处理器已经释放的数据的任务之后读取新数据。如以下描述的所示实施例的机制举例说明这两个示例二者并且实现所有时间完全利用η个处理器而并行执行在计算环境内的所需任务。
[0046]图3是图示用于为用于处理数据组块的分级并行计算改进处理器布局的示例方法的流程图。该方法开始(步骤302)。将处理器根据它们的索引来分割(步骤304)。将待执行的任务分割成层(步骤305)。向任务的层指派处理器(步骤306)。在数目与层数目相等的时间步骤内处理数据组块(步骤308)。设计(和/或计算)从一个时间步骤向后继时间步骤的转换函数,从而该转换与处理器向层的指派一致(步骤310)。该方法结束(步骤312)。
[0047]转向图4,描绘流程图,该流程图图示用于使转换函数受到约束的示例方法。方法400开始(步骤402)。在与d层对应的d个时间步骤内处理每个数据组块,其中向级O指派的处理器数目是n=〗.1—1,并且假设2n-l个处理器可用。向在给定的层处理组块指派的处理器数目是在先前层向对数据组块的处理指派的处理器数目的一半(1/2)(步骤404)。考虑两个可能约束:第一约束是限制指派每个处理器总是对相同层工作,而第二约束是对于除了最低层之外的每层,每个处理器被限制为对与在先前层中相同的数据组块一起工作(步骤406)。在步骤408中,方法400检查哪些约束适用(例如该方法将确定给定的处理器是否被限制为总是对相同层工作)。如果是第一约束,则方法400可以按照整数O至2n-2来对处理器编索引,并且对于i=0,1,...,d-1,被指派对层i工作的n/2i个处理器是如下处理器,这些处理器的索引具有以O跟随有i个I为结束的标准二进制表示(步骤410)。如果第二约束适用,则方法400可以备选地按照整数I至2n-l对处理器编索引,并且对于i=0,1,...,d-1,被指派对层i工作的n/2i个处理器是如下处理器,这些处理器的索引具有以I跟随有i个O为结束的标准二进制表示(步骤412)。该方法结束(步骤414)。
[0048]图5图示示例框图,该框图示出用于贮存库的数据组块的第一种子。如先前提到的那样,所示实施例的机制寻求利用所有处理器的处理能力。然而仅对于层0,所有处理器将活跃,而对于下一层,这仅对于处理器的一半成立,并且继而对于附加级,对于处理器的四分之一成立,等等。对照而言并且为了解决这一低效率,举例而言,考虑N个独立数据组块的长序列,其中对每个组块的第一种子应用分级签名赋值。在典型设置中涉及到的大小可以视为IPB的贮存库,该贮存库被分割成固定大小为16兆字节(MB)的N个组块的序列从而实现N=226,这约为6400万个组块,对于这些组块中的每个组块,处理大小为512字节的第一种子,如在图5中描绘的那样。在图5中,数据组块504(在附图中图示为504A-E)被竖条502 (在附图中图示为502A-D)分离,并且签名必须被赋值的第一种子506 (在附图中图示为506A-D)以黑色显现。在该示例中的这一点,可以假设对于层O需要η个处理器并且2η-1个处理器可用。
[0049]通过转向图6进一步考虑和说明该示例,该图图示出用于示出若干初始数据组块的处理器布局的示例图。所示实施例的机制可以在时间O通过向第一组块(在附图中图示为编索引为“组块O”的组块)指派η个处理器来开始,其中处理器执行并行赋值算法的层
O。在后继步骤,在时间1,空闲处理器的1/2将执行用于组块O的层1,而重新指派前η个处理器以执行组块I的层O。在时间2,η/2个新处理器将执行用于组块O的层2,并且重新指派在先前步骤中对用于组块O的层I工作的n/2处理器以执行用于组块I的层I。重新指派在先前步骤中对用于组块I的层O工作的η个处理器以执行用于组块2的层O。如在图6中描绘的那样,实线指示当前工作处理器的块,并且虚线收回(recall)已经在更早时间步骤中对更低层工作的处理器。
[0050]—般而言,在时间i, i=0,1,..., log η,将可用处理器的集合分割成:
[0051](i+Ι)个非偶数部分,这些部分对前(i+Ι)个组块操纵如下:11/21新处理器可以执行组块O的层i,n/21-1处理器将执行组块I的层1-Ι,…,
[0052]n/2个处理器将执行组块1-Ι的层I,并且η个处理器将执行组块i的层O。换而言之,对于i〈log η,仅^ (η * - )2n +++++ 个处理器的在时间步骤i工作,但是在初始log
n-1个时间步骤之后,所有2n-l个处理器将工作。图6描绘用于初始步骤的场景。对于后继步骤,对于j=l,2,...,在时间步骤j+log η,—个处理器可以执行组块j - log η的层logn,两个处理器可以执行组块j - log n+1的层log n-1,四个处理器将执行组块j _ log n+2的层log n-2,…,n/2个处理器可以执行组块j-1的层I,并且n个处理器可以执行组块j的层O。这可以被概括如下:对于j=l,2,...和i=0,1,..., log η,在时间j+logn, n/2lQgn_i个处理器将执行组块j - log n+i的层log η -1。
[0053]图7图示示例框图,该示例框图示出其中可以实现本发明的方面的处理器分布。延续图5和6,图7对于在log η个初始步骤之后的一般情况概括图6的布局。如在图6中描绘的那样,有用于每个时间步骤的分离附图,但是在图7中叠加这些时间步骤中的每个时间步骤。更准确而言,图7中的每列对应于组块(在图7中编索引为数据组块j-4至j+1)之一。各种时间步骤在图7中由各种形状表征,其中具有相同填充图案的矩形代表同时工作的处理器集合。实心黑色矩形代表在时间j - log η并行工作的处理器集合:它们的一半对组块j工作,四分之一对组块j-Ι工作,以此类推。虚线图案是在时间j+log n+1在后继步骤中的工作处理器。因此在图6和7中观察到在从一个时间步骤到后继时间步骤的转换,所有处理器移向后续块、但是保持对相同先前层工作。关注具体组块,从一个时间步骤向后继时间步骤的转换对应于向下一更高层传递并且将对后继数据组块层工作的处理器数目减少一半(1/2)。
[0054]作为结果,通过向数据组块的各种层指派处理器中的每个处理器,无处理器将在log η个时间步骤的初始化阶段之后保持空闲,在该初始化步骤之后,所有2η-1个处理器将对log η个连续组块并行工作。另外,在log η个连续时间步骤内在log η层中对处理的数据组块中的每个数据组块的签名赋值。
[0055]在一个实施例中,机制可以设计布局,从而将处理器划分成分别为η、η/2、η/4、…、
2、1个处理器的固定集合。如在图7中描绘的那样,可以总是指派η个处理器的第一子集以对数据组块层零(0)工作。对于j = O, I,…log n,可以总是指派n/2j个处理器的子集以对层j工作。如果不同常数用于不同层,则优点可以被这一设计实现。例如在用于并行余数赋值的应用中,每个处理器对由两个数据块构成的输入作用。这些数据块对于层O为相邻,但是对于更高层,块隔开更远。块之间的距离依赖于层的索引。这转化成在处理器中的每个处理器执行的赋值过程中使用常数Ci,并且这一常数对于在相同层内作用的所有处理器相同,但是(^从层到层不同。如果总是向相同层i指派给定的处理器,则无需更新它的常数Ci,该常数可以被固定(例如硬接线)到处理器中。以下在图8中描述根据这一实施例的处理器索引的可能固定分割。
[0056]图8图示索引0(零)至30 (三十)=2n_2向编索引为O至4的层中的示例分割。因而在这一示例中具有η = 16。对级O作用的η个处理器是具有偶数索引{0,2,4,6,...}的处理器。对数据组块级I作用的n/2个处理器可以是具有1+4的倍数这一形式的索引{1,5,9,13,...}的处理器。对数据组块级2作用的n/4个处理器可以是具有3+8的倍数这一形式的索引{3,11,19, 27,...}的处理器,等等。一般而言,对于i=0,1,..., log η,对级i作用的11/^个处理器是具有(2^1) + (2^1)的倍数这一形式的索引的处理器。换而言之,一种描述这一分割的等效方式一该等效方式也具有示出这一编号方式确实引起分割的优点,也就是说,所有的索引都被考虑考并且它们都未出现两次——是通过引用编号O至2n-2的(1+log η)位标准二进制表示:η个偶数索引是以O为结束的索引,层I的索引是以Ol为结束的索引,然后为011,等等。一般而言,层i的索引是n/2i个编号,这些编号的(1+log η)位标准二进制表示以011,…I为结束,其中I的串的长度是i。在图8中描绘的表带来用于n-16的分区以及在十进制和二进制形式中出现的索引,其中强调它们的后缀。
[0057]这样的设计带来的一个挑战是在每个步骤,所有处理器可能必须读取新数据并且这一输入操作所引起的开销可能是使用并行化的所有益处荡然无存。为了解决这一挑战,图9图示索引1( 一)至31 (Si) = 2n-l到编索引为O至4的层中的示例分割。图9描绘通过将处理器根据它们的索引来指派使得要求处理器的仅一半、也就是2n-l中的η个处理器在每个时间步骤读取新数据——这是可能最小值,因为在每个时间步骤访问新数据组块——的更复杂编索引方案。其它n-Ι个处理器可以保持用它们在它们已经在层O被指派数据组块时已经读取的数据。这防止在为了分层处理数据组块而需要的log η个连续步骤期间输入命令引起的任何延迟。为了进一步示例与一般情况而不是初始log η个组块对应的说明,考虑以下示例。
[0058]机制可以按照从I至2η_1的整数对2η_1个处理器编索引,其中可以假设η是2的幂(例如n = 2d)。考虑这些索引的(左填充O) (d+Ι)位二进制表示。例如对于d = 4,索引是00001、00010、…、11110和11111。处理器被分割如下:向组块j指派的η个处理器是具有奇数索引的处理器(换而言之,具有等于I以2为模的索引的处理器),向组块j-ι指派的n/2个处理器是具有以10为结束的索引的处理器(换而言之,具有等于2以4为模的索引的处理器),并且一般而言,向组块j_r指派的n/f个处理器是具有以10…O为结束的索引的处理器(I跟随有r-Ι个零,换而言之,具有等于Z以为模的索引的处理器)。可以在下图10的上部分中看见处理器的这些块,其中在每列内按字典顺序对它们排序。用于每个块的固定索引1、10、100等被加框用于强调。
[0059]图10图示示例框图,该示例框图示出其中可以实现本发明的方面的用于从时间步骤i向时间步骤i+Ι转换的索引集合布局。图10示出对于d = 4和η = 16,从时间步骤i向时间步骤i+Ι转换的细节。对于数据组块j_4、j-3、j-2、j-1和j图示时间步骤i,并且对于数据组块j_3、j-2、j-1、j和j+1图示时间步骤i+1。
[0060]在对于d = 4、即η = 16从时间步骤i向时间步骤i+Ι传递时,向编索引为j = I的待处理的新组块重新指派对当前处理的连续组块j、j-1、…、j - log η中的每个组块工作的处理器的一半,而另一半保持用于处理器开始用于的、然后向更高层传递的数据组块。更准确而言,向新组块指派具有索引> =η的所有处理器,这些索引的二进制表示始于1(在图10的粗体矩形中描绘),而具有索引〈η的处理器保持用于早先的数据组块。为了实现一致编号,以下变换可以在时间步骤之间的转换中被应用于索引中的每个索引:通过将向左一位的循环移位应用于二进制表示从在时间i的索引A获得在时间i+Ι的索引B。这样的函数是双射,从而始于在I与2n-l之间的所有编号,获得在变换之后的相同集合。例如如果 A = 11001 和 23,则 B = 10011 = 19,而如果 A = 01010 = 10,则 B = 10100 = 20。换而言之,索引B由下式给定:
[0061]如果A > = η,则 B = 2 (A-n)+1
[0062]如果A < n,则 B = 2A(4)
[0063]如在图10中描绘的那样,在新组块j+1中的所有索引以I为结束,在组块j (现在处理层I)中的所有索引以10为结束,等等。如在图10中可见,新布局与先前时间步骤的布局相似。对于t = j, j-1, j-2和j_3,对应于时间i+1的在图的下部中的组块t的索引列与对应于时间i的在图的上部中的组块t-Ι的索引列相同。在末列(在该图的下部中的组块j = D中的元素未按字典顺序被排序以强调它们的原貌,但是可以容易检查这一列仅为在该图的上部的组块j的列中的元素的排列。
[0064]如在图9中描绘的那样,该表概括新布局并且引起与图8的先前分割表相似的分害I]。一种解释新分割的备选方式是通过注意在图8和图9的表之间的对应性。在图8中的表的某个位置的、编索引为i的元素对应于在与在图9中描绘的表相同的位置的、编索引为i+Ι的元素。
[0065]因此,如图10中所示,在一个实施例中,本发明提出一种处理器的编索引机制,该机制允许指派处理器仅对数据组块的在各层的部分作用。在每个时间步骤转换,重新指派处理器的部分使得处理器向数据组块的指派不变,这允许无限转换序列、而又持续保持所有处理器忙碌。
[0066]如本领域技术人员将理解的那样,本发明的方面仅示出实施这里提出的分级部件的基本思想的可能性之一而无意于限于以上参数。本领域技术人员可以将以上思想推广至不同布局。具体而言,分级树和对应整数表示未必需要是二进制而可以容易被推广至基数k,其中任何整数k> = 3。例如三进制布局(1-3)将意味着如果对层O需要η个处理器以对η个组块对函数赋值,则η/3而不是n/2个处理器可以对下一层工作,然后为n/9而不是n/4,等等。在从时间步骤i向i+Ι的转换指派处理器然后可以相应地基于根据三进制而不是二进制基数表示它们的索引。
[0067]所属【技术领域】的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在任何一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的程序代码。
[0068]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置、器件或者任意以上的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0069]计算机可读介质上包含的计算机代码可以用任何适当的介质传输,包括一但不限于——无线、有线、光缆、射频(RF)等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java?、SmalltalkTM, C++等,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN) —连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0070]以上将参照根据本发明示例实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0071]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
[0072]以上附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0073]尽管已经具体举例说明本发明的一个或者多个实施例,但是本领域普通技术人员将理解可以进行对那些实施例的修改和适配而未脱离如在所附权利要求中阐述的本发明的范围。
【权利要求】
1.一种用于在多个初始化步骤之后充分利用多个并行处理器的集合、以在计算环境中由处理器设备对数据组块序列执行任务的方法,其中所述数据组块中的每个数据组块在若干时间步骤中且被多个层处理,所述多个层在所述时间步骤中的每个时间步骤被多个处理器中的至少一个处理器处置,所述方法包括: 将所述多个并行处理器的所述集合根据所述多个并行处理器的所述集合的索引分割成不相交子集,从而所述不相交子集中的每个不相交子集的大小对应于被指派为在所述多个层之一处理所述数据组块的多个处理器的数目; 根据所述分割向在所述数据组块中的不同数据组块中的所述多个层中的不同层指派所述多个处理器中的每个处理器,从而所述多个处理器中的每个处理器忙碌、并且所述数据组块中的每个数据组块在数目等同于所述多个层的数目的所述时间步骤内被完全处理;以及 设计从所述多个并行处理器的所述集合在所述时间步骤之一的所述索引到所述多个并行处理器的所述集合在后继时间步骤的所述索引的转换函数,其中所述转换函数与所述指派相一致。
2.根据权利要求1所述的方法,其中所述多个处理器中被指派为在所述多个层之一处理所述数据组块的所述数目小于所述多个处理器中被指派为在所述多个层的先前层处理所述数据组块的处理器的数目。
3.根据前述权利要求中的任一权利要求所 述的方法,还包括使所述转换函数受到多个约束。
4.根据权利要求3所述的方法,其中所述多个约束包括将在所述时间步骤中的每个时间步骤的所述多个处理器中的至少一个处理器限制于所述多个层中被指派为处理所述数据组块的相同层。
5.根据权利要求3所述的方法,其中所述多个约束包括将所述多个并行处理器中被指派为在所述多个层中并非第一层的层处理所述数据组块的处理器集合限制为所述多个并行处理器的所述集合中被指派为在所述多个层中的先前层处理所述数据组块的子集。
6.根据前述权利要求中的任一权利要求所述的方法,其中所述多个并行处理器中可用的处理器的数目是n = 2d-l,其中d是所述多个层的数目,所述多个处理器中向级O指派的处理器的数目是n = 2d-l,并且所述多个处理器中被指派为在所述多个层中并非第一层的一层处理所述数据组块的处理器的数目是所述多个处理器中被指派为在所述多个层中的所述先前层处理所述数据组块的处理器的数目的一半。
7.根据前述权利要求中的任一权利要求所述的方法,其中所述多个并行处理器是按整数O至2n-2的编索引集合,对于i = O,1,…,d-Ι,所述多个处理器中被指派为在被编索引为i的所述多个层之一处理所述数据组块的处理器的数目是11/21,并且n/2i个所述多个并行处理器的所述索引是具有以O跟随有i个一为结束的、长度为(d+Ι)的标准二进制表示的n/2i个编号。
8.根据权利要求1至6中的任一权利要求所述的方法,其中所述多个并行处理器是按整数O至2n-l的编索引集合,对于i = O,1,…,d-Ι,所述多个处理器中被指派为在被编索引为i的所述多个层之一处理所述数据组块的处理器的数目是11/21,并且n/2i个所述多个并行处理器的所述索引是具有以I跟随有i个零为结束的、长度为(d+Ι)的标准二进制表示的n/2i个编号。
9.根据前述权利要求中的任一权利要求所述的方法,还包括与所述设计结合将所述转换函数选择为将向左移位至少一位的循环移位应用于所述多个处理器的所述索引的标准二进制表示。
10.一种用于在多个初始化步骤之后充分利用多个并行处理器的集合、以在计算环境中对数据组块序列执行任务的系统,其中所述数据组块中的每个数据组块在若干时间步骤中且被多个层处理,所述多个层在所述时间步骤中的每个时间步骤被多个处理器中的至少一个处理器处置,所述系统包括: 在所述计算环境中可操作的处理器设备,其中所述处理器设备适于: 将所述多个并行处理器的所述集合根据所述多个并行处理器的所述集合的索引分割成不相交子集,从而所述不相交子集中的每个不相交子集的大小对应于被指派为在所述多个层之一处理所述数据组块的所述多个处理器的数目,根据所述分割向在所述数据组块中的不同数据组块中的所述多个层中的不同层指派所述多个处理器中的每个处理器,从而所述多个处理器中的每个处理器忙碌、并且所述数据组块中的每个数据组块在数目等同于所述多个层的数目的所述时间步骤内被完全处理,以及设计从所述多个并行处理器的所述集合在所述时间步骤之一的所述索引到所述多个并行处理器的所述集合在后继时间步骤的所述索引的转换函数,其中所述转换函数与所述指派相一致。
11.根据权利要求10所述的系统,其中所述多个处理器中被指派为在所述多个层之一处理所述数据组块的 处理器的数目小于所述多个处理器中被指派为在所述多个层的先前层处理所述数据组块的处理器的数目。
12.根据权利要求10或者11所述的系统,其中所述处理器设备还适于使所述转换函数受到多个约束。
13.根据权利要求10至12中的任一权利要求所述的系统,其中所述多个约束包括将在所述时间步骤中的每个时间步骤的所述多个处理器中的至少一个处理器限制于所述多个层中被指派为处理所述数据组块的相同层。
14.根据权利要求12所述的系统,其中所述多个约束包括将所述多个并行处理器中被指派为在所述多个层中并非第一层的层处理所述数据组块的处理器集合限制为所述多个并行处理器的所述集合中被指派为在所述多个层中的先前层处理所述数据组块的子集。
15.根据权利要求10至14中的任一权利要求所述的系统,其中所述多个并行处理器中可用的处理器的数目是n = 2d-l,其中d是所述多个层的数目,所述多个处理器中向级O指派的处理器的数目是n = 2d-l,并且所述多个处理器中被指派为在所述多个层中并非第一层的一层处理所述数据组块的处理器的数目是所述多个处理器中被指派为在所述多个层中的先前层处理所述数据组块的处理器的数目的一半。
16.根据权利要求10至14中的任一权利要求所述的系统,其中所述多个并行处理器是按整数O至2n-2的编索引集合,对于i = 0,1,…,d-Ι,所述多个处理器中被指派为在被编索引为i的所述多个层之一处理所述数据组块的处理器的数目是11/21,并且11/^个所述多个并行处理器的所述索引是具有以O跟随有i个一为结束的、长度为(d+Ι)的标准二进制表不的n/21个编号。
17.根据权利要求10至14中的任一权利要求所述的系统,其中所述多个并行处理器是按整数O至2n-l的编索引集合,对于i = O,1,…,d-Ι,所述多个处理器中被指派为在被编索引为i的所述多个层之一处理所述数据组块的处理器的数目是11/21,并且11/^个所述多个并行处理器的所述索引是具有以I跟随有i个零为结束的、长度为(d+Ι)的标准二进制表不的n/21个编号。
18.根据权利要求10至17中的任一权利要求所述的系统,其中所述处理器设备还适于与所述设计结合将所述转换函数选择为将向左移位至少一位的循环移位应用于所述多个处理器的所述索引的标准二进制表示。
19.一种用于在多个初始化步骤之后充分利用多个并行处理器的集合、以在计算环境中由处理器设备对数据组块序列执行任务的计算机程序产品,其中所述数据组块中的每个数据组块在若干时间步骤中且被多个层处理,所述多个层在所述时间步骤中的每个时间步骤被多个处理器中的至少一个处理器处置,所述计算机程序产品包括: 计算机可读存储介质,可由处理电路读取并且存储有指令,所述指令用于由所述处理电路执行以用于执行根据权利要求1至9中的任一权利要求所述的方法。
20.一种在计算机可读介质上存储并且可向数字计算机的内部存储器中加载的计算机程序产品,包括软件代码部分,所述软件代码部分在所述程序在计算机上被运行时用于执行根据权利要求1至9中 的任一权利要求所述的方法。
【文档编号】G06F15/16GK104081378SQ201380007148
【公开日】2014年10月1日 申请日期:2013年1月17日 优先权日:2012年1月30日
【发明者】M·赫希, S·T·克莱因, Y·托夫 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1