JP2590045B2 - 分散処理制御方法及び分散処理システム - Google Patents

分散処理制御方法及び分散処理システム

Info

Publication number
JP2590045B2
JP2590045B2 JP6019177A JP1917794A JP2590045B2 JP 2590045 B2 JP2590045 B2 JP 2590045B2 JP 6019177 A JP6019177 A JP 6019177A JP 1917794 A JP1917794 A JP 1917794A JP 2590045 B2 JP2590045 B2 JP 2590045B2
Authority
JP
Japan
Prior art keywords
processing
sequence
processor
data
calculation
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
JP6019177A
Other languages
English (en)
Other versions
JPH07230429A (ja
Inventor
暁 大澤
秀昭 小松
Original Assignee
日本アイ・ビー・エム株式会社
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 日本アイ・ビー・エム株式会社 filed Critical 日本アイ・ビー・エム株式会社
Priority to JP6019177A priority Critical patent/JP2590045B2/ja
Publication of JPH07230429A publication Critical patent/JPH07230429A/ja
Application granted granted Critical
Publication of JP2590045B2 publication Critical patent/JP2590045B2/ja
Anticipated expiration legal-status Critical
Application status is Expired - Fee Related legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Description

【発明の詳細な説明】

【0001】

【産業上の利用分野】本発明は、分散処理制御方法及び
分散処理システムにかかり、詳細には、処理装置を複数
備えた分散処理システム上でアプリケーションプログラ
ム等のプログラムを分散並列実行するときの分散処理制
御方法及び分散処理システムに関する。

【0002】

【従来の技術】従来より、科学技術計算や、有限要素法
などに基づき偏微分方程式を解き流体力学等をシミュレ
ーションする計算の際には、非常に大きい配列を用意す
る必要がある。この非常に大きい配列は、計算量が多く
なると共に、配列をメモリ上に保持するためにメモリの
容量を大きくして広大なメモリ空間を用意しなければな
らないので、扱いが困難である。この計算量は、マルチ
プロセッサ・システムを使用し、処理を並列的に行わせ
ることにより処理速度を向上させ、見かけ上の計算量を
減少させることができる。

【0003】しかしながら、マルチプロセッサ・システ
ムを使用しCPUを増やすことにより、広大なメモリ空
間を用意しても、各CPUは共通バスに接続されかつ共
有メモリにアクセスするので、メモリの競合を生じる虞
がある。

【0004】そこで、近年、マルチプロセッサ・システ
ムのように共有メモリを使用することなく、複数のCP
Uを分散すると共に各々ローカルなメモリを有して並列
処理する分散処理システムが注目されている。この分散
処理システムは、複数の処理装置を接続することにより
構成される。この分散処理システム上において、1つの
アプリケーションプログラムを並列実行する場合には、
一般的に、次のような方法を用いている。

【0005】第1の方法では、並列実行させるために、
処理装置の数や場所、各処理装置に割り当てるデータの
種類や量、及び各処理装置において実行される計算の種
類等の条件を、プログラマが予め考慮して、考慮された
条件に沿ったプログラムを作成する。作成されたプログ
ラムを実行することにより、分散並列処理システム上に
おいて1つのアプリケーションプログラムを並列実行す
るものである。この場合、複数の処理装置上で実行可能
モジュールを起動したり、プログラマの指定する処理装
置の場所で処理装置間のデータ交信が必要になったりす
る。一般的には、この実行可能モジュールの起動や必要
なデータ交信等を実現するための実行時ライブラリが予
め用意されており、プログラマは実行時ライブラリを呼
び出すルーチンを含んだプログラムを記述する。従っ
て、計算の実行順序やデータ交信の時点はプログラマに
よって決定されることになる。

【0006】第2の方法は、プログラマが分散処理シス
テム向き並列記述言語を用いてプログラムを記述し、そ
の言語処理系により生成された実行可能モジュールを分
散処理システム上で実行するものである。この場合、通
常、プログラマは、並列実行させる分散処理システムの
構成上の特性(処理装置の数等)や、実行時におけるデ
ータの分散配置方法等をプログラム上で静的(時系列的
に変化しない内容であるよう)に、または実行時に動的
(時系列的な変化に応じた内容になるよう)に指定する
のが一般的である。また、第2の方法でも、第1の方法
と同様に分散並列実行するための実行時ライブラリは予
め用意されており、この呼び出しは言語処理系によって
自動的に実行可能モジュール内に埋め込まれることが多
い。すなわち、計算の実行順序やデータ交信の時点は言
語処理系が自動的に決めることになる。

【0007】さらに上記の方法以外には、従来の単一処
理装置用に記述された単一処理装置用プログラムを自動
並列化変換プログラム等を直接又は間接的に用いて分散
処理システム用の実行可能モジュールに変換して実行す
る方法がある。この場合、プログラマは、従来のプログ
ラム言語を用いて単一処理装置用のプログラムを記述す
ればよく、自動並列化変換プログラムを起動する際に分
散処理システムの構成上の特性等を考慮する必要がある
以外に、計算の実行順序やデータ交信の時点などは考慮
する必要がない。

【0008】

【発明が解決しようとする課題】分散処理システムの各
処理装置は、必ずしも共通メモリに接続されていたり、
共通の通信回線を使用するものではないので、接続され
る処理装置の台数には、制限が少なく、寧ろ制約となる
のは、処理装置の間の通信処理のオーバーヘッドであ
る。

【0009】従って、上記のような処理装置を複数持つ
分散システム上において、アプリケーションプログラム
を分散並列実行する場合、処理装置間のデータ交信に伴
うオーバヘッドを小さくすることが重要な課題となる。
これを達成するためには、主に、次の方法を用いてい
る。

【0010】第1の方法は、言語処理系または自動並列
化変換プログラム等が、データの交信量、交信の相手、
そのデータを必要とする時点等を内部で解析して自動的
にスケジューリングを行い、相当する実行コードを実行
可能モジュール内に作成するものである。すなわち、ス
ケジューリングは静的に行われ、実行時は予め指定され
た順序で計算の実行及びデータを交信するものである。
この方法を用いた場合、実行時の処理は簡単化される。

【0011】このような第1の方法に相当する技術とし
て、並列計算機における複数のプロセッサに対してスケ
ジューリングするため、優先度に応じてプログラムをプ
ロセッサに割り付けるものがある(特開平5−1511
80号公報参照)。この技術では、複数のプロセッサを
備えた並列計算機のスケジューリング方法に関し、これ
らの各プロセッサで実行可能なプログラムを蓄え、同時
に2つ以上のプロセッサにプログラムを割り付けないよ
うにする排他処理のためのロック装置をもった複数の待
ち行列を備え、プログラムをプロセッサに割り付ける際
に、待ち行列で必要なものをロックし、各々の待ち行列
中で最優先度のプログラムの比較を行い、最高優先度を
もった待ち行列中のプログラムを選んだ後、待ち行列の
ロックを解除し、プログラムをプロセッサに割り付けて
いる。

【0012】しかしながら、このスケジューリング方法
における複数の待ち行列は、各々のプロセッサに対応す
る専用の行列を有するものではなく、単に必要に応じて
ロックをかけて実行可能なプログラムの優先度を与える
に過ぎない。

【0013】また、スケジューリングを静的に行う第1
の方法では、次の欠点を有している。実行可能モジュ
ールを実行する分散処理システムの構成が実行時に決ま
る場合等、通信の相手方などが実行時にしか決定できな
い場合には対処できない。分散処理システムでは、通
信経路のエラーやオペレーティングシステムにおけるプ
ロセスのディスパッチなどの影響により、送信側と受信
側で時間的なずれが生じる場合があり、送受信を繰り返
すようなアプリケーションプログラムでは、静的に管理
するとオーバヘッドが大きくなることがある。

【0014】第2の方法は、言語処理系または自動並列
化変換プログラムなどが交信相手などの交信データの情
報を表に作成し、実行時にこの表を参照しながら動的に
管理するというものである。この方法を用いた場合、表
中の情報が実行時にしか決まらない場合にも対処でき、
また動的に管理するので、第1の方法による欠点は克服
される。

【0015】この第2の方法の相当する技術として、送
信情報を登録したリンクテーブルを参照し、通信を制御
するものがある(特開平1−251266号公報参
照)。この技術では、複数のプロセッサ間でメッセージ
の通信を行うメッセージ通信方式において、プロセッサ
間で通信されるメッセージに、そのメッセージの種類を
示す識別番号を付与するとともに、各プロセッサに、メ
ッセージの種類毎の各出力ポートからの送信の可否を示
す送信情報を登録したリンクテーブルを供え、各プロセ
ッサは、受け取ったメッセージの識別番号から、リンク
テーブルの対応する送信情報を参照し、その内容に基づ
いてメッセージの通信を制御している。

【0016】しかしながら、この技術におけるテーブル
は、メッシュ状に接続されたマルチプロセッサ・システ
ムで、上下左右のどの方向にメッセージを経路指示すれ
ばよいかを示すのみで、それ以上の情報は指定するもの
ではない。

【0017】また、このような第2の方法では実行時ラ
イブラリの処理が煩雑化し、容易に利用することができ
ないという欠点もある。

【0018】本発明は、上記事実を考慮して、データ交
信に伴うオーバヘッドが小さく、かつ効率的にプログラ
ムを実行することができる分散処理制御方法及び分散処
理システムを得ることを目的とする。

【0019】また、本発明の他の目的は、シミュレーシ
ョン・プログラム等の作成者であるプログラマが意識的
に並列処理命令を書くことなく、各処理装置間で最適に
交信ができるようにコンパイラが自動的にオブジェクト
コード等を生成する分散処理システムを提供することに
ある。

【0020】

【課題を解決するための手段】上記目的を達成するため
に本発明の分散処理制御方法は、複数の処理装置を備え
た分散処理システムにおいて、(a)各々識別するため
のIDを有すると共に、該複数の処理装置に含まれる所
定数の処理装置に1または複数の配列に属する配列デー
タを各々分散して保持した前記複数の処理装置の内、計
算処理を分散並列処理するためのプログラムをロードす
べき処理装置の群を指定する段階、(b)前記プログラ
ムにおいて定義または宣言された配列に関連して、前記
群に含まれる各々の処理装置に、担当すべき部分配列を
割り当てる段階、(c)前記群に含まれる各々の処理装
置に、前記プログラム中の前記配列を用いる計算処理に
関連して、当該処理装置が担当する部分配列に基づい
て、計算を遂行するために当該処理装置から前記配列デ
ータを含む情報を送信すべき処理装置の前記ID、及び
当該処理装置が前記配列データを含む情報を受信すべき
処理装置の前記IDを示す欄を含む表を生成させる段
階、(d)前記群に含まれる各々の処理装置に、生成さ
れた表を参照して、前記群に含まれる処理装置の個々の
間で前記情報を送受信処理することにより前記配列を用
いた計算処理を実行させる段階、を含んでいる。

【0021】前記表には、送信済または受信済のマーク
を付与する欄を設けると共に、他の処理装置からの受信
または他の処理装置への送信に応答して、当該処理装置
の前記表の該当欄に対応して前記マークを付与し、該表
の全ての該応答に前記マークが付与されるまで前記送受
信処理を行う段階をさらに有することができる。

【0022】前記段階(c)は、前記配列を用いる計算
処理について、当該処理装置が保持する配列要素と、他
処理装置が保持する配列要素とに分類する段階と、前記
分類を用いて、当該処理装置において計算処理するとき
に配列データの受信が必要な配列要素と受信が不要な配
列要素とを分類し分類済の配列要素の要素群を配列要素
のインデックス式により表した計算セットを計算する段
階と、を含むことができる。

【0023】また、前記段階(c)は、前記配列を用い
る計算処理について、当該処理装置が保持する配列要素
と、他処理装置が保持する配列要素とに分類する段階
と、前記分類を用いて、当該処理装置において計算処理
するときに配列データの受信が必要な配列要素と受信が
不要な配列要素とを分類し、さらに該計算処理するとき
に受信が必要な1または複数の配列要素に対応する処理
装置毎に分類し、分類済の配列要素の要素群を配列要素
のインデックス式により表した計算セットを計算する段
階と、を含むことができる。

【0024】また、前記表は、他の処理装置の前記ID
と該他の処理装置に対する送受信処理に関する要素の有
無との対応を表す送受信データ管理表と、前記計算処理
時に受信が必要な他の処理装置の前記IDと該計算処理
するときの配列要素との対応を表す計算セット管理表と
から構成されるようにしてもよい。

【0025】また、前記段階(a)では、予め定められ
た特定の処理装置がプログラムをロードすべき処理装置
の群として指定されるようにしてもよい。

【0026】また、前記段階(a)では、前記プログラ
ムをロードすべき処理装置の群として、該プログラムの
実行開始時点において、指定された所定の処理装置が指
定されるようにしてもよい。

【0027】また、前記表は、各処理装置において、前
記プログラムの実行可能なモジュール中に生成されるよ
うにしてもよい。

【0028】上記の分散処理制御方法を実現するため
に、本発明の分散処理システムは、各々を識別するため
のIDを有する複数の処理装置に含まれる所定数の処理
装置に1または複数の配列に属する配列データを各々分
散して保持した該複数の処理装置の内、計算処理を分散
並列処理するためのプログラムをロードすべき処理装置
の群を指定する指定手段と、前記プログラムにおいて定
義または宣言された配列に関連して、前記群に含まれる
各々の処理装置に、担当すべき部分配列を割り当てる割
当手段と、前記群に含まれる各々の処理装置に、前記プ
ログラム中の前記配列を用いる計算処理に関連して、当
該処理装置が担当する部分配列に基づいて、計算を遂行
するために当該処理装置から前記配列データを含む情報
を送信すべき処理装置の前記ID、及び当該処理装置が
前記配列データを含む情報を受信すべき処理装置の前記
IDを示す欄を含む表を生成させる指示をする生成指示
手段と、前記群に含まれる各々の処理装置に、生成され
た表を参照して、前記群に含まれる処理装置の個々の間
で前記情報を送受信処理することにより前記配列を用い
た計算処理を実行させる計算指示手段と、を備えた処理
装置を含んで構成されている。

【0029】また、本発明の分散処理システムでは、前
記表には、送信済または受信済のマークを付与する欄が
設けられ、他の処理装置からの受信または他の処理装置
への送信に応答して、当該処理装置の前記表の該当欄に
対応して前記マークを付与する付与手段と、前記表の全
ての該応答に前記マークが付与されるまで前記送受信処
理を行うように制御する制御手段と、をさらに有するこ
とができる。

【0030】また、本発明の分散処理システムの前記生
成指示手段は、前記配列を用いる計算処理について、当
該処理装置が保持する配列要素と、他処理装置が保持す
る配列要素とに分類する第1分類手段と、前記分類を用
いて、当該処理装置において計算処理するときに配列デ
ータの受信が必要な配列要素と受信が不要な配列要素と
を分類する第2分類手段と、前記分類済の配列要素の要
素群を配列要素のインデックス式により表した計算セッ
トを計算する演算手段と、を含んでもよい。

【0031】また、前記生成指示手段は、前記配列を用
いる計算処理について、当該処理装置が保持する配列要
素と、他処理装置が保持する配列要素とに分類する第1
分類手段と、前記分類を用いて、当該処理装置において
計算処理するときに配列データの受信が必要な配列要素
と受信が不要な配列要素とを分類する第2分類手段と、
前記計算処理するときに受信が必要な1または複数の配
列要素に対応する処理装置毎に分類する第3分類手段
と、前記分類済の配列要素の要素群を配列要素のインデ
ックス式により表した計算セットを計算する演算手段
と、を含むことができる。

【0032】また、前記指定手段は、予め定められた特
定の処理装置がプログラムをロードすべき処理装置の群
として指定された該群を読み取る読取手段で構成される
ようにしてもよい。

【0033】また、前記指定手段は、前記プログラムを
ロードすべき処理装置の群として、該プログラムの実行
開始時点において、指定された所定の処理装置が指定さ
れた該群を読み取る読取手段で構成されるようにしても
よい。

【0034】

【作用】分散処理システム上で計算等を実行する場合、
必要とするデータがどの処理装置にあるかによって次の
ように分類できる。

【0035】・計算に必要なデータがすべて現在実行し
ている自処理装置内に存在する。 ・計算に必要なデータの一部または全部が他の処理装置
内に存在する。従って、計算以前にデータの授受が必要
になる。

【0036】本発明は、これら各々の処理装置間のデー
タ交信とそれに関係する計算の実行順序を動的に管理
し、効率的に実行するための分散処理制御方法及び分散
処理制御システムを提供することにある。

【0037】本発明の分散処理制御方法では、複数の処
理装置を備えた分散処理システムにおいて、段階(a)
では、各々識別するためのIDを有すると共に、該複数
の処理装置に含まれる所定数の処理装置に1または複数
の配列に属する配列データを各々分散して保持した前記
複数の処理装置の内、計算処理を分散並列処理するため
のプログラムをロードすべき処理装置の群を指定する。
この段階(a)では、予め定められた特定の処理装置が
プログラムをロードすべき処理装置の群として指定され
たり、プログラムをロードすべき処理装置の群として、
該プログラムの実行開始時点において、指定された所定
の処理装置が指定されたりする。このような群の指定に
は、例えば、プログラムのコンパイル時にコンパイルの
パラメータ等で指定する方法や、プログラムの実行開始
時にオペレータがコマンドライン・パラメータ等で指定
する方法がある。従って、プログラムの実行形態に応じ
て定めることが効果的である。

【0038】段階(b)では、プログラムにおいて定義
または宣言された配列に関連して、群に含まれる各々の
処理装置において、この配列の一部を専有した、担当す
べき部分配列を割り当てる。次の段階(c)では、群に
含まれる各々の処理装置に、プログラム中の前記配列を
用いる計算処理に関連して、当該処理装置が担当する部
分配列に基づいて、計算を遂行するために当該処理装置
から配列データを含む情報を送信すべき処理装置の前記
ID、及び当該処理装置が配列データを含む情報を受信
すべき処理装置のIDを示す欄を含む表を生成させる。

【0039】各処理装置間では配列データ等の授受が行
われるので、この表には送信済または受信済のマークを
付与する欄を設けると共に、他の処理装置からの受信ま
たは他の処理装置への送信に応答して、当該処理装置の
前記表の該当欄に対応して前記マークを付与し、該表の
全ての該応答に前記マークが付与されるまで前記送受信
処理を行う段階をさらに有するようにすることが効果的
である。

【0040】また、各々の処理装置では、計算処理に関
して用いる配列の配列データを全て有しているとは限ら
ないので、段階(c)は、配列を用いる計算処理につい
て、当該処理装置が保持する配列要素と、他処理装置が
保持する配列要素とに分類する段階と、分類を用いて、
当該処理装置において計算処理するときに配列データの
受信が必要な配列要素と受信が不要な配列要素とを分類
し分類済の配列要素の要素群を配列要素のインデックス
式により表した計算セットを計算する段階と、を含むこ
とが効果的である。

【0041】さらに、各々の処理装置が有する配列要素
に関しても、計算処理が増大すると処理装置が保持する
配列要素と、他処理装置が保持する配列要素とを判別す
ることが煩雑になるので、段階(c)は、配列を用いる
計算処理について、当該処理装置が保持する配列要素
と、他処理装置が保持する配列要素とに分類する段階
と、この分類を用いて、当該処理装置において計算処理
するときに配列データの受信が必要な配列要素と受信が
不要な配列要素とを分類し、さらに該計算処理するとき
に受信が必要な1または複数の配列要素に対応する処理
装置毎に分類し、分類済の配列要素の要素群を配列要素
のインデックス式により表した計算セットを計算する段
階と、を含むことが効果的である。

【0042】さらにまた、送受信処理では、対象となる
処理装置の判別と授受すべきデータとの扱いが煩雑にな
る。このため、表は、他の処理装置の前記IDと該他の
処理装置に対する送受信処理に関する要素の有無との対
応を表す送受信データ管理表と、前記計算処理時に受信
が必要な他の処理装置の前記IDと該計算処理するとき
の配列要素との対応を表す計算セット管理表とから構成
されることが効果的である。

【0043】これらの表は、各処理装置において、プロ
グラムの実行可能なモジュール中に生成されることが好
ましい。

【0044】従って、上記のように、データの授受をす
る場合には、どのデータの計算を実行する時に、どの処
理装置からどのデータが必要であるかの情報を処理装置
毎にブロック化して表に作成しておけばよい。また、こ
のとき他の処理装置が、自処理装置が保持するデータを
必要とするかの情報も同様にして表に作成する。この作
業は、言語処理系または自動並列化変換プログラムなど
が行い、実行可能モジュール内に埋め込む。実行時にし
かわからない情報があった場合には、表中の相当する欄
を空白などにしておき、実行開始時または処理を実行し
ようとする各ルーチンの入口などで動的に決定すればよ
い。

【0045】次の段階(d)では、前記群に含まれる各
々の処理装置に、生成された表を参照して、群に含まれ
る処理装置の個々の間で情報を送受信処理することによ
り前記配列を用いた計算処理を実行させる。例えば、計
算実行時には表を参照し、次のような処理を行う。

【0046】・処理装置のブロック毎に他の処理装置か
ら必要なデータが送られてきている場合にはそれを受信
し、表中に受信済のマークをつける。また同時に、自処
理装置が保持し、かつ送信してきた処理装置に対して送
信する必要があるデータを表中から調べ、その処理装置
に対して当該データを送信する。

【0047】・処理装置のブロック毎に上記の操作を繰
り返し、計算実行に必要な全てのデータが受信された時
に、その計算の実行を行う。

【0048】・いずれの処理装置からも必要なデータが
送信されてきていない場合には他の受信処理装置が必要
とするデータを表中から調べ、順次当該処理装置に対し
てデータを送信する。全ての送信操作が終了した時点で
再度上記受信操作のポーリングを行い、データが送られ
てきている場合には受信処理を行う。

【0049】・他の処理装置が必要とするデータの送信
処理が全て終了し、なおかつ自処理装置が必要とするデ
ータを受信できない時は、データ待ちとなる。この時
は、計算に必要なデータが全て自処理装置内に存在する
データに対する計算の実行を行う。これにより、データ
待ちの時間に処理可能な計算の実行を重複させることが
できる。

【0050】上記の分散処理制御方法は、各々を識別す
るためのIDを有する複数の処理装置に含まれる所定数
の処理装置に1または複数の配列に属する配列データを
各々分散して保持した該複数の処理装置の内、計算処理
を分散並列処理するためのプログラムをロードすべき処
理装置の群を指定する指定手段と、前記プログラムにお
いて定義または宣言された配列に関連して、前記群に含
まれる各々の処理装置に、担当すべき部分配列を割り当
てる割当手段と、前記群に含まれる各々の処理装置に、
前記プログラム中の前記配列を用いる計算処理に関連し
て、当該処理装置が担当する部分配列に基づいて、計算
を遂行するために当該処理装置から前記配列データを含
む情報を送信すべき処理装置の前記ID、及び当該処理
装置が前記配列データを含む情報を受信すべき処理装置
の前記IDを示す欄を含む表を生成させる指示をする生
成指示手段と、前記群に含まれる各々の処理装置に、生
成された表を参照して、前記群に含まれる処理装置の個
々の間で前記情報を送受信処理することにより前記配列
を用いた計算処理を実行させる計算指示手段と、を備え
た処理装置を含んで分散処理システムを構成することに
より実現できる。

【0051】この生成指示手段は、配列を用いる計算処
理について、当該処理装置が保持する配列要素と、他処
理装置が保持する配列要素とに分類する第1分類手段
と、分類を用いて、当該処理装置において計算処理する
ときに配列データの受信が必要な配列要素と受信が不要
な配列要素とを分類する第2分類手段と、分類済の配列
要素の要素群を配列要素のインデックス式により表した
計算セットを計算する演算手段と、を含んで構成でき
る。

【0052】また、生成指示手段は、配列を用いる計算
処理について、当該処理装置が保持する配列要素と、他
処理装置が保持する配列要素とに分類する第1分類手段
と、分類を用いて、当該処理装置において計算処理する
ときに配列データの受信が必要な配列要素と受信が不要
な配列要素とを分類する第2分類手段と、計算処理する
ときに受信が必要な1または複数の配列要素に対応する
処理装置毎に分類する第3分類手段と、分類済の配列要
素の要素群を配列要素のインデックス式により表した計
算セットを計算する演算手段と、を含んでもよい。

【0053】上記の指定手段は、予め定められた特定の
処理装置がプログラムをロードすべき処理装置の群とし
て指定された該群を読み取る読取手段で構成されること
や、プログラムをロードすべき処理装置の群として、該
プログラムの実行開始時点において、指定された所定の
処理装置が指定された該群を読み取る読取手段で構成さ
れることが好ましい。

【0054】本発明によれば、計算を実行するに際し、
処理装置間における必要なデータ交信を動的に管理し、
データ交信を伴うオーバヘッドを小さくすることができ
る。また必要なデータがすべて揃ったものから順次、計
算の実行に移ることができる。さらには、データ交信な
どに関する情報を実行時に動的に操作できるので、実行
時にしか決まらない場合にも対処できる。

【0055】

【実施例】以下、本発明の実施例を説明する。本実施例
は、各々ローカル・メモリーを有するプロセッサから構
成された複数個の処理装置が接続された分散処理システ
ムに本発明を適用したものである。なお、本発明の分散
処理システムは、共有メモリー型の単なるマルチプロセ
ッサ・システムではなく、マルチプロセッサが複数個接
続された分散処理システムに適用可能である。

【0056】なお、本実施例では、プロセッサを実行さ
せるためにFORTRAN言語をプログラム言語として
用い、特にFORTRAN90を例として用いた。この
FORTRAN90自体の詳細な仕様は、Jeanne C.Ada
ms et al."FORTRAN90 HANDBOOK Complete ANSI/ISO Ref
erence", McGraw Hill Inc. 等に記載されている。

【0057】図1に示すように、本実施例の分散処理シ
ステム10は、複数の処理装置12 1〜12n(n:自然
数)、及びこれら処理装置121〜12nに対して各々相
互にデータ授受するために接続された処理装置間接続装
置14から構成される。これらの各処理装置12
p(p:1≦p≦n)は、演算装置22p及びローカルメ
モリ24pを含んでいる。このローカルメモリ24pは、
HDD装置等のディスク装置を含むことができる。

【0058】上記複数の処理装置121〜12nの各々の
構成は、同様のため、次に、処理装置121の例を説明
し、他の処理装置の説明を省略する。

【0059】図2に示すように、処理装置121は、演
算装置221としてMPU321、ROM341、及びR
AM361を含んでおり、各々はコマンドやデータ等が
相互に授受可能なようにバス401に接続されている。
このMPU321は、通信インタフェース381を介して
処理装置間接続装置14に接続されている。このバス4
1には、CRTコントローラ441を介してCRT42
1に接続されると共に、キーボードドライバ481を介し
てキーボード461に接続されている。なお、これらC
RT421、CRTコントローラ441、キーボード46
1、及びキーボードドライバ481は、オペレータ(以
下、プログラマという。)のコマンド入力や演算結果の
表示等に用いるためのものであり、処理装置121にお
いて単に演算処理のみを実行させる場合には、必要がな
い。

【0060】また、処理装置121は、ローカルメモリ
241として、ソースプログラムを記憶するためのソー
スプログラム記憶装置501、実行時ライブラリモジュ
ールを記憶するための実行時ライブラリ記憶装置5
1、実行可能モジュールを記憶するための実行可能モ
ジュール記憶装置541、及び演算に使用するデータが
記憶されたデータ記憶装置561を含んでいる。なお、
これらの記憶装置を有することなく、独立した構成の記
憶装置(例えば、HDD装置)にソースプログラム、実
行時ライブラリモジュール、実行可能モジュールやデー
タを記憶させてもよい。また、他の処理装置から通信に
よりソースプログラム、実行時ライブラリモジュール、
及び実行可能モジュールが入力されるようにしてもよ
い。

【0061】ここで、本実施例では、演算に使用するデ
ータは、所定次元の配列の配列要素(インデックス式)
に対応するデータ(以下、配列データという。)を想定
している。例えば、図3に示すように、配列aが配列a
(100,100) と宣言されたときには、配列要素a(1,1) の
指定に対応する配列データから配列要素a(100,100)の
指定に対応する配列データまで縦横2次元方向に配列デ
ータを指定することを表している。

【0062】このような、配列データについて、本実施
例の分散処理システム10では、各処理装置12pのデ
ータ記憶装置56pの各々に分散して保持し、演算の実
行は各処理装置が、配列のうち自処理装置が保持する範
囲のみを選択して実行する。すなわち、本実施例では、
プログラマが宣言する配列に属する複数の配列データを
複数の処理装置上に分散して有し、演算の実行は各処理
装置が、配列のうち自処理装置が保持する配列要素のみ
を選択して計算実行する場合を想定する。

【0063】なお、以下の説明では、分散処理システム
10は、第1の処理装置121乃至第4の処理装置124
の4つの処理装置が処理装置間接続装置14に接続され
ていると仮定する。しかし、本発明が適用可能な分散処
理システム10に含まれる処理装置の個数が4つに限定
されないことは勿論である。

【0064】図3の例において、各処理装置12pに保
持される配列データは、第1の処理装置121は、配列
要素a(1,1) の指定に対応する配列データから配列要素
a(50,50) の指定に対応する配列データまでである。以
下、この配列aの内、配列要素a(1,1) の指定から配列
要素a(50,50) の指定までの部分指定に相当する配列
を、部分配列ap(1:50,1:50 )と表す。

【0065】第2の処理装置122は、配列要素a(51,
1)の指定に対応する配列データから配列要素a(100,50)
の指定に対応する配列データまでを保持している。従っ
て、配列aの内の部分配列ap(51:100,1:50 )に対応
する各配列データを第2の処理装置122が有してい
る。第3の処理装置123は、配列要素a(1,51)の指定
に対応する配列データから配列要素a(50,100)の指定に
対応する配列データまでを保持している。従って、配列
aの内の部分配列ap(1:50,51:100 )に対応する各配
列データを第3の処理装置123が有している。第4の
処理装置124は、配列要素a(51,51) の指定に対応す
る配列データから配列要素a(100,100) の指定に対応す
る配列データまでを保持している。従って、配列aの内
の部分配列ap(51:100,51:100 )に対応する各配列デ
ータを第4の処理装置124が有している。

【0066】なお、第1の処理装置121乃至第4の処
理装置124の各処理装置は、配列b(100,100) との宣
言による配列bの各配列データも、上記の配列aのとき
と同様に、分散して保持されている。また、配列c(10
0,100) との宣言による配列cの各配列データも、上記
の配列aのときと同様に、分散して保持されている。ま
た、上記のように、配列a,b,cに属する配列データ
に関して、複数の処理装置の各々へ、図3に示すような
碁盤目状の均等割により、分割保持の様子を示したが、
この分割方法は碁盤目状の均等割に限定されることはな
い。例えば、単に縦方向(図3の第1次元方向)や横方
向(図3の第2次元方向)にのみ分割するストライプ分
割等でもよい。また、方向や領域を限定せずに非均等割
でもよいが、実行処理が複雑になるため好ましくない。
実行処理時点の煩雑さを考慮すると、上記説明したよう
な分割されたことによる部分配列が略一致した範囲群で
あることの方が好ましい。

【0067】以下、本実施例の作用を説明する。先ず、
第1の処理装置121を実行処理装置として、実行可能
モジュールが得られるまでの過程を図4を参照し、簡略
に説明する。プログラマが指示する、ソースプログラム
記憶装置501に記憶されたソースプログラムを順次ス
キャンし、実行時ライブラリ記憶装置521を参照して
コンパイルする。これにより、ソースプログラムに対す
るオブジェクトコードが得られ、このオブジェクトコー
ドと実行時ライブラリのオブジェクトコードとをリンク
して、実行可能モジュールを得る。この実行可能モジュ
ールは、実行可能モジュール記憶装置541に記憶す
る。なお、ソースプログラムに対するオブジェクトコー
ドは、RAMに記憶してもよいし、図示しない記憶装置
に記憶するようにしてもよい。

【0068】本実施例では、上記のソースプログラム、
オブジェクトコード、及び実行可能モジュール内に含ま
れる、ステートメントDOやWHILEのような配列の
繰り返し演算処理(以下、ループ処理という。)への適
用例を説明する。従って、上記で説明したように、プロ
グラマにより宣言された配列の配列データを複数の処理
装置上に分散して有し、実行は各処理装置が、配列のう
ち自処理装置が保持する部分のみを選択して計算実行す
る場合を想定する。

【0069】なお、以下の説明では、例として、次の
〔プログラム例1〕に示したループ処理を含むソースプ
ログラムに対応する計算処理を4個の処理装置からなる
分散処理システム10上で実行するものとする。また、
図3に示すように、宣言された各配列a,b,cの配列
データを4個の処理装置で分散して保持するものとす
る。

【0070】

【0071】このプログラム例1から理解されるよう
に、配列要素a(50,50) に対する計算及び結果の代入は
第1の処理装置121が実行し、配列要素a(51,51) に
対する計算及び結果の代入は第4の処理装置124が実
行することになる。プログラム1による配列要素a(50,
50) の計算では、配列要素b(51,51) 及び配列要素c(4
9,51) の値が必要となるが、それらはそれぞれ、第4の
処理装置124、第3の処理装置123が保持しているの
で、計算の実行以前にデータの交信が必要となる。

【0072】このため、本実施例では、詳細は後述する
が、各処理装置には、送受信データ管理表及び計算セッ
ト管理表が生成される。送受信データ管理表は、計算の
実行のために他の処理装置との交信の必要有無関係を表
している。計算セット管理表は、各処理装置において計
算実行時に自処理装置での実行前に受信を必要とする部
分配列と、当該処理装置との関係を表している。なお、
以下の説明では、この計算実行時に以下のように分類さ
れる部分配列を計算セットという。例えば、第1の処理
装置121に関し、表1及び表2に示した表が作成され
る。

【0073】

【表1】

【0074】

【表2】

【0075】上記の表1では、第1の処理装置12
1が、例えば、第2の処理装置122から部分配列bp(5
1:51,3:50)を受信し、部分配列cp( 50:50,3:50 )を
送信する必要があることを示している。また、表2で
は、配列要素a(50,50) に該当する配列データの計算を
実行するためには、第3の処理装置123及び第4の処
理装置124からデータの受信が必要であることを示し
ている。

【0076】また、表1では、別の処理装置からの受信
要素と、別の処理装置への送信要素とのエントリに応じ
て、送信済または受信済を表すマーク(例えば、済で
「1]・未で「0」の1ビットのフラグ等で表すことが
できる。)が付与される欄を含んでいる。表2には、計
算セットのエントリに応じて、受信済を表す受信済マー
ク(例えば、済で「1]・未で「0」の1ビットのフラ
グ等で表すことができる。)が付与される欄を含んでい
る。

【0077】上記に示した表1及び表2の生成は、分散
処理システムの処理装置の個数や、各々の処理装置の環
境に依存して異なるが、本発明は、表の生成時期を限定
するものではない。例えば、コンパイラによる、オブジ
ェクト・コードの生成時、またはリンク時に、分散処理
システムの環境を自動的に考慮して表を生成してもよ
く、使用する処理装置の個数等が指定されたコンパイル
時のオプション・パラメータを考慮して表を生成しても
よい。

【0078】詳細には、本実施例における「計算の実
行」とは、ソース・プログラムの一部のブロックに相当
する命令の列の実行を意味するのであり、プログラム全
体の実行を意味するものではない。従って、コンパイル
またはリンク時に必ずしもすべての情報が揃っている必
要はない。

【0079】このため、必要な情報が欠けている場合に
は実行時に動的に情報を取り入れて、処理を進めるよう
にする。勿論コンパイラが自動的に環境や処理装置の個
数を調べたり、オプション・パラメータにより指定して
もよい。この場合は、コンパイラは全ての表を静的に作
成することができ、実行時に動的に表を作成するときに
比べて、実行時のオーバヘッドを低く抑えることができ
る。ところが、使用する処理装置の個数を変えたい場合
に再コンパイルが必要となるなど、柔軟性に欠けるとい
う欠点も生じる。

【0080】従って、「計算の実行」に必要な情報の表
が生成される時期は、コンパイラによる静的なこともあ
れば、不足する情報が実行時にライブラリ等により動的
に埋められることもある。すなわち、コンパイル時に静
的に表を作成してもよく、プログラム実行時に動的に作
成してもよい。

【0081】前者のコンパイル時に静的に表を作成する
とは、例えば、実行に使用する処理装置が4台であるこ
とを指定するパラメータとともにコンパイルを行うと、
上記のような100×100の配列の場合、コンパイル
時にこの配列を4分割(図3参照)することができ、コ
ンパイル時に静的に上記表1及び表2を、生成される実
行可能モジュール中に埋め込むことができる。プログラ
ム実行の効率からすると、実行時、表を生成する必要が
ないので、この方がより好ましい。

【0082】後者のプログラム実行時に表を動的に作成
する、とは、プログラム実行時に、コマンドライン・パ
ラメータとして、分散処理する処理装置の数を与える、
ことである。この場合、実行モジュールは、各々の処理
装置にロードされた後、その、処理装置の数を指定する
パラメータに従い、主記憶のメモリを割り当てる等して
動的に表を作成することになる。

【0083】次に、本実施例における分散処理システム
10の処理の流れを説明する。なお、本発明では、プロ
グラムのロード時に、実行可能モジュールが複数の処理
装置に分散してロードされるような、プログラムのロー
ドに関する制限は、特にない。通常、実行可能モジュー
ルの実行時に、何らかの方法で使用する処理装置の数等
を分散処理システムに指定すればよい。この指定に基づ
き、オペレータが最初に実行可能モジュールを起動した
処理装置から、実行時ライブラリの環境初期化ルーチン
等を用いて、順次、他の処理装置上でも同じ実行可能モ
ジュールを起動すればよい。そこで、本実施例では、オ
ペレータにより指定されたことを想定し、図5のフーチ
ャートを参照して説明する。

【0084】まず、図5のステップ100では、オペレ
ータの指示等により、該当する処理装置において実行可
能モジュールが起動され、次のステップ200において
実行可能モジュールに対応する送受信データ管理表及び
計算セット管理表(表1、表2)が生成され、この生成
された表を参照して計算の実行が行われる。

【0085】このステップ100の起動処理の詳細につ
いて、図6のフローチャートを参照して説明する。図6
のステップ112では、ロードする処理装置の数及び名
称を決定する。すなわち、オペレータは何らかの方法で
使用する処理装置の数や名前を指定するので、実行時に
は決定されている。また分散処理システムによっては、
デフォルト設定として、オペレータが指定を省略した場
合(例えば全処理装置を使用する場合など)の処理を予
め設定しておくこともできる。

【0086】次のステップ114では、決定した処理装
置に対して実行モジュールをロードする。すなわち、決
定した処理装置のうちの1つを選択し、その装置上で実
行可能モジュールを起動する。この場合、実行可能モジ
ュールが既に当該処理装置に接続されているディスク装
置などに存在する場合には、その装置に対してロードす
る命令を出すだけ済むが、そうでない場合には実行可能
モジュールを当該処理装置に送信する必要がある。この
処理を全ての処理装置に対して終了するまで繰り返し実
行する(ステップ116)。

