对称的多处理集群环境中的进程间的通信的制作方法

文档序号:6569548阅读:161来源:国知局
专利名称:对称的多处理集群环境中的进程间的通信的制作方法
技术领域
本发明总地涉及消息处理,更具体地,涉及在对称的多处理
(SMP)集群环境中在各进程间传递集合通信的消息。
背景技术
对称的多处理器(SMP)是指计算系统中硬件的一个方面,更具 体地,涉及处理器平面的物理布局和设计。这样的多处理器单元的一 个特征是全局存储器的共享以及对该SMP系统的输入/输出(I/O )的 同等的访问。SMP集群(cluster )是指这样一个环境,其中多个SMP 系统/节点耦合到一起用于并行计算。SMP集群变得越来越受欢迎, 目前广泛地应用在科学和工程并行计算领域中。这些集群环境典型地 包括数百个SMP节点,这些节点由低延迟、高带宽交换网络,(如 纽约Armonk的IBM公司提供的高性能交换机(HPS))连接。每 个SMP节点具有例如2到64个CPU并且总是具有多于一个交换机 适配器来桥接交换机与单个的适配器功能之间的差距。例如,可以在 具有8个IBM Power4的CPU的IBM的eServer pSeries655上安装 两个交换机适配器。
作为进一步的背景技术,消息传递接口 (MPI)标准定义了下面 的方案并行作业中的各进程在通信域(或者"通信集")内交换消息, 该通信域保证该域内消息的完整性。 一个域内发布的消息不与另 一域 内发布的消息互相干扰。 一旦一个并行作业开始,需要时,各进程的 子集可以协作来形成分开的通信域。
MPI标准定义了 一组集合通信(collective communication )操作。 某些MPI集合通信是有根(rooted )的,意思是消息的源或者宿(sink) 之一仅为一个MPI进程。这些集合通信是用于一对多或多对一通信模式的。使用最多的是MPI_Bcast和MPI_Reduce。无根(non-rooted) 的集合通信,诸如MPI—Barrier 、 MPI—Allreduce和MPI—Alltotal是 用于多对多通信模式的。
在SMP集群上,集合通信(例如发生在MPI通信集的上下文内) 通常遵守分层消息分布模型来利用每个SMP节点上的快速共享存储 器通信通道。但是,随着交换技术的快速发展,单个的MPI进程经 常不能充分利用可以得到的交换网络容量。剥离技术已经被用来获取 比一个适配器可提供的更高带宽,但是不能有助于满足对延迟的要 求。
于是,需要一种用于SMP集群环境的集合通信的新的通信方法, 其中交换机/适配器容量被充分利用,共享的存储器有助于集合通信操 作的SMP间通信部分。

发明内容
通过提供一种在对称的多处理(SMP )集群环境中的进程间的通 信方法来克服已有技术的缺点并提供附加的优点,其中SMP集群的 至少一些SMP节点包括多个进程。该方法包括(i)在SMP节点 处以节点内方式利用该SMP节点的共享存储器在各进程之间传送集 合通信的消息;(ii)响应于传送(i),同时地从n个SMP节点向 m个其它SMP节点以节点间方式传送集合通信的多个消息,其中n 或m至少之一大于1,并且该同时传送由该n个SMP节点或m个其 它SMP节点至少之一的多个进程执行。
在改进的方面,同时传送(ii)包括以节点间方式同时从以下之 一传送多个消息 一个SMP节点到多个其它SMP节点,多个SMP 节点到一个其它SMP节点,或者多个SMP节点到多个其它的SMP 节点。至少一个SMP节点或至少一个其它SMP节点的多个通信通道 用来方便多个进程执行同时传送,此外,传送(i)和同时传送(ii) 中涉及的SMP节点和进程可以在产生^f吏用的通信集时定义。
在另外的方面,提供了一种在对称的多处理(SMP)集群环境中的进程间通信的系统,其中SMP集群的至少一些SMP节点包括多个 进程。该系统包括用来在SMP节点处以节点内方式利用SMP节点的 共享存储器在各进程之间传送集合通信的消息的装置;响应于该节点 内传送,同时地从n个SMP节点向m个其它SMP节点以节点间方 式传送集合通信的多个消息的装置,其中n或m至少之一大于l,并 且该同时传送过程由该n个SMP节点或m个其它SMP节点至少之 一的多个进程执行。
在另外的方面,提供了由至少一个计算机可读的至少一个程序存 储设备,该存储设备有形地包含可由该至少一个计算机执行的指令的 至少一个程序来执行对称的多处理(SMP)集群环境中的各进程间的 通信的方法。该SMP集群的至少一些SMP节点包括多个进程。该方 法包括在SMP节点处以节点内方式利用该SMP节点的共享存储器 在各进程之间传送集合通信的消息响应于该节点内传送,同时地从 n个SMP节点向m个其它SMP节点以节点间方式传送集合通信的多 个消息,其中n或m至少之一大于1,并且该同时传送由该n个SMP 节点或m个其它SMP节点至少之一的多个进程执行。
此外,通过本发明的技术还可以实现其它的特征和优点。本发明 的其它实施例和方面在这里将被详细说明并考虑作为权利要求的一 部分。


作为本发明的主题被特别地指出并明确地限定在本说明书的结 束部分的权利要求中。本发明的前述的以及其它的目的、特征和优点 将从下面的结合附图的详细说明中变得显而易见。
图1描述了结合和使用了本发明的一个或多个方面的对称的多 处理(SMP)集群环境的一个实施例;
图2描述了在SMP环境或非SMP环境之一中的使用传统的二 元树来在各进程之间分配消息的MPI_Bcast通信方法;
图3描述了在SMP集群环境中使用二元树来分配MPI一Bcast消息的另一通信方法;
图4描述了又一通信方法,在SMP节点之间使用消息的二元树 分配,使用SMP内部的集合通信级共享存储器来分配MPI一Bcast消 息;
图5描述了根据本发明的一个方面的同时通信方法的一个实施 例,用来在SMP节点内部传送MPI_Bcast消息,后继以消息在SMP 节点之间的同时传送;
图6描述了检测结果的示图,显示出使用根据本发明的特定方面 的图3、 4、 5中的不同消息通信方法的MPI—Beast执行时间相对于消 息大小的关系;
图7是根据本发明的一个方面的用来传送同时MPI_Bcast消息 的通信方法的一个实施例的流程图8是根据本发明的一个方面的用来在通信集产生时确定通信 算法的选择的一个实施例的流程图;及
图9是根据本发明的一个方面的用来使用在通信集产生时选择 的通信算法在集合通信时间确定一种通信方法的实施例的流程图。
具体实施例方式
总地来说这里提供了一种新的通信方法,用来在对称的多处理 (SMP)集群环境中的各进程之间传送集合通信的消息。该SMP集 群的至少一些SMP节点包括多个进程。该技术包括初始地在SMP节 点以节点内方式在各进程间传送集合通信的消息。该节点内消息传送 是利用SMP节点的共享存储器来完成的。例如,在广播操作期间, SMP节点的根进程可以存储一个消息到共享存储器,后者于是可被该 SMP节点的多个其它进程访问。响应于该节点内传送,该通信方法然 后提供从n个SMP节点到m个其它SMP节点的节点间的集合通信 的多个消息的传送,其中至少n或m之一大于1。该同时传送由n个 SMP节点的多个进程或m个其它SMP节点的多个进程执行。虽然下 面是结合广播操作来说明,但是本领域的技术人员会注意到这里的通信方法很容易用于其它的有根或无根的集合通信。
图1示出了结合和利用了本发明的一个或多个方面的处理环境
的实施例。在此特定例子中,处理环境100包括由连接部分104耦合 到一起的多个计算或处理节点102,例如IBM公司提供的pSeries服 务器,连接部分104可以是包交换网络,诸如也由IBM公司提供的 SP交换机或高性能交换机(HPS)。还要注意,图l仅为示例。在每 个处理节点内,提供了多个处理器,运行多个用户进程106。这些处 理器经低延迟、高带宽连接部分相互耦合并由例如IBM公司提供的 AIX或LINUX的操作系统管理,来提供对称的多处理(SMP )功能。 在一个例子中,该多处理功能通过使用多个处理线程来激活,每个处 理线程在一个处理器上执行。此外,在一个实施例中, 一个或多个处 理器其自身可能提供多个线程。即,在本例中, 一个或多个处理器可 能能够执行两个线程。在其它例子中, 一个或多个处理器能执行任何 数量的线程。
在环境100中,消息包或消息利用共享存储器107在节点内(即 在SMP节点内)传送。SMP节点的一个或多个进程106可以存储一 个消息到共享存储器,后者然后可以由该SMP节点的一个或多个其 它的进程访问。利用耦合到包交换网络104的通信适配器112,消息 被在节点间(即在SMP节点之间)传送。SMP节点与其相应的通信 适配器之间的通信包括用来发送和接收包的功能。在一个实施例中, 该接口包括一个消息传递接口 (MPI) 110,这里也称为MPI库。
对适配器的访问由每个SMP节点内的核/扩展设备驱动器108来 协调。扩展108包括一组功能,这些功能具有操作系统(例如IBM公 司提供的AIX操作系统)本身的权力。需要时,核/扩展授权用户进 程106使用一个或多个适配器112,并具有中断该用户进程的能力, 用户进程106经MPI库110与适配器112通信。MPI库在例如IBM 公司的出版物中作了更详细的说明,标题为"用于AIX 5L的IBM并 行环境MPI子例程参考",版本4,第2次发行,第1次修正(2005 年8月),该内容的全部结合在此作为参考。这里使用的"并行作业,,是在各处理器集合上执行的一组进程或 任务。各进程合作并交换数据以便联合地解决一个问题。 一个"任务,,
或"进程,,是一个执行程序(指令序列)的实例(instance),包括一 个或多个控制流中的地址空间。 一个"地址空间,,是一个进程可以参考 或访问的一组存储器位置。"MPI通信集(communicator)"是包括一 群通信进程的逻辑实体。在一个例子中,通信集可以用称为上下文ID 的 一个标识符来实现。"通信域"是包括通信集的进程在其中交换消息 的上下文。通信域具有稳定性和孤立性的属性,即在该域内发送的消 息不会被递送到该域之外(即在一个不同的通信集中)的进程。"通 信域,,和"通信集"这里是互用的。"集合通信,,是每个通信集成员必须
参与其中的一个操作。
虽然这里参考MPI集合通信操作、如MPI_Bcast操作予以说明, 这里提出的概念可以容易地应用于对称的多处理(SMP)集群环境中 的各进程之间的任何集合通信的消息传送,根据定义该环境中包括在 每个SMP节点的共享存储器。这里提出的是用于SMP节点上的集合 通信的新的共享存储器消息通信方法。该新方法允许多个同时发生的 SMP间通信。利用此同时通信方法,交换机/适配器功能被更加充分 利用,并且共享存储器的使用也方便了集合通信操作的SMP间通信 部分。
在交换网络上,MPI集合通信操作通常映射为一系列点对点发 送/接收通信。此点对点消息经过遵循一定的顺序和拓朴结构的交换链 路被传送。当消息不是非常大时,MP!J8cast实现总是使用一种类型 的树算法来最优地实施。MPI一Bcast的根是该树的根进程。二元的、 二项式的和其它的alpha树是最常用的。消息到达每个任务所需的时 间大约为
T=H*(L+0) (1)
这里L是把消息从一个节点通过该交换链路传送到另一节点的 时间。O是MPI进程准备该消息并提供到该交换机以便传送的时间, H是树的高度。通常H = Log2N,这里N是树的节点数目(参与到MPI—Beast操作中的MPI进程的数目)。该对数的底数反映了 L和 O之间的关系,这里O接近于L,底数为2时可以获得最优性能。如 果O小得多,那么底数可以比2大,树的高度就会减小。在此情况下, 一旦当前的消息发送出去该进程就会处理下一消息。当O很小时,消 息会被以很快的序列发出使得该序列化过程无害。在另 一 网络例子 中,O更加接近于L,所以父节点的多个进程被用来去掉该序列化过 程而仍然采用大于2的对数底数。
图2显示了总地表示为200的二元树MPI—Bcast操作的例子。 箭头代表消息传送。在该MPI一Bcast中有16个MPI进程(标为0 -15),进程0是根。树的高度为4。
在单处理器计算机的集群上,上述的通信算法会工作得很好。但 是,在SMP集群上,此算法若不做进一步的改进的话,通常不能最 优地工作。其中的原因是在SMP集群中有2个不同的具有不同性能 特征的通信通道,即共享存储器和适配器交换机。共享存储器快于交 换机。
4吏用上述算法的SMP集群上的MPI一Bcast的时间为 T-H^(In+0)+H2气L2+0) (2) 这里,H广Log2N, N是集群中的SMP节点数目,(2.1) L产交换机延迟,
H2 - Log2M,这里M是每个SMP节点上的MPI进程的数目,
(2.2)
L2-共享存储器的延迟。
图3描述了运行在具有4个SMP节点301的SMP集群环境上 的MPI_Bcast操作300的一个例子,每个SMP节点上有4个进程或 任务,即一共有16个进程(再次标记为0-15)。使用上述算法,N =4, M = 4, & =2, H2 = 2。
为SMP集群环境已经开发出增强的通信算法。这些通信算法遵 循层级模型,其中在SMP内使用共享存储器,每个SMP的一个MPI 进程代表自身和该SMP上的所有其它MPI进程参与SMP之间的通信。这使得集合通信的SMP内部分和SMP间部分具有不同的优化。 在此方法中,共享存储器用在集合操作级而不是点对点级。例如,在 MPI_Bcast中,对于每个SMP节点选择一个进程作为该SMP节点上 的进程的代表。根进程是称为根SMP节点的其SMP节点上的代表。 在图4的SMP集群环境通信例子中,最左的SMP节点401是根SMP 节点。代表进程首先经SMP间通信(即进程0与8之间的消息通信、 进程8与12之间的消息通信和进程0与4之间的消息通信)在它们 自己之间执行MPI—Bcast。 一旦完成了 SMP间的通信,每个SMP节 点处收到的消息被从代表节点的緩冲器复制到共享存储器緩沖器,相 同SMP节点上的其它进程于是同时地从共享存储器緩冲器复制数据。 共享存储器緩冲器对于节点上的所有进程都是可访问的,因此对数的 底数可以是公式(2.2)中的M, SMP内的子树变成平的。这将所花 的时间减少为
T-H^0U+O)+(L2+O) (3)
图4显示了在图3中相同的SMP集群环境中使用此通信算法400 执行MPI一Bcast。不同之处在于,经共享存储器传送消息的过程由多 个进程同时执行。SMP之间的通信部分保持相同。
当要广播的消息很大时,可以将其分割成较小的若干个部分,使 用相同的方法逐个地广播。也存在其它的通信算法。例如,MPI_Bcast 的根可以将消息分割成小的部分并向每个非根进程发送一个单独的 部分。然后,所有的进程执行MPLAUgather来完成该消息。但是, 当在SMP集群上应用这些通信算法时采用一个通常的方法,即对于 每个SMP节点一个进程参与到SMP间通信中。已有技术中的各种共 享存储器优化方法仅关注集合操作的SMP内部分。对于较大的SMP 集群,通信的SMP间部分决定了总的性能,来自上述共享存储器优 化方法的加速效益是有限的。
因此,这里提出一种新的SMP集群上的集合通信的方法,可以 显著改善性能。此方法称为同时(concurrent)通信方法,它得益于 SMP节点内的共享存储器通信的同时性和SMP间交换机通信的同时性。此通信方法最大地改善了小消息集合通信,如果每个SMP节点 有足够的适配器和网络容量增减,那么这种益处也可以扩展到大消 息。
当前的交换技术提供比单个进程可以完全使用的带宽容量更大 的带宽,并且可以允许节点上的多个任务来同时使用适配器和交换机 而不会对于每个进程显著损害其性能。相比于适配器和交换机的能 力,仅使得一个进程驱动SMP间通信限制了集合通信的总体性能。 同时通信方法通过不是集中于一个单独的进程并放弃充分的适配器/ 交换机容量而改善了 SMP间通信的性能。在共享存储器优化的帮助 之下这是有可能的。该同时通信方法还包括SMP内和SMP间阶段。 在SMP内阶段,在集合通信级上执行共享存储器优化。在SMP间通 信中,对于每个SMP,多于一个MPI进程(如果需要则每个进程) 访问交换机网络来参与传送消息。因此,公式(2.1)中的对数的底数 加大,可以大到M。树变得更平,总体性能改善,特别是对于较大的 SMP节点计数。
再次,利用MPI一Bcast作为例子,同时通信算法中涉及的步骤
包括
(1)非根SMP节点上的代表负责从其它SMP节点接收消息。 这是因为在MPI一Bcast中将只有一个消息发送到每个SMP。这绝不 限制多少个进程参与到SMP间通信中。事实上,在MPI_Bcast中, 对于每个SMP,多个进程同时发送消息到其它SMP节点,在 MPI_Reducet,对于每个SMP,多个进程同时接收消息。在某些无 根的集合通信、诸如MPI一Barrier和MPI一Allgather中,对于每个 SMP,多个进程既参与发送又参与接收,
(2 )基于在MPI通信集产生期间收集的并在每个进程中高速緩 存的进程布局知识,SMP节点可以被组织成高度为LogmN的树,这 里N是集群中的SMP节点数目,m是被选择参与SMP间通信的每 个SMP的MPI进程的数目。M-元树为LogJV树的例子之一,其中 每个非叶子节点具有m个子节点。每个进程基于它所属的SMP的位置计算其父SMP和子SMP。
(3 )在根SMP上经集合通信级共享存储器进行SMP内Bcast。 此步骤所需时间为L2 + 0。
(4)根SMP上的M个进程在一个循环中开始SMP间广播。在 每次迭代中,消息被发送到m个子SMP节点。发送消息到m个子 SMP节点由根SMP的m个进程同时进行。在第j次迭代中,根SMP 的第i个进程发送消息到第(m*j+l)个子SMP节点上的代表。这里 0<i<=m, 0<=j<LogmN。每个迭代所需时间为Lf+O, L 可以大于L" 这是由于有多个进程同时访问交换机/适配器。但是L 应比L^m小 很多,这是由于现代的交换机适配器允许多个同时访问而不使它们串 行化。
(5 )在非根SMP节点上,代表等待消息且其它进程等待SMP 内Bcast。 一旦代表接收到消息,它就加入到该SMP内Beast并经集 合通信级共享存储器传递该消息到其它进程。为了使共享存储器节点 内Beast与SMP间通信交叠,代表进程可以首先直接地将消息接收 到共享存储器緩存器。 一旦接收过程完成,此SMP上的所有m个进 程可以利用共享存储器緩存器作为发送緩存器开始将消息提供到子 SMP节点,用于SMP间通信。在消息处于到子SMP节点的路径上 之后,这些进程可以从共享存储器緩存器复制消息到它们自己的与用 户指定的接收緩存器。
(6)在SMP内Beast之后,如果非根SMP不是树的叶子节点, 那么该SMP上的m个进程进入类似于步骤(4)的循环,并发送消 息到子SMP节点上的代表进程。
由于在每个迭代中,消息到达的SMP节点的数目变成m倍,任 何进程所进行的迭代的数目最大为LogmN。
图5显示了运行在具有多个节点501的SMP集群500上,并使 用上述同时通信算法的MPI—Bcast。在此例子中,进程O, 4, 8, 12 是选出的代表。M = 3。 SMP间通信同时进行,所以用于节点间SMP 传送的时间仅为1^+0。但是在图4中,对于SMP间通信需要的时间为2*(LrK))。由于该同时通信方法不受一个进程发送消息的能力的限 制,可以获得更好的同时性。这会导致更好的适配器/交换机的使用率。
下面列出了用于概括的算法的伪码。此伪码假定进程0是根并且 各进程在SMP节点上均匀分布
rank:此进程的阶,
srank:此进程处于其上的SMP的阶,
size:进程总数,
ssize: SMP节点总数,
psize:对于每个SMP的进程数,
prank:此进程在SMP内的阶,
base:参与SMP间通信的每SMP进程数。
MPI_Bcast
if this task is non-root representative
for Cur - 1 to ssize, cur multiply by (base +1) each time if srsnk is less than Cur * (base +1))
source process rank is ((sx:anlc = cur)/base) psize +
《(srank - cur) mod base) receive message from source process break
intra-SMP Beast through collective shared memory if prank is less than base
for Cur Cur (base +1> to ssize, Cur multiply by (base +1)
each time
destination process rank is (Cur + srank base + prank) psize
if the destination process rank is less than size send message to destination,
如上所述,利用此算法消息到达每个进程所需时间为
T-H,(0U,+O)+(L2+O))+(L2+O) (4) 这里,Hf是较平的树的高度,并且H -LogmN。最右的项是步 骤(3)的成本(cost)。比较等式(4)和等式(3),对于树的每级 来说在SMP内通信上花费了额外的时间,但是在SMP间通信上花费了较少的时间,这是由于树的高度减小了。只要ra的选择值满足下列 条件
HZd+O) = 1^,*(1^+0)> H^(LrK)) (5) 整体性能就会得到改善。通常,共享存储器延迟远小于交换机延 迟L!,上述条件不难满足。当m等于l时,该算法减小到已有技术 的算法。另一方面,所选择的m不一定小于每个SMP的进程数,并 且简单的修正可以支持该公式。
图7是一个实施例的流程图,用来在对称的多处理集群环境中在 集合通信的进程之间同时通信。集合通信(在一个例子中)为 MPI_Bcast。该集合通信中的每个进程都执行此图的通信方法。此过 程通过确定该进程在整个集合通信(即进程组)和用户进程正在其中 运行的SMP节点中的阶(705)来开始(700)。此外,确定该进程 所处的SMP节点的阶。然后该方法确定该进程是否为SMP节点上的 第一进程而不是根进程(710)。假定该进程是SMP节点上的第一进 程而不是根进程,那么变量"Cur"被设置为1 (715) 。 Cur记录接收 消息的SMP节点的数目。接下来,变量Cur被乘以每个SMP节点的 参与到SMP间通信的进程的数目加1的和(720)。该方法确定变量 Cur此时是否大于进程处于其上的SMP节点的阶(725 )。如果"否", 那么变量Cur再被乘以每个节点的参与到SMP间通信的进程的数目 加1的和《
一旦变量Cur大于进程的SMP节点的阶,那么消息被发送到下 一级中的SMP节点。计算基于此SMP节点的阶和变量Cur的源进程 的阶(730)。然后从源进程接收每个传送的消息(735)。
如果该进程不是SMP节点上的第一进程,或者是^f艮进程,或者 该进程是接收进程,那么执行SMP内共享存储器广播(740)。该通 信方法确定进程在SMP内的阶是否小于每个SMP的参与SMP间通 信的进程的数目(745)。如果是,那么广播通信完成(760)。否则 该方法将变量Cur乘以每个节点的参与SMP间通信的进程的数目加 l的和(750),并查询变量Cur是否大于进程数(755)。如果是,该通信方法完成(760)。否则基于此进程的阶和变量Cur来计算目 的进程的阶(780),并且消息被发送到目的进程(785)。之后,该 方法确定变量Cur是否大于进程数(755), 一旦是则该处理完成。
图8描绘了一个用来在通信集产生时设置通信算法的方法。同 样,通信集是一个抽象的概念,代表一组进程,这些进程能够在它们 之间通信。每个进程被赋予一个用来标识该通信集的句柄,还被赋予 一个在该通信集内分配的阶。通信集的生成是在一个集合通信操作中 完成的,在该操作中将作为新通信集成员的每个进程都必须参与。一 旦生产了一个通信集,该通信集中的成员的数目以及分配到每个进程 的阶都不能改变。所有的通信都在某个通信集的上下文中指定,比如 当 MPI_COMM_WORLD 的进程 0 执行 MPI_Send 到 MPI_COMM_WORLD的第1阶(rankl) , MPI一COMM一WORLD 的进程1从MPI_COMM_WORLD的第0附rank0 )执行MPI_Recv。
在MPI中,每个进程必须调用MPI_Init,在调用MPIJnit返 回后,每个调用进程已经被提供了称为MPI_COMM_WORLD的通 信集并且已经被分配了一个MPI_COMM_WORLD中的阶。 一旦一 个通信集(即MPI_COMM_WORLD )可用,附加的通信集可以通过 操作产生,该操作利用先前存在的通信集来执行需要的通信。在启动 具有N个进程的MPI作业时,作业开始架构必须生成和为每个进程 提供所需的信息以便具有可用的MPI_COMM_WORLD。
因为新通信集的生成是在一组进程中集合的(这些进程能够利用 已经生成的通信集来交换信息),此生成过程可以给每个进程关于在 新的通信集中将有多少个进程、哪些进程位于所述每个SMP上的信 息,并向每个进程分配一个该进程位于其上的SMP内的阶。关于每 个SMP具有一个进程还是几个进程的信息以及每个SMP是否具有相 同数目的进程的信息可以被推导出来。可以决定一个特定的算法是否 适合于新的通信集的大小和布局,并且新的通信集的每个成员可以记 录该决定。通信集生成的最简单的例子是当所有的进程调用 MPI_COMM_WORLD上的MPI_Comm—dup ,并且每个进程得到一个新的通信集的句柄,该新的通信集映射MPI_COMM_WORLD但 是不同于它。从生成开始,在通信集上进行调用(例如MP^Bcast) 的该通信集的每个进程可以使用产生该通信集时选择并在每个进程 同样记录的通信算法。
于是参考图8,通过收集例如集合通信中的进程数目和作业拓朴 等的因数(805),通信算法选择过程开始(800)。查询共享存储器 是否可用(810)。如果"否",那么变量Alg被设置为"常规",意思 是要使用常规的通信方法,如图3所示的方法。假定共享存储器可以 使用,查询同时SMP间通信是否有益(825 )。如果"否",那么变量 Alg被设置成"共享存储器"(SHMEM)通信方法(如图4所示的) (830)。假定同时SMP间通信是有益的,那么变量Alg被设置成"同 时"(835),意思是将使用图5所示的通信方法。变量Alg设置之后, 算法选择完成(820)。
图9描绘了一个MPI_Bcast操作的实施例。该广播操作通过参 照变量Alg( 905 )来确定该变量是否已经被设置成"常规"、"SHMEM" 或者"同时,,来开始(900)。如果是"常规,,,那么利用例如图3所示 的常规的非共享存储器广播来完成该广播操作(925)。否则,如果 变量Alg被设置成"SHMEM",那么利用引导节点上的非共享存储器 广播和SMP节点内的共享存储器广播(915),如图4所示。再有, 如果变量Alg被设置成"同时",那么利用同时SMP间通信来进行广 播操作(920),如图5所示。
本领域的技术人员从以上的讨论中将注意到,这里说明的同时 SMP间通信方法可以应用于除了 SMP集群上的MPI_Bcast之外的集 合通信操作。MPI一Scatter类似于MPI一Bcast,不同之处在于每个非 根进程得到 一个不同的消息段。
MPI—Reduce可以通过将MPI_Bcast的同时SMP间通信算法中 消息传送的方向反过来的方式来实施。如在MPI一Bcast中,也有一个 进程被选作SMP节点的代表。同一子SMP节点上的各进程首先经共 享存储器执行SMP内减少(reduce)操作,这时代表进程是SMP内减少操作的根。然后多个SMP节点的代表经交换网络发送它们的中 间减少结果到父SMP节点的多个进程。在多个进程的每个中,接收 的消息和本地消息上的减少操作的结果被用在共享存储器SMP内减 少操作中,而不是本地消息。如果消息是被连在一起而不是减少, MPI_Reduce变成MPI_Gather。
MPI_Allreduce的实施可以首先执行MPI—Reduce,进程0作为 根,然后将减少结果从进程O经MPI一Bcast广播到其它所有进程。在 其它无根的集合通信、如MPI一AUgather中,通过交换消息而不是在 一个方向传送消息(如在MPI_Bcast或MPI_Reduce中)该同时SMP 间通信方法可以应用。在MPI_Allgather中,每个进程具有一个消息 要广播到其它进程。这些进程首先经共享存储器执行SMP内聚集 (allgather)。参与SMP间通信的每个进程然后同时地与来自分开 的SMP的一个进程交换消息。从其它SMP接收的消息在操作的结尾 处经共享存储器allgather与同一 SMP上的其它进程交换,也可能在 SMP间通信的各个阶段之间交换。MPI一Alltotal不同于 MPI一Allgather之处仅在于不同的消息被从一个进程发送到所有的其 它进程。MPI—Barrier可以作为MPI_Allgather实施,这时所有的消 息都为空,即消息不包含数据。
已经为MPI_Barrier、 MPI—Beast和MPI—Reduce开发了该同时 通信算法的原型。Intel MPI Benchmark2.3 (参见例如 http:〃www.intel.com/cd/software/products/asmona/eiig/cluster/mpi/2 19847.htm)已经在8个16路SMP节点的集群(IBM pSeries Nighthawk II)上利用该原型运行,64进程(每个SMP 8个进程) MPI_Bcast的性能数示于图6。图3中的方法是简单的二元树算法。 图4中的方法是二元树算法加上SMP内的集合通信级共享存储器优 化。图5中的方法是利用了本发明的各方面的同时通信。数据显示了 图5的方法有显著的性能改善。
上述提供的详细说明是以在计算机或计算机网络上执行的程序 过程来讨论的。这些过程描述和表示被本领域的技术人员用来向本领域的其它人员最有效地传达他们工作的实质。这些过程描述或表示可 以硬件或软件或二者的结合来实施。
这里一个过程通常被理解为导致一个需要的结果的一系列步骤。 这些步骤是需要对物理量的物理控制的步骤。通常地,但不是必须的, 这些物理量的形式为电的或磁的信号,这些信号能够被存储、传送、 组合、比较和以其它方式控制。主要为了通常的使用,将这些信号称 为比特、值、元素、符号、字符、词汇、数目、目标、属性等等比较 方便。但是应当注意,这些和类似的名词要与适当物理量相关,而且 仅仅是应用于这些物理量的方便的标记。
此外,执行的控制经常以诸如增加或比较的术语被提及,这些术 语通常与操作员执行的脑力操作有关。在大多情况下,在这里说明的 任何操作中(形成了本发明的一部分),操作员的这种能力不是必需
的;这些操作是机器操作。用来执行本发明的操作的有用的机器包括 通用数字计算机或类似设备。
该方法的每个步骤都可以在任何通用计算机诸如大型计算机、个 人计算机等上,并且根据一个或多个,或者一个或多个的一部分,从 任何编程语言(诸如C++、 Java、 Fortran或类似语言)产生的编 程模块或对象执行。此外,每个步骤,或实施每个步骤的一个文件或 对象等可以由专用硬件或为该目的设计的电路模块来实施。
本发明优选地在高级过程的或面向对象的编程语言中实施以便 与计算机通信。但是,如果需要的话,本发明可以在汇编或机器语言 中实施。在任何情况下,语言可以为翻译的或编译的语言。
本发明可以实施为包括记录介质的一个机制或计算机程序产品。 这样的机制或计算机程序产品可以包括但不限于CD-ROM、盘、带、 硬驱、计算机RAM或ROM和/或电子的、磁的、光的、生物的或其 它类似的程序实施物。实际上,该机制或计算机程序产品可以包括任 何的固体或流体传输介质,磁的或光的,或类似物,用来存储或传送 机器可读的信号,该机器用于根据本发明的方法控制通用或专用目的 的可编程计算机的操作和/或构造根据本发明的系统构造其部件。本发明也可以在一个系统中实施。系统可以包括一个计算机(包 括处理器和存储设备),及可选择地包括存储设备、输出设备(诸如 视频显示器)和/或输入设备(诸如键盘或计算机鼠标)。此外,系统 可以包括计算机的互联网络。计算机可以相等地是独立的形式(例如 传统的桌面个人计算机)或集成到另 一装置中(例如电子测试设备)。 该系统可以特殊地构造用于所需的目的,来执行例如本发明的方法步 骤或者它可以包括一个或多个通用目的的计算机,可以根据这里在计 算机中的教导由计算机程序选择性被激活或重新构造。这里提供的过 程不是固有地与特定计算机系统或其它装置相关。从这里给出的说明 可以显见各种这样的系统所需要的结构。
再有,本发明的一个或多个方面的功能可以软件、固件、硬件或 它们的结合来实现。
本发明的一个或多个方面可以包括在具有例如计算机可用介质 的一个结构中(例如一个或多个计算机程序产品)。该介质中具有例 如计算机可读的程序代码装置或逻辑(例如指令、代码、命令等等), 来提供和方便本发明的功能。这样的结构可以作为计算机系统的一部 分或单独销售。
此外,可以提供至少一个程序存储设备,该设备由机器可读,该 设备包含该机器可执行的至少 一个命令程序,来执行本发明的功能。
这里描绘的流程图只是例子。在不脱离本发明的精神的前提下可 以对这些图和步骤(或操作)做出各种变化。例如,这些步骤可以不 同的顺序来执行,或者可以增加步骤、减少步猓或者修改步驟。所有 这些改变都考虑作为要求保护的本发明的一部分。
虽然这里已经详细描绘和说明了本发明的优选实施例,但是对于 相关领域的熟练技术人员来说显而易见的是在不脱离本发明的精神 的前提下可以做出各种的变化、附加、替换等等的改变,因此这些改 变被考虑包括在后面定义的本发明的权利要求范围之内。
权利要求
1、一种在对称的多处理(SMP)集群中的进程(106)之间通信的方法,该集群具有多个SMP节点(102),其中该SMP集群的至少一些SMP节点包括多个进程,该方法包括(i)在SMP节点处以节点内方式利用该SMP节点的共享存储器(107)在进程间传送集合通信的消息;及(ii)响应于传送(i),以节点间方式同时地从n个SMP节点向m个其它SMP节点传送集合通信的多个消息,其中n或m中的至少一个大于1,并且该同时传送由所述n个SMP节点和所述m个其它SMP节点中的至少一个的多个进程实施。
2、 根据权利要求1的方法,其中该同时传送(ii)包括从下述 之一以节点间方式同时传送多个消息 一个SMP节点到多个其它 SMP节点、多个SMP节点到一个其它SMP节点、或者多个SMP节 点到多个其它SMP节点。
3、 根据权利要求l的方法,其中传送(i)包括在该SMP节点 处以节点内方式利用该SMP节点的共享存储器从一个进程向多个进 程传送集合通信的消息,并且其中该同时传送(ii)包括从该SMP节 点向多个其它SMP节点传送该多个消息,其中所述多个进程中的每 个进程传送所述多个消息中的一个消息到所述多个其它SMP节点中 的一个不同的SMP节点。
4、 根据权利要求l的方法,其中该传送(i)包括在该SMP节 点处以节点内方式利用该SMP节点的共享存储器从至少两个进程向 该SMP节点的引导进程传送消息,并且其中该同时传送(ii)包括以 节点间方式同时从多个SMP节点向m个其它SMP节点传送集合通 信的多个消息,该传送(i)在所述多个SMP节点上重复,并且所述 多个SMP节点的多个引导进程同时以节点间方式传送该集合通信的 该多个消息到所述m个其它SMP节点的至少一个进程。
5、 根据权利要求l的方法,还包括在使用的集合通信集产生时预定义传送(i)和同时传送(ii)中涉及的SMP节点和进程。
6、 根据权利要求1的方法,还包括针对不同的SMP节点和进 程自动地重复传送(i)和同时传送(ii)中的至少一个,直到完成该 集合通信。
7、 根据权利要求l的方法,其中该集合通信在一个消息传递接 口 (MPI)通信集内发生。
8、 根据权利要求l的方法,其中所述n个SMP节点或所述m 个其它SMP节点中的至少一个包括多个通信通道,用来便于所述多 个进程执行所述同时传送。
9、 一种系统,包括用于执行根据任何前述方法权利要求的方法 的所有步骤的装置。
10、 一种计算机程序,包括当在计算机系统上执行所述计算机 程序时用于执行根据任何前述方法权利要求的方法的所有步骤的指 令。
全文摘要
提供一种设置,用来在对称的多处理(SMP)集群环境中的各进程间通信,其中该SMP集群的至少某些SMP节点包括多个进程。该设置包括在一个SMP节点以节点内方式使用该SMP节点的共享存储器来在各进程间传送集合通信的消息;响应于该节点内传送,同时地以节点间方式从n个SMP节点向m个其它的SMP节点传送集合通信的多个消息,其中n或m至少之一大于1。该同时传送步骤由n个SMP节点或m个其它SMP节点的至少之一的多个进程实施。更具体地,该设置包括从下述之一以节点间方式同时传送多个消息从一个SMP节点到多个其它SMP节点、多个SMP节点到其它一个SMP节点或者从多个SMP节点到多个其它的SMP节点。
文档编号G06F9/54GK101300551SQ200680041183
公开日2008年11月5日 申请日期2006年10月25日 优先权日2005年11月17日
发明者R·特鲁曼, 彬 贾 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1