JP3697148B2 - 分散コンピュータ環境において、複数のマルチスレッド化プロセスに渡ってコミュニケータを設定する方法およびシステム - Google Patents
分散コンピュータ環境において、複数のマルチスレッド化プロセスに渡ってコミュニケータを設定する方法およびシステム Download PDFInfo
- Publication number
- JP3697148B2 JP3697148B2 JP2000283872A JP2000283872A JP3697148B2 JP 3697148 B2 JP3697148 B2 JP 3697148B2 JP 2000283872 A JP2000283872 A JP 2000283872A JP 2000283872 A JP2000283872 A JP 2000283872A JP 3697148 B2 JP3697148 B2 JP 3697148B2
- Authority
- JP
- Japan
- Prior art keywords
- processes
- context identifier
- communicating
- communicator
- candidate
- 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.)
- Expired - Fee Related
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)
Description
【発明の属する技術分野】
本発明は、コンピュータシステムにおける共用リソースの管理機能に関し、特に、例えば、メッセージ伝達インターフェース(message passing interface;MPI)ライブラリ内部での実行のための、スレッド−セーフ分散コンセンサス技術に関する。
【0002】
【従来の技術】
本発明の背景のより良い理解のために、特定の用語の説明を最初に行う。対称型マルチプロセッサ(SMP)として、技術上よく知られている用語は、コンピュータ・システムにおけるハードウェアの態様に関し、特に、プロセッサ・プレーナー自身の物理的なレイアウトおよびデザインに関する。このような複数のプロセッサ・ユニットは、一つの特徴として、グローバルメモリの共用と、SMPシステムの入出力(I/O)への等しいアクセスとを有する。
【0003】
現在の計算システムに一般的に関連する他の用語は、“スレッド”である。“スレッド”という用語は、一般的な意味において、コンピュータで実行されるアプリケーションソフトウェアおよびオペレーティング・システムのカーネルにおける単純な実行パスを意味する。技術上よく理解されているように、単一のプロセス・イメージ当たり、複数のこのようなスレッドが許容されることは、普通のことである。
【0004】
現在、スレッド規格は、POSIX規格に組み入れられている。POSIX規格の下での、基本的なスレッド・マネージメントについては、例えば、K.Robbins and S.Robbinsによる刊行物「Practical UNIX Programing − A Guide to Concurrency,Communication and Multi − Threading,Prentice Hall PTR(1996)」に述べられている。
【0005】
発明の実施の形態を説明する際に利用される他のコンセプトは、“ロック”である。コードのクリティカル・セクション、あるいは、共用ライブラリのような、共用データ構造を有することは、現在のコンピュータ・システムにおいて典型的であり、これらの保全性は、システムの正しいオペレーションにとって極めて重要である。ロックは、一般的に、これらコードのクリティカル・セクションや共用データ構造へのアクセスを“直列化する”ために、ソフトウェア(あるいはハードウェア)において利用されるデバイスである。
【0006】
注意すべきもう一つの用語は、マルチスレッド−セーフであるコードのコンセプトである。全てのスレッドに対してデータ保全性が確保されるように、同じリソースまたはルーチンを争っている複数の実行スレッドが直列化される場合に、コードは、スレッド/MP−セーフであると判断される。これをもたらす一つの方法は、前述のロックによる。
【0007】
更なる背景として、メッセージ伝達インターフェース(MPI)規格は、以下のセマンティクスを定義する。すなわち、パラレル・ジョブにおけるプロセスは、コミュニケーション・ドメイン(ここでは、“コミュニケータ”とも称される)内でメッセージを交換する。コミュニケーション・ドメインは、そのコミュニケーション・ドメイン内のメッセージの保全性を保証する。あるドメインにおいて発行されたメッセージは、他のドメインにおいて発行されたメッセージと干渉しない。パラレル・ジョブが開始すると、プロセスのサブセットは、必要に応じて、別個のコミュニケーション・ドメインを作るために協働することができる。
【0008】
【発明が解決しようとする課題】
しかしながら、本発明者は、複数のスレッドが、同時にコミュニケーション・ドメインを得ようと試みることのできるマルチスレッド環境において、問題が発生することを認識している。この問題を処理する方法がない場合には、デッドロックが起こることとなる。したがって、マルチスレッド化処理システムにおいて、分散コンセンサスを実現するためには、非デッドロッキング技術が必要とされる。本発明は、この要求に答える一つの技術として提供される。
【0009】
【課題を解決するための手段】
本発明の一態様においては、複数のスレッドが同時にコミュニケータを設定しようと試みることのできる分散コンピュータ環境において、複数のプロセスに渡ってコミュニケータを設定する方法であって、(i)複数のプロセス上の一群の関与スレッドについてコミュニケータを設定するための一の候補コンテキスト識別子を設定するために、複数のプロセスに渡ってコミュニケーションするステップと、(ii)複数のプロセスのそれぞれの関与スレッドで、候補コンテキスト識別子がそれぞれの関与スレッドのプロセスで依然として使用可能であるか否かを確認することを通して、候補コンテキスト識別子を、それぞれの関与スレッドのプロセスで請求できるか否かをチェックし、候補コンテキスト識別子を複数のプロセスの全てのプロセスで請求できる場合には、候補コンテキスト識別子を新しい識別子として請求し、これによってコミュニケータを設定するために、複数のプロセスに渡ってコミュニケーションするステップとを含む方法を提供する。
【0010】
本発明の他の態様においては、複数のスレッドが同時にコミュニケータを設定しようと試みることのできる分散コンピュータ環境において、複数のマルチスレッド化プロセスに渡ってコミュニケータを設定するシステムであって、(i)複数のプロセス上の一群の関与スレッドについてコミュニケータを設定するための一の候補コンテキスト識別子を設定するために、複数のプロセスに渡ってコミュニケーションする手段と、(ii)複数のプロセスのそれぞれの関与スレッドで、候補コンテキスト識別子がそれぞれの関与スレッドのプロセスで依然として使用可能であるか否かを確認することを通して、候補コンテキスト識別子を、それぞれの関与スレッドのプロセスで請求できるか否かをチェックし、候補コンテキスト識別子を複数のプロセスの全てのプロセスで請求できる場合には、候補コンテキスト識別子を新しいコンテキスト識別子として請求し、これによってコミュニケータを設定するために、複数のプロセスに渡ってコミュニケーションする手段とを備えるシステムを提供する。
【0012】
言い換えれば、ここでは、マルチスレッド化マルチプロセス・コンピュータ環境において、分散コンセンサスを実現するための技術を提供する。本技術は、決定論的である。というのは、スレッドが、制限された再試行の回数および予測可能な順序で、コミュニケータの作成に成功するからである。このため、本技術は、コミュニケータの作成に失敗したスレッドが、再試行の前にランダムな量の時間の間単に待機するのみである、いわゆる“ランダム化”アルゴリズムに対して優位であると思われる。加えて、本技術は、スレッド間のデッドロックを回避することを保証する。このため、本技術は、デッドロックの状態を検出して、デッドロックを解除させる他のアルゴリズムに対して優位である。デッドロックの検出は、スレッドが進行しないある時間が経過したことを検知することを典型的に含む。本技術の分散コンセンサス機能は、効率的である。というのは、同時にコミュニケータを作成しようとする複数のグループのスレッドの存在にもかかわらず、新しいコミュニケーション・ドメインに対する分散コンセンサスを実現するために、スレッドが再試行させられる回数に、上限が存在するからである。
【0013】
【発明の実施の形態】
本発明の機能を組み込み、そして利用するスレッド化コンピュータ環境の一実施形態を、図1を参照して以下に説明する。
【0014】
図1に示されるように、コンピュータ環境100は、コネクション104によって、相互接続された複数の演算ノード102を有する。一例として、それぞれの演算ノードは、International Business Machines Corporationによって提供されるRS/6000 SP システムのノードで構成することができる。コネクション104は、同様にInternational Business Machines Corporationによって提供される、例えばSPスイッチ、あるいはハイパフォーマンス・スイッチ(HPS)のような、パケット交換ネットワークとすることができる。再度言及しておくが、図1は、あくまで一例として示されたものである。ここで開示される技術は、図1に示したマルチプロセッサ環境に加えて、単一のマシン上で実行される、シングルスレッド化プログラムまたはマルチスレッド化プログラムの組に適用可能である。
【0015】
コンピュータ環境100内において、メッセージ・パケットは、パケット交換ネットワーク104を経て、ソース演算ノード(送信側)からレシーバ演算ノード(受信側)へ渡される。例えば、演算ユニットNのユーザ・タスク106は、演算ユニット1(受信側)のユーザ・タスク106へ、メッセージを渡すことができる。アダプタ112は、演算ユニット102をスイッチ104に接続する。スイッチ104の一例は、「IBM Parallel System Support Programs For AIX AdministrationGuide」Publication No.GC23−3897−02(1996)に詳細に述べられている。
【0016】
更なる説明として、演算ユニットとその演算ユニットと関連したアダプタ112との間のコミュニケーションは、例えば、コミュニケーション開始、コミュニケーション終了、ルート有効化、ルート無効化、ステータス戻し、およびアダプタ・リセットのような機能を含むインターフェースによって記述される。一つの実施形態において、インターフェースは、ここではMPIライブラリとも称される、メッセージ伝達インターフェース(MPI)110より構成される。
【0017】
それぞれの演算ユニット102内で、アダプタへのアクセスは、カーネル・エクステンション/デバイス・ドライバ108によって管理される。エクステンション108は、一組の機能を含む。この一組の機能は、オペレーティング・システム自身(例えば、International Business Machines Corporationによって提供されるAIXオペレーティング・システム)の権限を有する。カーネル・エクステンションは、ユーザ・タスク106(もしくはプログラム)によるアダプタ112の使用を許可する。そして、要求される場合には、ユーザ・タスクへの割り込みを行う機能を有する。ユーザ・タスク106は、MPIライブラリ110を通じてアダプタ112とコミュニケーションする。MPIライブラリは、例えば、InternationalBusiness Machines Corporationの刊行物「IBM Parallel Environment for AIX:MPI Programming and Subroutine Reference」Version 2,Release 4(October,1998)にさらに詳細に述べられている。
【0018】
International Business Machines CorporationのMPIライブラリの実装は、他の様々な刊行物の中で、詳細に述べられている。例えば、IBM System Journal 表題「The Communication Software In Parallel Environment Of The IBM SP2」Vol.34,No.2,pp.205−215(1995)に掲載された論文を参照されたい。更なる情報が、W.Richard Stevens 著の教本、「UNIXNetwork Programming」Prentice Hall,Inc発行(1990)において得られる。
【0019】
既に言及したように、ここでは、コンピュータ環境は、ユーザ・タスクが複数のスレッドを含むことができるようなスレッド化コンピュータ環境で構成され、および、ライブラリがスレッド化MPIであると仮定する。スレッド化コンピュータ環境は、今日、産業上周知である。スレッド化MPIライブラリは、例えば、「IBM Parallel Environment for AIX」Version 2,Release4,IBM Product No. 5765−543(October 1998)のようにInternational Business Machines Corporationから入手できる。このスレッド化MPIは、AIXシステム上で実行されるライセンス・プログラム製品で構成される。
【0020】
本発明の一つの詳細な実施態様について論ずる前に、背景として以下の定義を与える。
【0021】
“パラレル・ジョブ”とは、一群のプロセッサ上で実行される一組のタスクである。これらのタスクは、協働し、およびデータを交換して、共同で問題を解決する。
【0022】
“タスク”もしくは“プロセス”は、アドレス空間および一つ以上の制御フローを含む実行プログラム(命令のシーケンス)の一例である。“アドレス空間”は、タスクが参照する、あるいはアクセスするメモリ・ロケーションの組である。
【0023】
“スレッド”とは、タスク内の制御フローである。ほとんどのシステムは、今日、単一タスク内の複数の制御フローをサポートする。複数のスレッドは、同時に実行可能である。
【0024】
“MPIコミュニケータ”とは、一群のコミュニケーション・タスクから成る論理エンティティである。一例として、コミュニケータには、コンテキストIDと呼ばれる識別子が付与される。
【0025】
“コンテキストID”もしくは“コンテキスト識別子”とは、特定のMPIコミュニケータを構成する複数のタスクに渡って同一であるが、他のコミュニケータとは区別される固有の数値である。
【0026】
“コミュニケーション・ドメイン”とは、コミュニケータを構成する複数のタスクがメッセージを交換するコンテキストである。コミュニケーション・ドメインは、ドメイン内の送信メッセージが、ドメイン外のタスク(すなわち、異なるコミュニケータでは)へ送られることはないという点で、“島”の特性を有している。コミュニケーション・ドメインとコミュニケータは、ここでは、同様な意味で使用される。
【0027】
“縮約”オペレーションとは、一組の値に対して実行されるオペレーション(例えば,SUM,BITWISE AND)であり、その各値は、パラレル・ジョブにおける一組のコミュニケーション・タスクのそれぞれのメンバーによって与えられる。オペレーションの結果は、単一のプロセス(縮約オペレーション)で、あるいは、全ての関与しているプロセス(全縮約オペレーション)に戻すことができる。
【0028】
複数のコミュニケーション・ドメインの分離を管理するために、例えばMPIライブラリが、それぞれのコミュニケーション・ドメインを、ドメイン内のジョブ・プロセスによって同意された固有の“コンテキストID”と関連づける。MPIライブラリ・ルーチン(その目的は、新しいコミュニケーション・ドメインを作成することである)は、パラレル・ジョブのプロセスのサブセット(すなわちスレッド)によってコールされ得る。このライブラリ・ルーチンは、共通のコンテキストIDを識別および請求することによって、新しいドメインを形成しなければならない。このコンテキストIDは、ドメイン内の全てのプロセスに渡って固有のものであり、サブセット内の全てのプロセスで使用可能である。新しいコミュニケーション・ドメインを作成するためのコールは、いくつかのグループのスレッドによって同時に行われ得る。それらは、同じプロセス内のものであってもよく、異なるプロセス内のものであってもよい。
【0029】
図2は、3つのプロセス200,202,204(プロセス1、プロセス2およびプロセス3)上のそれぞれのスレッド1が、コミュニケータAを作成するためにMPIライブラリをコールし、プロセス200およびプロセス202上のスレッド2が、コミュニケータBを作成するためにMPIライブラリをコールし、プロセス202およびプロセス204上のスレッド3が、コミュニケータCを作成するためにMPIライブラリをコールする、というシナリオを示す。どのプロセスにおいても、コールは任意の順序で発生可能である。MPIセマンティックは、全てのスレッドが進行すること、およびそれぞれのライブラリ・コールが最終的には戻ることを要求する。
【0030】
問題は、使用可能なIDのうちの一つを、同時に獲得しようと試みることのできる、複数のグループのスレッドの存在下で、それぞれの新しいコミュニケーション・ドメインに対して、固有のコンテキストIDを選択することである。例えば、コンテキストIDリストのような、グローバル・データへのアクセスは、マルチスレッド化ライブラリにおいて、直列化されなければならない。しかしながら、ジョブがデッドロックし得るので、共通のコンテキストIDを識別するためにプロセスに必要とされるコミュニケーション・フェーズの際に、どのスレッドもロックを保持することができない。
【0031】
したがって、一般的に言えば、ここでは、マルチスレッド化コンピュータ環境において、複数のプロセスに渡ってコミュニケータを設定しながら、デッドロックを避ける方法が提供される。この環境では、複数のスレッドは、同時にコミュニケータを設定しようと試みることができる。コミュニケータは、当該コミュニケータを設定しようと試みている複数のスレッドが、関与スレッドを含む複数のプロセスに渡って固有である値(コンテキストID)について同意した時に、設定されるものと見なされる。
【0032】
本方法は、2つのフェーズを用いる。フェーズ1においては、候補コンテキストID(ここでは、候補識別子とも称される)が、コミュニケータを作成しようと試みている複数のスレッド間に設定される。フェーズ2において、それぞれの関与スレッドは、候補コンテキストIDがそのプロセスにおいて請求可能か否かをチェックする。請求可能な場合には、そのコンテキストIDを請求することを試み、このオペレーションの結果を他の関与スレッドへ報告する。デッドロックを避けるため、コミュニケータを設定しようと試みているプロセスのスレッドは、それぞれのプロセスにおける優先キューに挿入される。この優先キューは、当該プロセス内にあるどのスレッドが、コンテキストを請求する権利を有するか否かを制御する。これらのスレッドは、一つの例として、スレッドが、そこから新しいコミュニケータを呼び出している現行のコンテキスト識別子に基づいて、優先順位付けされる。いずれかのスレッドが、フェーズ2の際の失敗を報告する場合には、本方法は、フェーズ1に戻って、新しい候補コンテキストIDの選択を再び開始する。
【0033】
特に、本発明に従えば、MPIライブラリは、パラレル・ジョブ内のそれぞれのプロセスにおいて、使用可能なコンテキストIDのリスト(ここでは、“グローバル・コンテキスト・リストとも称される)を保持する。これらのコンテキストIDは、スカラーである。このコンテキストIDリストは、プロセスに対してグローバルである。そして、コンテキストIDリストへのスレッド・アクセスは、ロックによって直列化される。MPIジョブが開始されるとき、全ての関与しているプロセスは、シングル・スレッド化されており、例えば、最小のコンテキストIDが割り当てられている単一のコミュニケーション・ドメインに属する。初期化の後、いずれかのスレッドの組内にあり、かつ、新しいコミュニケーション・ドメインを作成するためにMPIライブラリをコールするそれぞれのスレッドは、既存のドメインのコンテキストにおいて、これを行う。本発明の一つの態様において、この既存のドメインのコンテキスト識別子は、以下において詳細に述べられるように、新しいコンテキストIDの割当に優先順位付けを行うために使用される。
【0034】
所与のコンテキストIDのもとで新しいコミュニケーション・ドメインに対する要求が既に発行されている場合、これらのコンテキストIDは、ソートされたリスト(“優先リスト”)内に置かれる。このリストは、プロセスに対してグローバルであり、ロックのもとでアクセスされる。最小のコンテキストIDのもとで要求を行ったスレッドは、優先リストの中で第1位となる。したがって、そのスレッドは、そのプロセスで、グローバル・コンテキスト・リストを更新することができるスレッドとなる。
【0035】
最後のコンテキストID(ここでは、新コンテキストIDとも称される)に関するコンセンサスは、最低限2ラウンドのコミュニケーションを必要とする。コミュニケーションの第1ラウンドは、候補コンテキストID(候補識別子)を作成し、現行のドメイン内の全てのプロセスが、サブルーチン・コールに関与していることを保証する(すなわち、コールは、いくつかのプロセス上で遅れるか、または、ブロックされる可能性がある)。全てのプロセスが関与していることが分かると、それぞれのスレッドは、そのスレッドのプロセスの優先リスト(ここでは、優先キューとも称される)に自身の現行コンテキストIDを挿入する。どのプロセスにおいても、コミュニケーションの第1ラウンドの際に、ロックが解放されている間は、候補コンテキストIDは、別のスレッドによって請求され得る。よって、次のステップは、候補コンテキストIDが、関与している全てのプロセスで請求できるか否かチェックすることであり、請求できる場合に、コンセンサスが実現できる。候補識別子が、依然として使用可能であり、かつ、スレッドが、優先リストにおいて第1位(すなわち優先権を有する)である場合には、そのスレッドは、グローバル・コンテキスト・リストから候補識別子を更新(すなわち、削除)し、このようにして、新しい識別子として候補識別子を“請求する”。スレッドが、優先リストの第1位でない場合には、スレッドは、ロックを解放し、待機する。コミュニケーションの第2ラウンドが進行し、候補識別子が、あるプロセスで請求され得ないことを示す場合には、自身のプロセスのグローバル・コンテキスト識別子リストを更新したスレッドは、その更新をバックアウトする(すなわち、前に削除された候補識別子をリスト内へ加え戻す)。候補識別子が全てのプロセスにおいて請求された場合には、成功したスレッドは、自身の現行コンテキスト識別子を優先リストから削除し、待機している全てのスレッドをウェイクアップする。
【0036】
優先キュー内で最高の優先順位を有さない故に待機しているスレッドは、候補識別子が依然として使用可能であるか否かを確かめるために、グローバル・コンテキスト識別子リストがチェックされるポイントで処理を再開する。関与スレッドが、自身の個々のプロセスで候補識別子を請求することができなかった故に、コンセンサスに失敗したスレッドは、コミュニケーションの第1ラウンドで、新しい候補識別子の選択を続ける。
【0037】
図3および図4は、本発明の原理に従って、マルチスレッド化コンピュータ環境において、複数のプロセスに渡ってコミュニケータを設定する決定論的な方法の、さらに詳細な実施の態様を示す。これと同じ制御フロー(図3,図4)は、計算ドメイン内の全てのプロセス上で実行される。ローカルcontext_listは、ローカル・プロセス上で使用可能なフリー・コンテキスト識別子のリストである。find_candidate_context(temp_list)機能は、全てのプロセス上で使用可能なコンテキストIDを検索する。update_results(値)機能は、全てのプロセス上で値が真の場合には、TRUE(真)を戻し、そうでない場合には、FALSE(偽)が戻される。2つのスレッドが同時に、新しいコンテキスト識別子を得ようと試みる場合には、一方のスレッドが、待機状態で終了することとなる。
【0038】
図3を参照すると、処理は、そこから新しいコミュニケータに対してコールが行われる現行コミュニケータのコンテキスト識別子であるcurrent_contextを入力として受け取る(ステップ300)。次に、ロックが獲得され、new_context_commitフラグがFALSEにセットされ、current_context識別子が、get_contextキュー(すなわち優先キュー)へ加えられる(ステップ310)。
【0039】
処理は、次に、new_context_commitフラグがTRUEか否かを問い合わせ(ステップ320)、TRUEである場合には、ロックを解放し、候補識別子を、新コンテキスト識別子として戻し、これにより、コミュニケータを設定し、処理を終了する(ステップ330)。new_context_commitフラグがTRUEでない場合には、有効コンテキストIDのリスト(temp_context_list)が設定され、ロックが解放され、新コンテキスト識別子が検索され(find_candidate_context(temp_list))、その後、ロックが再度獲得され、try_to_commitフラグがTRUEにセットされる(ステップ340)。find_candidate_context(temp_list)はサブルーチンであり、このサブルーチンは、この特定のコミュニケータを経る全てのプロセス上で有効である新しいコンテキスト識別子を検索する、全縮約オペレーションを実行する。次に、try_to_commitフラグがTRUEか否かの問い合わせがなされる(ステップ350)。このフラグがTRUEでない場合には、処理は、new_context_commitフラグがTRUEであるか否かの問い合わせ(ステップ320)へ戻る。try_to_commitフラグがTRUEである場合には、new_context(すなわち候補識別子)がローカル・コンテキスト・リスト(プロセスの使用可能なコンテキスト・リスト)内に存在するか否かの問い合わせがなされる(ステップ360)。new_contextが、ローカル・コンテキスト・リスト内に存在しない場合には、ロックが解放され、update_resultsルーチンがFALSEの値を戻し、ロックが再度獲得され、try_to_commitフラグがFALSEにセットされる(ステップ370)。次に、処理は、図示されるように、問い合わせ(ステップ350)に戻る。
【0040】
図4を参照すると、new_contextが、ローカル・コンテキスト・リスト内に存在する場合には、処理は、スレッドが優先キュー内で優先権を有する(すなわち、get_contextキュー内において第1位である)か否か問い合わせる(ステップ400)。優先権を有さない場合には、ロックは解放され、スレッドはコンテキスト条件を待ち、その後にロックが再び獲得される(ステップ440)。コンテキスト条件待ちとは、キュー内でより高い優先順位を有するスレッドからの信号を待つことである。その後、処理は、try_to_commitフラグがTRUEであるか否かを確認するステップ(ステップ350)へ戻る(図3)。
【0041】
スレッドが、get_contextキュー内で優先権を有する場合には、処理は、プロセスの使用可能なコンテキスト識別子リストを更新し(すなわち、リストから候補コンテキストIDを削除し)、ロックを解放し、update_results(TRUE)信号をその他の関与スレッドへ送り、ロックを再度獲得し、try_to_commitフラグをFALSEにセットする(ステップ410)。次に、処理は、update_resultsが、全てのプロセス上でTRUEか否か問い合わせる(ステップ420)。この問い合わせは、全てのプロセスが、候補コンテキスト識別子を削除することにより、自身のローカル・コンテキスト識別子キューを首尾よく更新したか否かを判別する。首尾よく更新しなかった場合には、自身のローカル・コンテキスト識別子リストを更新したそれぞれのプロセスは、ローカル・コンテキスト・リストへの変更を取り消し(ステップ430)、try_to_commitフラグがTRUEであるか否かの問い合わせ(ステップ350)(図3)へ戻らなければならない。全てのプロセスが、自身の使用可能なコンテキスト識別子リストを更新した場合には、次に、current_contextが優先キュー(すなわち、get_context_queue)から削除され、コンテキスト条件が知らされ、new_context_commitフラグがTRUEにセットされる(ステップ450)。コンテキスト条件が知らされると、優先キュー内で待機しているスレッド(ステップ440)がウェイクアップされる。処理は、try_to_commitフラグがTRUEか否かの問い合わせ(ステップ350)へ戻り、上述したように進行する。
【0042】
更なる説明として、本発明の原理に従った処理の、一実施態様に関する疑似コードを以下に提供する。
【0043】
この疑似コードにおいて、mpi_allreduce(X)はライブラリ・ルーチンであり、このルーチンは、コールに関与しているプロセスによって与えられるX値の組に、縮約オペレーション(例えば、SUM,BITWISE)を実行し、その結果を、その組内の全てのプロセスへ配布する。これは、以下のアルゴリズムのコミュニケーション・フェーズを実行するために用いられる既存のライブラリ関数である。
【0044】
【表1】
【0047】
ここに示された流れ図は、例示として提供されたものである。本発明の趣旨に反することなしに、ここで述べられたこれらの図もしくはステップ(またはオペレーション)に対するバリエーションが存在し得る。例えば、ある場合においては、ステップは、異なる順番で実行可能であり、また、ステップは、付加、削除、もしくは修正可能である。これらのバリエーションの全ては、請求の範囲に記載された本発明の一部を含むと判断される。
【0048】
いくつかの好ましい実施の形態に従って、本発明を詳細に述べてきが、当業者によれば、多くの修正や変更を行うことができる。従って、本発明の範囲および本発明の真の趣旨に含まれるそのような修正や変更の全てをカバーすることが、請求の範囲によって意図されている。
【図面の簡単な説明】
【図1】本発明に従って、コミュニケーション・ドメイン・コンセンサス機能を具体化するスレッド化コンピュータ環境の一例を示す図である。
【図2】本発明の原理に従って、複数のプロセスの複数のスレッドに渡って複数のコミュニケーション・ドメインが設定されるような、複数のスレッドを有する複数のプロセスの簡略図である。
【図3】本発明の原理に従って、コミュニケーション・ドメイン・コンセンサス技術の実施形態を示す図である。
【図4】本発明の原理に従って、コミュニケーション・ドメイン・コンセンサス技術の実施形態を示す図である。
【符号の説明】
100 コンピュータ環境
102 演算ユニット
104 パケット交換ネットワーク
106 ユーザ・タスク
108 カーネル・エクステンション/デバイス・ドライバ
110 MPIライブラリ
112 アダプタ
200,202,204 プロセス
Claims (14)
- 複数のスレッドが同時にコミュニケータを設定しようと試みることのできる分散コンピュータ環境において、複数のマルチスレッド化プロセスに渡ってコミュニケータを設定する方法であって、
(i)前記複数のプロセス上の一群の関与スレッドについて前記コミュニケータを設定するための一の候補コンテキスト識別子を設定するために、前記複数のプロセスに渡ってコミュニケーションするステップと、
(ii)前記複数のプロセスのそれぞれの関与スレッドで、前記候補コンテキスト識別子がそれぞれの関与スレッドのプロセスで依然として使用可能であるか否かを確認することを通して、前記候補コンテキスト識別子を、それぞれの関与スレッドのプロセスで請求できるか否かをチェックし、前記候補コンテキスト識別子を前記複数のプロセスの全てのプロセスで請求できる場合には、前記候補コンテキスト識別子を新しいコンテキスト識別子として請求し、これによって前記コミュニケータを設定するために、前記複数のプロセスに渡ってコミュニケーションするステップとを含む方法。 - 前記コミュニケーションするステップ(ii)は、それぞれの関与スレッドでの前記チェックの結果を、前記一群の関与スレッドの他の関与スレッドへ報告することを含む、請求項1に記載の方法。
- 前記コミュニケーションするステップ(i)は、前記候補コンテキスト識別子を設定するために、前記複数のプロセスの各プロセスで保持される、候補コンテキスト識別子のローカル識別子リストをチェックすることを含む、請求項1に記載の方法。
- 前記コミュニケーションするステップ(ii)が、前記候補コンテキスト識別子を前記複数のプロセスの全てのプロセスで請求できないために前記コミュニケータの設定に失敗する場合には、一の新しい候補コンテキスト識別子を設定するために、前記コミュニケーションするステップ(i)を繰り返し、当該新しい候補コンテキスト識別子について前記コミュニケーションするステップ(ii)を繰り返す、請求項1に記載の方法。
- 前記コミュニケーションするステップ(i)および前記コミュニケーションするステップ(ii)は、MPIライブラリ内のサブルーチン・コールによって実行される、請求項1に記載の方法。
- 前記コミュニケーションするステップ(i)が、前記複数のプロセスの全てのプロセスが前記コミュニケータの設定に関与していることを保証し、前記コミュニケーションするステップ(ii)が、それぞれの関与スレッドごとに、当該関与スレッドの現行コンテキスト識別子を、当該関与スレッドのプロセスに対してグローバルである優先キューへ挿入することを含み、前記コミュニケーションするステップ(ii)が、前記優先キュー内にリストされた、最高優先順位の現行コンテキスト識別子のもとでコミュニケータの要求を行った一の関与スレッドに対し、その候補コンテキスト識別子を、前記新しいコンテキスト識別子として請求することを許可することを含む、請求項1に記載の方法。
- 前記コミュニケーションするステップ(ii)が、前記関与スレッドが、そのプロセスで保持される優先キューにおいて優先権を有する場合には、前記候補コンテキスト識別子を請求する際に、前記候補コンテキスト識別子を、前記プロセスで保持される候補コンテキスト識別子のローカル識別子リストから除去することを含む、請求項1に記載の方法。
- 複数のスレッドが同時にコミュニケータを設定しようと試みることのできる分散コンピュータ環境において、複数のマルチスレッド化プロセスに渡ってコミュニケータを設定するシステムであって、
(i)前記複数のプロセス上の一群の関与スレッドについて前記コミュニケータを設定するための一の候補コンテキスト識別子を設定するために、前記複数のプロセスに渡ってコミュニケーションする手段と、
(ii)前記複数のプロセスのそれぞれの関与スレッドで、前記候補コンテキスト識別子がそれぞれの関与スレッドのプロセスで依然として使用可能であるか否かを確認することを通して、前記候補コンテキスト識別子を、それぞれの関与スレッドのプロセスで請求できるか否かをチェックし、前記候補コンテキスト識別子を前記複数のプロセスの全てのプロセスで請求できる場合には、前記候補コンテキスト識別子を新しいコンテキスト識別子として請求し、これによって前記コミュニケータを設定するために、前記複数のプロセスに渡ってコミュニケーションする手段とを備えるシステム。 - 前記コミュニケーションする手段(ii)は、それぞれの関与スレッドでの前記チェックの結果を、前記一群の関与スレッドの他の関与スレッドへ報告する手段をさらに有する、請求項8に記載のシステム。
- 前記コミュニケーションする手段(i)は、前記候補コンテキスト識別子を設定するために、前記複数のプロセスの各プロセスで保持される、候補コンテキスト識別子のローカル識別子リストをチェックする手段をさらに有する、請求項8に記載のシステム。
- 前記コミュニケーションする手段(ii)が、前記候補コンテキスト識別子を前記複数のプロセスの全てのプロセスで請求できないために前記コミュニケータの設定に失敗する場合には、一の新しい候補コンテキスト識別子を設定するために、前記コミュニケーションする手段(i)がその動作を繰り返し、当該新しい候補コンテキスト識別子について前記コミュニケーションする手段(ii)がその動作を繰り返す、請求項8に記載のシステム。
- 前記コミュニケーションする手段(i)および前記コミュニケーションする手段(ii)は、MPIライブラリ内のサブルーチン・コールによって実行される、請求項8に記載のシステム。
- 前記コミュニケーションする手段(i)が、前記複数のプロセスの全てのプロセスが前記コミュニケータの設定に関与していることを保証し、前記コミュニケーションする手段(ii)が、それぞれの関与スレッドごとに、当該関与スレッドの現行コンテキスト識別子を、当該関与スレッドのプロセスに対してグローバルである優先キューへ挿入する手段を有し、前記コミュニケーションする手段(ii)が、前記優先キュー内にリストされた、最高優先順位の現行コンテキスト識別子のもとで、コミュニケータの要求を行った一の関与スレッドに、その候補コンテキスト識別子を、前記新しいコンテキスト識別子として請求することを許可する手段をさらに有する、請求項8に記載のシステム。
- 前記コミュニケーションする手段(ii)が、前記関与スレッドが、そのプロセスで保持される優先キューにおいて優先権を有する場合には、前記候補コンテキスト識別子を請求する際に、前記候補コンテキスト識別子を、前記プロセスで保持される候補識別子のローカル識別子リストから除去する手段を、さらに有する、請求項8に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
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 |
---|---|
JP2001142726A JP2001142726A (ja) | 2001-05-25 |
JP3697148B2 true JP3697148B2 (ja) | 2005-09-21 |
Family
ID=23599373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000283872A Expired - Fee Related JP3697148B2 (ja) | 1999-09-23 | 2000-09-19 | 分散コンピュータ環境において、複数のマルチスレッド化プロセスに渡ってコミュニケータを設定する方法およびシステム |
Country Status (4)
Country | Link |
---|---|
US (1) | US6782537B1 (ja) |
JP (1) | JP3697148B2 (ja) |
KR (1) | KR100390611B1 (ja) |
CN (1) | CN1133925C (ja) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4054572B2 (ja) * | 2001-12-17 | 2008-02-27 | キヤノン株式会社 | アプリケーション実行システム |
AU2003223352A1 (en) * | 2002-03-25 | 2003-10-13 | Eternal Systems, Inc. | Transparent consistent active replication of multithreaded application programs |
CN1324478C (zh) * | 2003-12-19 | 2007-07-04 | 华为技术有限公司 | 一种多线程处理器线程死锁检测的方法及其系统 |
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 |
CN101127685B (zh) * | 2007-09-20 | 2011-05-25 | 中兴通讯股份有限公司 | 一种进程间通讯装置及其进程间通讯方法 |
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 |
CN103257887B (zh) * | 2012-02-16 | 2016-06-08 | 宇龙计算机通信科技(深圳)有限公司 | 终端和进程控制方法 |
KR101994929B1 (ko) | 2012-12-03 | 2019-07-01 | 삼성전자주식회사 | 집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템 |
CN103019843B (zh) * | 2012-12-05 | 2016-05-11 | 北京奇虎科技有限公司 | Mpi函数调用方法和装置 |
CN103019844B (zh) * | 2012-12-05 | 2016-05-04 | 北京奇虎科技有限公司 | 一种支持多线程调用mpi函数的方法和装置 |
CN103164359B (zh) * | 2013-01-29 | 2017-04-05 | 北京雪迪龙科技股份有限公司 | 一种管道通信方法和装置 |
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 |
CN103744643B (zh) * | 2014-01-10 | 2016-09-21 | 浪潮(北京)电子信息产业有限公司 | 一种多线程程序下多节点并行架构的方法及装置 |
KR102246362B1 (ko) | 2014-10-24 | 2021-04-28 | 삼성전자주식회사 | 무선 그리드 컴퓨팅 방법 및 장치 |
CN106155846B (zh) * | 2015-04-15 | 2019-06-28 | 伊姆西公司 | 对块对象执行批量故障回复的方法和装置 |
CN106371912B (zh) * | 2015-07-21 | 2019-11-26 | 阿里巴巴集团控股有限公司 | 一种流式计算系统的资源调度方法和装置 |
CN105912385A (zh) * | 2016-04-12 | 2016-08-31 | 北京橙鑫数据科技有限公司 | 基于安卓系统的应用程序对数据库的操作方法和装置 |
CN106095602B (zh) * | 2016-06-22 | 2019-07-26 | 东软集团股份有限公司 | 控制进程运行的方法及装置 |
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 | 삼성전자주식회사 | 저널 파일을 관리하는 전자 장치 및 이의 동작 방법 |
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 |
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 |
US6718398B1 (en) * | 1999-06-21 | 2004-04-06 | Sun Microsystems, Inc. | Robust communications connection system and method for shared memory |
-
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
Also Published As
Publication number | Publication date |
---|---|
KR100390611B1 (ko) | 2003-07-07 |
US6782537B1 (en) | 2004-08-24 |
CN1133925C (zh) | 2004-01-07 |
CN1289962A (zh) | 2001-04-04 |
KR20010050426A (ko) | 2001-06-15 |
JP2001142726A (ja) | 2001-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3697148B2 (ja) | 分散コンピュータ環境において、複数のマルチスレッド化プロセスに渡ってコミュニケータを設定する方法およびシステム | |
US6112222A (en) | Method for resource lock/unlock capability in multithreaded computer environment | |
US6105049A (en) | Resource lock/unlock capability in multithreaded computer environment | |
JP2866241B2 (ja) | コンピュータシステムおよびスケジューリング方法 | |
EP0428006B1 (en) | Multilevel locking system and method | |
JP2882475B2 (ja) | スレッド実行方法 | |
US7349970B2 (en) | Workload management of stateful program entities | |
US5664088A (en) | Method for deadlock recovery using consistent global checkpoints | |
US5701470A (en) | System and method for space efficient object locking using a data subarray and pointers | |
US7281050B2 (en) | Distributed token manager with transactional properties | |
US8112751B2 (en) | Executing tasks through multiple processors that process different portions of a replicable task | |
US5442785A (en) | Method and apparatus for passing messages between application programs on host processors coupled to a record lock processor | |
US20030217092A1 (en) | Inter java virtual machine (JVM) resource locking mechanism | |
US20050149934A1 (en) | Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations | |
EP0943993A2 (en) | Information handling system | |
JPH05197604A (ja) | マルチプロセッサ・コンピュータ及びその動作方法 | |
EP1133725B1 (en) | A job parallel processing system for a service network | |
US6105050A (en) | System for resource lock/unlock capability in multithreaded computer environment | |
US6907605B1 (en) | Method and apparatus for providing for notification of task termination | |
US20060117320A1 (en) | Sharing dynamically changing resources in software systems | |
US8051417B2 (en) | Target thread selection in a multi-threaded process | |
Thomadakis et al. | Parallel software framework for large-scale parallel mesh generation and adaptation for cfd solvers | |
Kakugawa et al. | Local coteries and a distributed resource allocation algorithm | |
Michael et al. | Relative performance of preemption-safe locking and non-blocking synchronization on multiprogrammed shared memory multiprocessors | |
JP7346649B2 (ja) | 同期制御システムおよび同期制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040706 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041004 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050622 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050701 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080708 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090708 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100708 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110708 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |