JP3697148B2 - 分散コンピュータ環境において、複数のマルチスレッド化プロセスに渡ってコミュニケータを設定する方法およびシステム - Google Patents

分散コンピュータ環境において、複数のマルチスレッド化プロセスに渡ってコミュニケータを設定する方法およびシステム Download PDF

Info

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
Application number
JP2000283872A
Other languages
English (en)
Other versions
JP2001142726A (ja
Inventor
ロバート・ブラックモア
リチャード・アール・トリューマン
アリスン・ビー・ホワイト
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2001142726A publication Critical patent/JP2001142726A/ja
Application granted granted Critical
Publication of JP3697148B2 publication Critical patent/JP3697148B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging 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

【0001】
【発明の属する技術分野】
本発明は、コンピュータシステムにおける共用リソースの管理機能に関し、特に、例えば、メッセージ伝達インターフェース(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】
Figure 0003697148
【0047】
ここに示された流れ図は、例示として提供されたものである。本発明の趣旨に反することなしに、ここで述べられたこれらの図もしくはステップ(またはオペレーション)に対するバリエーションが存在し得る。例えば、ある場合においては、ステップは、異なる順番で実行可能であり、また、ステップは、付加、削除、もしくは修正可能である。これらのバリエーションの全ては、請求の範囲に記載された本発明の一部を含むと判断される。
【0048】
いくつかの好ましい実施の形態に従って、本発明を詳細に述べてきが、当業者によれば、多くの修正や変更を行うことができる。従って、本発明の範囲および本発明の真の趣旨に含まれるそのような修正や変更の全てをカバーすることが、請求の範囲によって意図されている。
【図面の簡単な説明】
【図1】本発明に従って、コミュニケーション・ドメイン・コンセンサス機能を具体化するスレッド化コンピュータ環境の一例を示す図である。
【図2】本発明の原理に従って、複数のプロセスの複数のスレッドに渡って複数のコミュニケーション・ドメインが設定されるような、複数のスレッドを有する複数のプロセスの簡略図である。
【図3】本発明の原理に従って、コミュニケーション・ドメイン・コンセンサス技術の実施形態を示す図である。
【図4】本発明の原理に従って、コミュニケーション・ドメイン・コンセンサス技術の実施形態を示す図である。
【符号の説明】
100 コンピュータ環境
102 演算ユニット
104 パケット交換ネットワーク
106 ユーザ・タスク
108 カーネル・エクステンション/デバイス・ドライバ
110 MPIライブラリ
112 アダプタ
200,202,204 プロセス

Claims (14)

  1. 複数のスレッドが同時にコミュニケータを設定しようと試みることのできる分散コンピュータ環境において、複数のマルチスレッド化プロセスに渡ってコミュニケータを設定する方法であって、
    (i)前記複数のプロセス上の一群の関与スレッドについて前記コミュニケータを設定するための一の候補コンテキスト識別子を設定するために、前記複数のプロセスに渡ってコミュニケーションするステップと、
    (ii)前記複数のプロセスのそれぞれの関与スレッドで、前記候補コンテキスト識別子がそれぞれの関与スレッドのプロセスで依然として使用可能であるか否かを確認することを通して、前記候補コンテキスト識別子を、それぞれの関与スレッドのプロセスで請求できるか否かをチェックし、前記候補コンテキスト識別子を前記複数のプロセスの全てのプロセスで請求できる場合には、前記候補コンテキスト識別子を新しいコンテキスト識別子として請求し、これによって前記コミュニケータを設定するために、前記複数のプロセスに渡ってコミュニケーションするステップとを含む方法。
  2. 前記コミュニケーションするステップ(ii)は、それぞれの関与スレッドでの前記チェックの結果を、前記一群の関与スレッドの他の関与スレッドへ報告することを含む、請求項1に記載の方法。
  3. 前記コミュニケーションするステップ(i)は、前記候補コンテキスト識別子を設定するために、前記複数のプロセスの各プロセスで保持される、候補コンテキスト識別子のローカル識別子リストをチェックすることを含む、請求項1に記載の方法。
  4. 前記コミュニケーションするステップ(ii)が、前記候補コンテキスト識別子を前記複数のプロセスの全てのプロセスで請求できないために前記コミュニケータの設定に失敗する場合には、一の新しい候補コンテキスト識別子を設定するために、前記コミュニケーションするステップ(i)を繰り返し、当該新しい候補コンテキスト識別子について前記コミュニケーションするステップ(ii)を繰り返す、請求項1に記載の方法。
  5. 前記コミュニケーションするステップ(i)および前記コミュニケーションするステップ(ii)は、MPIライブラリ内のサブルーチン・コールによって実行される、請求項1に記載の方法。
  6. 前記コミュニケーションするステップ(i)が、前記複数のプロセスの全てのプロセスが前記コミュニケータの設定に関与していることを保証し、前記コミュニケーションするステップ(ii)が、それぞれの関与スレッドごとに、当該関与スレッドの現行コンテキスト識別子を、当該関与スレッドのプロセスに対してグローバルである優先キューへ挿入することを含み、前記コミュニケーションするステップ(ii)が、前記優先キュー内にリストされた、最高優先順位の現行コンテキスト識別子のもとでコミュニケータの要求を行った一の関与スレッドに対し、その候補コンテキスト識別子を、前記新しいコンテキスト識別子として請求することを許可することを含む、請求項1に記載の方法。
  7. 前記コミュニケーションするステップ(ii)が、前記関与スレッドが、そのプロセスで保持される優先キューにおいて優先権を有する場合には、前記候補コンテキスト識別子を請求する際に、前記候補コンテキスト識別子を、前記プロセスで保持される候補コンテキスト識別子のローカル識別子リストから除去することを含む、請求項1に記載の方法。
  8. 複数のスレッドが同時にコミュニケータを設定しようと試みることのできる分散コンピュータ環境において、複数のマルチスレッド化プロセスに渡ってコミュニケータを設定するシステムであって、
    (i)前記複数のプロセス上の一群の関与スレッドについて前記コミュニケータを設定するための一の候補コンテキスト識別子を設定するために、前記複数のプロセスに渡ってコミュニケーションする手段と、
    (ii)前記複数のプロセスのそれぞれの関与スレッドで、前記候補コンテキスト識別子がそれぞれの関与スレッドのプロセスで依然として使用可能であるか否かを確認することを通して、前記候補コンテキスト識別子を、それぞれの関与スレッドのプロセスで請求できるか否かをチェックし、前記候補コンテキスト識別子を前記複数のプロセスの全てのプロセスで請求できる場合には、前記候補コンテキスト識別子を新しいコンテキスト識別子として請求し、これによって前記コミュニケータを設定するために、前記複数のプロセスに渡ってコミュニケーションする手段とを備えるシステム。
  9. 前記コミュニケーションする手段(ii)は、それぞれの関与スレッドでの前記チェックの結果を、前記一群の関与スレッドの他の関与スレッドへ報告する手段をさらに有する、請求項8に記載のシステム。
  10. 前記コミュニケーションする手段(i)は、前記候補コンテキスト識別子を設定するために、前記複数のプロセスの各プロセスで保持される、候補コンテキスト識別子のローカル識別子リストをチェックする手段をさらに有する、請求項8に記載のシステム。
  11. 前記コミュニケーションする手段(ii)が、前記候補コンテキスト識別子を前記複数のプロセスの全てのプロセスで請求できないために前記コミュニケータの設定に失敗する場合には、一の新しい候補コンテキスト識別子を設定するために、前記コミュニケーションする手段(i)がその動作を繰り返し、当該新しい候補コンテキスト識別子について前記コミュニケーションする手段(ii)がその動作を繰り返す、請求項8に記載のシステム。
  12. 前記コミュニケーションする手段(i)および前記コミュニケーションする手段(ii)は、MPIライブラリ内のサブルーチン・コールによって実行される、請求項8に記載のシステム。
  13. 前記コミュニケーションする手段(i)が、前記複数のプロセスの全てのプロセスが前記コミュニケータの設定に関与していることを保証し、前記コミュニケーションする手段(ii)が、それぞれの関与スレッドごとに、当該関与スレッドの現行コンテキスト識別子を、当該関与スレッドのプロセスに対してグローバルである優先キューへ挿入する手段を有し、前記コミュニケーションする手段(ii)が、前記優先キュー内にリストされた、最高優先順位の現行コンテキスト識別子のもとで、コミュニケータの要求を行った一の関与スレッドに、その候補コンテキスト識別子を、前記新しいコンテキスト識別子として請求することを許可する手段をさらに有する、請求項8に記載のシステム。
  14. 前記コミュニケーションする手段(ii)が、前記関与スレッドが、そのプロセスで保持される優先キューにおいて優先権を有する場合には、前記候補コンテキスト識別子を請求する際に、前記候補コンテキスト識別子を、前記プロセスで保持される候補識別子のローカル識別子リストから除去する手段を、さらに有する、請求項8に記載のシステム。
JP2000283872A 1999-09-23 2000-09-19 分散コンピュータ環境において、複数のマルチスレッド化プロセスに渡ってコミュニケータを設定する方法およびシステム Expired - Fee Related JP3697148B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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