【0087】次に、図5のステップ200に含まれる、
上記の送受信データ管理表及び計算セット管理表の生成
について、図7のフローチャートを参照して詳細に説明
する。この表の生成では、コンパイラが表中の項目を全
て静的に決定できるとは限らないことは既に述べた。こ
のため、本実施例では、コンパイラがソース・コードを
解析して実行可能モジュール中に表を作る処理につい
て、処理装置の個数や、ソース・コード内で宣言されて
いる配列が複数の処理装置上に如何に分割されるかが予
め分かっており、コンパイラが静的に処理できる場合を
想定して説明する。なお、コンパイラが静的に処理でき
ない動的処理の場合は、図7のフローチャートで示され
る処理と同じ処理を実行時にライブライ内で行い、表を
完成させればよい。

【0088】ステップ120では、分散並列実行の対象
になるdoループ(ループ処理)を決定する。この決定
されるdoループは、プログラム例1のように、ループ
内に配列処理が含まれ、その配列に属する配列データが
複数の処理装置上に分散され、各処理装置において該当
する計算の実行が行われるものが分散並列実行の対象に
なる。

【0089】次のステップ122では、ループ処理内の
演算式に対応する代入文(プログラム例1では、a(i,j)
=b(i+1,j+1)-c(i-1,j+1)に相当する。以下、代入文Sと
いう。)の左辺項から得られる配列分割情報により、処
理装置毎に計算セットを求める。すなわち、配列処理の
代入文を分散実行する場合に、各処理装置は、左辺項の
配列の内、自処理装置が分散保持している範囲の配列要
素への代入に関する計算を実行することになる。この自
処理装置が担当する部分の計算セットとして求める。

【0090】例えば、上記のプログラム例1において、
第1の処理装置121は、配列aの内、部分配列ap(1:
50,1:50) の各配列データを保持しているので、当該処
理装置の計算セットは部分配列ap(2:50,2:50) に関し
て、代入文Sの右辺を計算し、左辺へ代入する。他の処
理装置に関しても同様にして計算セットを計算する。

【0091】次のステップ124では、処理装置毎に計
算セットと代入文Sの右辺項のインデックス式により、
当該右辺項に関する処理装置毎のリード・セットを求め
る。このインデックス式は、配列bについて、(i+1,j+
1)であり、配列cについて、(i-1,j+1) である。このよ
うに、代入文の右辺は、通常、複数項で構成されるの
で、この処理は項毎に行われる。各項がインデックス式
を用いた配列要素になっている場合、各処理装置毎に担
当する計算セットを基に、その項の配列の内、何れの部
分配列が必要になるかをリード・セットとして求める。
この「リード・セット」とは、配列計算をするために必
要な配列の集合(通常、配列の右辺に現れる集合)をい
う。

【0092】この場合の右辺第1項である(i+1,j+1) に
関して、第1の処理装置121に関する計算を説明す
る。この項のインデックス式は(i+1,j+1) であり、計算
セットは(2:50,2:50) のため、計算を行うに際し、部分
配列bp(3:51,3:51) が必要となる。従って、当該右辺
項に対する第1の処理装置121のリード・セットは(3:
51,3:51) となる。全ての右辺項に対して同様の処理を
繰り返し、処理装置毎にリード・セットを求める。

【0093】次のステップ126では、処理装置毎のリ
ード・セットと当該右辺項の配列分割情報により、イン
・セット(当該右辺項の配列に関し、各処理装置が計算
するに必要な配列要素を自処理装置が保持しているもの
と他の処理装置が保持しているものとに分類したことを
表す情報)を求める。すなわち、右辺の各項毎に、リー
ド・セットを自処理装置が保持しているので処理装置間
交信が不要なものと、他処理装置が保持しているために
交信が必要なものとに分類する。この場合、右辺第1項
である配列bの第1の処理装置121のリード・セット
とその配列分割情報から、(3:50,3:50) ,(51:51,3:5
0),(3:50,51:51),(51:51,51:51) の4つに分割され
る。これにより、表1における配列bの情報が生成でき
る(右辺第2項の配列cについても同様の処理により、
表1の情報が生成できる)。

【0094】次のステップ128では、イン・セットと
当該右辺項のインデックス式により、計算実行以前にデ
ータ更新が必要なものと不要なものとを分類した分類済
計算セットを計算する。すなわち、イン・セットによ
り、当該右辺項のデータ交信に関する情報が分かるの
で、次に左辺項の計算セットを、交信を要するものと要
しないものとに分類する。この場合、右辺第1項である
配列bの第1の処理装置121のインデックス式は(i+1,
j+1) のため、左辺項のインデックス式(i,j) とを考慮
し、分類済計算セットは、(2:49,2:49),(50:50,2:49),
(2:49,50:50) ,(50:50,50:50) となる。

【0095】以上の処理を、全ての右辺項に対して分類
済計算セットを求めるまで繰り返し実行し(ステップ1
30)、全ての分類済計算セットの論理積を求め、解が
空でないものについて、その関係付けられた各項の情報
を纏めて表に完成させる(ステップ132)。すなわ
ち、上記の処理の結果、右辺項毎に分類済計算セットが
全て求まっているので、それらの組み合わせから計算セ
ットの各々を実行するために、データ受信の必要な処理
装置の対応情報を纏めて、表を生成する。

【0096】この場合、第1の処理装置121を例して
説明すると、右辺第1項のb(i+1,j+1) に関する分類済
計算セットは、計算セット(2:49,2:49),(50:50,2:49),
(2:49,50:50), (50:50,50:50)である。一方、右辺第2
項、c(i-1,j+1) に関しては、計算セット(2:50,、2:4
9),(2:50,50:50) となる。従って、第1項に関する4つ
の計算セットと第2項に関する2つの計算セットの各々
について論理積を求める。例えば、第1項に関する4番
目の(50:50,50:50) と第2項2番目の(2:50,50:50)の場
合、その論理積は(50:50,50:50) となる。この計算セッ
ト(50:50,50:50) については計算の実行に際し、右辺第
1項の4番目に関する受信操作(第4の処理装置124
からの部分配列bp(51:51,51:51) の受信)及び第2項
2番目に関する受信操作(第3の処理装置123からの
配列c(1:49,51:51)の受信)の両方が必要であることを
示している。このような処理を行うことにより、表2に
示すような計算セット管理表を作成することができる。

【0097】次に、本実施例では、上記の〔プログラム
例1〕に対応する実行可能モジュールとして、次の〔プ
ログラム例2〕で示されるプログラムに相当する機械語
の実行命令の列である実行時ライブラリが実行可能モジ
ュール内に生成される。この次に示す実行時ライブラリ
deta_send_receive,get_iteration_set 等が、実行
可能モジュール内に作成される、とは、コンパイラが、
ソース・コード中でdoやwhile などの繰り返しループを
見出すと、これらの命令に相当するコードを自動的に挿
入することをいう。基本的には、繰り返しdoループを用
いて、同じ配列の複数個の配列要素に対して計算を実行
する場合にコードを挿入することである。正確には、実
行時ライブラリをモジュール内に作成するのではなく、
実行時ライブラリを呼び出す命令を実行可能モジュール
内に生成する。

【0098】この〔プログラム例2〕の命令call data
_send_receiveは、実行時ライブラリdata _send_re
ceiveによるデータ送受信処理に対応し、命令call get
_iteration_set(2,start,end)は、実行時ライブラリg
et _iteration_set(2,start,end)による反復引数設定
処理に対応する。

【0099】

【0100】上記の実行時ライブラリget_iteration_
set()の引数の数は、ループの深さに応じて異なる。こ
のため、異なる引数の数をもつget_iteration_set()
を複数個用意してもよいが、プログラムが煩雑になり、
現実的ではない。このため、上記の〔プログラム例2〕
では、スタックなどメモリ上に戻り値のために必要なバ
ッファを用意し、ループの深さを表す数とバッファのア
ドレスを引数として渡すようにしている。すなわち、上
記の場合は、2組の引数start,end を設定することを示
している。従って、上記の〔プログラム例2〕の例で
は、次に示す〔プログラム例3〕と等価である。

【0101】 〔プログラム例3〕 …………………… while(配列a の計算セットあり) call data_send_receive call get_iteration_set(i_start,i_end,j_start,j_end) do i=i_start,i_end do j=j_start,j_end a(i,j)=b(i+1,j+1)-c(i-1,j+1) end do end do end while ……………………

【0102】このプログラム例2を用いて、図5のステ
ップ300における計算処理の詳細を説明する。

【0103】上記のプログラム例2では、実行時ライブ
ラリdata_send_receiveが呼び出され、自処理装置の
送受信データ管理表及び計算セット管理表に対し、送信
済または受信済のマーク付与の処理をする。すなわち、
送受信データ管理表(表1)を参照し、処理装置及び配
列毎に受信すべき配列要素が届いたかをポーリング(受
信状況を定期的に判定するプロセス)により確認し、届
いた場合には当該データを受信し、送受信データ管理表
に受信済のマークをする。この受信の結果、当該処理装
置から全てのデータを受信した場合、計算セット管理表
(表2)にその旨をマークする。データを受信したとき
に、データを送信した処理装置に対して自処理装置から
送信すべきデータが存在する場合には該当データを送信
して送受信データ管理表に送信済マークをする。また、
ポーリングにより受信するデータがなかった場合には、
送受信データ管理表を参照しながら、自処理装置から送
信するべきデータを順次送信し、送受信データ管理表に
送信済のマークをする。

【0104】次に、実行時ライブラリget_iteration_
setが呼び出され、ループ制御変数設定処理をする。す
なわち、計算セット管理表を参照し、配列aの計算セッ
トで計算が未実行のものを対象として、全て受信済とな
っている配列aの計算セットを探し、その値をループ制
御変数にセットし(例えば表2の2行目で、第2の処理
装置122からデータが受信され、配列a(50:50,2:49)
の計算を行う場合には、iに対するインデックスstart,
end に50、50をセットし、jに対するインデックス
start,end に2、49をセットし)、当該計算セットに
計算済のマークをする。計算セットが未発見の場合に
は、受信操作が不要な計算セットを探し、その値をルー
プ制御変数にセットし(例えば表2の1行目がこれにあ
たり、計算済でない場合は、iに対するインデックスst
art,end に2、49をセットし、jに対するインデック
スstart,end に2、49をセットし)、当該計算セット
に計算済のマークをする。データ待ちなどの理由で、何
れの計算セットも実行できない場合には、上記の実行時
ライブラリdata_send_receiveを再び実行する。

【0105】上記でセットされた各々のインデックスst
art,endを基に、自処理装置が保持する部分配列apに
対する計算を実行する。

【0106】このように、送受信データ管理表(表1)
及び計算セット管理表(表2)を参照し、自処理装置が
実行すべき配列の計算セットの内、未計算が残存する間
は上記の操作を繰り返し実行する。

【0107】このような、送受信データ管理表(表
1)、及び計算セット管理表(表2)を参照して、処理
装置において実行される処理を図8のフローチャートを
参照してさらに説明する。図8のステップ310では、
送受信すべきデータが存在するか否を判別する。この場
合、送受信データ管理表で、送受信済でないものが存在
する間は、実行時ライブラリdata_send_receive()を
実行する。次のステップ312では、ポーリングによ
り、データが到着している処理装置を1つ選択する。す
なわち、受信済でない処理装置を対象として順次ポーリ
ングを行い、データが到着している処理装置を1つ選択
する。該当する処理装置がない場合には、ステップ32
2へ進む。

【0108】処理装置が選択された場合には、ステップ
314において、当該処理装置から全てのデータを受信
し、送受信データ管理表に受信済のマークを付与する。
すなわち、選択した処理装置から到着しているデータを
全て受信する。各処理装置はデータを送信するに際し
て、送信先に送るべきデータが複数個あった場合には、
それらをすべてを纏めて送信する。従って1回の受信操
作により、その処理装置から受信するべきデータは全て
受信できる。この後、送受信データ管理表に受信済のマ
ークを付与する。

【0109】次のステップ316では、計算セット管理
表を参照し、計算セット管理表に当該処理装置からデー
タを受信したことを示すマークを付与する。次のステッ
プ318では、送受信データ管理表を参照し、当該処理
装置に対して送信すべきデータが存在する場合には、当
該データを送信し、送受信データ管理表にデータ送信済
のマークを付与する。すなわち、データを受信後に、当
該処理装置に対してデータを送信するべきデータが残っ
ている場合には、そのデータを送信し、送受信データ管
理表に送信済のマークを付与する。この後、次のステッ
プ320において、データを受信していない処理装置に
関して1巡回のポーリングをしたか否かを判別し、ポー
リングにより、データが到着している処理装置を選択で
きた場合には、他の処理装置からのデータ到着を調べる
ためにステップ312に戻る。

【0110】一方、ステップ312において否定判定さ
れると、ステップ322において、全ての処理装置に対
して、送信すべきデータを順次送信し、送受信データ管
理表に送信済を表すマークを付与する。このステップ
は、ポーリングにより、どの処理装置からもデータが届
いていないので、その時点では受信操作ができない。従
って、全ての処理装置に対して必要なデータを順次送信
し、送受信データ管理表に送信済のマークを付与するた
めである。この後、再びポーリングの処理に移行する。

【0111】次のステップ324では、計算セットの
内、受信済かつ計算未完のものがあるか否か、全て計算
済かを判定すると共に、少なくとも1つある場合には、
受信済かつ計算未完のものを1つ選択し、ステップ32
8へ進む。その時点で計算可能な計算セットを選択す
る。

【0112】一方、ステップ324において、「なし」
と判定されたときは、未計算の計算セットはあるが、デ
ータ受信が行われていないためにその時点では何れの計
算セットも選択できない場合ため、ステップ328へ進
む。また、「全て計算済」と判定されたときは、全ての
計算セットについて実行を終えているので、この処理を
終了する。

【0113】ステップ326では、計算セットの内、受
信操作不要でかつ計算未完のものの有無を判定し、有の
場合には、受信操作不要でかつ計算未完のものを1つ選
択し、ステップ328へ進む。このとき、データが受信
できていないために計算セットが選択できない場合は、
データ受信が不要な計算セットを選択する。一方、否定
判定で、受信操作不要でかつ計算未完の計算セットが残
存しない場合には、ステップ310へ戻る。

【0114】次のステップ328では、当該計算セット
を実行し、計算セット管理表に計算済のマークを付与す
る。すなわち、当該計算セットを用いて配列処理の実際
の計算を行い、計算セット管理表に計算済のマークを付
与する。

【0115】以上説明したように、本実施例の分散処理
システムによれば、分散処理システム上でアプリケーシ
ョンプログラムを分割並列的に実行するに際し、処理装
置毎にデータ交信量にばらつきがあったり、処理装置間
のタイミングのずれなどによるデータ交信時期にばらつ
きがあっても、データ交信に伴うオーバヘッドを抑え、
効率的にプログラムを実行することができるようにな
る。具体的には次のような効果がある。

【0116】・処理装置間のデータ送受信が送受信可能
な処理装置から動的に順次行われることにより、効率的
なデータ交信が行える。

【0117】・データ待ちの時に、データ交信の必要の
ない部分の計算を実行できる。これにより、データ待ち
による遊びの時間に計算の実行を重複させることが可能
となる。

【0118】図9には、上記で述べたプログラム例1に
おける処理の流れを従来の分散処理システムと本発明の
分散処理システムとについてタイミングチャートで示し
たものである。図9(a)は送受信を静的にスケジュー
リングする例で、データの受信が第2の処理装置122
から順番に行われている。そして、全ての受信が終了し
てから計算の実行が始まっている。一方、図9(b)は
本発明が適用された方法による処理の流れを示したもの
で、第3の処理装置123からのデータを受信した後、
他からのデータが到着していないので、データ待ちの時
間を利用して一部計算の実行を開始している。これによ
り、doループ(ループ処理)を終了する時間が本発明
を適用しない場合と比べて早くなっている。

【0119】莫大な計算量を必要とするような科学技術
計算などのアプリケーションプログラムを、処理装置を
複数持つ分散処理システム上で分散並列的に実行する場
合に、本発明による方法を適用した言語処理系または自
動並列化変換プログラム、実行時ライブラリなどが用意
されているシステムでは特に効果を発揮すると考えられ
る。

【0120】なお、上記実施例において、生成される実
行可能モジュールの命令 data_send_receive 、 get
_iteration_set の処理は、計算の実行に先立ち、必
要なデータの交信を行うのが目的のため、実行時ライブ
ラリ data_send_receive を先に行うことが必須であ
る。但し、実行時ライブラリを呼び出しても、交信が必
要なデータが存在せずに、結果として交信を行わない可
能性がある。

【0121】また、上記実施例では、配列のループ処理
に本発明を適用した場合を説明したが、本発明はこれに
限定されるものではない。例えば、配列のループ処理以
外にはないがソース・コードとしての表現では、APL
(A Program Language)やFORTRAN(例えば、FO
RTRAN90)のような配列記述言語における配列代入文の
処理も本発明の範疇に含まれる。

【0122】詳細には、APL(A Program Language)
では、本質的に組み込み関数により配列演算を行うこと
が一般的であるが、FORTRAN言語においても配列
記述言語の組合せに関して同様に演算することができ
る。この演算について説明すると、FORTRAN言語
としてFORTRAN90を例にして、定義される配列
記述言語については、以下の〔プログラム例4〕と〔プ
ログラム例5〕とに示したプログラムは等価である。

【0123】

【0124】FORTRAN90では、このように、配
列を直接代入するステートメントを許している。従っ
て、このようなステートメントに対しても、本発明の表
作成処理は適用できる。他にも、FORTRAN90で
は、SUM、SPREAD等の配列操作関数(Transfor
mational Intdinstc Function:TIF)がある。

【0125】例えば、次の〔ステートメント例1〕に示
したステートメントは、以下の〔プログラム例6〕に示
したプログラムと等価である。

【0126】〔ステートメント例1〕 A(1:100,1:200)=SUM(SPREAD(B(1:10,1:100),3,200)+S
PREAD(C(1:10,1:200),2,100),1)

【0127】なお、本発明は、APLやFORTRAN
90に限定されるものではなく、処理装置間のデータ交
信と、効率的な計算実行を目的としており、C、C+
+、PASCAL、ADA(米国国防総省の商標)な
ど、分散処理環境で実行され得る任意のプログラミング
言語に適用可能なことは勿論である。例えば、FORT
RANで記述されている前記プログラム例3を、C言語
で書き直すと、以下のようになる(C++でも同様であ
る)。

【0128】 〔C言語によるプログラム例〕 …………………… while(配列の計算セットあり){ data_send_receive; get_iteration_set( i_start, i_end, j_start, j_end); for (i=i_start; i <=i_end; i++) for (j=j_start; j <= j _end; j++) a[i][j]=b[i+1][j+1]-c[i-1][j+1]; } …………………… なお、PASCALやADAについては、プログラム例
を省略するが、実質的に同様である。

【0129】

【発明の効果】本発明によれば、計算を実行するに際
し、処理装置間における必要なデータ交信を動的に管理
し、データ交信を伴うオーバヘッドを小さくすることが
できる。また、必要なデータがすべて揃ったものから順
次、計算の実行に移ることができる。さらには、データ
交信などに関する情報を実行時に動的に操作できるの
で、実行時にしか決まらない場合にも対処できる、とい
う効果がある。

【図面の簡単な説明】

【図1】本発明が適用可能な分散処理システムの概略構
成を示すブロック図である。

【図2】本実施例の分散処理システムに含まれる処理装
置の各々の概略構成を示すブロック図である。

【図3】本実施例において用いられる配列について、複
数の処理装置へ分散して配列データが保持される状態を
説明するためのイメージ図である。

【図4】本実施例にかかり、実行可能モジュールが得ら
れるまでの過程を説明するための説明図である。

【図5】本実施例にかかり、分散処理システムの処理の
流れを示すフローチャートである。

【図6】本実施例にかかり、分散処理システムにおいて
実行可能モジュールの起動処理の流れをを示すフローチ
ャートである。

【図7】本実施例にかかり、送受信データ管理表及び計
算セット管理表の生成処理の流れを示すフローチャート
である。

【図8】送受信データ管理表及び計算セット管理表を参
照して計算を実行する処理の流れを示すフローチャート
である。

【図9】プログラム処理の流れを示すタイミングチャー
トであり、(a)は従来の分散処理システム、(b)は
本発明の分散処理システムについて示した図である。

【符号の説明】

10 分散処理システム 121 〜12n 処理装置 14 処理装置間接続装置 221 〜22n 演算装置 241 〜24n ローカルメモリ

Claims (14)

    (57)【特許請求の範囲】
  1. 【請求項1】 複数の処理装置を備えた分散処理システ
    ムにおいて、以下の段階を含む分散処理制御方法。 (a)各々識別するためのIDを有すると共に、該複数
    の処理装置に含まれる所定数の処理装置に1または複数
    の配列に属する配列データを各々分散して保持した前記
    複数の処理装置の内、計算処理を分散並列処理するため
    のプログラムをロードすべき処理装置の群を指定する段
    階。 (b)前記プログラムにおいて定義または宣言された配
    列に関連して、前記群に含まれる各々の処理装置に、担
    当すべき部分配列を割り当てる段階。 (c)前記群に含まれる各々の処理装置に、前記プログ
    ラム中の前記配列を用いる計算処理に関連して、当該処
    理装置が担当する部分配列に基づいて、計算を遂行する
    ために当該処理装置から前記配列データを含む情報を送
    信すべき処理装置の前記ID、及び当該処理装置が前記
    配列データを含む情報を受信すべき処理装置の前記ID
    を示す欄を含む表を生成させる段階。 (d)前記群に含まれる各々の処理装置に、生成された
    表を参照して、前記群に含まれる処理装置の個々の間で
    前記情報を送受信処理することにより前記配列を用いた
    計算処理を実行させる段階。
  2. 【請求項2】 前記表には、送信済または受信済のマー
    クを付与する欄を設けると共に、他の処理装置からの受
    信または他の処理装置への送信に応答して、当該処理装
    置の前記表の該当欄に対応して前記マークを付与し、該
    表の全ての該応答に前記マークが付与されるまで前記送
    受信処理を行う段階をさらに有する請求項1に記載の分
    散処理制御方法。
  3. 【請求項3】 前記段階(c)は、 前記配列を用いる計算処理について、当該処理装置が保
    持する配列要素と、他処理装置が保持する配列要素とに
    分類する段階と、 前記分類を用いて、当該処理装置において計算処理する
    ときに配列データの受信が必要な配列要素と受信が不要
    な配列要素とを分類し分類済の配列要素の要素群を配列
    要素のインデックス式により表した計算セットを計算す
    る段階と、 を含む請求項1に記載の分散処理制御方法。
  4. 【請求項4】 前記段階(c)は、 前記配列を用いる計算処理について、当該処理装置が保
    持する配列要素と、他処理装置が保持する配列要素とに
    分類する段階と、 前記分類を用いて、当該処理装置において計算処理する
    ときに配列データの受信が必要な配列要素と受信が不要
    な配列要素とを分類し、さらに該計算処理するときに受
    信が必要な1または複数の配列要素に対応する処理装置
    毎に分類し、分類済の配列要素の要素群を配列要素のイ
    ンデックス式により表した計算セットを計算する段階
    と、 を含む請求項1に記載の分散処理制御方法。
  5. 【請求項5】 前記表は、他の処理装置の前記IDと該
    他の処理装置に対する送受信処理に関する要素の有無と
    の対応を表す送受信データ管理表と、前記計算処理時に
    受信が必要な他の処理装置の前記IDと該計算処理する
    ときの配列要素との対応を表す計算セット管理表とから
    構成される請求項1に記載の分散処理制御方法。
  6. 【請求項6】 前記段階(a)では、予め定められた特
    定の処理装置がプログラムをロードすべき処理装置の群
    として指定されることを特徴とする請求項1に記載の分
    散処理制御方法。
  7. 【請求項7】 前記段階(a)では、前記プログラムを
    ロードすべき処理装置の群として、該プログラムの実行
    開始時点において、指定された所定の処理装置が指定さ
    れることを特徴とする請求項1に記載の分散処理制御方
    法。
  8. 【請求項8】 前記表は、各処理装置において、前記プ
    ログラムの実行可能なモジュール中に生成されることを
    特徴とする請求項1に記載の分散処理制御方法。
  9. 【請求項9】 各々を識別するためのIDを有する複数
    の処理装置に含まれる所定数の処理装置に1または複数
    の配列に属する配列データを各々分散して保持した該複
    数の処理装置の内、計算処理を分散並列処理するための
    プログラムをロードすべき処理装置の群を指定する指定
    手段と、 前記プログラムにおいて定義または宣言された配列に関
    連して、前記群に含まれる各々の処理装置に、担当すべ
    き部分配列を割り当てる割当手段と、 前記群に含まれる各々の処理装置に、前記プログラム中
    の前記配列を用いる計算処理に関連して、当該処理装置
    が担当する部分配列に基づいて、計算を遂行するために
    当該処理装置から前記配列データを含む情報を送信すべ
    き処理装置の前記ID、及び当該処理装置が前記配列デ
    ータを含む情報を受信すべき処理装置の前記IDを示す
    欄を含む表を生成させる指示をする生成指示手段と、 前記群に含まれる各々の処理装置に、生成された表を参
    照して、前記群に含まれる処理装置の個々の間で前記情
    報を送受信処理することにより前記配列を用いた計算処
    理を実行させる計算指示手段と、 を備えた処理装置を含んで構成された分散処理システ
    ム。
  10. 【請求項10】 前記表には、送信済または受信済のマ
    ークを付与する欄が設けられ、 他の処理装置からの受信または他の処理装置への送信に
    応答して、当該処理装置の前記表の該当欄に対応して前
    記マークを付与する付与手段と、 前記表の全ての該応答に前記マークが付与されるまで前
    記送受信処理を行うように制御する制御手段と、 をさらに有することを特徴とする請求項9に記載の分散
    処理システム。
  11. 【請求項11】 前記生成指示手段は、 前記配列を用いる計算処理について、当該処理装置が保
    持する配列要素と、他処理装置が保持する配列要素とに
    分類する第1分類手段と、 前記分類を用いて、当該処理装置において計算処理する
    ときに配列データの受信が必要な配列要素と受信が不要
    な配列要素とを分類する第2分類手段と、 前記分類済の配列要素の要素群を配列要素のインデック
    ス式により表した計算セットを計算する演算手段と、 を含む請求項9に記載の分散処理システム。
  12. 【請求項12】 前記生成指示手段は、 前記配列を用いる計算処理について、当該処理装置が保
    持する配列要素と、他処理装置が保持する配列要素とに
    分類する第1分類手段と、 前記分類を用いて、当該処理装置において計算処理する
    ときに配列データの受信が必要な配列要素と受信が不要
    な配列要素とを分類する第2分類手段と、 前記計算処理するときに受信が必要な1または複数の配
    列要素に対応する処理装置毎に分類する第3分類手段
    と、 前記分類済の配列要素の要素群を配列要素のインデック
    ス式により表した計算セットを計算する演算手段と、 を含む請求項9に記載の分散処理システム。
  13. 【請求項13】 前記指定手段は、予め定められた特定
    の処理装置がプログラムをロードすべき処理装置の群と
    して指定された該群を読み取る読取手段で構成されたこ
    とを特徴とする請求項9に記載の分散処理システム。
  14. 【請求項14】 前記指定手段は、前記プログラムをロ
    ードすべき処理装置の群として、該プログラムの実行開
    始時点において、指定された所定の処理装置が指定され
    た該群を読み取る読取手段で構成されたことを特徴とす
    る請求項9に記載の分散処理システム。
