CN1289962A - 在多线程计算环境中建立跨越多个进程的通信程序 - Google Patents
在多线程计算环境中建立跨越多个进程的通信程序 Download PDFInfo
- Publication number
- CN1289962A CN1289962A CN00128682A CN00128682A CN1289962A CN 1289962 A CN1289962 A CN 1289962A CN 00128682 A CN00128682 A CN 00128682A CN 00128682 A CN00128682 A CN 00128682A CN 1289962 A CN1289962 A CN 1289962A
- Authority
- CN
- China
- Prior art keywords
- thread
- candidate identification
- identification symbol
- processes
- signal procedure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
Abstract
提供一种确定性的、非死锁技术,用于在多线程计算环境中取得分布式合意。该技术包括在多个进程之间通信,以便为分布在多个进程上的一组参与线程的通信程序建立候选标识符;在多个进程之间通信,以便在多个线程的每个参与线程处检查是否能在其进程要求该候选标识符,如果能,就要求该候选标识符,作为新标识符,由此建立通信程序。举例来说,该技术可以通过消息传送接口(MPI)库内的子例程调用来实现。
Description
本发明涉及计算机系统中管理共享资源的功能,更具体来说,涉及一种用于例如在消息传送接口(MPI)库内实现的线程安全的分布式合意技术(thread-safe distributed consensus technique)。
为了更好地理解本发明的背景,首先来解释一些术语。本领域中有名的术语一对称多处理器(SMP),指的是计算系统中硬件的一个方面,更具体来说,涉及处理器平面(planar)本身的物理布局和设计。这类多个处理器单元的一个特点是对全局存储器的共享和对SMP系统的输入/输出(I/O)相同使用权。
与现代复杂计算系统普遍相关的另一个术语是“线程”。术语“线程”的大体意义只是指在计算机执行的应用软件和操作系统的内核中经过的简单执行路径。本领域中人们都知道,普遍允许每个进程映象(process image)中有多个这种线程。
POSIX标准中现在已经收入了线程标准。例如在K.Robbins和S.Robbins所作的名为《实用UNIX程序设计一并发、通信和多线程指南》(Practical UNIX Programming-A Guide to Concurrency,Communication and Multi-Threading)(Prentice Hall PTR出版,1996)一文中介绍了POSIX标准下的基本线程管理。
本文在描述本发明实施例时所用的另一个概念是锁(locks)。在现代计算系统中通常有一些关键的代码段和共享数据结构,诸如共享库,它们的完整性对系统的正确运行及其重要。概括来说,锁是在软件(或硬件)中用来“串行化”对这些关键的代码段和/或共享数据结构的访问的设备。
另一个要注意的术语是多线程安全(multithread-safe)的代码的概念。如果竞争相同资源或例程的多个执行线程被串行化,使得能对所有线程保证数据完整性,则代码被视为是线程/多线程安全的。实现这一点的一种方法是借助上述的锁。
作为另外的背景,消息传送接口(MPI)标准定义下列语义:并行作业中的进程在一个保证域内消息完整性的通信域(communicationdomain)(以下也称“通信程序”)内交换消息。在一个域中发出的消息不干涉另一个域中发出的消息。当并行作业开始时,各进程的子集可以合作,以按需建立单独的通信域。
申请人认识到多线程环境中产生的一个问题,其中多个线程可能同时试图获得通信域。如果没有办法来解决这个问题,就可能会发生死锁。所以需要一种确定性的、非死锁的技术来实现多线程处理系统中的分布式合意。本发明就是为解决这个需要而提供的一种技术。
简要地说,本发明的一个方面提出一个用于跨越多线程计算机环境的多个进程建立通信程序的方法,该环境中多个进程可能同时在试图建立通信程序(communicator)。该方法包括:在多个进程之间通信,以便为分布在多个进程上的一组参与线程的通信程序建立候选标识符;在多个进程之间通信,以便在多个线程的每个参与线程处检查是否能在其进程要求(claim)该候选标识符,如果能,就要求该候选标识符,作为新标识符,由此建立通信程序。
本发明的另一个方面提供一个用于跨越多线程计算机环境的多个进程建立通信程序的系统,该环境中多个进程可能同时在试图建立通信程序。系统包括的一个装置,用于在多个进程之间通信,以便为分布在多个进程上的一组参与线程的通信程序建立候选标识符;还有一个装置,用于在多个进程之间通信,以便在多个线程的每个参与线程处检查是否能在其进程要求该候选标识符,如果能,就要求该候选标识符,作为新标识符,由此建立通信程序。
本发明的再一个方面包含至少一个可由机器读取的程序存储装置,内含至少一个可由机器执行的指令程序,指令程序用来执行跨越多线程计算机环境的多个进程建立通信程序的方法,该环境中多个进程可能同时在试图建立通信程序。该方法包括:在多个进程之间通信,以便为分布在多个进程上的一组参与线程的通信程序建立候选标识符;在多个进程之间通信,以便在多个线程的每个参与线程处检查是否能在其进程要求该候选标识符,如果能,就要求该候选标识符,作为新标识符,由此建立通信程序。
重申一遍,这里提出一种用于在多线程的多进程计算环境中实现分布式合意的技术。该技术是确定性的,因为各线程将在有限次数的重试中以可预测的顺序成功创建一个通信程序。该技术被相信优于所谓的“随机化”算法,在这种算法中,未能创建通信程序的线程只是等待过了随机量的时间后再重试。此外,这里提出的技术保证避免线程之间的死锁。这优于其它检测到死锁情况就采取打破死锁的行动的算法。死锁检测通常涉及注意到某一段时间过去了还没有线程在进行。这里提出的分布式合意功能是高效的,因为线程为获得对新通信域的分布式合意而被迫重试的次数有个上限一即使存在多组试图同时创建通信程序的线程也是如此。
由以下结合附图对本发明的某些最佳实施例的详细说明,可以更容易了解本发明的上述及其它目的、优点和特点。附图简介:
图1表示一例包含按照本发明的通信域合意功能的线程计算机环境;
图2是多个有多个线程的进程的简化图,其中按本发明原理建立了跨越多个进程的多个线程的通信域;
图3A和3B表示按照本发明原理的通信域合意技术的一个实施例。
下面结合图1说明一例包含和使用按照本发明的通信域合意功能的线程计算机环境。
如图所示,计算机环境100包括多个经连接104而相连的计算节点102。例如,每个计算节点可包含是一个国际商用机器公司推出的RS/6000 SP系统的节点,连接104可以是个也是国际商用机器公司推出的分组交换网络,诸如SP转接器或高性能转接器(HPS)。再次注意,图1仅仅是举例表示的。这里所披露的技术,还可应用于图1所示多处理器环境以外的任何单线程的或多线程的程序的集合。
在环境100内,消息分组被通过分组交换网络104从源计算节点(发送节点)传送到接收计算节点(接收节点)。例如计算单元N的用户任务106可以向计算单元1(接收节点)的用户任务106传送消息。适配器112连接计算单元102与转接器104。《用于AIX管理的IBM并行系统支援程序指南》(IBM Parallel System Support ProgramsFor AIX Administration Guide)(出版号GC23-3897-02(1996))中详细介绍了转接器104的一个例子。
进一步来说,计算单元与其相关适配器112之间的通信,例如由包括诸如打开通信、关闭通信、启用路由、停用路由、返回状态和重置适配器等功能(functions)的接口描述。在一个实施例中,接口包含消息传送接口(MPI)110-这里也称MPI库。
对适配器的接入由每个计算单元102内的内核扩展/设备驱动程序108作中介。扩展(extension)108包括的一组功能(functions),有操作系统本身(例如国际商用机器公司出售的AIX操作系统)的权力。内核扩展(kernel extension)授权由用户任务106(或程序)使用适配器112并有在需要时中断用户任务的能力。用户任务通过MPI库110与适配器112通信。对MPI库的更详细介绍,例如可参阅国际商用机器公司的出版物-题目为《AIX的IBM并行环境:MPI程序设计和子例程参考》(IBM Parallel Environment for AIX:MPIProgramming and Subroutine Reference)(第2版,第4期(1998年10月)),这里特此引用其全文。
在各种其它出版物中详细介绍了国际商用机器公司对MPI库的实现。例如,参阅“IBM系统杂志”(IBM System Journal)中题为《IBMSP2的并行环境中的通信软件》(The Communication Software inParallel Environment of the IBM PS2)(卷34,1995第2期205-21页)的文章。另外的信息可见于W.Richard Stevens编著的名为《UNIX网络程序设计》(UNIX Network Programming)(Prentice Hall公司出版,1990)的教科书。特此全文引用这两个参考文献。
如上所述,这里假设计算环境包含一个使得用户任务可以包含多个线程的线程计算机环境,;库是线程MPI。线程计算环境是当今该产业中众所周知的。线程MPI库可从国际商用机器公司购买-《AIX的IBM并行环境》(IBM Parallel Environment for AIX)(第2版,第4期,IBM产品号5765-543(1998年10月))。这个线程MPI包含在AIX系统上运行的被许可程序产品。
在讨论本发明的一个详细实施例之前,提供以下背景定义:
“并行作业”是在一系列处理器上执行的任务的集合。这些任务为共同解决问题而合作并交换数据。
“任务”或“进程”是执行程序(指令序列)的实例,由地址空间和一个或多个控制流组成。地址空间是任务可能引用或访问的存储单元的集合。
“线程”是任务内部的控制流。如今大多数系统都支持单任务内的多个控制流。线程可以并行地执行。
“MPI通信程序”是由一组通信的任务组成的逻辑单位。在一个例子中,通信程序可以用称为环境ID(context ID)标识符实现。
“环境ID”或“环境标识符”是一个在包含特定MPI通信程序任务中都相同的号码,对该通信程序中涉及的任何任务上的任何其它通信程序来说是独一无二的。
“通信域”是其中的包含通信程序的任务交换消息的环境(context)。它具有孤岛性-在域内发送的消息不会被传递到域外的(即不同通信程序中的)任务。本文中通信域和通信程序可以交换使用。
“归约”(reduce或reduction)操作是对值的一个集合进行的操作(例如求和、按位与),其中由通信任务的集合的每个成员提供一个值。操作的结果可以被返回一个进程中(归约操作)或返回到所有参与的进程(全归约(allreduce)操作)。
为了管理对通信域的区分(separation),一种MPI库的实现将每个通信域与该域中的作业进程一致同意的独有“环境ID”相关联。以创建新通信域为目的的MPI库例程可以被并行作业的进程的子集(即线程)调用。该库例程必须通过标识和要求一个在域中所有进程中是独一无二的、在子集中所有进程处都是可用的共用环境ID来创建新通信域。创建新通信域的调用可以由几组线程-有些线程可以位于同一个进程中或者位于不同的进程中-同时进行。
图2表示的情况中,三个进程200、202、204(进程1、进程2和进程3)上的每个线程1都调用MPI库,以建立通信程序A;进程1和2上的线程2调用MPI库,以建立通信程序B;进程2和3上的线程3调用MPI库,以建立通信程序C。在任何给定的进程,调用可按任意顺序发生。MPI语义要求所有线程前进,每个库调用最终返回。
问题是,在有多组线程(这些线程可能同时在试图获得一个可用的ID)的情况下,如何为每个新通信域选择独有的环境ID。在多线程库中,对诸如环境IDs列表的全局数据的访问必须是串行化的。然而,没有线程可以在通信阶段持有进程标识公用环境ID所需的锁,因为作业会死锁。
因此,概括地说,这里提出一种在其中的多个线程可能同时试图建立通信程序的多线程计算机环境中建立跨越多个进程的通信程序的同时避免死锁的方法。当试图建立通信程序的线程一致同意一个在含有参与线程的各进程中独一无二的值(环境ID)时,通信程序被视为被建立。
该方法采用两个阶段。在阶段一中,在试图创建通信程序的线程之间建立一个候选环境ID(在本文中也称为候选标识符)。在阶段二中,每个参与线程检查候选环境ID是否能在其进程被要求,如果是,就试图要求该环境ID并向其它参与线程报告这个操作的结果。为了避免死锁,将各进程的试图建立通信程序的线程放入每个进程处控制进程中哪个线程有权要求的优先队列中。在一个例子中,这些线程是根据线程为新通信程序正在从其调用的当前环境标识符而被优先化的。如果在阶段二期间任何线程报告失败,该方法再次以阶段一的对新候选环境ID的选择开始。
更具体来说,按照本发明,MPI库在并行作业中每个进程处保存一个是标量(scalars)的自由环境IDs的列表(本文中也称“全局环境列表)。这个环境ID列表对该进程是全局的,线程对它的访问被锁串行化。当某MPI作业被启动时,所有参与进程都是单线程的,属于单一的、被分配例如最小环境ID的通信域。初始化之后,任何线程集合的每个为创建新通信域而调用库的线程在现有域的环境中这样做。在本发明的一个方面中,这个现有域的环境标识符被用来如下文另外说明的、优先化新环境ID的分配。
借助其发出了新通信域请求的环境ID被放入一个有序的(“优先列表”)中,该列表对进程是全局的,借助锁被访问。已经借助最小环境ID作出请求的线程将位于优先列表中的首位,因此将是被允许更新该进程处的全局环境列表的线程。
对最终环境ID(本文中也称新环境ID)要求最少两轮通信。第一轮通信产生一个候选环境ID(候选标识符),保证所有当前域中的进程都在参与该子例程调用(即,该调用可能在有些进程上被延迟或阻塞)。当知道所有进程都在参与时,每个进程将其当前的环境ID插入其进程的优先列表(也称为优先队列)。在任何给定进程,候选环境ID可能已经在第一轮通信期间锁被释放时被另一个线程要求过,所以下一步是检查是否该候选环境ID能在所有参与进程处被要求-在这种情况下可以取得合意。如果候选标识符仍然是可用的,并且该线程位于优先列表中的首位(即具有优先权),该线程就在全局环境列表中更新(即删除)该候选标识符,这样来“要求”该候选标识符是新标识符。如果该线程不是位于优先列表中的首位,该线程就释放锁,等待条件变量。第二轮通信开始,如果表明候选标识符没能在某个进程处被要求,则任何更新过其进程的全局环境标识符列表的线程都放弃更新(即将以前删除的候选标识符添加回列表中)。如果候选标识符被所有进程被要求,则成功的线程就从优先列表中删除它们当前的环境标识符并唤醒任何等待的线程。
因为在优先列表中没有最高优先权而等待的线程,在为察看候选标识符是否仍然是可用的而检查全局环境标识符的时刻恢复处理。由于某参与线程没能在其相应进程要求候选标识符而对其没有达成合意的线程,在第一轮通信继续,以选择新候选标识符。
图3A和3B表示按照本发明的原则在多线程计算机环境中建立跨越多个进程的通信程序的确定性方法的更详细的实施例。应当注意的是,该同一个控制流(图3A和3B)要在计算域中的所有进程上运行。本地context_list是本地进程可用的自由环境标识符的列表。find_candidate_context(temp_list)函数的作用是寻找在所有进程上可用的环境ID。update_results(value)函数的作用是,如果在所有进程上value为真,就返回TRUE(真),否则返回FALSE(假)。如果有两个线程同时在试图获得新环境标识符,一个线程最后将处于等待状态。
参看图3A,处理接收current_context作为输入(300),这是为新的通信程序而从其作出调用的当前通信程序的环境标识符。下一步,获得锁,new_context_commit被设定为FALSE,向get_context队列(即优先队列)添加current_context(310)。
处理然后询问new_context_commit标志是否为TRUE(320),如果是,就释放锁并返回作为新候选标识符的候选标识符,由此建立通信程序并结束处理(330)。假设new_context_commit标志不是真,则建立一个有效环境IDs的列表(temp_context_list),释放锁,寻找新环境标识符(find-candidate_context(temp_list)),然后重新获得锁,将try_to_commit标志设置成TRUE(340)。find-candidate_context(temp_list)是一个子例程,它将寻找在该特定通信程序上的所有进程上有效的新环境标识符。下一步,询问try_to_commit标志是否为TRUE(350)。如果不是,则处理返回去询问询问new_context_commit标志是否为TRUE(320)。否则就询问new_context(即候选标识符)是否在本地环境列表(进程的可用环境列表)中(360)。如果不是,则释放锁,update_results(value)例程返回FALSE值,再次获得锁并将try_to_commit设置成FALSE(370)。处理然后如图所示返回到询问(350)。
参看图3B,如果new_context在本地环境列表中,处理就询问是否线程在优先列表中有优先权,即位于get_context队列的首位(400)。如果不是,则释放锁,线程等待环境条件,然后重新获得锁(440)。等待环境条件(wait on context condition)就是等候来自队列中较高优先权的线程的信号。然后,处理返回去询问try_to_commit标志是否为TRUE(350,图3A)。
如果线程在优先列表中有优先权,则处理更新进程的可用环境标识符列表(即从列表删除候选标识符ID),释放锁,向其它参与线程发送update_results TRUE信号,重新获得锁,设置try_to_commit标志为FALSE(410)。下一步,处理询问是否update_results在所有进程上为真。这个询问决定了是否所有进程都成功地通过删除候选环境标识符而更新了它们的本地环境标识符队列。如果不是,则每个更新过其本地环境标识符队列的进程必须撤销对本地环境列表的改变(430),然后返回去询问try_to_commit标志是否为TRUE(350,图3A)。假设所有进程都更新了它们的可用环境标识符列表,则从优先列表(即get_context_queue)删除current_context,发出环境条件信号,将new_context_commit标志设置为TRUE(450)。环境条件的信号发送唤醒优先队列中的任何等待线程(440)。处理返回去询问try_to_commit标志是否为TRUE(350),然后如上述的那样继续。
作为进一步的解释,下面提供按照本发明原则的一个实施例的伪码。
在这个伪码中,注意mpi_allreduce(X)是一个库例程,它对参与调用的进程提供的X个值的集合执行归约操作(例如求和,按位与),并将结果分送到该集合中所有进程。这是现有的库函数,被用来执行下述算法的通信阶段。
本发明能被包含在例如具有例如计算机可用媒体的制成品(例如一个或多个计算机产品)中。该媒体中包含例如提供和便于实现本发明的功能的计算机可读的程序代码。制成品可以被作为计算机系统的一部分采用或者单独出售。
此外,可以提供至少一个可由机器读取的程序存储装置,内含至少一个可由机器执行的指令程序,以执行本发明的功能。
这里所表示的流程图是举例提供的。在不偏离本发明的精神的情况下可以对这些示意图或本文所述各步骤(或操作)作改动。例如在某些情况下,可以按不同的顺序执行各步骤,可以增加、删除或修改各步骤。所有这些改动都被视为包含后附权利要求中所述的本发明的部分。
尽管本文根据本发明的某些最佳实施例详细地说明了本发明,本领域的熟练人员可以实现对这些实施例的修改和改变。所以,要求由后附的权利要求来涵盖不脱离本发明真正精神和范围的所有这类修改和改变。
Claims (31)
1.一种用于多线程计算机环境中建立跨越多个进程的通信程序的方法,在该环境中多个进程可能同时在试图建立通信程序,该方法包含:
(1)在多个进程之间通信,以便为分布在多个进程上的一组参与线程的通信程序建立候选标识符;
(2)在多个进程之间通信,以便在多个线程的每个参与线程处检查是否能在其进程要求该候选标识符,如果能,就要求该候选标识符作为新标识符,由此建立通信程序。
2.按照权利要求1方法,进一步包含根据每个参与线程的现有标识符将每个参与线程放入它的进程处的优先队列,并在通信(2)期间用优先队列来避免不同的试图建立通信程序的参与线程的各组的多个线程之间的死锁。
3.按照权利要求2的方法,在每个参与线程的检查进一步包含允许具有最高定义优先级的线程在其进程处要求候选标识符,具有最高定义优先级的线程是从优先队列中确定的。
4.按照权利要求1的方法,所述通信(2)进一步包含将每个参与线程的检查的结果向该组参与线程的其它参与线程报告。
5.按照权利要求1的方法,所述通信(1)进一步包含为建立通信程序的候选标识符而在多个进程的每个进程处检查本地候选标识符列表。
6.按照权利要求1的系统,如果所述通信(2)未能建立通信程序,该方法进一步包含为建立新候选标识符而重复所述通信(1)并为该新候选标识符而重复所述通信(2)。
7.按照权利要求1的方法,所述通信(1)和所述通信(2)是通过MPI库内的子例程调用而实现的,候选标识符包含候选环境标识符。
8.按照权利要求1的方法,所述通信(1)保证多个进程的所有进程都在参与建立通信程序;所述通信(2)包含-对于每个参与线程-将该线程的当前标识符插入对该线程的进程是全局的的优先队列中;所述通信(2)进一步包含允许借助最高优先级的当前标识符提出了通信程序请求的线程被允许要求其候选标识符为新标识符。
9.按照权利要求1的方法,所述通信(2)进一步包含,如果参与线程在在其进程中保存的优先队列中有优先权就要求该候选标识符,如果如此,就通过从在该进程保存的候选标识符的本地标识符列表中删除该候选标识符而要求该候选标识符为该新标识符。
10.按照权利要求9的方法,当在多个进程的某进程处不能要求该候选标识符时,所述通信(2)进一步包含撤销由当时的参与线程对其进程的本地标识符列表的任何更新。
11.一种用于多线程计算机环境中建立跨越多个进程的通信程序的系统,在该环境中多个进程可能同时在试图建立通信程序,该系统包含:
(1)用于在多个进程之间通信,以便为分布在多个进程上的一组参与线程的通信程序建立候选标识符的装置;
(2)用于在多个进程之间通信,以便在多个线程的每个参与线程处检查是否能在其进程要求该候选标识符,如果能,就要求该候选标识符,作为新标识符,由此建立通信程序的装置。
12.按照权利要求11系统,进一步包含用于根据每个参与线程的现有标识符将每个参与线程放入优先队列的装置;用于在所述通信(2)期间用优先队列来避免不同的试图建立通信程序的参与线程的各组的多个线程之间的死锁的装置。
13.按照权利要求12的系统,在每个参与线程的检查进一步包含用于允许具有最高定义优先级的线程在其进程处要求候选标识符的装置具有最高定义优先级的线程是从优先队列中确定的。
14.按照权利要求11的系统,所述用于通信(2)的装置进一步包含用于将将每个参与线程的检查的结果向该组参与线程的其它参与线程报告的装置。
15.按照权利要求11的系统,所述用于通信(1)的装置进一步包含用于为建立通信程序的候选标识符而在多个进程的每个进程处检查本地候选标识符列表的装置。
16.按照权利要求11的系统,如果所述用于通信(2)的装置未能建立通信程序,该系统进一步包含用于为建立新候选标识符而重复所述通信(1)并为该新候选标识符而重复所述通信(2)的装置。
17.按照权利要求11的方法,所述用于通信(1)的装置和所述用于通信(2)的装置是通过MPI库内的子例程调用而实现的,候选标识符包含候选环境标识符。
18.按照权利要求11的系统,所述用于通信(1)的装置保证多个进程的所有进程都在参与建立通信程序;所述用于通信(2)的装置包含一对于每个参与线程,用于将该线程的当前标识符插入对该线程的进程是全局的的优先队列中的装置;所述用于通信(2)的装置进一步包含用于允许借助最高优先级的当前标识符提出了通信程序请求的线程被允许要求其候选标识符为新标识符的装置。
19.按照权利要求11的系统,所述用于通信(2)的装置进一步包含用于如果参与线程在在其进程中保存的优先队列中有优先权就要求该候选标识符,如果如此,就通过从在该进程保存的候选标识符的本地标识符列表中删除该候选标识符而要求该候选标识符为该新标识符的装置。
20.按照权利要求19的系统,当在多个进程的某进程处不能要求该候选标识符时,所述用于通信(2)的装置进一步包含用于撤销由当时的参与线程对其进程的本地标识符列表的任何更新的装置。
21.一个多进程、多线程的计算机环境,包含:
至少一个适合尽管多个进程可能同时在试图建立通信程序时也允许建立跨越它的多个进程的通信程序的计算单元,该建立过程没有死锁,其中该至少一个计算单元适合:
(1)在多个进程之间通信,以便为分布在多个进程上的一组参与线程的通信程序建立候选标识符;
(2)在多个进程之间通信,以便在多个线程的每个参与线程处检查是否能在其进程要求该候选标识符,如果能,就要求该候选标识符,作为新标识符,由此建立通信程序。
22.至少一个由机器可读的程序存储设备,包含至少一个可由机器执行的指令程序,用于执行一种用于在其中的多个进程可能同时在试图建立通信程序的多线程计算机环境中建立跨越多个进程的通信程序的方法,该方法包含:
(1)在多个进程之间通信,以便为分布在多个进程上的一组参与线程的通信程序建立候选标识符;
(2)在多个进程之间通信,以便在多个线程的每个参与线程处检查是否能在其进程要求该候选标识符,如果能,就要求该候选标识符,作为新标识符,由此建立通信程序。
23.按照权利要求22的至少一个程序存储设备,进一步包含根据每个参与线程的现有标识符将每个参与线程放入优先队列,并在所述通信(2)期间用优先队列来避免不同的试图建立通信程序的参与线程的各组的多个线程之间的死锁。
24.按照权利要求23的至少一个程序存储设备,在每个参与线程的检查进一步包含允许具有最高定义优先级的线程在其进程处要求候选标识符,具有最高定义优先级的线程是从优先队列中确定的。
25.按照权利要求22的至少一个程序存储设备,所述通信(2)进一步包含将每个参与线程的检查的结果向该组参与线程的其它参与线程报告。
26.按照权利要求22的至少一个程序存储设备,所述通信(1)进一步包含为建立通信程序的候选标识符而在多个进程的每个进程处检查本地候选标识符列表。
27.按照权利要求22的至少一个程序存储设备,如果所述通信(2)未能建立通信程序,该方法进一步包含为建立新候选标识符而重复所述通信(1)并为该新候选标识符而重复所述通信(2)。
28.按照权利要求22的至少一个程序存储设备,所述通信(1)和所述通信(2)是通过MPI库内的子例程调用而实现的,并且候选标识符包含候选环境标识符。
29.按照权利要求22的至少一个程序存储设备,所述通信(1)保证多个进程的所有进程都在参与建立通信程序;所述通信(2)包含-对于每个参与线程,将该线程的当前标识符插入对该线程的进程是全局的的优先队列中;所述通信(2)进一步包含允许借助最高优先级的当前标识符提出了通信程序请求的线程被允许要求其候选标识符为新标识符。
30.按照权利要求22的至少一个程序存储设备,所述通信(2)进一步包含,如果参与线程在在其进程中保存的优先队列中有优先权就要求该候选标识符,如果如此,就通过从在该进程保存的候选标识符的本地标识符列表中删除该候选标识符而要求该候选标识符为该新标识符。
31.按照权利要求30的至少一个程序存储设备,当在多个进程的某进程处不能要求该候选标识符时,所述通信(2)进一步包含撤销由当时参与的线程对其进程的本地标识符列表的任何更新。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/404,381 | 1999-09-23 | ||
US09/404,381 US6782537B1 (en) | 1999-09-23 | 1999-09-23 | Establishing a communicator across multiple processes in a multithreaded computing environment |
US09/404381 | 1999-09-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1289962A true CN1289962A (zh) | 2001-04-04 |
CN1133925C CN1133925C (zh) | 2004-01-07 |
Family
ID=23599373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB00128682XA Expired - Fee Related CN1133925C (zh) | 1999-09-23 | 2000-09-19 | 建立跨越多个进程的通信方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6782537B1 (zh) |
JP (1) | JP3697148B2 (zh) |
KR (1) | KR100390611B1 (zh) |
CN (1) | CN1133925C (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1324478C (zh) * | 2003-12-19 | 2007-07-04 | 华为技术有限公司 | 一种多线程处理器线程死锁检测的方法及其系统 |
CN101127685B (zh) * | 2007-09-20 | 2011-05-25 | 中兴通讯股份有限公司 | 一种进程间通讯装置及其进程间通讯方法 |
CN103019844A (zh) * | 2012-12-05 | 2013-04-03 | 北京奇虎科技有限公司 | 一种支持多线程调用mpi函数的方法和装置 |
CN103019843A (zh) * | 2012-12-05 | 2013-04-03 | 北京奇虎科技有限公司 | Mpi函数调用方法和装置 |
CN103164359A (zh) * | 2013-01-29 | 2013-06-19 | 北京雪迪龙科技股份有限公司 | 一种管道通信方法和装置 |
CN103257887A (zh) * | 2012-02-16 | 2013-08-21 | 宇龙计算机通信科技(深圳)有限公司 | 终端和进程控制方法 |
CN103744643A (zh) * | 2014-01-10 | 2014-04-23 | 浪潮(北京)电子信息产业有限公司 | 一种多线程程序下多节点并行架构的方法及装置 |
CN105912385A (zh) * | 2016-04-12 | 2016-08-31 | 北京橙鑫数据科技有限公司 | 基于安卓系统的应用程序对数据库的操作方法和装置 |
CN106095602A (zh) * | 2016-06-22 | 2016-11-09 | 东软集团股份有限公司 | 控制进程运行的方法及装置 |
CN106371912A (zh) * | 2015-07-21 | 2017-02-01 | 阿里巴巴集团控股有限公司 | 一种流式计算系统的资源调度方法和装置 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4054572B2 (ja) * | 2001-12-17 | 2008-02-27 | キヤノン株式会社 | アプリケーション実行システム |
WO2003083614A2 (en) * | 2002-03-25 | 2003-10-09 | Eternal Systems, Inc. | Transparent consistent active replication of multithreaded application programs |
US20050149991A1 (en) * | 2004-01-06 | 2005-07-07 | Hallberg Bryan S. | Method and apparatus for finding applications and relating icons loaded on a television |
US7774783B2 (en) * | 2004-12-23 | 2010-08-10 | Microsoft Corporation | Method and apparatus for detecting deadlocks |
US7895596B2 (en) * | 2005-09-13 | 2011-02-22 | Hewlett-Packard Development Company, L.P. | Processor assignment in multi-processor systems |
US8170041B1 (en) * | 2005-09-14 | 2012-05-01 | Sandia Corporation | Message passing with parallel queue traversal |
WO2007038445A2 (en) | 2005-09-26 | 2007-04-05 | Advanced Cluster Systems, Llc | Clustered computer system |
US7958513B2 (en) * | 2005-11-17 | 2011-06-07 | International Business Machines Corporation | Method, system and program product for communicating among processes in a symmetric multi-processing cluster environment |
US8924590B2 (en) * | 2006-02-14 | 2014-12-30 | Hewlett-Packard Development Company, L.P. | System and method for communicating in a networked system |
US8082289B2 (en) | 2006-06-13 | 2011-12-20 | Advanced Cluster Systems, Inc. | Cluster computing support for application programs |
CN101216780B (zh) * | 2007-01-05 | 2011-04-06 | 中兴通讯股份有限公司 | 在对称多处理体系下实现多实例线程通信的方法及装置 |
US20080250412A1 (en) * | 2007-04-06 | 2008-10-09 | Elizabeth An-Li Clark | Cooperative process-wide synchronization |
US7966624B2 (en) * | 2007-08-22 | 2011-06-21 | Intel Corporation | Using message passing interface (MPI) profiling interface for emulating different MPI implementations |
US9087311B2 (en) * | 2008-05-07 | 2015-07-21 | International Business Machines Corporation | Method, system and program product for grouping related program sequences |
US8255451B2 (en) * | 2008-09-17 | 2012-08-28 | Microsoft Corporation | Technologies for detecting erroneous resumptions in a continuation based runtime |
US9268608B2 (en) * | 2009-02-26 | 2016-02-23 | Oracle International Corporation | Automatic administration of UNIX commands |
CN101571814B (zh) * | 2009-06-01 | 2011-08-24 | 中国科学院计算技术研究所 | 基于消息传递接口的设备的通信行为信息提取方法及系统 |
US8539456B2 (en) * | 2009-06-30 | 2013-09-17 | Intel Corporation | Automatic conversion of MPI source code programs into MPI thread-based programs |
US20140157279A1 (en) * | 2011-07-29 | 2014-06-05 | Nec Corporation | Information processing apparatus, information processing system, information processing method and control program storage medium |
US9275369B2 (en) | 2011-08-24 | 2016-03-01 | Oracle International Corporation | Demystifying obfuscated information transfer for performing automated system administration |
FR2984557B1 (fr) * | 2011-12-20 | 2014-07-25 | IFP Energies Nouvelles | Systeme et procede de prediction des emissions de polluants d'un vehicule avec calculs simultanes de la cinetique chimique et des emissions |
KR101994929B1 (ko) | 2012-12-03 | 2019-07-01 | 삼성전자주식회사 | 집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템 |
US9626261B2 (en) * | 2013-11-27 | 2017-04-18 | Futurewei Technologies, Inc. | Failure recovery resolution in transplanting high performance data intensive algorithms from cluster to cloud |
US9164792B2 (en) * | 2014-01-06 | 2015-10-20 | International Business Machines Corporation | Executing a gather operation on a parallel computer that includes a plurality of compute nodes |
KR102246362B1 (ko) | 2014-10-24 | 2021-04-28 | 삼성전자주식회사 | 무선 그리드 컴퓨팅 방법 및 장치 |
CN106155846B (zh) * | 2015-04-15 | 2019-06-28 | 伊姆西公司 | 对块对象执行批量故障回复的方法和装置 |
US11036563B2 (en) * | 2019-03-19 | 2021-06-15 | International Business Machines Corporation | Deadlock resolution between distributed processes using process and group information |
CN111343239B (zh) * | 2020-02-10 | 2022-11-04 | 中国银联股份有限公司 | 通信请求处理方法、通信方法、通信请求处理装置以及交易系统 |
US20200358721A1 (en) * | 2020-07-30 | 2020-11-12 | Intel Corporation | Buffer allocation for parallel processing of data |
KR20220048081A (ko) * | 2020-10-12 | 2022-04-19 | 삼성전자주식회사 | 저널 파일을 관리하는 전자 장치 및 이의 동작 방법 |
JP2024100564A (ja) * | 2023-01-16 | 2024-07-26 | 富士通株式会社 | Spawn制御プログラム、Spawn制御方法、および情報処理装置 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4584639A (en) | 1983-12-23 | 1986-04-22 | Key Logic, Inc. | Computer security system |
US5210874A (en) | 1988-03-22 | 1993-05-11 | Digital Equipment Corporation | Cross-domain call system in a capability based digital data processing system |
US5410691A (en) | 1990-05-07 | 1995-04-25 | Next Computer, Inc. | Method and apparatus for providing a network configuration database |
US5339415A (en) * | 1990-06-11 | 1994-08-16 | Cray Research, Inc. | Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system |
US5280614A (en) | 1990-08-21 | 1994-01-18 | International Business Machines Corporation | Apparatus and method for controlling access to data using domains |
JP2561759B2 (ja) * | 1991-03-29 | 1996-12-11 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチプロセッサシステムおよびそのメッセージ送受信制御装置 |
US5261053A (en) * | 1991-08-19 | 1993-11-09 | Sequent Computer Systems, Inc. | Cache affinity scheduler |
US5390310A (en) | 1991-09-30 | 1995-02-14 | Apple Computer, Inc. | Memory management unit having cross-domain control |
US5428803A (en) * | 1992-07-10 | 1995-06-27 | Cray Research, Inc. | Method and apparatus for a unified parallel processing architecture |
US5485626A (en) * | 1992-11-03 | 1996-01-16 | International Business Machines Corporation | Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing |
US5481706A (en) | 1993-11-01 | 1996-01-02 | International Business Machines Corporation | System and method for creating thread-safe shared libraries |
US5668993A (en) * | 1994-02-28 | 1997-09-16 | Teleflex Information Systems, Inc. | Multithreaded batch processing system |
US5864683A (en) | 1994-10-12 | 1999-01-26 | Secure Computing Corporartion | System for providing secure internetwork by connecting type enforcing secure computers to external network for limiting access to data based on user and process access rights |
CA2136154C (en) | 1994-11-18 | 1999-08-24 | Jay William Benayon | User control of multiple memory heaps |
JPH08235141A (ja) * | 1995-02-28 | 1996-09-13 | Kofu Nippon Denki Kk | 情報処理システム |
US6487580B1 (en) * | 1995-09-25 | 2002-11-26 | International Business Machines Corporation | Method and system for managing concurrently executable computer processes |
US5845129A (en) | 1996-03-22 | 1998-12-01 | Philips Electronics North America Corporation | Protection domains in a single address space |
US6535929B1 (en) * | 1996-07-02 | 2003-03-18 | Sun Microsystems, Inc. | Universal communication mechanism for applications running in a multitasking environment |
US6269390B1 (en) * | 1996-12-17 | 2001-07-31 | Ncr Corporation | Affinity scheduling of data within multi-processor computer systems |
JP3697831B2 (ja) * | 1997-04-18 | 2005-09-21 | 株式会社日立製作所 | コンピュータシステム |
US6209064B1 (en) * | 1998-01-07 | 2001-03-27 | Fujitsu Limited | Cache coherence unit with integrated message passing and memory protection for a distributed, shared memory multiprocessor system |
US6529932B1 (en) * | 1998-04-01 | 2003-03-04 | Microsoft Corporation | Method and system for distributed transaction processing with asynchronous message delivery |
US6647423B2 (en) * | 1998-06-16 | 2003-11-11 | Intel Corporation | Direct message transfer between distributed processes |
US6412018B1 (en) * | 1998-08-19 | 2002-06-25 | International Business Machines Corporation | System for handling asynchronous message packet in a multi-node threaded computing environment |
US6415332B1 (en) * | 1998-08-19 | 2002-07-02 | International Business Machines Corporation | Method for handling of asynchronous message packet in a multi-node threaded computing environment |
US6718398B1 (en) * | 1999-06-21 | 2004-04-06 | Sun Microsystems, Inc. | Robust communications connection system and method for shared memory |
US6601089B1 (en) * | 1999-06-21 | 2003-07-29 | Sun Microsystems, Inc. | System and method for allocating buffers for message passing in a shared-memory computer system |
-
1999
- 1999-09-23 US US09/404,381 patent/US6782537B1/en not_active Expired - Fee Related
-
2000
- 2000-09-09 KR KR10-2000-0053806A patent/KR100390611B1/ko not_active IP Right Cessation
- 2000-09-19 CN CNB00128682XA patent/CN1133925C/zh not_active Expired - Fee Related
- 2000-09-19 JP JP2000283872A patent/JP3697148B2/ja not_active Expired - Fee Related
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1324478C (zh) * | 2003-12-19 | 2007-07-04 | 华为技术有限公司 | 一种多线程处理器线程死锁检测的方法及其系统 |
CN101127685B (zh) * | 2007-09-20 | 2011-05-25 | 中兴通讯股份有限公司 | 一种进程间通讯装置及其进程间通讯方法 |
CN103257887A (zh) * | 2012-02-16 | 2013-08-21 | 宇龙计算机通信科技(深圳)有限公司 | 终端和进程控制方法 |
CN103257887B (zh) * | 2012-02-16 | 2016-06-08 | 宇龙计算机通信科技(深圳)有限公司 | 终端和进程控制方法 |
CN105930210A (zh) * | 2012-12-05 | 2016-09-07 | 北京奇虎科技有限公司 | Mpi函数调用方法和装置 |
CN103019844A (zh) * | 2012-12-05 | 2013-04-03 | 北京奇虎科技有限公司 | 一种支持多线程调用mpi函数的方法和装置 |
CN103019843A (zh) * | 2012-12-05 | 2013-04-03 | 北京奇虎科技有限公司 | Mpi函数调用方法和装置 |
CN105930210B (zh) * | 2012-12-05 | 2019-02-26 | 北京奇虎科技有限公司 | Mpi函数调用方法和装置 |
CN103019844B (zh) * | 2012-12-05 | 2016-05-04 | 北京奇虎科技有限公司 | 一种支持多线程调用mpi函数的方法和装置 |
CN103019843B (zh) * | 2012-12-05 | 2016-05-11 | 北京奇虎科技有限公司 | Mpi函数调用方法和装置 |
CN103164359A (zh) * | 2013-01-29 | 2013-06-19 | 北京雪迪龙科技股份有限公司 | 一种管道通信方法和装置 |
CN103164359B (zh) * | 2013-01-29 | 2017-04-05 | 北京雪迪龙科技股份有限公司 | 一种管道通信方法和装置 |
CN103744643B (zh) * | 2014-01-10 | 2016-09-21 | 浪潮(北京)电子信息产业有限公司 | 一种多线程程序下多节点并行架构的方法及装置 |
CN103744643A (zh) * | 2014-01-10 | 2014-04-23 | 浪潮(北京)电子信息产业有限公司 | 一种多线程程序下多节点并行架构的方法及装置 |
CN106371912A (zh) * | 2015-07-21 | 2017-02-01 | 阿里巴巴集团控股有限公司 | 一种流式计算系统的资源调度方法和装置 |
CN106371912B (zh) * | 2015-07-21 | 2019-11-26 | 阿里巴巴集团控股有限公司 | 一种流式计算系统的资源调度方法和装置 |
CN105912385A (zh) * | 2016-04-12 | 2016-08-31 | 北京橙鑫数据科技有限公司 | 基于安卓系统的应用程序对数据库的操作方法和装置 |
CN106095602A (zh) * | 2016-06-22 | 2016-11-09 | 东软集团股份有限公司 | 控制进程运行的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN1133925C (zh) | 2004-01-07 |
JP3697148B2 (ja) | 2005-09-21 |
KR100390611B1 (ko) | 2003-07-07 |
KR20010050426A (ko) | 2001-06-15 |
JP2001142726A (ja) | 2001-05-25 |
US6782537B1 (en) | 2004-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1133925C (zh) | 建立跨越多个进程的通信方法和系统 | |
US20050165881A1 (en) | Event-driven queuing system and method | |
US7650331B1 (en) | System and method for efficient large-scale data processing | |
US7756919B1 (en) | Large-scale data processing in a distributed and parallel processing enviornment | |
Qadah et al. | Quecc: A queue-oriented, control-free concurrency architecture | |
Meghanathan | A survey of contemporary real-time operating systems | |
EP0943993A2 (en) | Information handling system | |
KR102334511B1 (ko) | 작업 의존성 관리 | |
US6738846B1 (en) | Cooperative processing of tasks in a multi-threaded computing system | |
CN102880518A (zh) | 实现公平可缩放的读者写者互斥的方法和装置 | |
AU2001297946A1 (en) | Computer multi-tasking via virtual threading | |
EP1364284A2 (en) | Computer multi-tasking via virtual threading | |
US20030056084A1 (en) | Object orientated heterogeneous multi-processor platform | |
US8495642B2 (en) | Mechanism for priority inheritance for read/write locks | |
Blanusa et al. | Scalable fine-grained parallel cycle enumeration algorithms | |
Audemard et al. | A distributed version of syrup | |
Devulapalli et al. | Distributed queue-based locking using advanced network features | |
JP7346649B2 (ja) | 同期制御システムおよび同期制御方法 | |
Michael et al. | Relative performance of preemption-safe locking and non-blocking synchronization on multiprogrammed shared memory multiprocessors | |
US9384047B2 (en) | Event-driven computation | |
Huang et al. | VODCA: View-oriented, distributed, cluster-based approach to parallel computing | |
Smolinski | Coordination of parallel tasks in access to resource groups by adaptive conflictless scheduling | |
Kuo et al. | Real-time concurrency control in a multiprocessor environment | |
Enokido et al. | The energy-efficient object replication scheme by omitting meaningless write methods in virtual machine environments | |
Lubowich et al. | On the performance of distributed lock-based synchronization? |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20040107 Termination date: 20110919 |