JP6019177A 1994-02-16 1994-02-16 分散処理制御方法及び分散処理システム Expired - Fee Related JP2590045B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6019177A JP2590045B2 (ja) 1994-02-16 1994-02-16 分散処理制御方法及び分散処理システム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP6019177A JP2590045B2 (ja) 1994-02-16 1994-02-16 分散処理制御方法及び分散処理システム
EP19950300852 EP0668559A2 (en) 1994-02-16 1995-02-10 System and method for distributed processing control
US08/388,534 US5625832A (en) 1994-02-16 1995-02-14 Distributed processing control method and distributed processing system

Publications (2)

Publication Number Publication Date
JPH07230429A JPH07230429A (ja) 1995-08-29
JP2590045B2 true JP2590045B2 (ja) 1997-03-12

Family

ID=11992073

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6019177A Expired - Fee Related JP2590045B2 (ja) 1994-02-16 1994-02-16 分散処理制御方法及び分散処理システム

Country Status (3)

Country Link
US (1) US5625832A (ja)
EP (1) EP0668559A2 (ja)
JP (1) JP2590045B2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08249864A (ja) * 1995-03-13 1996-09-27 Pioneer Electron Corp 情報編集方法及び装置
GB2315889A (en) * 1996-07-31 1998-02-11 Ibm Locating and sampling of data in parallel processing systems
US6240439B1 (en) * 1996-09-13 2001-05-29 Kabushiki Kaisha Toshiba System and method for independently executing plurality of programs for control of objects and recording medium in which the programs are recorded so as to execute independently plurality of programs for control of objects
US5911073A (en) * 1997-12-23 1999-06-08 Hewlett-Packard Company Method and apparatus for dynamic process monitoring through an ancillary control code system
US6148437A (en) * 1998-05-04 2000-11-14 Hewlett-Packard Company System and method for jump-evaluated trace designation
US6189141B1 (en) 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
US6164841A (en) * 1998-05-04 2000-12-26 Hewlett-Packard Company Method, apparatus, and product for dynamic software code translation system
US6763519B1 (en) * 1999-05-05 2004-07-13 Sychron Inc. Multiprogrammed multiprocessor system with lobally controlled communication and signature controlled scheduling
US6842899B2 (en) 1999-12-21 2005-01-11 Lockheed Martin Corporation Apparatus and method for resource negotiations among autonomous agents
EP1115253A2 (en) * 1999-12-27 2001-07-11 Matsushita Electric Industrial Co., Ltd. Program information transmission apparatus
JP2002007364A (ja) * 2000-06-22 2002-01-11 Fujitsu Ltd 並列計算機システムのジョブスケジューリングを行うスケジューリング装置
US7398376B2 (en) * 2001-03-23 2008-07-08 International Business Machines Corporation Instructions for ordering execution in pipelined processes
US20020156994A1 (en) * 2001-04-24 2002-10-24 Sanjay Agarwal Coprocessor architecture for control processors using synchronous logic
US20040267897A1 (en) * 2003-06-24 2004-12-30 Sychron Inc. Distributed System Providing Scalable Methodology for Real-Time Control of Server Pools and Data Centers
US20050149940A1 (en) * 2003-12-31 2005-07-07 Sychron Inc. System Providing Methodology for Policy-Based Resource Allocation
JP2006013448A (ja) * 2004-05-21 2006-01-12 Matsushita Electric Ind Co Ltd ラインバランス制御方法、ラインバランス制御装置、および部品実装機
US7725679B1 (en) * 2004-09-13 2010-05-25 The Mathworks, Inc. Distributed arrays in parallel computing environments
GB2433396B (en) * 2005-12-15 2010-06-23 Bridgeworks Ltd A bridge

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4633392A (en) * 1982-04-05 1986-12-30 Texas Instruments Incorporated Self-configuring digital processor system with logical arbiter
US4897777A (en) * 1988-04-11 1990-01-30 Square D Company Peer-to-peer register exchange controller for PLCS
US5438680A (en) * 1988-04-29 1995-08-01 Intellectual Properties And Technology, Inc. Method and apparatus for enhancing concurrency in a parallel digital computer
US4949254A (en) * 1988-09-29 1990-08-14 Ibm Corp. Method to manage concurrent execution of a distributed application program by a host computer and a large plurality of intelligent work stations on an SNA network
US5247678A (en) * 1989-10-12 1993-09-21 Texas Instruments Incorporated Load time linker for software used with a multiprocessor system
JPH0511827A (ja) * 1990-04-23 1993-01-22 Canon Inc 工業用自動装置の実行時間出力方式
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system

Also Published As

Publication number Publication date
US5625832A (en) 1997-04-29
JPH07230429A (ja) 1995-08-29
EP0668559A2 (en) 1995-08-23

Similar Documents

Publication Publication Date Title
Chow et al. The priority-based coloring approach to register allocation
Warneke et al. Exploiting dynamic resource allocation for efficient parallel data processing in the cloud
US5630129A (en) Dynamic load balancing of applications
Danelutto et al. A methodology for the development and the support of massively parallel programs
US7853937B2 (en) Object-oriented, parallel language, method of programming and multi-processor computer
US8676877B2 (en) Cluster computing using special purpose microprocessors
EP0428084B1 (en) Method and apparatus for compiling computer programs with interprocedural register allocation
US6292822B1 (en) Dynamic load balancing among processors in a parallel computer
US5386566A (en) Inter-processor communication method for transmitting data and processor dependent information predetermined for a receiving process of another processor
JP5227454B2 (ja) マルチプロセッサのための多次元スレッドグループ化
JP5232914B2 (ja) マルチプロセッサにおけるデータパラレルコンピューティングのためのアプリケーションプログラミングインターフェイス
Goldberg Multiprocessor execution of functional programs
US6212617B1 (en) Parallel processing method and system using a lazy parallel data type to reduce inter-processor communication
CN1316357C (zh) 通过虚拟线程执行计算机多任务的方法及装置
JP2829078B2 (ja) プロセス分散方法
Pérez et al. CellSs: Making it easier to program the Cell Broadband Engine processor
US7272820B2 (en) Graphical development of fully executable transactional workflow applications with adaptive high-performance capacity
US7647590B2 (en) Parallel computing system using coordinator and master nodes for load balancing and distributing work
EP1785861A2 (en) Task allocation method and task allocation apparatus
US6341302B1 (en) Efficient inter-task queue protocol
Andrews The distributed programming language SR—mechanisms, design and implementation
CN100426239C (zh) 依赖关系图参数范围的划分
US5093916A (en) System for inserting constructs into compiled code, defining scoping of common blocks and dynamically binding common blocks to tasks
JP5475553B2 (ja) グラフに基づく計算の実行方法、当該方法を実行させる命令を格納するコンピュータ可読記憶媒体、並びに当該方法を実行するためのシステム
US4796178A (en) Special purpose processor for off-loading many operating system functions in a large data processing system

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees