JPH10154136A - シミュレーションプログラムの実行支援方法およびプログラム割り当て方法 - Google Patents

シミュレーションプログラムの実行支援方法およびプログラム割り当て方法

Info

Publication number
JPH10154136A
JPH10154136A JP34230596A JP34230596A JPH10154136A JP H10154136 A JPH10154136 A JP H10154136A JP 34230596 A JP34230596 A JP 34230596A JP 34230596 A JP34230596 A JP 34230596A JP H10154136 A JPH10154136 A JP H10154136A
Authority
JP
Japan
Prior art keywords
program
simulation
data communication
inter
communication support
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.)
Pending
Application number
JP34230596A
Other languages
English (en)
Inventor
Nobutoshi Sagawa
暢俊 佐川
Mikio Nagasawa
幹夫 長澤
Shigeo Ihara
茂男 井原
Katsuro Kikuchi
克朗 菊地
Masahiko Hirao
雅彦 平尾
Kirin Ka
希倫 何
Satoshi Ito
智 伊藤
Yoshio Suzuki
芳生 鈴木
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP34230596A priority Critical patent/JPH10154136A/ja
Publication of JPH10154136A publication Critical patent/JPH10154136A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

(57)【要約】 【課題】複合シミュレーションを実行しやすくする。 【解決手段】各シミュレーションプログラムにデータ変
換ライブラリ(607,608)をリンクさせて、複数
のシミュレーションプロセスとして実行し、各シミュレ
ーションプロセスに対応して各データ変換プロセス(6
03,604)を実行する。シミュレーションプロセス
間でシミュレーション結果データを交換する場合に、送
信元のシミュレーションプロセスに対するデータ変換プ
ロセス(603,604)が送信先のシミュレーション
プロセスを決定する。送信先のシミュレーションプロセ
スに対するデータ変換プロセスが、送信元のシミュレー
ションプロセスの基底と送信先のシミュレーションプロ
セスの基底との違いを吸収するためのデータ変換をこの
データに施す。並列計算機に適したプログラムの割り当
て方法も示す。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術の分野】本発明は、計算機上で物理
現象を模擬的に再現する複数の数値シミュレーションプ
ログラムが相互に連携しながら実行されるように、それ
らのシミュレーションプログラムの実行を支援する方法
に関する。
【0002】
【従来の技術】複数の要素計算機(プロセシングユニッ
ト、以下ではPUと略す)を高速ネットワークで連結
し、同時に動かすことにより処理速度を向上させようと
する並列計算機が市販されるようになっている。シミュ
レーション対象領域を適当に分割して各PUに部分領域
を割り当て、各PUにその部分領域のシミュレーション
を実行させることにより並列計算機の高速性を有効に引
き出すことができる。
【0003】並列計算機は、PUからのメモリ空間のア
クセス方法によって二つのグループに大別できる。一つ
は全PUがすべてのメモリ空間にアクセスできる共有メ
モリ型であり、もう一つは各PUがそれに付随するメモ
リ空間のみをアクセスできる分散メモリ型である。数値
シミュレーション分野では、計算速度を上げて大規模問
題を解くことに主眼が置かれているので、主に分散メモ
リ型並列計算機の利用が検討されている。並列計算機に
おいてシミュレーション領域を複数のPUに分割して担
当させる場合、それぞれのPUにおいてシミュレーショ
ンの実行途中で、データを交換する必要がある。たとえ
ば、そのようなデータは物理量の計算結果である。たと
えば、ある部分領域の境界部分に位置する格子点での物
理用の計算値をその隣接の部分領域での境界付近の格子
点での物理量の値の計算に使用される。分散メモリ型並
列計算機では、PU間のデータのやりとりをすべてプロ
グラム中に記述する必要がある。ここでPU間で受け渡
されるデータをメッセージと呼ぶ。並列計算機用プログ
ラムでは、他のPUで必要となるデータを自PUが生成
する場合はそれを生成した時点で送信し、他のPUの所
有するデータが自PUで必要となる場合にはそれを必要
とする時点で受信するような指示を各PUのプログラム
中に明示的に記述しなくてはならない。多くの並列計算
機システムでは、このようなPU間のメッセージの送受
信をサポートする目的で、通信ライブラリと呼ばれる関
数(あるいはサブルーチン)群が予め用意されており、
通信はCやFORTRANなどのプログラムからの関数
コールとして記述できるようになっている。
【0004】通信ライブラリの中には、異なる並列計算
機ハードウエア上にインプリメントされ、事実上の標準
としての通信環境を提供するものも現れている。米国O
akRidge National Laborato
ryで開発されたPVM(Parallel Virt
ual Machine)や、近年多くの団体を巻き込
んで新たに標準化が進んでいるMPI(Message
PassingInterface)はその例であ
る。これらの通信ライブラリをコールすることにより書
かれた並列プログラムは、異なる並列計算機上でも再コ
ンパイルして動作させることができる可能性(可搬性)
が高い。
【0005】シミュレーションプログラムを複数のPU
で実行する場合、部分領域のシミュレーションを担当す
る複数のプロセスを複数のPUで実行することになる。
PVMでは、各PU上で実行中のプロセスにはPVM内
で一意につけられたプロセス識別情報(PID)が付与
される。PU間のメッセージには、本来のデータに加え
て、このPIDおよびメッセージごとに利用者が付与で
きるメッセージID(MID)が付属する。従って、利
用者が適切なPIDとMIDを定めながら通信を行なう
ような並列プログラムを作成すれば、各々のメッセージ
がPU間で混信無く受け渡されることになる。
【0006】PVMのような通信ライブラリは、本来の
並列計算機以外にネットワークで接続された複数のワー
クステーション上に実装することもでき、簡便に仮想的
な並列計算環境を提供することができる。このように複
数の異なるハードウエア上に通信ライブラリを稼働させ
る場合には、ハードウエアごとに内部データ表現が異な
る可能性がある。すなわち、ネットワーク接続された複
数のワークステーションが異なるCPUやオペレーティ
ングシステム(OS)を用いていれば、同じプログラム
中の整数や実数と言ったデータ型でも内部のビット表現
が異なることが考えられる。このような場合にも通信ラ
イブラリの利用者が内部データ表現の細部を気にせずに
通信を行なえるように、通信ライブラリの内部でデータ
表現を必要に応じて自動的に変換する機能が提供されて
いる。PVMプロセスに適当なデータ変換の機能を持た
せれば、その後ユーザプロセスから送られてくるメッセ
ージに適当な変換を施しながら相手プロセスにこれを伝
えることが可能となる。このような構成ではOSやCP
Uの差異がPVMプロセスによって吸収されるため、ユ
ーザのプログラムのそれらからの独立性が高くなる。
【0007】なお、一つのシミュレーションプログラム
のシミュレーション領域を分割し、分割で得られる複数
の部分領域に関するシミュレーションを複数のプロセッ
サにより並列に実行させる場合に、各部分領域のメッシ
ュの細かさが隣接する部分領域とは異なるがある。特開
平4―336369号公報には、各部分領域の境界上の
離散点で算出した物理量を隣の部分領域のシミュレーシ
ョンに反映するために、その物理量をその隣の部分領域
の境界上の離散点の値に変換する回路を設け、この回路
により得られるデータを隣のプロセッサに転送する技術
が記載されている。ここでは、入力装置、出力装置の両
方から境界の個数および形状データを入力し、演算装置
により変換行列を作成し、それを用いて上記変換を行っ
ている。
【0008】数値シミュレーションは、着目する物理量
の空間内の分布を求めることを目的とする。物理量の表
現方法によって、数理シミュレーションを大きく二つに
分けることができる。一つは連続系のシミュレーショ
ン、もう一つは粒子系のシミュレーションである。連続
系のシミュレーションでは、求めるべき物理量をf、空
間を(x,y)(3次元では(x,y,z))のような
座標で表わし、問題をf(x,y)の満たすべき方程式
を解くことに帰着させる。このような方程式としては、
電磁場を記述するマクスウェル方程式や、流体場を記述
するナビエ・ストークス方程式などが知られている。こ
の方程式は通常偏微分方程式の形をとり、ごく単純な場
合を除いては解析的に解を求めることはできない。従っ
て、計算機を用いて問題ごとの近似解を数値的に求める
ことになる。計算機上でf(x,y)の分布を数値的に
表現するためには、関数の離散化という概念を導入す
る。離散化とは、本来連続な関数を、有限個の数値で近
似的に代表させる操作である。空間上のfの分布を離散
化するためには、空間に網目(メッシュ)をかぶせ、メ
ッシュの各点における値の集合でfを表現することが行
なわれる。
【0009】メッシュの一例は(x,y)空間を互いに
直交する複数の直線により格子状に分割して得られるメ
ッシュであり、直交格子とも呼ばれる。この場合、各格
子線は直線であり、互いに直交しているが、より一般的
な状況では、格子線は一般には曲線であってもよい。そ
れらの格子点上での物理量の値を値的に求める手法は差
分法と呼ばれる。これに対し、他のメッシュの例は、3
辺形や4辺形よりなる任意の形のメッシュであり、非構
造格子と呼ばれる。非構造格子に分割された領域での物
理量の値を求める手法の代表的なものとしては有限要素
法が挙げられる。有限要素法では格子点を節点と呼び、
各3辺形や4辺形を要素と呼ぶ。また、連続系シミュレ
ーションの特殊な例としては、メッシュを用いる代わり
に既知の単純な関数(例えば3角関数)の線型和として
fを表現する方法も知られている。この場合には、メッ
シュ点での関数値に対応する離散値は各関数に対する係
数の値と考えることができる。
【0010】上に記載した構造格子あるいは非構造格子
の格子点は、その点における物理量を算出する位置であ
り、一般的に離散点とも呼ばれる。離散点の集合を基底
あるいはシミュレーション基底と呼ぶ。差分法または有
限要素法によるシミュレーションを適用される格子点の
集合を差分基底あるいは有限要素基底と呼ぶこともあ
る。また、一つのシミュレーションプログラムが、それ
ぞれ異なる部分シミュレーション領域を担当する複数の
シミュレーションプロセスとして並列計算機上で実行さ
れる場合、各シミュレーションプロセスの担当する部分
シミュレーション領域に属する一群の離散点をそのシミ
ュレーションプロセスの基底と呼ぶ。
【0011】一方粒子系のシミュレーションでは、物理
量を空間内に分布する粒子の運動としてとらえる。各粒
子は、材料シミュレーションにおける原子、あるいは天
体シミュレーションにおける星などの物理的な実体に対
応させ、運動方程式など物理の第1原理を直接用いて系
を記述する場合が多い。計算量を節約するために、いく
つかの粒子をまとめて一つの仮想的な粒子で代表させる
ような手法がとられることもある。個々の粒子の位置
は、時刻tを独立変数として、座標(x(t),y
(t),z(t))およびその時間微分で記述される。
従って、粒子系シミュレーションで主に解く必要がある
のは、時間に関する常微分方程式となる。この場合も、
粒子数が数個以上の系では解析解を求めることは困難で
あり、現実的な規模の問題を解くためには計算機を用い
た数値的な解法によらざるを得ない。なお、この粒子系
シミュレーションでは、粒子の集合がこのシミュレーシ
ョンの基底となる。
【0012】連続系シミュレーションと粒子系シミュレ
ーションでは、物理現象を異なるスケールで捉えている
と考えられる。粒子系シミュレーションが物理現象の構
成要素個々のミクロな動きに着目するのに対し、連続系
シミュレーションは同じ現象をよりマクロに捉え、統計
的な挙動を問題にしている。同一の物理現象を双方の方
法で解くことができる場合もあるが、取り扱う問題のサ
イズや規模に応じて使い分けるなど、相補的に利用され
ることが多い。ある程度複雑で工業的にも興味深い物理
現象を正確に解析する場合には、同時に生起する複数の
物理現象の連成効果を考慮に入れたシミュレーション
や、粒子系と連続系のような異種のパラダイムを組み合
わせたシミュレーション(複合シミュレーション)を行
なうことが望ましい。例えば、流体関連機械の設計に際
しては、流体の流れのパターンの、粒子系シミュレーシ
ョンによる解析とそれに起因する振動の、連続系シミュ
レーションによる解析を同時に実行できることが可能で
ある。
【0013】従来、複数の物理現象を解析する必要が生
じた場合や、異なるシミュレーション手法を組み合わせ
る必要が生じた場合には、一般に以下のようなアプロー
チのいずれかが選択されてきた。 (1)各々のシミュレーションに対応した複数の利用者
プログラムを入手し、これらを書き換えて、さらに統合
して、複合シミュレーションプログラムを作成する。 (2)二つのシミュレーションプログラムを統合するこ
となく、交互に実行し、それらの間でデータを交換す
る。
【0014】二つのシミュレーションプログラムを統合
しない場合、それらのシミュレーションプログラムのシ
ミュレーション対象領域が重複する部分領域に属する、
一方のシミュレーションプログラムによる計算結果デー
タを、他方のシミュレーションプログラムに送る必要が
ある。具体的な方法として、一方のシミュレーションプ
ログラムの出力をファイルなどに格納し、必要に応じて
それを他方のシミュレーションプログラムの入力形式に
変換し、これを繰り返すことによって複合シミュレーシ
ョンと同様の効果を得る技術が知られている。
【0015】なお、複数のシミュレーションプログラム
A,Bを統合しないで別々に実行させようとした場合、
一方のシミュレーションプログラムAのシミュレーショ
ン結果データを他方のシミュレーションプログラムBが
使用するには、それらのシミュレーションプログラムの
基底が異なるために、その結果データはそのままでは使
用できない。すなわち、シミュレーションプログラムA
の結果データはその基底上で定義されたデータであるた
め、このデータをシミュレーションプログラムBの基底
上で定義された別の形式に変換しなければならない。こ
のデータ変換をするには、それぞれのシミュレーション
プログラムは相手のシミュレーションプログラムの基底
を構成する一群の離散点の座標と自己の基底を構成する
一群の離散点の座標との間の位置関係が用いられる。
【0016】
【発明が解決しようとする課題】(1)のように各々の
シミュレーションプログラムを解読し、統合するために
は、従来の単一の計算機を対象とした場合でも非常に多
くの手間が必要となる。並列計算機のためのプログラム
は格段に複雑となることから、このようなアプローチを
並列計算機向けに採用することはきわめて困難な状況に
ある。
【0017】一方、(2)のようにプログラムの入出力
をファイル経由で結合することは、そのようなファイル
の標準形式を定めることにより可能となる。しかし、並
列計算機上の数値シミュレーションでは、解は各PUに
分散して持たれることが多い。これをシミュレーション
プログラムが交代する度にファイルに落とし、しかるの
ちに再分配することは、シミュレーションの効率を落と
す原因となりやすい。特に複数のシミュレーションプロ
グラムを繰り返し呼んで収束解を得たい場合などは、入
出力および再分配のボトルネックの影響は深刻である。
【0018】さらに、前述したように、複数のシミュレ
ーションプログラムA,Bを統合しないで別々に実行さ
せようとした場合、一方のシミュレーションプログラム
の計算結果データを、他方のシミュレーションプログラ
ムの基底上で定義されたデータに変換しなければならな
い。従って、利用者は従来単独で使用していたシミュレ
ーションプログラムを、このデータ変換のために互いの
基底に関する基底情報を用いてそのデータ変換を実行で
きるように書き換えなければならない。しかも、このデ
ータ変換は、複合シミュレーションに使用する二つのシ
ミュレーションプログラムのシミュレーションの種類、
たとえば、差分法によるシミュレーション、有限要素法
によるシミュレーション、粒子系のシミュレーションの
組み合わせにより異なるために、複合シミュレーション
に使用する相手のシミュレーションプログラムごとにプ
ログラムを書き換えなければならない。このデータ変換
の問題は、それらのシミュレーションプログラムを一つ
の計算機上で実行させるか複数の計算機上で実行させる
かに依らないで生じる問題である。
【0019】複数のシミュレーションプログラムを統合
しないで実行するときの他の問題は、それらのシミュレ
ーションプログラム間のデータの交換を高速に行えるよ
うにすることである。このためには、それらのシミュレ
ーションプログラムを複数の計算機上で並行して実行
し、それらの実行途中で、一方のシミュレーションプロ
グラムが生成したデータを通信により他方のシミュレー
ションプログラムに転送可能にすることがシミュレーシ
ョン時間の点で最も望ましい。
【0020】PVMのような並列計算機のための通信ラ
イブラリは、並列プログラム中でPU間のメッセージの
受け渡しを容易にかつ可搬性良く記述するのに役立って
きた。しかし、複合シミュレーションを対象とした複雑
なプログラムを作成するためには、その記述レベルは低
位に過ぎると考えられる。利用者は、通信ライブラリを
用いてもなお、従来の計算機に対する以上の手間をかけ
て複合シミュレーションプログラムを作成せざるを得な
い。
【0021】すなわち、複数の計算機上で複数のシミュ
レーションプログラムをそれぞれシミュレーションプロ
セスとして実行する場合、PVMを使用したとしても、
各PU上で実行中のシミュレーションプロセスは他のP
U上で実行中の他のシミュレーションプロセスとの送信
要求あるいは受信要求を通信相手ごとに記載しなければ
ならない。これらの通信要求は通信相手に対して定めら
れたプロセスIDと利用者が定めたメッセージIDを指
定しなければならない。従って、通信先が多いほどこの
ような通信要求をシミュレーションプロセスの中に記述
しなければならないために、利用者の作業が多くなる。
しかも、通信相手は、シミュレーション対象領域あるい
は算出しようとする物理量を支配する物理方程式あるい
はシミュレーション手法により異なるために、利用者は
シミュレーションごとに、プログラムを書き換えなけれ
ばならないという大きな問題がある。
【0022】並列計算機上で、複数のシミュレーション
プログラムのそれぞれを複数のシミュレーションプロセ
スにより連携して実行させようとした場合、この通信先
の指定の問題は極端に難しくなる。すなわち、シミュレ
ーションプログラムAに属する各シミュレーションプロ
セスがシミュレーションプログラムBに属するいずれの
シミュレーションプロセスとデータを交換するかを決定
しなければならない。一般には、シミュレーションプロ
グラムAの各シミュレーションプロセスの部分シミュレ
ーション領域とシミュレーションプログラムB内のいず
れのシミュレーションプロセスの部分シミュレーション
領域とが重複しているかを検出して、この通信先を決め
る必要がある。ところがこの重複はシミュレーションプ
ログラムAとシミュレーションプログラムBのシミュレ
ーション対象領域の相互の位置関係により異なる。この
ため、この通信先の決定のためのプログラムの書き換え
の手間は大きい。
【0023】複数のシミュレーションプログラムを異な
る計算機で実行する場合に起きる他の問題は、複数のシ
ミュレーションプログラムをオープンなネットワークで
接続された複数のプロセッサ上で実行させた場合の、計
算結果データの機密保持である。
【0024】複数のシミュレーションプログラムを異な
る計算機で実行する場合に起きるさらに他の問題は、複
数のシミュレーションプログラムを複数のプロセッサに
ロードする場合に、プログラムの実行効率を高めるよう
に各プログラムをロードする計算機をいかに選択するか
である。
【0025】以上に述べたいろいろの問題は、既存のシ
ミュレーションプログラムを修正して複合シミュレーシ
ョンを実行する場合だけでなく、新規に複合シミュレー
ションのために複数のシミュレーションプログラムを作
成する場合にも全く同様に問題となる。
【0026】本発明の目的は、複数のシミュレーション
プログラムを、それぞれを単独で実行する場合に比べて
あまり大きく変更することなく、並列に実行させられる
ように、これらのプログラムの実行を支援する方法を提
供することである。本発明のより具体的な目的は、複数
のシミュレーションプログラムのそれぞれの基底の相違
を保証するためのデータ変換手順をそれぞれのシミュレ
ーションプログラムが有さなくても、それらを異なる計
算機上で並列に実行可能にするシミュレーションプログ
ラム実行支援方法を提供することである。本発明のより
具体的な他の目的は、複数のシミュレーションプログラ
ムのそれぞれを複数のシミュレーションプロセスとして
複数の計算機上で実行させる場合に、各シミュレーショ
ンプロセスによる演算結果データの送信先のシミュレー
ションプロセスを個別に指定する必要をなくす、シミュ
レーションプログラム実行支援方法を提供することであ
る。
【0027】本発明の他の目的は、複数のシミュレーシ
ョンプログラムをオープンなネットワークで接続された
複数のプロセッサ上で実行させた場合に好適なシミュレ
ーション結果データに対する機密保持方法を提供するこ
とである。本発明の他の目的は、複数のシミュレーショ
ンプログラムを複数のプロセッサにロードする場合に、
プログラムの実行効率を高めるように各プログラムをロ
ードするプログラムロード方法を提供することである。
【0028】
【課題を解決するための手段】上記目的を達成するため
に、本発明によるシミュレーションプログラムの実行支
援方法の望ましい態様では、複数のシミュレーションプ
ログラム(あるいはプロセス)に対応してプログラム間
データ通信支援プログラム(あるいはプロセス)が起動
され、複数のシミュレーションプログラム(あるいはプ
ロセス)の一つが演算結果データを生成したときに、該
複数のシミュレーションプログラム(あるいはプロセ
ス)の内の、その演算結果データを使用する少なくとも
一つの他のシミュレーションプログラム(あるいはプロ
セス)の基底上で定義されたデータに上記生成されたデ
ータを該プログラム間データ通信支援プログラム(ある
いはプロセス)が変換し、得られる上記データを該他の
シミュレーションプログラム(あるいはプロセス)に転
送する。
【0029】このデータ変換のために、各シミュレーシ
ョンプログラム(あるいはプロセス)からその各シミュ
レーションプログラム(あるいはプロセス)が使用する
基底に関する基底情報をこのプログラム間データ通信支
援プログラム(あるいはプロセス)が事前に受け取り、
各シミュレーションプログラム(あるいはプロセス)か
ら受け取った基底情報に基づいて、各シミュレーション
プログラム(あるいはプロセス)の基底と他のシミュレ
ーションプログラム(あるいはプロセス)の基底の間の
位置関係を判別する。該データ変換は、該演算結果デー
タを算出した該一つのシミュレーションプログラム(あ
るいはプロセス)の基底と該演算結果データを使用する
該他のシミュレーションプログラム(あるいはプロセ
ス)の基底との間の上記判別された位置関係に依存して
実行される。
【0030】また、本発明の他の態様では、プログラム
間データ通信支援プログラム(あるいはプロセス)が、
いずれか一つのシミュレーションプログラム(あるいは
プロセス)が生成するであろう演算結果データを使用す
る他のシミュレーションプログラム(あるいはプロセ
ス)を事前に検出し、その一つのシミュレーションプロ
グラムが現に演算結果データを生成したときに、そのデ
ータを、上記検出された他のシミュレーションプログラ
ム(あるいはプロセス)に転送する。上記の転送先のプ
ログラム(あるいはプロセス)の検出のための、上記プ
ログラム間データ通信支援プログラム(あるいはプロセ
ス)が、これらのシミュレーションプログラムから、そ
れらが使用する基底に関連する情報を事前に受け取り、
これらの受け取った情報に基づいて上記検出を行う。
【0031】以上に述べたプログラム間データ通信支援
プログラムは、シミュレーションプログラム以外の他の
複数のプログラム(あるいはプロセス)間の通信の支援
にも適用できる。また、本発明では、シミュレーション
結果データの機密保護のために、いずれかのシミュレー
ションプログラムで算出された結果データを他のシミュ
レーションプログラムに送る前に上記データ変換プログ
ラムにより暗号化し、上記他のシミュレーションプログ
ラムが、この暗号化された結果データを解読し、解読後
のデータを上記他のシミュレーションプログラムに転送
する。また、本発明では、複数のシミュレーションプロ
グラムを複数のプロセッサ上で実行させるときに、それ
らの実行効率を高めるために、それらのシミュレーショ
ンプログラムが必要とする種々のリソースの使用量とそ
れらのプロセッサが持っているリソース量とに基づい
て、それらのシミュレーションプログラムをロードすべ
きプロセッサを選択する。
【0032】
【発明の実施の形態】以下、本発明に係るシミュレーシ
ョンプログラムの実行支援方法を図面に示したいくつか
の実施の形態を参照してさらに詳しく説明する。なお、
以下においては、同じ参照番号は同じものもしくは類似
のものを表わすものとする。また、発明の第2の実施の
形態以降においては、発明の第1の実施の形態との相違
点を主に説明するに止める。
【0033】<発明の実施の形態1> (1)装置と動作の概要 本発明に係るシミュレーションプログラムは、例えば図
2で示されるような並列計算機3201上で実行され
る。並列計算機3201は複数のプロセシングユニット
(PU)801から809とそれらを結ぶネットワーク
820によって構成される。PUの個数は任意である
が、以下では、たとえば9台とする。ネットワーク82
0は、図では格子状に示してあるが、本発明の実施に関
しては任意の二つのPU間で通信ができればよく、種類
は問わない。しかし、ネットワーク82は、ハイパクロ
スバネットワークのごとく、複数のメッセージを並列に
転送可能な高速のネットワークであることがシミュレー
ション実行時間の点でより望ましい。各PUは主要な構
成要素として、CPU3203、メモリ3205、およ
びディスク3204を持ち、分散メモリ型の並列計算機
を構成する。また、並列計算機3201の外部には、そ
れへのコマンド投入などを行なうためのコンソール32
02が付属する。利用者のシミュレーションプロセスや
本実施の形態に特徴的な構成要素であるデータ変換プロ
セス、データ変換ライブラリは通常ディスク3204上
に格納されており、利用者のコンソールからのコマンド
投入によって各PUのメモリ上にローディングされ、各
CPUによって実行される。
【0034】図1に本実施の形態で実行されるプログラ
ムの例を示している。本実施の形態では、二つのシミュ
レーションプログラムAとBが実行され、それらにより
シミュレーションAとBが複合して実行されると仮定す
る。シミュレーションAとBは、例えば差分法シミュレ
ーション、有限要素法シミュレーションである。シミュ
レーションプログラムAとBはいずれも複数のシミュレ
ーションプロセスとして実行される。たとえば、シミュ
レーションプログラムAは、PU801から806にロ
ーディングされた6個のシミュレーションプロセスA
(605)として実行され、シミュレーションプログラ
ムBは、たとえば、PU807から809にローディン
グされた3個のシミュレーションプロセスA(606)
として実行される。各PUには、そこにローディングさ
れているシミュレーションプロセスAまたはBに対応し
て、データ変換プロセス603または604がロードさ
れている。これらのデータ変換プロセスは、シミュレー
ションプロセス間のデータ通信を支援するためのプログ
ラムである。しかし、本実施の形態あるいは他の実施の
形態ではそれらのプログラムを簡単化のためにデータ変
換プログラムあるいはデータ変換プロセスと呼ぶことが
多い。
【0035】シミュレーションプロセスAまたはBは、
利用者により作成されたシミュレーションプログラムA
またはBからコンパイルとリンクを経て生成されたもの
である。このリンク時にデータ変換ライブラリ607ま
たは608と結合されされて実行形式に変換され、実行
時に計算機上にロードされることにより形成される。こ
れらのデータ変換ライブラリはそれにリンクされたシミ
ュレーションプロセスとそのシミュレーションプロセス
に対応するデータ変換プロセスとの間で引き渡すべきデ
ータあるいは要求等を中継する働きをする。
【0036】データ変換プロセスとデータ変換ライブラ
リを上に述べたように使用するためにためには、予め以
下のファイルを記憶した磁気ディスク、あるいは磁気テ
ープ等の記録媒体が使用される。すなわち、上記データ
変換ファイルの実行形式ファイル、データ変換ライブラ
リのアーカイブファイル(コンパイルされたものであっ
て、シミュレーションプログラムとリンクできる形式に
まとめられたもの)およびデータ変換ライブラリのヘッ
ダファイル(このライブラリで使用される変数の型の宣
言、定数の定義などをまとめたもの)。これらが前述の
磁気ディスク3204に移動されて使用される。
【0037】実行時にはさらに、データ変換プロセス6
03,604を予め(例えばデーモンとして)起動して
おく。各PUのシミュレーションプロセス605または
606が実行を開始するとデータ変換ライブラリ607
または608がシミュレーションプロセス605または
606と、データ変換プロセス603または604とを
ソフトウエア的な通信路で結合する。さらに二つのデー
タ変換プロセス603または604はソフトウエア的な
通信路で結合され、異なるシミュレーションプログラム
に属する二つのシミュレーションプロセス605、60
6はデータ変換ライブラリ607、608とデータ変換
プロセス603、604を介してデータのやりとりを行
なう。
【0038】なお、データ変換プロセスを介したこのよ
うな通信は異なるシミュレーションプログラムに属する
シミュレーションプロセス間のデータの受け渡しのため
に行われる。同じシミュレーションプログラムA(また
はBに属するシミュレーションプロセス間のデータの交
換は、従来技術と同様にPVMなどを用いて行われる
が、本実施の形態では、そのデータ交換に関係するプロ
グラム部分の構造と動作の説明は省略する。
【0039】データ変換プロセス603、604は、シ
ミュレーションプロセス605,606間でのデータ交
信に際し、自動的にデータの送信先を決定し、かつデー
タを変換する機能を提供する。ここでデータの変換と
は、一方のシミュレーションプログラムにより算出され
た、そのシミュレーションプログラムの基底の上で定義
されたデータを、他方のシミュレーションプログラムの
基底上で定義されたデータに変換する操作を指し、たと
えば、有限要素法基底上で求められた解を差分法基底上
にマッピングする。そのために、後に詳しく説明するよ
うに、各シミュレーションプロセス605または606
がどのような基底を用いるかを対応するデータ変換プロ
セス603または604に予め登録しておく。データ変
換プロセス603または604は、異なるシミュレーシ
ョン基底の組み合わせに対する複数の変換規則を内蔵し
ており、データ変換プロセスの初期化時に、PU801
から806上のシミュレーションプロセス605とPU
807から809上のシミュレーションプロセス606
が互いにそれぞれに登録された基底に関する情報を連絡
しあい、PU801から806の各々上のシミュレーシ
ョンプロセス605とPU807から809の各々上の
シミュレーションプロセス606との間で後にデータ交
換をするときに、内蔵された変換規則の内、どれを利用
すべきかを決定する。この変換規則は、送信側となるシ
ミュレーションプロセスと受信側となるシミュレーショ
ンプロセスの組に対して決定される。
【0040】本実施の形態では、データを受信したデー
タ変換プロセスが、受信したデータに変換規則を適用し
てデータを変換する。具体的には、あるPU上のデータ
変換プロセス603(または604)がそれに対応す
る、送信側のシミュレーションプロセス605(または
606)から、そのシミュレーションプロセスの基底上
で定義された演算結果データを受け取ると、これを受信
側のシミュレーションプロセス606(または605)
に対応するデータ変換プロセス604(または603)
に転送する。データ変換プロセス604(または60
3)は、先に決定した、シミュレーションプロセス60
5から606へ転送されたデータに対して先に決定した
変換規則によりこの転送された演算結果データを、受信
側のシミュレーションプロセス606(または605)
の基底上で定義されたデータに変換を施し、その結果を
受信側のシミュレーションプロセスに送る。このデータ
変換機能が各データ変換プロセスに組み込まれているの
で、シミュレーションプロセスには、データ変換のため
のプログラム部分を組み込まなくてもよいことになる。
しかも、各データ変換プロセスは、複数の変換規則を使
用しているので、異なるシミュレーションプログラムの
組み合わせに対してもそのまま使用できる。
【0041】データ変換プロセス851による交信先の
決定の概要は以下の通りである。図3(a)に有限要素
法シミュレーションプログラムと差分法シミュレーショ
ンプログラムを同時に実行する際のそれぞれのプログラ
ムが使用する基底の例を示す。格子状のメッシュ901
は差分法シミュレーションプログラム用の基底であり、
円形のメッシュ902は有限要素法用シミュレーション
プログラムの基底である。このような複数の基底系を用
いてオーバーラップした部分のデータを交換しながら交
互に問題を解くことにより、複合シミュレーションが可
能となる。
【0042】この複合シミュレーションは、特に障害物
回りの気流の解析などに用いられて効果がある。障害物
付近の気流の乱れの大きい領域を形状適合性の高い有限
要素法で、遠方の広い領域を高速な差分法で解くことに
より、演算量を減らしながら高い精度を得ることができ
る。さて、この2種類のシミュレーションを並列計算機
で実行する場合、それぞれの基底を空間的に分割してP
Uに割り当てる。このような空間分割は、シミュレーシ
ョンに先立ち利用者がプログラム中、あるいはプログラ
ムに与えるデータ中で決定しておく。
【0043】図1の並列計算機の例では、差分法のシミ
ュレーションプロセスを6個のPUで、有限要素法のシ
ミュレーションプロセスを3個のPUで実行することに
なる。それぞれの基底は例えば図3(b)の点線のよう
に空間分割することができる。以下、領域911は図1
のPU804に、領域912はPU807に、領域91
3はPU805に割り当てられるとして説明を進める。
シミュレーションプロセスからデータ変換プロセスに基
底を登録する際には、このように空間分割された基底の
内、当該プロセスの担当部分のみを登録すればよい。各
PU上のデータ変換プロセス603または604はこの
登録を受け付けると、そのデータ変換プロセスが属する
シミュレーションプログラムと異なるシミュレーション
プログラムに属する他のPU上のデータ変換プロセス6
04または603と基底に関する情報の交換を行ない、
自プロセスの通信相手となるものを探す。
【0044】本明細書では基底に関する情報を一般的に
基底情報と呼ぶ。本実施の形態では、後に述べるごと
く、基底に関する具体的な情報として、基底座標範囲情
報および基底構成格子点情報をデータ変換プロセス間で
交換する。これらの二つの基底に関連する情報も基底情
報と呼ぶことがある。さて、本例では領域912を受け
持つ、PU807上のデータ変換プロセス604は、他
のシミュレーションプロセスが稼働しているPU801
―806上のデータ変換プロセスに対して、その担当計
算領域が自プロセスの担当領域と重なっているか問い合
わせる。その結果、領域911と913を担当するPU
804と805上のデータ変換プロセス603から肯定
の返信を受け、それらのデータ変換プロセスを今後の交
信先として認識する。このように、各シミュレーション
プロセスが担当するシミュレーション領域と他のシミュ
レーションプロセスが担当するシミュレーション領域の
重複をその各シミュレーションプロセスに対応するデー
タ変換プロセスが他のデータ変換プロセスと連携して判
定し、この結果に基づいて各データ変換プロセスが対応
するシミュレーションプロセスが算出した結果データの
送信先のシミュレーションプロセスを決める。この結
果、各シミュレーションプロセスは、送信先のシミュレ
ーションプロセスを決定するプログラム部分を含まなく
てもよい。単に送信先のプログラムを指定する送信要求
を含めばよい。
【0045】なお、図1では各PUにシミュレーション
プロセスを一個のみ配したが、複数のシミュレーション
プロセスを各PUに割り当てることも可能である。たと
えば、シミュレーションA,Bが交互に実行されるよう
な場合には、一つのシミュレーションプロセスAとデー
タ変換プロセスとの組とシミュレーションプロセスBと
データ変換プロセスとの組を一つのPUに配置すること
でPUの利用効率を上げることができる。PUへのプロ
セスのマッピングのこのような変更は、並列計算機のO
Sのプログラムローディング機能を用いたり、あるいは
利用者自身が簡単なシェルスクリプト(コマンドを列挙
したファイル)を書いたりすることにより容易に実現で
きる。
【0046】(2)全体の処理の流れ 図4に、図1のシステムを使用する場合に利用者の行な
うべき処理の流れを示す。利用者はまず、各シミュレー
ションプログラムのシミュレーション対象領域に基底
(メッシュ)を生成し、それをどのように複数の並列プ
ロセスに分配するか決定する(ステップ3301)。続
いて、利用者は図1のシステムに使用するための複数の
シミュレーションプログラムを生成する。各シミュレー
ションプログラム中には、本来の計算部分以外に、デー
タ変換ライブラリに対するコール文を挿入する。このよ
うにして作成したシミュレーションプログラムをコンパ
イルし、データ変換ライブラリとリンクすることにより
実行形式ファイルを生成する(3302)。次に、どの
プロセッサ上でデータ変換プロセスを起動するかを指定
する起動ファイルを作成し(3303)、起動用プロセ
スを用いてデータ変換プロセスを起動する(330
4)。ステップ3303、3304は、利用者自身が行
なう代わりに、システム管理者などが事前に行なってお
いても良い。最後に、3302にて作成したシミュレー
ションプログラムを起動し、シミュレーションを実行
し、結果を得る(3305)。
【0047】(3)シミュレーションプログラムの構造 シミュレーションプログラムAまたはBはそれを実行す
る全PUにおいて同じプログラムが実行されるように記
述された、いわゆるSPMDタイプで書かれるので、利
用者はシミュレーションプログラムA,Bを作成すれば
よい。利用者は、各プログラム中で、他のプログラムと
のデータの受け渡しが必要となる部分についてデータ変
換ライブラリを関数呼び出しするためのコール文を挿入
する。
【0048】図5に、本実施の形態を利用するために利
用者が記述するシミュレーションプログラムの概略を示
す。以下では、このプログラムがシミュレーションプロ
セスとして実行された時の処理を説明する。まず、シミ
ュレーションプログラムの初めの部分で、データ変換プ
ロセスを初期化するためのコール文を発行する(ステッ
プ711)。次に、予め作成されたシミュレーション基
底(メッシュ)をファイルから読み込む(ステップ71
2)。アプリケーションによっては、基底をファイルか
ら読み込むのではなく、内部で生成することも可能であ
る。次いで、読み込まれた(あるいは生成された)シミ
ュレーション基底をデータ変換プロセスに登録するため
のコール文を挿入する(ステップ701)。登録すべき
シミュレーション基底は、シミュレーションに先立ち、
利用者がプログラム中、あるいはプログラムから読み込
まれるデータ中で決定しておく。
【0049】計算の途中でシミュレーション基底を変化
するようにシミュレーションプログラムが構成されてい
る場合、たとえば、時間的に位置が変わる移動メッシュ
を使用する場合などには、メッシュを変えるごとに、こ
れらのコール文を繰り返し呼ぶようにシミュレーション
プログラムを構成する。このようにシミュレーションプ
ログラムの実行途中でメッシュが切り替わると、そのシ
ミュレーションプログラムの計算欠陥データの送信先が
変わりうるが、本実施の形態では、メッシュの変更の都
度、データ変換プロセスが新たな送信先を決定してくれ
ることになり、シミュレーションプログラム自体はこの
ときにも上記3つのコール分以外に特別のプログラム部
分を有さなくてもよい。
【0050】続いて、シミュレーションの主要部分を記
述する。複合シミュレーションの場合、この部分は通常
繰り返しループ(705)となる。ループの内側で、ま
ず他のシミュレーションプロセスに前回の計算結果(繰
り返し初回の場合は初期値)を送信し(702)、次い
で自プロセスの主要シミュレーション部分を従来の方法
で実行し(703)、その結果を他のシミュレーション
プロセスに送信する(704)。ここで、ステップ70
2、704の送受信はデータ変換ライブラリへのコール
文により行なう。これを解が収束するまで繰り返し、最
終結果を得る。ただし、他のシミュレーションプロセス
が終了する以前に計算を完了するとデッドロックが発生
するので、全シミュレーションプロセス終了まではダミ
ーの送受信を繰り返す(706,707,708)。シ
ミュレーションが終了した時点で、データ変換ライブラ
リを終了する(710)。
【0051】(4)データ変換ライブラリ データ変換ライブラリ607,608は、それが結合さ
れたシミュレーションプロセスとそれに対応するデータ
変換プロセスとの間のデータおよび要求等の中継を行
う。データ変換ライブラリは、データ変換プロセスを、
シミュレーションプロセスから利用可能にするために設
けられている。すなわち、シミュレーションプロセスか
らデータ変換ライブラリ中の関数をコールさせ、データ
変換ライブラリによりその関数に対応したメッセージを
データ変換プロセスに送らせる。同様にその対応するデ
ータ変換プロセスからのメッセージを対応するシミュレ
ーションプロセスにデータ変換ライブラリから通知させ
る。
【0052】以下では、ライブラリの利用者が自プログ
ラムからライブラリの提供する関数をコールするときの
引数、および戻り値を説明する。なお、以下の例ではプ
ログラム言語としてCを想定するが、FORTRANな
ど他の手続き型言語についてもほぼ同様なインターフェ
ースを適用することができる。関数の名称は一例であ
り、利用者が通常使用する名称と重ならない配慮をすれ
ばどのように定めてもよい。関数名の前に付いている型
名は、関数の戻り値の型を表わす。すなわち、void
は戻り値無しを示す。なお引数の前にある、charは
文字型の引数、intは整数型の引数、doubleは
倍精度実数型の引数を示す。*はその変数がポインタ型
であることを示す。
【0053】(a)void dex_initial
ize(char* simname) この関数は、データ変換ライブラリおよびデータ変換プ
ロセスを初期化する。利用者は並列プログラムの最初の
部分でこの関数を1度コールする。2度以上コールした
場合の結果は不定である。 simuname:関数を呼び出したシミュレーション
プログラムの名称を指定する。
【0054】(b)void dex_registe
r_quantum(char* meshtype,
int* meshcount,int* meshn
o,double* meshdata,int* m
eshtopol,int*range) この関数は、データ変換プロセスにシミュレーションの
基底を登録する。基底の登録は1度のみ行なう。登録し
た基底を変更する場合には、後述のdex_unreg
ister_quantumを先にコールし、登録を取
り消しておく必要がある。各引数の意味と与え方は以下
の通りである。
【0055】meshtype:この引数は基底の種類
を示し、「fdm」、「fem」、「particl
e」のいずれかを与える。「fem」は基底が有限要素
法メッシュであることを、「fdm」は差分法メッシュ
であることを、「particle」は粒子であること
を示す。図6(a)に基底が「fem」の場合について
本引数の例を示す。 meshcount:この引数は、基底のサイズに関す
る情報の配列を指定する。配列の第1要素には、基底の
次元である1、2または3のいずれかを代入する。第2
要素には、第1引数が「fdm」である場合には、この
関数の呼び出し元のシミュレーションプロセスが担当す
る格子点の数、「fem」である場合にはこの関数の呼
び出し元のシミュレーションプロセスが担当する節点の
数、「particle」である場合にはこの関数の呼
び出し元のシミュレーションプロセスが担当する粒子数
を入れる。以下では、基底がfdmである場合の格子
点、基底がfemであるの節点、基底が粒子系の場合の
粒子をまとめて簡単に格子点と呼ぶ。第3要素は第1引
数が「fem」である場合にのみ意味を持ち、この関数
の呼び出し元のシミュレーションプロセスが担当する要
素数を入れる。図6(b)は第1引数が「fem」の場
合について本引数の例である。 meshnodes:この引数は、この関数の呼び出し
元のシミュレーションプロセスが担当する格子点の番号
のリストを代入する。図6(c)に本引数の例を示す。
【0056】meshdata:この引数は、基底の座
標を示すデータの配列を指定する。この関数の呼び出し
元のシミュレーションプロセスが担当する格子点のx座
標リスト、y座標リスト、z座標リストを順に代入す
る。基底の次元が1または2である場合はそれぞれy、
z座標およびz座標は必要ない。図6(d)に本引数の
例を示す。 meshtopol:この引数は、第1引数が「fe
m」の場合に、基底全要素のトポロジカルオーダーの配
列を指定する。トポロジカルオーダーとは、有限要素法
の各4辺形または3辺形(3次元では4面体、プリズム
または立方体、1次元では線分)の要素がどの節点より
構成されるかを定義し、各要素につき要素番号、要素を
構成する節点数とそれらの番号のリストとの組よりな
る。図6(e)に第1引数が「fem」の場合について
本引数の例を示す。
【0057】(c)void dex_unregis
ter_quantum( ) この関数は、データ変換プロセスへのシミュレーション
基底の登録を取り消す。以降、必要があれば再度dex
_register_quantumをコールして基底
を登録し直すことができる。
【0058】(d)void dex_send(do
uble* data) この関数は、他のシミュレーションプロセス群の内、自
シミュレーションプロセスが担当する基底と空間的にオ
ーバーラップする基底を担当しているものにデータを送
信する。このデータは、多くの場合シミュレーション結
果データであり、そうでない例は、配列の初期値などで
ある。引数の意味は以下の通りである。 data:この引数は、送信すべきデータの配列を指定
する。データの個数は登録した基底の格子点数(あるい
は節点数、粒子数)と等しくなければならない。この配
列は、登録した格子点すべてについてのデータを格子点
番号順に保持する。なお、シミュレーションプロセス
は、この関数呼び出しでは、このデータを送信すべき他
の一つまたはシミュレーションプログラムに属するシミ
ュレーションプロセスを個別に指定する必要はない。デ
ータ変換プロセスが、送信先のシミュレーションプロセ
スを決定するようになっている。
【0059】(e)void dex_receive
(double* data) この関数は、他のシミュレーションプロセスから送られ
たデータを受信する。本関数はブロッキング動作をし、
必要なデータがすべて到着するまで関数から戻らない。
引数の意味は以下の通りである。 data:この引数は、受信すべきデータを格納する配
列を指定する。受信されるデータの個数は登録した基底
の全格子点数(あるいは節点数、粒子数)と等しいの
で、配列はそれを格納するのに十分な大きさを確保して
おく必要がある。
【0060】次にデータ変換ライブラリ607,608
の実装方法を説明する。このライブラリの主要な働きは
シミュレーションプロセスとデータ変換プロセスとの間
の情報のやりとりを中継することであり、処理の本体の
大部分は、次節以降に説明するデータ変換プロセス中で
行なわれる。シミュレーションプロセスとデータ変換プ
ロセスの間でのメッセージのやりとりは、特定のビット
パターン(プロトコル)を用いて行なう。プロトコルの
実現方法は任意であるが、本実施の形態ではメッセージ
の種類を示す1バイトのヘッダと、それに引き続く不定
長のメッセージ本体、およびメッセージの終了を示す1
バイトのトレーラよりなるものとする。図7(a)に、
本プロトコルの一般形を示す。
【0061】(a)dex_initialize(c
har* simname) この関数は、データ変換プロセスとの接続を確立し、そ
の初期化を行なう。本実施の形態では、プロセス間でデ
ータをやりとりする手段として、ソケット(TCP/I
P)による通信を利用する。接続確立の手順は通常のソ
ケットによる通信に準ずる。すなわち、前述のようにシ
ミュレーションプロセス起動時にはデータ変換プロセス
はすでに立ち上がっている。このデータ変換プロセス
は、予め設定したポート番号にてacceptシステム
コールで接続待ち状態にある。本ライブラリ関数はその
ポート番号に対してconnectシステムコールを発
行しソフトウエア的な通信路の確立を行なう。次いで、
その送信路を用いてデータ変換プロセスを初期化するた
めの要求メッセージを送信する。本メッセージの例を図
7(b)に示す。メッセージは本体がなく、初期化要求
を示すヘッダとトレーラのみである。
【0062】(b)dex_register_qua
ntum(char* meshtype,int*
meshcount,int* meshno,dou
ble* meshdata,int* meshto
pol,int* range) この関数は、シミュレーション基底に関するデータ登録
要求をデータ変換プロセスに通知し、基底データを送信
する。メッセージは、各引数ごとに一つずつ、計5個発
行する。メッセージの例を図7(c)から(g)に示
す。これらは、図6(a)から(e)に示した本ライブ
ラリ関数の引数の各々にヘッダとトレーラを付けた形と
なっている。
【0063】(c)dex_unregister_q
uantum( ) この関数は、シミュレーション基底の登録を解消するメ
ッセージをデータ変換プロセスに送信する。メッセージ
の例を図7(h)に示す。メッセージは、本体がなく、
登録解消要求を示すヘッダとトレーラのみである。
【0064】(d)dex_send(double*
data) この関数は、データ変換プロセスにデータ送信要求メッ
セージを送る。メッセージの例を図7(i)に示す。
【0065】(e)dex_receive(doub
le* data) この関数は、データ変換プロセスにデータ受信要求メッ
セージを送り、データ変換プロセスから送り返されてく
るデータ受信応答メッセージ中に格納されるデータを引
数dataでポイントされる配列に格納する。データ受
信要求メッセージの例を図7(j)に、データ受信応答
メッセージの例を図7(k)に示す。
【0066】(f)dex_exit(char* s
imname) この関数は、データ変換プロセスとの接続を切断する。
メッセージの例を図7(l)に示す。
【0067】(5)データ変換プロセスの起動 データ変換プロセス603または604は、起動時に図
1に示すように並列計算機のそれぞれのPUに配置さ
れ、かつすべてのデータ変換プロセスのペアがソフトウ
エア的に通信路で結ばれた状態になっている必要があ
る。本実施の形態ではこの条件を満たすために、まずデ
ータ変換プロセスの起動用プロセスをいずれかのPU上
に一つ立て、ここから全てのデータ変換プロセスを起動
する。起動用プロセスの立ち上げは利用者がコマンドラ
インから行なうか、並列計算機の起動時にデーモンとし
て自動的に立ち上がるようにしておく。起動用プロセス
は当該並列計算機にシステム管理用の特別なPUが存在
する場合にはそのPU上に、存在しない場合は任意のP
U上に立ち上げる。いずれの場合でも、データ変換プロ
セスを起動すべきPUのアドレスとデータ変換プロセス
実行形式ファイルへのパスとのペアを一覧表にした起動
ファイルを、起動PU上に用意しておく。起動用プロセ
スは、起動されるとこれを読み込んで処理を進める。起
動ファイル12の例を図8に示す。「133.144.
20.21」などはPUのアドレスであり、「/usr
/local/bin/dataexd」などはディス
ク上に格納されたデータ変換プロセス実行形式ファイル
へのパスである。この例では8個のPU上にデータ変換
プロセスを起動することを指示しており、初めの4個と
次の4個とでは実行形式ファイルへのパスが異なってい
る。システムオペレータもしくは利用者が、実行形式フ
ァイルは予め各PUの指定されたパスにコピーしてお
く。
【0068】図9には、起動用プロセス13の処理の流
れを示す。まず、起動ファイルを読み込み、IDを0に
セットする(1301,1302)。このとき、レコー
ドをカウントして全PU数を得る。このIDは各データ
変換プロセスの識別通し番号として使用するものであ
る。続いて、起動ファイル12中の各ペアについて(1
307)、プロセスIDをまずインクリメントし(13
03)、リモートシェルなどによって、そのペア内のプ
ロセッサアドレスを持つPU内の、そのペア内のパス上
にあるデータ変換プロセスを立ち上げる(1304)。
各データ変換プロセスは、立ち上がると起動プロセス1
2用にソケットを生成し、予め定めたポート番号(例え
ば3001)でaccept待ちとなる。起動プロセス
13は、このソケットに対してconnectシステム
コールにより接続を確立する(1305)。その後、こ
の通信路を用いてそのデータ変換プロセスにプロセスI
Dと全PU数を通知し、かつ起動ファイル12内の全P
Uのアドレスを送信する(1306)。この処理の結
果、起動ファイル12により指定された各PU上にデー
タ変換プロセスが立ち上がり、各データ変換プロセスは
システムで一意なプロセスIDとシミュレーションに使
用する全PUのアドレスのコピーを持つことになる。デ
ータ起動プロセスは役目を果たし、終了する。
【0069】次いで、図10を参照して、データ変換プ
ロセス603または604が互いに接続を確立する処理
の流れを説明する。まず、上記起動プロセス12の処理
に対応して、起動プロセス12から情報を受信するため
のソケットを生成し、接続を待つ(1401)。接続が
確立したならば、起動プロセス12から自データ変換プ
ロセスのID、全PU数n、および全PUのアドレスを
受信する(1402)。次いで全PUアドレスの各々に
対して相互接続用のソケットを生成する(1403)。
以降、PUのすべてのペアの間でソケットを用いた通信
路の確立を行なう。通信路は、ペアとなるPUの内、一
方から他方へのみ張れば双方向の通信が可能なので、相
手PUのIDが自IDより小さいものについては接続要
求待ちとし、大きいものについては接続要求を発行する
(1404,1405)。さらに、自PU上のシミュレ
ーションプロセスとの接続に備えるため、そのシミュレ
ーションプロセスとの交信用のソケットを予め定めたポ
ート番号を用いて生成し、そのソケットでaccept
システムコールを発行して接続待ち状態とする(140
6)。以上の処理により各PU上のデータ変換プロセス
603または604が起動され、かつすべてのPU上の
データ変換プロセス間で通信路が確立する。これによ
り、各データ変換プロセス603または604と任意の
シミュレーションプロセス605または606との接続
準備が整ったことになる。
【0070】(6)データ変換プロセスの動作 図11を用いてデータ変換プロセスの処理の流れを説明
する。すでに説明したように、シミュレーションプログ
ラムのdex_initializeライブラリ関数コ
ールにより、データ変換ライブラリは予め設定したポー
ト番号に対してconnectシステムコールを発行す
るので、すでに立ち上がっているデータ変換プロセスの
acceptシステムコールがこれをキャッチして通信
路を確立する。通信路の確立後、各データ変換プロセス
603または604は、対応するシミュレーションプロ
セス605または606から対応するデータ変換ライブ
ラリ607または608を経由して送られる要求メッセ
ージによって起動されるイベントループに入る。以下で
は、このようにシミュレーションプロセスからライブラ
リを経由して送られてくるメッセージを単にシミュレー
ションプロセスから送られてくるメッセージと呼ぶこと
がある。イベントループは無限ループであり(150
1)、通常はメッセージ受信待ち状態にある(150
2)。メッセージを受け取るとその種類に応じた処理に
分岐し(1503)、処理を終了するとまたメッセージ
待ち状態に戻る。図7(a)で示したように、対応する
シミュレーションプロセスからのメッセージの先頭1バ
イトがヘッダとしてその種類を表わすように構成されて
いるので、これを調べることにより分岐を行なうことが
できる。対応するシミュレーションプロセスからの要求
メッセージは6種類あるので、分岐先も6通り(150
4から1509)用意する。
【0071】以下、シミュレーションプロセスから各種
要求メッセージを受けた場合のデータ変換プロセスの処
理について説明する。 (a)初期化処理(1504) 各データ変換プロセスは、対応するシミュレーションプ
ロセスから初期化要求メッセージ1102を受け取る
と、内部のすべてのテーブル(図24に示すテーブル群
2801)をクリアする。また、与えられたシミュレー
ション名称を変数に格納する。 (b)基底登録処理(1505) 基底登録処理は二つの部分よりなる。第1は対応するシ
ミュレーションプロセスより送られる基底情報を格納す
る処理1505Aであり、第2は他のPU上のデータ変
換プロセスと基底情報を付き合わせて空間的に基底がオ
ーバーラップするシミュレーションプロセスを探しだ
し、データ送受信時の交信先を決定する処理1505B
である。まず、基底情報の格納処理1505Aについて
図12を用いて説明する。データ変換プロセスは、対応
するシミュレーションプロセスから1メッセージ読み込
み(1601)、メッセージヘッダが0x02(図7
(c)参照)であることを確認する(1602)。メッ
セージの残りの部分が「fdm」、「fem」、「pa
rticle」のいずれかによってそれぞれの読み込み
処理に分岐する(1603から1605)。図13にf
em読み込み処理1604の詳細を示す。まず、第2の
メッセージより次元数d、節点数mおよび要素数eを得
て、それに基づいてmallocなどのメモリ確保関数
を用いて節点番号格納用の長さmの配列、節点座標格納
用の長さmの配列およびトポロジカルオーダー格納用の
配列を確保する(1703から1705)。後続のメッ
セージを次々と読み込みながら、確保した配列中に上記
データを順次代入していく(1706から1711)。
これによって、各シミュレーションプロセスの持つ基底
情報の必要な部分を対応するデータ変換プロセス中にコ
ピーすることができる。fdm読み込み処理(160
3)、particle読み込み処理(1605)も、
トポロジカルオーダーに関する処理1705、171
0、1711がないことを除けば、図13と同様であ
る。
【0072】次いで、交信先決定処理1505Bについ
て図14を参照して説明する。各データ変換プロセス
は、この交信先決定処理において、自データ変換プロセ
スに対応するシミュレーションプロセスが担当する基底
(以下、簡単化のためにこれをそのデータ変換プロセス
が担当する基底と呼ぶことがある)と、他のすべてのデ
ータ変換プロセスが担当する基底に重なりがあるかを調
べる。図10にてすでに説明したとおり、データ変換プ
ロセス中のi番目のソケットはIDがiのデータ変換プ
ロセスにつながれている(図10、ステップ140
3)。この交信先決定処理においてはこの接続を利用し
て全データ変換プロセス間で、それぞれのデータ変換プ
ロセスが受け持つ基底に関する基底情報を交換し、それ
らの情報を用いて各データ変換プロセスが、それに対応
するシミュレーションプロセスが生成したデータの送信
先のデータ変換プロセスを決定する。
【0073】まず、自データ変換プロセスが担当する基
底に関する情報として、その座標範囲を求める(180
0)。基底の座標範囲とは、基底の格子点、節点あるい
は粒子の各方向座標の最大値と最小値の組のことであ
る。2次元では、基底の担当範囲を囲むバウンディング
ボックスに対応する。この座標範囲は、二つのデータ変
換プロセスの担当基底間のオーバーラップの有無の判定
に用いる。ループ1801は、まずi番目のソケットに
着目し、ソケットにつながった相手データ変換プロセス
に、自プロセスのシミュレーション名称を送信し、相手
プロセスからそのシミュレーション名称を受信する(1
811,1812)。自プロセスと相手プロセスのシミ
ュレーション名称を比較し、これらが異なる場合には以
下の処理を行なう(1813)。ソケットにつながった
相手データ変換プロセスに基底に関する基底情報とし
て、上記基底座標範囲を表わす情報を送信し、相手プロ
セスから送られる同様の基底座標範囲情報を受信する
(1802,1803)。受信した基底座標範囲とステ
ップ1800にて求めた自データ変換プロセスの基底座
標範囲を比較し、オーバーラップの有無を判定し、判定
結果を相手データ変換プロセスに通知する(1804,
1805)。次いで、相手データ変換プロセスの判定結
果を受信する(1806)。
【0074】相手データ変換プロセスからオーバーラッ
プありを通知された場合には、相手データ変換プロセス
に自データ変換プロセスの基底に関する基底情報とし
て、基底を構成する格子点の情報(基底構成格子点情
報)を送信する(1807)。相手データ変換プロセス
にオーバーラップありを通知した場合には、相手データ
変換プロセスが基底構成格子点情報を送り返してくるの
で、これを受け取って、相手データ変換プロセスにつな
がれたソケット番号と共に自データ変換プロセスが実行
しているPU内のメモリに格納する(1808)。ここ
で送受信される基底構成格子点情報は、図6(a)から
(e)で示した情報と同一であり、基底データ読み込み
処理と基底データ格納処理は図13および図12に示し
た処理と同一である。
【0075】以上の処理で、各データ変換プロセスは、
基底間にオーバーラップのある場合、自プロセスと相手
プロセスとの二つの基底に関する基底情報として、それ
らの基底に関する二つの基底構成格子点情報を持つこと
になる。この二つの基底構成格子点情報を用いて、基底
のオーバーラップ状態を詳細に規定するテーブルを生成
する(1809)。この処理1809の詳細については
後述するが、本処理の最終段階でデータ変換プロセス内
に生成されるテーブル群2801を模式的に図24に示
す。対応するシミュレーションプロセスから登録された
そのシミュレーションプロセスが担当する基底の情報
(2802)と、基底のオーバーラップする他のデータ
変換プロセスに1対1に対応するソケット番号100、
基底構成格子点情報120とオーバーラップテーブル2
00の組(2803,2804..)が格納されること
になる。以上の処理を各iについて繰り返し、データ変
換プロセスは、自分が保持する基底とオーバーラップす
る基底を持つ各データ変換プロセスについて、オーバー
ラップ状態を規定するテーブルを保持する。
【0076】次に、オーバーラップテーブルの構成と作
成処理1809の詳細について説明する。図15に示す
ように、自データ変換プロセスに登録された基底の種類
と、相手プロセスから受け取った基底の種類との組み合
わせで、9通りの座標変換処理1905―1913を用
意する。
【0077】まず、fem to fdm変換1906
を図16を用いて説明する。説明のための基底(すなわ
ち差分法、有限要素法におけるメッシュ)として図17
に示したものを用いる。まず、自データ変換プロセスの
分担する差分用基底2002の各格子点が相手データ変
換プロセスの分担する有限要素用基底2001のいずれ
かの要素に含まれるかを調べる。含まれるならば(22
03)、その格子点の番号、その要素を構成する節点の
番号、およびその格子点のその要素内での局所座標をオ
ーバーラップテーブル200(図21)に格納する(2
204,2205,2206)。オーバーラップテーブ
ル200は、図18に示すように、格子点番号210
1、要素構成節点番号2102、格子点の要素内局所座
標2103を組にして列挙したテーブルである。例え
ば、図17において格子点18は節点211,212,
254,253よりなる要素の内部に存在し、その局所
座標は0.5,0.5であるので、この格子点に対し
て、図18のオーバーラップテーブル200の内容は、
その第1列に示すものとなる。なお、格子点の要素内局
所座標2103は以下のように求める。当該要素を構成
する4節点の座標を(ax,ay)、(bx,by)、
(cx,cy)、(dx,dy)とし、格子点の座標を
(nx,ny)とし、局所座標を(gz,et)とする
と、有限要素法の要素内補間関数の定義より以下の方程
式が成り立つ。 ax(1+gz)(1+et)+bx(1+gz)(1−et) +cx(1−gz)(1−et)+dx(1−gz)(1+et)=nx ay(1+gz)(1+et)+by(1+gz)(1−et) +cy(1−gz)(1−et)+dy(1−gz)(1+et)=ny 未知量はgz、etのみなので、本方程式によりその値
を定めることができる。なお、要素が3辺形の場合、あ
るいは1、3次元の場合でも、適当な要素内補間関数を
用いることで同様の処理を行なえる。
【0078】fdm to fem変換処理1908を
図19を用いて説明する。説明用の基底としては、上と
同様に図21示すものを用いる。まず、自データ変換プ
ロセスの分担する有限要素用基底2001の各節点が相
手データ変換プロセスの分担する差分用基底2002を
構成するいずれかの4辺形(以下升目と呼ぶ)に含まれ
るかを調べる。含まれるならば(2403)、その節点
の番号、その升目を構成する格子点の番号、およびその
升目を構成する各格子点からその節点までの距離をオー
バーラップテーブル200(図20)に格納する(24
04,2405,2406)。オーバーラップテーブル
200は、図20に示すように、節点番号2301、升
目構成格子点番号2302、升目構成格子点から節点ま
での距離2303を組にして列挙したテーブルである。
例えば、図17において節点211は格子点5,17,
18,6よりなる升目の内部に存在し、その升目の各格
子点からの距離は1.2,0.8,1.3,1.5であ
るので、図20のオーバーラップテーブル200の第1
列の内容が構成できる。
【0079】particle to fdm変換処理
1907を図21を用いて説明する。なお、説明のため
の基底として図26に示したものを用いる。まず、自デ
ータ変換プロセスの分担する差分用基底2501の各格
子点のコントロールボリュームを定める。このコントロ
ールボリュームはその格子点の勢力範囲のことであり、
その格子点回りの升目の中点を結んで得られる。さら
に、相手データ変換プロセスの分担する粒子がいずれか
の格子点のコントロールボリュームに含まれるかを調
べ、含まれるならば(2703)、その格子点の番号、
その粒子の番号をオーバーラップテーブル200(図2
3)に格納する(2704,2705)。オーバーラッ
プテーブル200は、図23に示すように、その格子点
番号2601と粒子番号のリスト2602を組にして列
挙したテーブルである。例えば、図26において格子点
18のコントロールボリューム2502には粒子45
3,478,485,498,524が含まれるので、
図23のオーバーラップテーブル200の第1列の内容
が構成できる。図15の他の変換処理1905,190
9―1913も処理1906―1908と同じであるの
でそれらの説明を省略する。
【0080】(c)基底登録解除処理1506 各データ変換プロセスは、対応するシミュレーションプ
ロセスから基底登録解除要求メッセージ1108(図7
(h))を受け取ると、基底登録解除処理1506を行
なう。本解除処理では、基底登録処理1505で作成し
た基底情報およびオーバーラップテーブル200をクリ
アする。
【0081】(d)送信処理1507 各データ変換プロセスは、対応するシミュレーションプ
ロセスからの送信要求メッセージ1109(図7
(i))を受信すると、そのメッセージが指定する送信
すべきデータを相手データ変換プロセスへ送信する処理
1507を行なう。本処理1507は、上記基底登録処
理1505にて作成された相手データ変換プロセスに関
する情報(図24中2803,2804)を参照し、そ
こに格納されたソケット番号の各々に対して送信要求メ
ッセージ1109(図7(i))を転送する。なお、本
実施の形態ではデータ基底の変換は相手データ変換プロ
セスで行ない、送信元のデータ変換プロセスは行わな
い。なお、以上において、送受信が同期しない場合でも
ソケット(TCP/IP)の機能で問題は発生しない。
通常のソケット通信の場合と同様に受信が先に出た場合
には、相手データ変換プロセスで送信が発行されるまで
当該データ変換プロセスは送信をブロックする。送信が
先に出た場合には、メッセージはOSにバッファリング
される。
【0082】(e)受信処理1508 各データ変換プロセスは、対応するシミュレーションプ
ロセスからの受信要求メッセージ1110(図7
(j))を受信すると、データを相手データ変換プロセ
スから受信する処理1508を行なう。この処理の流れ
を図25に示す。まず、上記基底登録処理1505にて
作成された相手データ変換プロセスに関する情報(図2
4中2803,2804)を順次参照し(2901)、
そこに格納されたソケット番号100のソケットから送
信されてくるデータを読み込む(2902)。このデー
タは相手の基底上で定義されているので、これを先に作
成したオーバーラップテーブル200を参照して自基底
上のデータに変換する(2903)。変換方法について
は後述する。変換されたデータは、meshnodes
(図6(c)中の1003)を参照して、担当格子点数
分の要素を持つ実数配列に格納する。ループ2901が
終了した時点ではすべての担当格子点に関するデータが
決定しているはずなので、これをメッセージ1111
(図7(k))の形にしてシミュレーションプロセスに
送信する。シミュレーションプロセスは本メッセージを
受け取ることにより受信待ち状態から抜けて次の処理に
進む。
【0083】さて、データ変換処理2903について例
を用いて説明する。データ変換処理2903は、自デー
タ変換プロセスの基底と相手データ変換プロセスの基底
との組み合わせによって、図15に示した9通りのオー
バラップテーブルの作成手順に対応した9通りのデータ
変換処理を用意する。まず、femデータからfdmデ
ータへの変換を図26を参照して説明する。この場合、
ステップ2903で使用するオーバーラップテーブルと
して、図22に示したオーバラップテーブルがすでに交
信先決定処理1505Bによって用意されている。従っ
て、このテーブルを用いて相手プロセスから与えられた
fem基底上のデータをfdm基底に変換すればよい。
すなわち、図26において、オーバーラップテーブル2
00中に登録された各格子点につき(3001)、同テ
ーブルに格納された格子点回りの複数の節点番号を有す
る複数の節点でのデータを受信したデータから選択する
(3002)。次いで、同テーブル中の局所座標を参照
して、これらの節点上のデータを補間して上記格子点上
の値を求める(3003)。補間は、次式による。ただ
し、Vは補間された変数値、V1,V2,V3,V4
は、反時計回りに順次位置する4つの節点での補間前の
変数値である。
【0084】V1(1+gz)(1+et)+V2(1
+gz)(1−et)+V3(1−gz)(1−et)
+V4(1−gz)(1+et)=V fdmデータからfemデータへの変換の場合には、図
24に示すオーバーラップテーブル200を用いればよ
い。図26と同様の処理によりこのテーブルに登録され
た節点番号2301を有する各節点を含む升目を構成す
る4つの格子点上のデータ値を選択し、これらの格子点
から節点までの距離2303の逆数を用いてこれらの4
つのデータ値を加重平均することにより、上記節点上で
のデータ値を求めることができる。particleデ
ータからfdmデータへの変換の場合には、図23のオ
ーバラップテーブル200を用いて変換を行なう。この
テーブルに登録された格子点番号2601の格子点の回
りの粒子2602上でのデータ値を選択し、それらを平
均することにより上記格子点での値を求めることができ
る。このように、各相手プロセスごとに基底登録処理時
に決定したオーバーラップテーブルを用いて、容易に基
底の変換が行なえる。
【0085】(f)終了処理1509 各データ変換プロセスは、対応するシミュレーションプ
ロセスからデータ変換プロセスとの接続を遮断すること
を要求するメッセージ1110(図7(l))を受信す
ると、イベントループ終了フラグを立てて、データ変換
プロセスとの接続を遮断する。
【0086】<実施の形態1の変形例>本発明は、上記
実施の形態に限られず、以下に述べるいろいろの変形例
およびその他の変形例がある。 (1)送信元データ変換プロセスによるデータ変換 上記実施の形態では、データ変換処理を受信側プロセス
に対して設けられたデータ変換プロセスにて行なうとし
て説明したが、データ変換処理を送信側プロセスに対し
て設けられたデータ変換プロセスにて行なうことも可能
である。この場合には、送信側のデータ変換プロセス
は、送信先のデータ変換プロセスから、それが担当する
基底の情報を受信し、送信元のデータを送信先の格子点
のでデータに変換するのに使用するデータオーバラップ
テーブルを作成する。
【0087】(2)送信元での送信すべきデータの選択 上記実施の形態では、送信元のシミュレーションプロセ
スが要求した演算結果データを送信元のデータ変換プロ
セスから送信先のデータ変換プロセスに全て送った。し
かし、送信先のシミュレーションプロセスが実際に使用
するのは、送信先のシミュレーションプロセスのシミュ
レーション領域と送信元のシミュレーションプロセスの
シミュレーション領域の重複する部分に関連するデータ
である。従って、送信元のデータ変換プロセスが、送信
先のデータ変換プロセスのが担当する基底に関する基底
構成格子点情報を受信し、自データ変換プロセスが担当
する基底に関する基底構成格子点情報とに基づいて、相
手のシミュレーションプロセスが使用するデータを受信
すべきデータから選択して送信してもよい。この方法に
依れば、送信するデータの総量が減少するので、データ
変換プロセス間のデータ転送時間が低減される。この場
合、この選択されたデータに対して相手のデータ変換プ
ロセスによりデータ変換を行わせてもよいが、上記変形
例1に記載のように送信元のデータ変換プロセスでデー
タ変換を行い、変換で得られたデータを、送信してもよ
い。
【0088】(3)異なる計算機システムへの適用 上記実施の形態は、図1のように複数のシミュレーショ
ンプログラムのそれぞれが複数のプロセッサで並列に実
行される場合を説明したが、本発明は、他の計算機シス
テムにも適用できる。たとえば、各シミュレーションプ
ログラムをそれぞれ単独のプロセッサで実行される場合
についても、何等変更を加えることなく適用が可能であ
る。たとえば、複数のシミュレーションプログラムを互
いに異なるプロセッサ上で実行する。各シミュレーショ
ンプログラムを少なくとも一つのシミュレーションプロ
セスとして一つのプロセッサ上で実行し、それに対応し
て定めたデータ変換プロセスをそのプロセッサ上で実行
させる。このとき、他のシミュレーションプログラムと
それに対応するデータ変換プロセスの組を他のプロセッ
サ上で実行させる。
【0089】さらに、本発明は、複数のシミュレーショ
ンプログラムが単独のプロセッサで実行される場合につ
いても、何等変更を加えることなく適用が可能である。
この場合にも、一つのシミュレーションプログラムを少
なくとも一つのシミュレーションプロセスとして一つの
プロセッサ上で実行し、これに対応するデータ変換プロ
セスも同じプロセッサ上で実行する。他のシミュレーシ
ョンプログラムも同じプロセッサ上で同じように実行す
る。
【0090】(4)他の領域への適用 上記の実施の形態では、図17や図22に示すように、
複数の基底が空間的にオーバーラップする事例を用いて
説明を行なった。本発明はそれ以外に、複数のシミュレ
ーションがその境界を介して物理量をやりとりする場合
にも全く同様に適用することができる。たとえば、図2
7(a)は、太線で囲まれた凹型の領域3101で生起
する物理現象と、それ以外の領域3102で生起する現
象とを同時に解析する場合の基底の例である。基底は界
面で連続であっても不連続であってもよい。両領域は隣
接しているが、陽なオーバーラップはない。このような
場合でも、凹領域のシミュレーション基底(図27
(b))とそれ以外の部分の基底(図27(c))をそ
れぞれシミュレーションプロセスに割り当てれば、それ
らの間の物理量の交換は両基底のオーバーラップ領域
(この場合には線領域、図27(b),(c)で太線3
103,3104で示す)を介して行なうことが可能と
なる。上記実施の形態で説明したデータ変換ライブラ
リ、データ変換プロセスは、このような問題に対しても
何ら変更なくそのまま適用することができる。
【0091】(5)サブルーチン形式での実行 上記実施の形態では、各シミュレーションプログラム
は、複数のシミュレーションプロセスとして実行され、
それぞれに対応するデータ変換プロセスが実行された。
こうして、各データ変換プロセスはそれが対応するシミ
ュレーションプロセスとは独立のプログラムとして実行
された。この結果、シミュレーションプログラムの実行
は対応するデータ変換プロセスの実行あるいは中断には
直接には影響されないという利点もある。さらに、各デ
ータ変換プロセスが、対応するシミュレーションプロセ
スの基底と他のシミュレーションプロセスの基底に関す
る情報を管理するので、シミュレーションプロセス自体
はこのような情報のための配列を使用しなくてもよいと
いう利点がある。従って、そのような配列をシミュレー
ションプログラムが使用する場合に比べて、シミュレー
ションプロセスはそれを実行する計算機のメモリの容量
の制約を受ける度合いが減るという利点もある。
【0092】しかし、上記実施の形態では、データ変換
プロセス間での多量のデータの通信を要するために、通
信に要する時間が増大し、結局、シミュレーション時間
を増大するという問題を含んでいる。この問題を解決す
るには、データ変換プロセスが実行する処理を実行する
プログラムを、シミュレーションプログラムのサブルー
チンとして実行させることも有効である。すなわち、各
シミュレーションプログラムのサブルーチンとして、上
記データ変換プロセスが行った処理を実行するデータ変
換のためのプログラムを各シミュレーションプログラム
にサブルーチンとして使用する。このときには、先に使
用したデータ変換ライブラリは使用しなくてもよい。こ
のようなサブルーチンを含むシミュレーションプログラ
ムを実行すると、各シミュレーションプログラムのサブ
ルーチンもそのプログラムの一部として実行される。各
シミュレーションプログラムからのサブルーチンコール
でもって、先に実施例におけるデータ送信要求、データ
受信要求その他の要求の代わりにすることができる。さ
らに、異なるシミュレーションプログラムに含まれる複
数のサブルーチン間でデータを交換することにより、先
の実施の形態における、データ変換プロセス間のデータ
交換の代わりとすることができる。この結果、データ交
換の時間が先の実施の形態よりも高速化される。なお、
各サブルーチンが異なるシミュレーションプログラムの
基底の関係等の情報を表わす配列を使用し、それを含む
シミュレーションプログラム自体はこの配列を使用する
必要がないので、上記実施の形態での利点である、シミ
ュレーションプログラムがメモリの容量の制約を受けに
くくすると言う利点はこの変形例でも生きている。
【0093】(6)さらに、発明の実施の形態1の技術
は、シミュレーションプログラムに限らず、通常の計算
機プログラムを複数個相互に連携させてネットワーク接
続された複数の計算機上で実行する場合にも同様にして
適用可能である。たとえば、シミュレーション以外のた
めにデータを扱う二つのプログラム(あるいはプロセ
ス)であって、互いに異なるデータ項目を扱うものに適
用できる。発明の実施の形態1のデータ変換プログラム
(あるいはプロセス)が、これらの二つのプログラム
(あるいはプロセス)の一方が生成したデータに含まれ
る複数のデータ項目から、他方のプログラム(あるいは
プロセス)が要求するデータ項目が選ばれるように、第
1のプログラム(あるいはプロセス)が生成したデータ
を第2のプログラム(あるいはプロセス)のためのデー
タに変換するのに使用できる。これらのプログラム(あ
るいはプロセス)が扱うデータ項目に関する情報をこれ
らのプログラム(あるいはプロセス)から予めデータ変
換プログラム(あるいはプロセス)が受け取っておくこ
とにより、このデータ変換プログラム(あるいはプロセ
ス)は上に述べた選択を行うことができる。
【0094】さらに、発明の実施の形態1で述べた、デ
ータ変換プログラム(あるいはプロセス)による転送先
プログラムの選択も、シミュレーションプログラム以外
の複数のプログラム(あるいはプロセス)に適用でき
る。すなわち、それらのプログラム(あるいはプロセ
ス)が扱うデータに関する情報をデータ変換プログラム
(あるいはプロセス)が予めそれらのプログラム(ある
いはプロセス)から受け取り、これらのプログラム(あ
るいはプロセス)の一つが生成するであろうデータをど
のプログラム(あるいはプロセス)に転送すべきかをこ
れらの情報に基づいて判断できる。従って、その一つの
プログラム(あるいはプロセス)から現にデータが生成
されたときに、データ変換プログラム(あるいはプロセ
ス)は、その生成されたデータを、上記判断に従って選
んだ他のプログラム(あるいはプロセス)に転送するこ
とができる。
【0095】<発明の実施の形態2>従来技術では、大
規模な単一プログラムによる数値シミュレーションや、
シミュレーションのプログラムがお互いに入りこんだ形
で使われる複合(数値)シミュレーションに適し、しか
もネットワーク上で数値シミュレーションのプログラム
やデータのセキュリティを確保する方法はなかった。ま
た、あるプログラムがコンピュータウイルスに感染した
ときにネットワーク全体に広がらないように同じ種類の
プログラムの持つべき免疫システムについても導入はさ
れていなかった。本実施の形態では、ネットワーク上
で、単一あるいは複合的な数値シミュレーションを容易
に達成できる環境を構築するとき、プログラムやデータ
のセキュリティを確保し、かつ一部のデータやプログラ
ムがコンピュータウイルスに感染したときにネットワー
ク全体に広がらないように同じ種類のプログラムの持つ
べき免疫システムを確立するための暗号化方法および免
疫方法を示す。
【0096】具体的には、本実施の形態では、実施の形
態1で使用したデータ変換プロセス603,604にセ
キュウリティプロセスとして働くプログラム部分(以
下、これをセキュリティプロセス部分と呼ぶことがあ
る)を付加し、データ変換ライブラリ607,608に
そのセキュリティプロセスとシミュレーションプロセス
との間のデータおよび要求を中継する機能を有するセキ
ュリティライブラリとして働くプログラム部分(以下、
これをセキュリティライブラリ部分と呼ぶことがある)
を追加したものである。以下では、データ変換プロセス
の内、元のデータ変換プロセスの機能に関する部分はそ
のままデータ変換プロセスあるいはデータ変換プロセス
部分と呼ぶことがある。同様に、データ変換ライブラリ
の内、元のデータ変換ライブラリの機能に関する部分は
そのままデータ変換ライブラリあるいはデータ変換ライ
ブラリ部分と呼ぶことがある。従って、以下でも実施の
形態1で使用した図1他の図面を参照して、本実施の形
態における装置とプログラムの動作を説明する。
【0097】各データ変換プロセス603または604
は、対応するシミュレーションプロセスからのデータ送
信要求を受けたときに、先に述べた送信先のシミュレー
ションプロセスを決定した後に、その送信先のシミュレ
ーションプロセスごとに決められた第1の暗号キーを用
いて、送信すべきデータを暗号化して送信する。送信先
のデータ変換プロセスは、そのデータを受信したとき
に、その暗号化されたデータをその送信先のシミュレー
ションプロセスごとに決められた第2の暗号キーを用い
て解読し、解読後のデータに対して先に述べたデータ変
換を施して、その結果得られるデータを、対応する送信
先のシミュレーションプロセスに転送する。
【0098】暗号化、復号化に関する解説はたとえば、
M.E.ヘルマン、サイエンス(日本語版)p100―
112、1979年10月号、第100頁から第112
頁あるいはこれに対応する、サイエンティフィック・ア
メリカン第241巻、第2号、第130頁から第139
頁にある。あるいはサイエンティフィック・アメリカン
第228巻、第5号、第15頁から第23頁参照。より
詳細な文献として、日経マグロヒル社発行「ネットワー
ク・セキュリティ」がある。たとえば、その第17頁か
ら第27頁参照。(原著書:D.W.Davies a
nd W.L.PriceのSecurity for
Computer Networks(1984、J
ohn Wiley and Sons,Ltd.)。
詳細に入る前に用語の定義をしておく。
【0099】平文データ(プログラム):まだ何も暗号
に関連した操作をしていない原データ(プログラム) 暗号データ(プログラム):平文データ(プログラム)
に暗号をかけたデータ(プログラム) 暗号化:暗号をかけること 復号化:暗号をかけたものをもとに戻すこと キー:暗号化や復号化を行うときに使う鍵 解読/盗聴:キーを受け取ってない第三者が暗号データ
(プログラム)を解読すること 暗号化と同時に、いま実行しようとしているシミュレー
ションプロセスで利用するシミュレーションプログラム
と同じものがネットワーク全体で、どこのサイトに分布
しているかをネットワークにつながれたサーバにアクセ
スしてチェックする。これは関係しているプロセス同士
通信し合っても同じである。
【0100】暗号化には多くの種類があるが、例えば公
開キーと秘密キーにより暗号化を行う場合を以下に述べ
る。公開鍵暗号法では、平文を暗号化するときに使うキ
ーと暗号文を復号化するキーが異なり、暗号化するとき
に使うキーは外部、例えばネットワーク中のサーバへ公
開し、復号化するキーだけを秘密にする方法である。暗
号化専用キーを公開キー(public key)と呼
び、復号化専用キーを秘密キー(secret ke
y)と呼ぶ。公開キーと秘密キーは一つのデータ群から
構成されていて、同じ組み合わせでしか利用できない。
他の組み合わせでは無矛盾性が保証できない。
【0101】最も標準的で、信頼性のある公開鍵暗号法
は、RSA方式と言われるものである。本実施例ではこ
の方法を採用する。RSA方式の原理は二つの大きな素
数の掛け算は単純であるが、そのようにして得た数を反
対に素因数分解するのは極度に難しく現実的には解が得
られないという数学原理を基礎にする。同じRAS方式
でも扱う素数の積を素因数分解するのが難しいことを利
用する以外にもいろいろのものがあるが、それらを使用
することもできる。
【0102】本実施の形態で用いるセキュリテイプロセ
ス部分には2種類ある。一つは、ネットワークで利用し
ようとするハードウエアの使用許可をハードウエアのオ
ペレーティングシステムから得られるようにハードウエ
アの使用可能をつかさどるハードウエアアベイラブルプ
ロセス部分(ハードウエア用プロセス部分)である。こ
のプロセス部分は、使用可能なハードウエアが決まるだ
けで、手に入れようとしたハードウエアでどのようなプ
ログラムを実行するかには関係しない。ネットワークの
進歩とともに、あるサーバ自身からはあるプログラムA
の入出力を伴う利用はできないが、別のプログラムBを
介してなら利用可能であるという状況は起こりうる。言
い換えれば、あるハードウエアではプログラムAの計算
実行だけは許すがそのままでプログラムAの入出力まで
はできないことがありうる。このような場合にはいくつ
かのプログラムの結合に関しては、ハードウエアには依
存しない別個の認証システムが必要になる。そこで本実
施の形態では、ハードウエアの使用可能をつかさどるハ
ードウエアアベイラブルプロセス部分の他に、プログラ
ムアベイラブルプロセス部分(ソフトウエア用プロセス
部分)を用意する。本実施の形態では従来のハードウエ
アに対する認証だけでなくソフトウエア同士の認証もあ
わせて行える点に特徴がある。
【0103】ハードウエアアベイラブルプロセス部分で
は、利用者によるシミュレーションプログラムを実行す
る前処理プログラムのなかで、自分が利用しようとする
ネットワーク上での計算機から利用権限を得る。あるい
は、別に走らせているより一般的なプロセス(例えばデ
ーモンとして)のなかですでに利用を可能とする権限を
得ている。このプロセス部分は、計算だけかあるいは自
由に入出力ができるか、など利用形態をテーブルに持
つ。すなわち、公開キーKHA+としてプログラムAで
使うハードウエア群のID群が含まれたものを持ち、秘
密キーKHA−として、同じくプログラムAで使うハー
ドウエア群の認証を得るためのパスワード群の暗号化さ
れてあるものが入っているものを持つ。ここでは公開キ
ーKHA+や秘密キーKHA−は複数のノードプロセッ
サP1,P2,P3,,,に対する認証キー(KHA1
+,KHA2+,KHA3+,,,)および(KHA1
−,KHA2−,KHA3−,,,)を含んでいる。プ
ロセスAが特定のノードプロセッサPnを利用しようと
するときは使いたい旨の信号を暗号なしで(あるいはP
nの用意した公開キーを用いて)Pnに送る。Pnは自
分の持つ秘密キーでプロセスAからの信号を復号化し、
了承の旨の信号をプロセスAの公開キーKHAn+で暗
号化してプロセスAに送る。プロセスAではPnから送
られてきた暗号に秘密キーを適用して復号化する。Pn
を使える権限の確認がこれでできる。プロセスAが使用
したいすべてのノードプロセッサに対してこの操作をお
こない、すべてのノードプロセッサから認証を受けては
じめてこれらのプロセッサを使用する権限を得る。ここ
では、ハードウエアアベイラブルプロセス部分での利用
確認の認証にも、RSA方式を用いたが、一般には、商
用に使われることの多いDES(Data Encry
ption Standard)によって認証を得るこ
とが多い。
【0104】セキュリテイプロセス部分で、ハードウエ
アアベイラブルプロセスで計算を実行できるレベルの認
証と、以下に述べるプログラムアベイラブルプロセス部
分で他のプログラムを利用できる認証の両データがとも
に利用可能なときのみ以下のプロセスが実行され、プロ
グラムAとプログラムBによるシミュレーションが可能
になる。このためには、プロセスAは、プロセスBを使
いたい旨の信号を、プロセスBの公開キーKSB+で暗
号化してプロセスBに送る。プロセスBではプロセスA
から送られてきた暗号に自分の秘密キーKSB−を適用
して復号化する。プロセスBはプロセスAに使用権限を
与えないときには連絡しない。プロセスAに使用権限を
与える場合には、権限を与える旨の信号をプロセスAの
公開キーKSA+を用いて暗号化してプロセスAに送
る。プロセスAではプロセスAの秘密キーKSA−を用
いて、プロセスBからの暗号を復号化する。これでプロ
セスBを使える権限の確認ができる。プロセスBもプロ
セスAを使いたいときには同じように権限を得る。
【0105】プログラムアベイラブルプロセス部分で
は、次のデータ構造を持つ。すなわち、プログラムAの
プログラムアベイラブルプロセス部分では、自分が結合
するプログラム(例えばBのプログラム)の公開暗号キ
ーをデータとして持ち、そのほかにネットワークに存在
する自分自身のコピーのいくつか(あるいは全て)(こ
こではプログラムの分身群と呼ぶ)の公開暗号キーをデ
ータとして持つ。これらキーのデータはプロセス自身が
持って必要なときにのみ通信しあうか、あるいは、信頼
の置けるサイトのサーバにデータベースとして保存して
おく。一方、暗号化されたデータを復号化する復号化キ
ー(秘密キー(secret key))も同様にサー
バにデータベースとして保存しておいてもよいが、ある
プロセスのなかにデータとして持たせる。ただし、特定
のデータサーバを用意して公開キーのデータを蓄えるか
あるいは必要なときに各プロセス同士で連絡しあい公開
キーを、通信しあうかはユーザが選択できるようにす
る。
【0106】シミュレーションで送受信されるデータは
一般に膨大であり、他プロセスからくるシミュレーショ
ンの実行に必要なデータは圧縮されている。元のデータ
を圧縮し、圧縮されたデータの一部について暗号化す
る。別なデータを圧縮した後では別のやり方で暗号化す
る部分を決定する。そのうちシミュレーションで送受信
されるデータは膨大であるので圧縮したデータ全てにつ
いて、暗号化すると演算時間がむだであるので、図28
および図29に示す画面を使用してユーザの指示により
圧縮したデータ全体を暗号化するかあるいはその一部に
ついてのみ圧縮するか暗号化のタイミングを選択する。
また、このようなデータをシステムがデフォルト値で持
ち、暗号化および免疫方法をシステムが乱数を発生させ
て、乱数と方式タイミングを簡単な関数関係において、
使用する方式、および利用するタイミングを自動的にコ
ントロールするかは選択できる。
【0107】図28の1330は暗号化の設定の仕方を
画面で示す時のインターフェースの例である。また、図
29の1440はデータの属性の決定や暗号化の範囲の
設定の仕方を示す画面でのインターフェース例である。
図28では、公開キー、秘密キー、キー更新のタイミン
グを、ユーザが画像で指定する例を示す。図28ではユ
ーザが選択肢の内で斜線部分をマウスで選択したことを
表わす。同様に、図29では、あるプロセスでのデータ
の属性1444および暗号化の範囲1446をユーザが
指定する例を示す。
【0108】秘密キーにだれかが触ろうとしたり、セキ
ュリテイプロセス部分あるいは、プログラムアベイラブ
ルプロセス部分をコピーしようとしたときには、起動し
ているプロセス(デーモン)は自動的に消滅する。この
ときユーザにウオーニング(警告)を送り、それと同時
にネットワークに存在する自分自身と同じプログラムの
コピーのいくつか(プログラムの分身群)同士で通信し
て、分身群データを参照してプログラムAの新しいプロ
セスが起動されないようにロックする。ロックの解除は
特定のスーパーバイザのみが可能とする。より具体的に
は、ウイルスや盗聴者が狙いやすいようファイルの読み
込み、書き込み、転写、ダミー暗号プロセスの発行等、
計算機のオペレーティングシステムと頻繁に情報をやり
とりをしているが、実は何の役にも立っていないダミー
のプログラムを各セキュリテイプロセス部分につけ、そ
のプログラムに監視プロセスを並行して走らせる。監視
プロセスの変化の有無によって、ウイルス感染あるいは
盗聴者の有無を調べる。感染あるいは盗聴が確認できた
らセキュリテイプロセス部分のなかに情報として蓄えら
れているハードウエアアベイラブルプロセス部分の情報
およびプログラムの分身群のデータから相互に連絡しあ
う。
【0109】セキュリテイプロセス部分が故意あるいは
偶発的にコピーされたかどうかを検証する処理の実施例
について述べる。セキュリテイプロセス部分は自己の属
するプロセスに対して、認証なしでプログラムに使用権
限、データ送信あるいはデータ受信要求をしてくるプロ
グラムには応答しない。これにより、侵入プログラムや
偶発的なコピーは防げる。あるプログラム(例えばA)
のプロセスに対し、データ転送要求は出してくるが、自
分からデータを送信してこないプロセスXに対しては、
セキュリテイプロセス部分が監視し、設定してある頻度
を越えた場合には、セキュリテイプロセス部分は検疫を
以下の手順で行う。この検疫のために各々のプロセスは
他のプロセスとのやりとりをデータベースあるいは自己
プロセス部分に記録する。データベースあるいは自己の
記録に対して順次統計解析を行い、有為にデータのやり
とりが異常であるプロセス部分を見つける。異常である
可能性のあるプロセスXに対し、本来のデータ転送以外
に、プロセスAはわざとデータをプロセスXに送り、そ
のデータに対する簡単な数学的操作をプロセスXに要求
し、変換したデータを他のプロセス全て(例えばCと
D)に送るよう要求する。プロセスXがデータを送れな
ければ、CとDから認証をもらっていないので侵入者と
判断し、CとDのプロセスはプロセスXから送られてき
たデータをプロセスAに送り返し、その内容をAがチェ
ックし、内容があっていれば侵入者ではないと判断す
る。以下、この操作処理を繰り返す。
【0110】以下、本実施の形態の詳細を、実施の形態
1と異なる点にみについて説明する。本実施の形態で使
用するシミュレーションプログラムは、図5と以下の点
で異なる。ステップ701で使用するコール文により、
ユーザが入力したデータおよび公開キーや分身プロセス
の公開キーデータもデータ変換ライブラリに登録する。
データ変換ライブラリに含まれる関数呼び出しとその引
数に関しては、本実施の形態は以下の点でのみ実施の形
態1と異なる。
【0111】関数void dex_register
_quantum( )により、セキュリテイプロセス
部分にいろいろのセキュリテイデータを画面を使用して
入力する。前述の図28ではセキュリテイプロセス部分
の秘密キーと公開キーの保存場所(1332,133
4)、およびキー更新1336のタイミング1338を
ユーザに選択させる。図29では暗号化の範囲1446
として、セキュリテイプロセスの秘密キーと公開キーに
よる暗号化と復号化をデータの何%に対して、どれだけ
の頻度で行うかをユーザに指定させる。入力がない無指
定の場合には、シミュレーションデータの転送量の、た
とえば0.01%に対して暗号化と復号化を行う。また
頻度は乱数の発生によりシステムによってランダムに行
われる。また特定のサイトとのみ暗号化復号化を行いた
いときには以下で述べるデータ変換プロセスの後で、特
定サイトを関数void dex_register_
quantum(num,ids)で指定する。この関
数は、暗号化、復号化を行いたいときのノードプロセッ
サおよびサイトを限定する。ここでnumは特定したい
ノードプロセッサの数。idsはそのID番号である。
なお、データ変換ライブラリとデータ変換プロセスの間
のメッセージは、実施の形態1のものと同じものが使用
される。データ変換プロセスの起動も実施の形態1と同
じである。データ変換プロセスが互いに接続を確立する
処理の流れも図10と同じである。ただし、処理140
1から1405によるデータ接続においても先に説明し
たRSA方式によるハードウエアアベイラブルプロセス
部分の処理が完了する。
【0112】また、ステップ1402におけるデータ受
信時には、受信すべきデータは、自データ変換プロセス
の公開キーで暗号化されたものを受信し、自データ変換
プロセスが持っている秘密キーを用いて復号化する。そ
の後データのやりとりを行う場合には同様にRSA方式
で、暗号化および復号化を行う。ステップ1404,1
405により、図28および図29のデータに基づき、
暗号化のタイミングや手続きに必要なデータを格納す
る。データ変換プロセス間の通信路が確立された後は、
実施の形態1と同様にして図11に従ってデータ転送が
行われる。
【0113】本実施の形態でのデータ転送では、送信側
のデータ変換プロセスがデータを暗号化して転送し、受
信側のデータ転送プロセスがそれを複合化する点で実施
の形態1と異なる。すなわち、送信すべき相手のハード
ウエア(ノードプロセッサ)とソフトウエアに対して、
送るべきデータあるいはすでに圧縮されたデータの全部
または一部に対して、相手の公開キーを用いて情報を暗
号化する。送信側は、暗号化した情報とそうでない情報
を区別するインデックスもつける。ソフトウエアが同一
のときは単に送信すべき相手のハードウエア(ノードプ
ロセッサ)を考慮して暗号化すればよい。一方、図11
のステップ1508では、受信側のデータ変換プロセス
が、受け取るべきデータあるいはすでに圧縮されたデー
タの全部または一部に対して、図28および図29でユ
ーザが定義した、暗号化するデータの範囲の入力データ
に従って、暗号化しない情報と、暗号化した情報を区別
し、インデックスをつける。インデックス情報も暗号化
して他プロセスに送る。さらに、ここで、自分の秘密キ
ーを用いて相手から送られてきた暗号化情報を復号化す
る。ソフトウエアが同一のときは単に受信すべき相手の
ハードウエア(ノードプロセッサ)を考慮して復号化す
ればよい。
【0114】なお、実施の形態2では、セキュリティプ
ロセス部分がデータ変換プロセスの一部に含まれたが、
データ変換プロセスとは別にセキュリティプロセスを実
行してもよい。その場合には、データ変換プロセスとセ
キュリティプロセスとはソフトウエア的な通信路で接続
し、相互に通信しながらデータ転送を実行させる。ま
た、以上に述べた処理の内、セキュリティプロセス部分
に関する処理をセキュリティプロセスに対して実行すれ
ばよい。
【0115】本実施の形態によれば、ネットワーク上で
のプログラムのセキュリティが保たれ、利用形態が単純
化されつつしかも利用権限を明確にできるので、ネット
ワークを使ったプログラム実行が容易になり、不正使用
を防げるため、不正使用による経済的ダメージを減らす
ことができる。
【0116】<発明の実施の形態3>本実施の形態は、
それぞれが異なるリソース量を持つ複数の計算機によっ
て構成されるシステムにおいて、協調動作する複数の要
素プログラム(例えば、シミュレーションプログラム)
からなる複合プログラムを実行する際、実行効率が向上
するよう各要素プログラムを計算機に割り当てるのに適
したプログラムローディング方法を提供する。すなわ
ち、本実施の形態では、複数台のプロセッサユニット
(PU)なる計算機システムを構成する複数のPUの各
について、CPU能力、ディスクI/O能力そしてメイ
ンメモリ量と言った計算機リソースおよび投入する要素
プログラムの負荷の大きさ、ファイルI/O量そしてメ
モリ消費量と言ったプログラムの必要とするリソース消
費量を事前に登録もしくは、自動で取得し、プログラム
投入時にその時点での各PUの利用状況と上記リソース
消費量を基に要素プログラムを割り当てるPUを選択す
る。各PUの利用状況の取得は、リソース消費状況を監
視するデーモンプロセスを登録されたPUで走らせてお
きこのデーモンプロセスに問い合わせることにより行
う。また、投入するプログラムのリソース消費量が不明
の場合、リソース消費情報を次回以降で使用できるよう
プロファイリングする。プロファイリングは、上記リソ
ース監視デーモンプロセスにプログラムのリソース消費
量の取得を依頼することにより行う。以下、本実施の形
態の詳細を説明する。
【0117】図30において、計算機リソースデータベ
ース101に保持された、計算機群が持っているリソー
スの量、プログラムリソースデータベース102に保持
された各要素プログラムのリソース消費量およびプログ
ラム投入時における計算機の利用状況(グラフ103で
示す)から投入する複合プログラムを効率良く実行でき
るよう各要素プログラムを計算機に割り当てる。ここ
で、計算機の利用状況の取得は、いずれかの計算機に常
駐するリソース監視デーモン104により行う(10
5)。リソース監視デーモンでは、OSのシステムコー
ルを利用して、計算機の利用状況を取得・保持する。ま
た、リソース監視デーモンは、上記複合プログラムの実
行状況を監視し、プログラムリソースデータベースの自
動登録も行う(105)。
【0118】図31において、投入する複合プログラム
について各要素プログラムの実行形式へのパスを記述し
たファイルおよび使用する計算機を特定するIPアドレ
ス(または、ホスト名)を記述したファイルが利用者側
で用意されてローダープログラム(以下、ローダーシス
テム)に渡される(ブロック201)。ローダーシステ
ムは、ファイルに記述された計算機群についてそれぞれ
現在使用可能かどうかを調べて使用可能な計算機を抽出
する(202)。ここで、使用可能な計算機とは、利用
者がプログラム投入のコマンドを入力してホストとなっ
ている計算機から物理的かつ論理的に繋がっている計算
機である。使用不可能な計算機とは、ホストとなる計算
機と当該計算機との間に有効な経路がない計算機であ
る。使用不可能になる具体的な場合としては、計算機が
ネットワークに接続されていない場合、計算機がネット
ワークコプロセッサ(ネットワークを流れるデータの宛
先の確認や転送を専門に行うプロセッサユニット)を持
っているときはそのコプロセッサが故障している場合、
計算機が停止している場合、計算機とのネットワークが
一部損傷している場合などがある。
【0119】次に、各要素プログラムのリソース消費量
を取得する。リソース消費量は、負荷の大きさ、メモリ
消費量、平均ファイルI/O量(以下、ファイルI/O
量とする)、平均要素プログラム間通信量(以下、通信
量とする)である。具体的には、負荷の大きさは、プロ
グラム中に現れる四則演算の総数である。三角関数や平
方根などの算術関数等は、四則演算数に換算する。メモ
リ消費量は、プログラムが消費するメモリ量である。こ
れは、プログラムのコード、スタックやデータの総量に
相当するが、データが大部分を占めるので、簡単化のた
めにメモリ消費量には、プログラムが処理するデータの
量を用いる。平均ファイルI/O量は、プログラム中に
現れるファイル入出力すなわちディスク入出力の一回当
たり平均量である。平均通信量は、要素プログラム間の
メッセージ交換のデータ入出力の一回当たりの平均量で
ある。これらのリソース消費量の情報は全てプログラム
リソースデータベース102に登録されており、このデ
ータベース102から取得する。ここで、新規のプログ
ラムの場合、リソース消費量の情報はプログラムリソー
スデータベース102に登録されていない。このような
場合は、上記複合プログラムを構成する要素プログラム
にリソース消費量の情報が登録されているものがあれ
ば、その情報を基に適当な値を設定する。上記複合プロ
グラムを構成する要素プログラムにリソース情報が登録
されているものがない場合は、プログラムリソースデー
タベース102中の他の要素プログラムのリソース消費
量の情報を基に適当な値を設定する。これは、例えば、
登録されている要素プログラムの平均値を設定する。
【0120】リソース消費量の情報がなにも登録されて
いない場合は、均一のリソース消費量と仮定する。さら
に、このようにリソース消費量の情報がプログラムリソ
ースデータベース102に登録されていない場合は、上
記複合プログラムの実行中にリソース情報の自動取得機
構により上記リソース消費量を採取し、プログラムリソ
ースデータベース102に反映させる。このリソース消
費量の自動取得機構については、後で説明する。また、
これらのリソース消費量の情報は、利用者が定義するこ
とも可能である。この場合、リソース消費量の情報とし
て、データベース102の情報と利用者の情報のどちら
かを優先させたり、両者の情報を重み付け加算して利用
することも出来る。ここでは、利用者のリソース消費量
の情報を優先的に用いるものとする。さらに、リソース
消費量が不明の場合、利用者に対話的に問い合わせるこ
とにより、実行時ではなく、実行前に取得する方法も考
えられる(203)。
【0121】次に、各計算機のリソース量を得る。リソ
ース量は、CPU能力、メインメモリ量、ディスクI/
O能力そしてネットワークI/O能力である。具体的に
は、CPU能力は、プロセッサの演算能力で、単位時間
当たりに実行可能な演算量である。ここで挙げているシ
ミュレーションプログラムでは、浮動小数点計算が主で
あるので、ここでは、flops(1秒間当たりの浮動
小数点演算数)を用いる。メインメモリ量は、プロセッ
サの持つメインメモリ量である。ディスクI/O能力
は、そのプロセッサでプログラムがディスクI/Oを行
う際の、データ転送レートである。このデータとして
は、ディスクI/O性能がピーク時の値を用いる。ネッ
トワークI/O能力は、プロセッサ間を結合するネット
ワークのデータ転送レートである。このデータとして
は、ネットワーク転送レート性能がピーク時の値を用い
る。これらのリソース量の情報は、全て計算機リソース
データベース101に保持されており、このデータベー
ス101から参照される。新規の計算機のように、リソ
ース量の情報が登録されていない場合、他の計算機でリ
ソース量情報が登録されているものがあれば、その情報
を基に適当な値を設定する。これは、例えば、登録され
ている計算機の平均値を設定する。他の計算機のリソー
ス情報が登録されていない場合、均一のリソース量を持
つ計算機と仮定する。また、これらのリソース量情報
は、利用者が定義することも可能である。この場合、リ
ソース量情報は、リソースデータベース101の情報と
利用者の情報のどちらを優先するか、もしくは両者の情
報を個々に重みを持たせて反映させることも可能であ
る。ここでは、利用者の情報を優先的に用いるものとす
る(204)。
【0122】次に、各計算機について現在の利用状況
を、リソース監視デーモンから得る。利用状況として
は、CPU、メモリ、ディスクI/Oそしてネットワー
クI/O等の計算機リソースの利用状況である(20
5)。具体的には、CPU利用率、メインメモリの空メ
モリ量、平均ディスクI/O量、平均ネットワークI/
O量である。ここで、平均ディスクI/O量とは、1秒
当たりのディスクI/O量で、平均ネットワークI/O
量は、1秒当たりのネットワークI/O量である。最後
に、上記リソース情報を基に上記複合プログラムを計算
機に割り当て、実際に複合プログラムをローディング、
実行する(206)。
【0123】以下、計算機リソースデータベース101
およびプログラムリソースデータベース102の構成、
リソース監視デーモン、プログラム割り当ての詳細、リ
ソース情報の自動取得機構について詳細に説明する。ま
ず、これらリソースデータベース(101、102)の
構成とリソース監視デーモンを説明する。図32(a)
(b)は計算機リソースデータベース101の構成を示
す。本データベースは、リソース情報取得機構が取得し
たリソース情報および利用者がファイルにより指定した
リソース情報を保持してプログラム投入時にプログラム
割り当てのために参照される。図32(a)は、PUの
リソース量を示したもので、テーブルの左から順に、P
U番号301、CPU能力302、メインメモリ量30
3、ディスクI/O能力304およびネットワークI/
O能力305を示している。図32(b)は、PU間の
ネットワークリソースのリソース量を示したもので、左
から順にネットワークトポロジ311、PUの並び31
2およびネットワークバンド幅313である。図32
(c)は、プログラムリソースデータベース102の構
成を示したもので、要素プログラムごとに、テーブルの
左から順に、要素プログラムの位置321、負荷の大き
さ322、メモリ消費量323、ファイルI/O量32
4および通信量325からなることを示している。これ
らの図および後に説明する図において、Mはmega
(10の6乗)を表わす。
【0124】リソース監視デーモンは、大別して2個の
機能を持つ。第1には、PUの計算機リソース利用状況
(図30のグラフ103で示す)を定期的に取得する機
能である。この情報は、ホストとなるコンソール計算機
を通じて与えられ、プログラムをローディング、実行す
る際に、その時点でのPUの計算機リソースの利用状況
の情報としてローダープログラム106に通知される。
第二には、特定のプログラムが消費するリソース量を取
得する機能である。これにより、任意のプログラムが要
求するリソース量の取得を行ない、プログラムリソース
データベース102へ登録を行なう105。また、上記
リソース情報の取得は、OSに用意されているシステム
コールを利用し、OSから取得する。本リソース監視デ
ーモンは、予め利用者が登録した利用可能な計算機群
(201により取得)についてそれぞれ起動しておく。
この起動は、シェルスクリプト等を用いて行なう。
【0125】次に、計算機リソース利用状況を定期的に
取得する機能について説明する。本機能が取得する計算
機リソース情報は、CPU利用率、空きメモリ量、平均
ディスクI/O量そして平均ネットワークI/O量であ
る。これらの情報は、定期的に取得され第30図のプロ
グラムリソースデータベース102に保存される。図3
3に本データベースの構成を示す。ここでは、OSから
リソース情報を取得する時間間隔を100秒とした。4
01―403はCPU利用率を、411―413は空き
メモリ量を、421―423は平均ディスクI/O量
を、431―433は平均ネットワークI/O量を、そ
れぞれ示している。また、各量における3個の構成要素
401―431、402―432および403―433
は、それぞれ、現在のリソース利用状況、5分前のリソ
ース状況および10分前のリソース状況を示している。
ただし、リソース情報取得の時間間隔やテーブルに保持
する時間間隔の設定は任意である。
【0126】次に、特定のプログラムが消費する計算機
リソース量を取得する機能について説明する。本機能が
取得するリソースは、CPU負荷、メモリ消費量、ファ
イルI/O量そして通信量である。本機能は、プログラ
ムについてのリソース消費量情報が利用者によって設定
されていない場合に実行される。また、プログラムの実
行時間を事前に知ることは出来ないので、リソース量採
取の時間間隔は、プログラム投入の初期では細かくし、
プログラムの実行が進むにつれて次第に荒くしていく方
法をとる。
【0127】以下、第30図の2個のリソースデータベ
ース101および102に全てのリソース情報が登録さ
れている場合を想定してプログラムの割り当て手順を詳
細に説明する。本実施の形態で用いる一台の並列計算機
の構成は、図30に示すように、9個のPU501―5
09からなる分散メモリ型で、それぞれのPUは、メッ
シュ状のネットワーク513により相互結合されてい
る。なお、本図ではメッシュ状に9個のPUが相互結合
されている並列計算機を用いているが、本実施の態様に
関してはネットワークトポロジ、PUの個数とも任意で
ある。また、PU507を介してローダープログラムを
有するコンソールマシンが接続されている。PU507
―509にはそれぞれディスク装置510―512が接
続されているものとする。この場合、PU507―50
9以外のPUは、PU507―509を経由して行うた
め、ディスクI/O性能は、PU507―509よりも
劣ることになる。この計算機上で実行させる複合プログ
ラムの例として複合シミュレーションを用いる。これ
は、実施の形態1でも説明したように、2種類のシミュ
レーションプロセスA,Bが結果を交換しながら動作す
る複合プログラムである。
【0128】本実施の形態では、各PUが使用可能であ
り、かつ、PUのリソース量および各要素プログラムの
リソース消費量はすでに登録されているものとする。従
って、以下では、図の30のブロック205および20
6に相当する処理について詳細に説明する。リソース情
報を図34に示す。図34(a)および(b)は図30
の並列計算機の各PUのリソース量を示し、図34
(c)は各要素プログラムのリソース消費量をそれぞれ
示したものである。具体的には、図34(a)は、各P
U601についてCPU能力602、メモリ量603、
ディスクI/O能力604、ネットワークI/O能力6
05を示し、同図(b)はPU間のネットワークについ
て、ネットワークの構成611およびバンド幅612を
示したものである。本例では、PU501―509は互
いにメッシュ状に結合されており、そのネットワークの
バンド幅は、50Mbit/secであることを示して
いる。図34(c)は、各要素プログラムについて、実
行形式ファイルの位置621、負荷の大きさ622、メ
モリ消費量623、ファイルI/O量624、通信量6
25そして生成するプロセスの数626を示している。
また、シミュレーションプログラムA,Bをそれぞれs
imA,simBとしている。本例では、simAプロ
グラムを二つのプロセスとして、simBプログラムを
4つのプロセスとして実行するよう指定している。
【0129】図35に割り当ての手順206(図31)
の詳細を示す。まず、登録された各PUのリソース利用
状況を取得する(ブロック701)。リソースの具体的
な項目としては、前述した、CPU利用率、空きメモリ
量、平均ディスクI/O量そして平均ネットワークI/
O量である。これらのリソース量の取得は、前述したリ
ソース監視デーモンに問い合わせることにより行う。取
得されたリソース利用状況を図36に示す。図36は、
各PU801について、取得したCPU利用率802、
空きメモリ量803、平均ディスクI/O量804そし
て平均ネットワークI/O量805を示している。
【0130】次に、PUのリソース量と上記で取得した
現在のリソースの利用状況から、プログラム投入時にお
ける各PUリソース量を算出する(702)。図37に
算出結果を示す。図37は、プログラム投入時の各PU
901について、プログラム投入時におけるCPU余力
902、空メモリ率903、ディスクI/O未利用率9
04、ネットワークI/O未利用率905を示してい
る。これらの具体的な算出方法は、それぞれ以下の通り
である。 CPU余力902=CPU能力602×(1−CPU利
用率802) 空メモリ率903=空きメモリ量803÷メインメモリ
量603 ディスクI/O未利用率904=1−(平均ディスクI
/O量805÷ディスクI/O能力604) ネットワークI/O未利用率905=1−(平均ネット
ワークI/O量805÷ネットワークI/O能力60
5) 次に、要素プログラムの割り当て優先度を計算する(7
03)。割り当てるべき複数の要素プログラムを、それ
ぞれに対して決定された割り当て優先度の大きなものか
ら順に一つづつPUに割り当てる(704)。最後に、
この割り当てたPUにその要素プログラムをローディン
グする。これは、遠隔実行コマンド(rsh)等を用い
て行う。
【0131】要素プログラムの割り当て優先度は、要素
プログラムの実行時間が長くなるほどそのプログラムの
優先度が高くなるように決定する。一般にプログラムの
実行時間は、そのプログラムのリソース消費量の総量が
大きいほど長くなる。従って、本実施の形態では、各要
素プログラムの使用するリソース消費量の総量が大きい
ほど、そのプログラムの優先度を高くするように、各要
素プログラムのリソース消費量に基づいて、その要素プ
ログラムの割り当て優先度を決める。各要素プログラム
をPUに割り当てるときにこの要素プログラムが複数種
類のリソースの内、どの種類のリソースを一番多く必要
としているかを判別し、その種類のリソースの余力をよ
り多く持つPUへその要素プログラムを割り当てる。
【0132】具体的には、割り当て優先度は以下のよう
にして決定される。図38を参照するに、初期化処理と
して、割り当てキューのエントリを、生成するプロセス
数分だけ確保する(1001)。割り当てキューには、
割り当てが行われる要素プログラムが登録され、優先的
に割り当てを行うプログラム順にキューイングされる。
割り当てキューの構成については後述する。また、10
02〜1004の優先順位決定の際に参照されるリソー
ス間の重み付けを行う値を各々設定する。この値は、予
め、計算機管理者もしくは利用者によって設定される。
本例では、リソース間の重みは、それぞれ、1、1.
7、10および5を設定する。次に各要素プログラムご
とにプログラムの割り当ての優先順位の計算を行う(1
002〜1004)。要素プログラムの割り当て優先順
位は、評価関数により各要素プログラムのリソース消費
量の総量(総合実効リソース消費量)を評価し、評価さ
れた総合実効リソース消費量が最も大きい要素プログラ
ムの割り当て優先順位を最も高くする(1005)。
【0133】本実施の形態では、各要素プログラムが使
用する複数種類のリソースのそれぞれの消費量、すなわ
ち、CPU負荷の大きさcpu、メモリ消費量mem、
平均ファイルI/O量io、および平均要素プログラム
間通信量netをそれぞれ重みw―cpu、w―me
m、w―ioおよびw―netをつけて加算したものを
総合実効リソース消費量の一例とする。重みw―cp
u、w―mem、w―ioおよびw―netは、異なる
リソース間でのリソース要求の大小を比較するために導
入したパラメータである。このパラメータは、計算機の
管理者が用意された並列プログラムのベンチマークをプ
ロファイリングを取りながら実行し、その結果により、
調整する。具体的には、メッセージ交換のための待ち時
間が多いと言った場合には、通信に対する要求が相対的
に大きいことを示しているので、通信の加重を大きくす
る。
【0134】基本的には、割り当て優先度は、実行時間
がより多く掛かる要素プログラムに、大きな割り当て優
先度を与える。この実行時間は、要素プログラムが必要
とするリソース使用量の総量(総合実効リソース消費
量)が大きいほど長くなると言える。しかし、異なる種
類のリソースの大きさとそれが実行時間におよびす影響
度はリソースにより異なる。従って、本実施の形態で
は、上記のように、各要素プログラムが必要とする複数
種類のリソースの消費量と上記の重みとの積和を総合実
効リソース消費量の例として使用する。従って、各要素
プログラムの実行時間が長くなるほど、そのプログラム
の総合実効リソース消費量が大きくなるように、上記は
重みの値を調整することが望ましい。本実施の形態で
は、この割り当て優先度を、複数の要素プログラムの総
合実効リソース消費量には依存して決定するが、各PU
のリソース余力に依存しては決めない。もし、複数のP
Uのリソース余力にも依存して割り当て優先度を決定す
るとなると、複数のプログラムと複数のPUの組み合わ
せを変えて、各プログラムの実行時間を評価する必要が
ある、しかし、プロセッサの総数および割り当てるべき
プログラムの総数が多くなると、この組み合わせの数が
非常に多くなり、実用的な計算時間内で各プログラムの
割り当て優先度を決定することは困難となる。このため
に、本実施の形態では、この割り当て優先度の決定には
PUのリソース余力を考慮しないことにより、割り当て
優先度の計算を簡単化している。この結果、本実施の形
態は、実行時間が最大のプログラムに最大の割り当て優
先度を与えることを保証するものではないが、比較的実
行時間が大きなプログラムに最大の割り当て優先度を与
えることができる。
【0135】以上のようにして各要素プログラムの割り
当て優先度を計算した後、割り当て優先順位の高い要素
プログラムから割り当てキューに登録する(100
5)。各要素プログラムは、割り当てキューには図39
(a)に示す形式の情報でもって登録される。この割り
当てキューの各エントリは、そのエントリに登録された
各要素プログラムへのポインタ1101の他、そのプロ
グラムの割り当て優先度の計算時に使用した、そのプロ
グラムが使用する各リソースとそのリソースに対する重
みとの積を、各リソース種別ごとの割り当て優先度とし
てその値の大きい項から順にこのエントリ内のフィール
ド優先度1(1102)、優先度2(1103)、優先
度3(1104)および優先度4(1105)にそれぞ
れ登録する。この順序付けは、上記プログラムが消費す
る各種計算機リソースについて、どのリソースを最も必
要としているかを示すものであり、プロセスの割り当て
の際に、要素プログラムが必要とするリソースに重点を
置いて割り当て先のPUを決定するのに用いられる。
【0136】本例では、シミュレーションプログラムs
imA,simBの総合実効リソース消費量は、以下の
通りになる。ただし、この式でもMは、mega(10
の6乗)を表わす。 simAの総合実効リソース消費量 = 50M×1+20M×1.7+ 0M×10+10M×5 =134M simBの総合実効リソース消費量 =100M×1+30M×1.7+10M×10+10M×5 =301M 従って、simBを優先的に割り当てることになる。な
お、各要素プログラムを割り当てキューに登録するとき
には、複数プロセスをfork(fork数626が2
以上)する要素プログラムの場合は、fork数分だけ
この要素プログラムを割り当てキューに登録する。図3
9(b)は、割り当てキューに、プログラムsimA,
simBにそれぞれ属する4個、2個のプロセスが登録
されている場合を例示している。
【0137】各要素プログラムの、PUへの割り当て
は、上記優先順位に従って行う。図40にその手順を示
す。まず、割り当てキューから割り当て未完了のプロセ
スを取り出す(1202)。割り当てるPUの決定は、
割り当てるべきプログラムを最も短い時間で実行する可
能性のあるPUを割り当てる。しかし、複数のPUでの
実行時間は、各PUの各リソースの余力と割り当てるべ
きプログラムが消費する各リソースの消費量とに依存す
る。しかし、全PUの全リソース余力を使用して、それ
ぞれのPUでのそのプログラムの実行時間を推定するこ
とは、プロセッサの数が多いと、多くの時間が掛かる。
従って、そのプログラムが消費する複数のリソースの消
費量が、そのプログラムの実行時間におよびす影響を表
わす個別実効リソース消費量を判断し、その大きさをリ
ソース割り当て優先度として使用する。先に割り当て優
先度を算出するときに使用した、そのプログラムの種々
のリソースの消費量をそれぞれに対する重みとの積を、
それぞれのリソースの個別実効消費量の一例として使用
する。このリソース割り当て優先度が最も大きなリソー
スの余力が大きいPUにそのプログラムを割り当てる。
この結果、リソース別割り当て優先度によるプロセッサ
の選択は、割り当てるべきプログラムの実行時間が最小
となるPUにそのプログラムを割り当てることを保証す
るものではないが、そのプログラムの実行時間が比較的
小さいPUにそのプログラムを割り当てることができ
る。
【0138】上記プロセッサの割り当てのために、上記
割り当てキューに各プログラムを登録するときに、その
プログラムが消費する複数のリソースのリソース割り当
て優先度を順に登録した。具体的には、PUの割り当て
に当たりっては、割り当てキューから取り出したプロセ
スの優先度1のリソースの余力が最も多いPUにそのプ
ロセスを割り当てる。PUを割り当てる際、複数のPU
の、この優先度1に該当するリソース種別の余力が同一
の場合には、それらのPUの中で、最も未利用率の高い
PUに割り当てる。未利用率も同一だった場合には、該
当するこれらのPUについて、優先度2、優先度3、優
先度4と再帰的に適用し、割り当てを行う。優先度4の
時点でも同一のリソース量を持つPUが存在する場合に
は、最も先にエントリされているPUに割り当てる。本
例における始めの要素プログラム割り当ての場合、割り
当てを行う要素プログラムが/users/taro/
work/simBであり、優先度1がCPUであるの
で、割り当ての現時点で最もCPU余力の高いPUへ割
り当てることになる。本例では、504〜509が割り
当て候補となり、順に優先度2、優先度3、優先度4と
適用していくと、507および509が候補となる。結
果としては、先に登録されている507に割り当てるこ
とになる。
【0139】次に、割り当てられたPUについて、割り
当て後のリソース余力を再計算する(1207)。ここ
では、以下の式により計算する。 割り当て後のCPU余力=割り当て前のCPU余力−
(CPU負荷の大きさ÷L) 割り当て後の空メモリ量=割り当て前の空メモリ量−メ
モリ消費量 割り当て後のディスクI/O能力=割り当て前のディス
クI/O能力−(ファイルI/O量÷M) 割り当て後のネットワークI/O能力=割り当て前のネ
ットワークI/O能力−(通信量÷N) ここで、上式中のLは、PUのCPU能力とCPU負荷
量を関係付ける値である。例えば、CPU能力が100
のPUでCPU負荷の大きさが100の要素プログラム
を5プロセス実行した時にCPU利用率が100(CP
Uフル稼働)となった場合、Lの値は、5となる。ここ
では、簡単のため全てのPUでそれぞれ5と仮定する。
同様に、Mは、ディスクI/O能力とファイルI/O量
を、関係付ける値で、ディスクI/O能力が100でフ
ァイルI/O量が100の要素プログラムを5プロセス
実行した時にファイルI/Oの利用率が100(ディス
クI/Oフル稼働)となる場合、Mの値は、5となる。
ここでは、簡単のため全てのPUでそれぞれ5と仮定す
る。同様に、Nは、ネットワークI/O能力と通信量
を、関係付ける値で、ネットワークI/O能力が100
で通信量が100の要素プログラムを5プロセス実行し
た時にネットワークI/Oの利用率が100(ネットワ
ークI/O+フル稼働)となる場合、Nの値は、5とな
る。ここでは、簡単のため全てのPUでそれぞれ5と仮
定する。
【0140】図41に要素プログラムを一つ割り当てた
時の割り当て後のPUのリソース量を示す。1301が
上記手順で要素プログラムを一つ割り当て後のPUのリ
ソース量である。以下、全ての要素プログラムの割り当
てが完了するまで繰り返す。割り当ての結果を図42に
示す。この例では、シミュレーションプログラムsim
A,simBをそれぞれ2個、4個のシミュレーション
プロセスとしてそれぞれ2個、6個のPUに割り当てる
ことになる。従って、これらのシミュレーションプログ
ラムを実施の形態1で説明した方法で実行させるには、
次のようにすればよい。これらのシミュレーションプロ
グラムをそれぞれ2個あるいは4個のPUに実施の形態
1において説明した方法でそれらのプログラムがプロセ
スとしてロードする。その後、実施の形態1で示したデ
ータ変換プログラムをこれらの6個のPUにプロセスと
してロードする。その後これらのPU内で、これらのシ
ミュレーションプロセスおよびデータ変換プロセスをそ
れぞれプロセスとして起動する。こうして、実施の形態
1で説明した動作が開始される。
【0141】以上に示したごとく、本実施の形態によれ
ば、複数のプログラムの内、比較的実行時間が大きいプ
ログラムに優先的にPUを割付け、しかも、各プログラ
ムには、その割り当て時点で比較的短時間でそのプログ
ラムの実行を終了することができるPUを割り当てるこ
とができるので、複数のプログラムのいずれかの、いず
れかのPUでの実行時間が極端に遅くなると言うことを
防げる。従って、各PUの負荷の割り当てを均等に近く
することができる。しかも、前述した、割り当て優先度
の評価においては、前述のような簡単な計算でもって、
各プログラムの優先度を算出できる。さらに、各プログ
ラムにPUを割り当てるときには、リソース別割り当て
優先度の使用により、割り当てるべきPUの選択時間を
簡単にできる。
【0142】
【発明の効果】本発明によれば、計算機システム上で複
数のシミュレーションプログラムを連携して実行させる
場合に、シミュレーションプログラム間のデータの交換
およびそれらのシミュレーションプログラムの基底が異
なることに由来するデータ変換を、データ変換のための
プログラムにより支援するので、シミュレーションプロ
グラム自体は単独で実行する場合と比べて小さな変更で
すむ。従って、複数のシミュレーションプログラムを連
携させて複合シミュレーションを実行しやすくなる。
【0143】また、並列計算機等の複数のプロセッサユ
ニットにより構成される計算機システムにおいて、シス
テムの性能が有効に利用されるようにプログラムを割り
当てることができる。
【図面の簡単な説明】
【図1】本発明に係るシミュレーションプログラム実行
支援方法が適用される複数のシミュレーションプログラ
ムがロードされた並列計算機の全体構成図。
【図2】本発明を適用するシミュレーションプログラム
を実行する並列計算機システムの構成図。
【図3】(a)は二つのシミュレーションプログラムが
使用する矩形格子と非矩形格子の例を示す図。(b)は
(a)に示された領域を二つのシミュレーションプログ
ラムのそれぞれ用に分割して得られる複数の部分領域を
示す図。
【図4】図1のシステムでの処理の全体の流れ図。
【図5】本発明に係るシミュレーションプロセスの流れ
図。
【図6】(a)はデータ変換ライブラリに対する関数呼
び出しの引数(meshtype)を示す図。(b)は
データ変換ライブラリに対する関数呼び出しの引数(m
eshcount)を示す図。(c)はデータ変換ライ
ブラリに対する関数呼び出しの引数(meshnode
s)を示す図。(d)はデータ変換ライブラリに対する
関数呼び出しの引数(meshdata)を示す図。
(e)はデータ変換ライブラリに対する関数呼び出しの
引数(meshtopol)を示す図。
【図7】(a)はデータ変換プロセスとデータ変換ライ
ブラリ間のメッセージの基本構造を示す図。(b)から
(l)はデータ変換プロセスとデータ変換ライブラリ間
の他の一つのメッセージの構造を示す図。
【図8】起動ファイルの例を示す図。
【図9】起動用プロセスの処理の流れ図。
【図10】データ変換プロセスの処理の内、通信路確立
処理の流れ図。
【図11】データ変換プロセスの処理の内、データ変換
処理の流れ図。
【図12】図11の基底情報格納処理の流れ図。
【図13】図12のfemデータ読み込み処理の流れ
図。
【図14】図11の交信先決定処理の流れ図。
【図15】図14のオーバーラップテーブル作成処理の
流れ図。
【図16】図15のfem to fdm変換の流れ図
【図17】図16の変換を適用する有限要素基底と差分
基底の例を示す図。
【図18】図16の変換で得られるオーバーラップテー
ブルの例を示す図。
【図19】図15のfdm to fem変換の流れ
図。
【図20】図19の変換で得られるオーバーラップテー
ブルの例を示す図。
【図21】図15のparticle to fdm変
換の流れ図。
【図22】図21の変換を適用する粒子基底と有限要素
基底の説明図。
【図23】図21の変換で得られるオーバーラップテー
ブルの例を示す図。
【図24】データ変換プロセスにより生成されるテーブ
ル群を示す図。
【図25】データ変換プロセスの受信処理の流れ図。
【図26】データ変換プロセスのデータ変換処理の流れ
図。
【図27】(a)は隣接する二つの基底の説明図。
(b)は二つの基底の一方の説明図。(c)は二つの基
底の他方の説明図。
【図28】本発明の第2の実施の態様で使用する、暗号
化条件を設定するための画面を示す図。
【図29】本発明の第2の実施の態様で使用する、デー
タ属性と暗号化範囲を設定するための画面を示す図。
【図30】本発明の第3の実施の態様で使用する計算機
システムの概要を示した図。
【図31】図30のシステムでの全体の処理手順のフロ
ーチャート。
【図32】(a)は計算機リソースデータベース(10
1)に保持された、プロセッサユニットのリソース量を
示す図。(b)は計算機リソースデータベースに保持さ
れた、ネットワークリソース量を示す図。(c)はプロ
グラムリソースデータベース(102)の構成を示す
図。
【図33】図30のシステムで使用する計算機の時系列
利用状況データベースの構成を示す図。
【図34】(a)は図30のシステムの各プロセッサユ
ニットが有するいろいろのリソースとその数値例を示す
図。(b)は図30のシステムの各プロセッサユニット
が有するネットワークのリソース量の数値例を示す図。
(c)は図30のシステムにロードすべき複数のシミュ
レーションプログラムが要求するリソース量とその数値
例を示す図。
【図35】図31のプログラム割り当て処理(206)
のフローチャート。
【図36】図30のシステムの各プロセッサユニットが
有する、プログラム投入時の利用状況の数値例を示した
図。
【図37】図30のシステムの各プロセッサユニットが
有する、プログラム投入時のリソース量の数値例を示す
図。
【図38】図35のプログラム割り当ての優先順位決定
処理(703)のフローチャート。
【図39】(a)は図38の処理が使用する割り当てキ
ューの構造を示す図。(b)は図38の処理により決定
された割り当て優先順位の例を示す図。
【図40】図35の、割り当て優先順位に基づく要素プ
ログラム割り当て処理(704)のフローチャート。
【図41】図30のシステムで、要素プログラムを一個
プロセッサユニットに割り当てた後の計算機リソース量
の例を示す図。
【図42】本発明の第3の実施の形態により決定された
プロセッサ割り当ての結果を示す図。
フロントページの続き (72)発明者 菊地 克朗 東京都国分寺市東恋ケ窪一丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 平尾 雅彦 東京都国分寺市東恋ケ窪一丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 何 希倫 東京都国分寺市東恋ケ窪一丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 伊藤 智 東京都国分寺市東恋ケ窪一丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 鈴木 芳生 東京都国分寺市東恋ケ窪一丁目280番地 株式会社日立製作所中央研究所内

Claims (50)

    【特許請求の範囲】
  1. 【請求項1】複数のシミュレーションプログラムを協調
    して実行するのを支援するシミュレーションプログラム
    の実行支援方法であって、各シミュレーションプログラ
    ムは、少なくとも一つの物理量の、シミュレーション対
    象の領域に属する基底上で定義された値を生成するよう
    にプログラムされ、さらに、上記方法は上記計算機シス
    テムにより実行される複数のステップからなり、該複数
    のステップは、 各シミュレーションプログラムからその各シミュレーシ
    ョンプログラムが使用する基底に関連する基底情報をプ
    ログラム間データ通信支援プログラムにより受け取り、 該複数のシミュレーションプログラムの各々から受け取
    った上記基底情報に基づいて、各シミュレーションプロ
    グラムの基底と他のシミュレーションプログラムの基底
    の間の位置関係を上記プログラム間データ通信支援プロ
    グラムにより判別し、 いずれか一つのシミュレーションプログラムが生成し
    た、そのシミュレーションプログラムの基底上で定義さ
    れた演算結果データを、該複数のシミュレーションプロ
    グラムの内、その演算結果データを使用する少なくとも
    一つの他のシミュレーションプログラムの基底上で定義
    されたデータに該プログラム間データ通信支援プログラ
    ムにより変換し、 上記変換ステップで得られる上記データを該他のシミュ
    レーションプログラムに該プログラム間データ通信支援
    プログラムにより転送するステップを有し、 該変換ステップは、該演算結果データを生成した該一つ
    のシミュレーションプログラムの基底と該演算結果デー
    タを使用する該他のシミュレーションプログラムの基底
    との間の上記判別ステップで判別された位置関係に依存
    して実行される。
  2. 【請求項2】上記変換ステップは、 該演算結果データを生成した上記一つのシミュレーショ
    ンプログラムが使用する基底の種類と該演算結果データ
    を使用する上記他のシミュレーションプログラムが使用
    する基底の種類との組に対応する一つのデータ変換手順
    を選択し、 選択されたデータ変換手順に従って、上記演算結果デー
    タを変換するステップを有し、 上記一つのデータ変換手順は、データ変換すべき演算結
    果データを生成するシミュレーションプログラムにより
    使用される可能性がある予め定められた複数の基底の一
    つとその演算結果データを使用するシミュレーションプ
    ログラムにより使用される可能性のある予め定められた
    複数の基底の種類一つとをそれぞれ含む複数の組に対応
    して予め定められた複数のデータ変換手順から選択され
    る請求項1記載のシミュレーションプログラムの実行支
    援方法。
  3. 【請求項3】上記演算結果データの一部を上記プログラ
    ム間データ通信支援プログラムにより選択するステップ
    をさらに有し、 上記変換ステップは、該選択された一部の演算結果デー
    タに対して実行され、 上記一部の演算結果データは、上記演算結果データを生
    成した上記一つのシミュレーションプログラムのシミュ
    レーション対象領域の内、上記演算結果データを使用す
    る上記他のシミュレーションプログラムのシミュレーシ
    ョン対象領域に重複する部分に関連するデータからな
    り、 上記選択ステップは、上記演算結果データを生成した上
    記一つのシミュレーションプログラムの基底と、上記演
    算結果データを使用する上記他のシミュレーションプロ
    グラムの基底の間の、上記判別ステップで判別された位
    置関係に依存して行われる請求項1記載のシミュレーシ
    ョンプログラムの実行支援方法。
  4. 【請求項4】上記一つのシミュレーションプログラムが
    生成する演算結果データを使用する少なくとも一つの他
    のシミュレーションプログラムが上記複数のシミュレー
    ションプログラムの中にあるか否かを上記プログラム間
    データ通信支援プログラムにより検出するステップをさ
    らに有し、 上記検出ステップは、上記一つのシミュレーションプロ
    グラムのベースと上記他のシミュレーションプログラム
    のベースの間の、上記判別ステップで判別された位置関
    係に基づいて行われ、 上記転送ステップは、 他の一つのシミュレーションプログラムが上記検出ステ
    ップで検出されたときには上記一つのシミュレーション
    プログラムが生成した上記演算結果データを当該検出さ
    れた他の一つのシミュレーションプログラムに該プログ
    ラム間データ通信支援プログラムにより転送し、 複数の他のシミュレーションプログラムが上記検出ステ
    ップで検出されたときには、上記一つのシミュレーショ
    ンプログラムが生成した上記演算結果データを該検出さ
    れた複数の他のシミュレーションプログラムの各々に該
    プログラム間データ通信支援プログラムにより転送する
    ステップよりなり、 上記変換ステップは、 他の一つのシミュレーションプログラムが上記検出ステ
    ップで検出されたときには、上記一つのシミュレーショ
    ンプログラムが生成した上記演算結果データを、該検出
    された他のシミュレーションプログラムの基底上で定義
    されたデータに該プログラム間データ通信支援プログラ
    ムにより変換し、 複数の他のシミュレーションプログラムが上記検出ステ
    ップで検出されたときには、上記一つのシミュレーショ
    ンプログラムが生成した上記演算結果データを、該検出
    された複数の他のシミュレーションプログラムの各々の
    基底上で定義されたデータに該プログラム間データ通信
    支援プログラムにより変換するステップよりなる請求項
    1記載のシミュレーションプログラムの実行支援方法。
  5. 【請求項5】上記判別ステップで判別される上記位置関
    係は、各シミュレーションプログラムのシミュレーショ
    ン対象領域が他のシミュレーションプログラムのシミュ
    レーション対象領域に少なくとも一部重複しているか否
    かの情報を含み、 上記検出ステップは、上記演算結果データを生成した上
    記一つのシミュレーションプログラムのシミュレーショ
    ン対象領域に対して少なくとも一部重複する領域をシミ
    ュレーション対象領域とする少なくとも一つの他のシミ
    ュレーションプログラムがあるか否かを上記一つのシミ
    ュレーションプログラムと上記他のシミュレーションプ
    ログラムとの間の上記判別された位置関係に基づいて該
    プログラム間データ通信支援プログラムにより判別する
    ステップを有する請求項4記載のシミュレーションプロ
    グラムの実行支援方法。
  6. 【請求項6】上記変換ステップは、該演算結果データを
    生成した上記一つのシミュレーションプログラムから出
    力された、上記演算結果データの送信要求に応答して実
    行され、 上記転送ステップは、該演算結果データを使用する上記
    他のシミュレーションプログラムが出力した、演算結果
    データの受信要求に応答して実行される請求項1記載の
    シミュレーションプログラムの実行支援方法。
  7. 【請求項7】該複数のシミュレーションプログラムの各
    々の基底と他のシミュレーションプログラムの基底との
    間の、上記判別ステップで判別される上記位置関係は、
    該各シミュレーションプログラムの基底を構成する複数
    の離散点と、該他のシミュレーションプログラムが使用
    する基底を構成する複数の離散点との間の位置関係を含
    む請求項1記載のシミュレーションプログラムの実行支
    援方法。
  8. 【請求項8】該各シミュレーションプログラムの基底を
    構成する該複数の離散点と、該他の一つのシミュレーシ
    ョンプログラムが使用する基底を構成する該複数の離散
    点との間の上記位置関係は、(a)該各シミュレーショ
    ンプログラムの基底を構成する該複数の離散点の各々と
    その各離散点の近傍に位置する該他のシミュレーション
    プログラムが使用する基底に属する複数の離散点の間の
    距離と、(b)該他の一つのシミュレーションプログラ
    ムの基底を構成する該複数の離散点の各々とその各離散
    点の近傍に位置する該各シミュレーションプログラムが
    使用する基底に属する複数の離散点の間の距離との内の
    少なくとも一方を含む請求項7記載のシミュレーション
    プログラムの実行支援方法。
  9. 【請求項9】各シミュレーションプログラムは、少なく
    とも一つのシミュレーションプロセスとして実行され、
    もって該複数のシミュレーションプログラムは複数のシ
    ミュレーションプロセスとして実行され、 上記プログラム間データ通信支援プログラムは、それぞ
    れ該複数のシミュレーションプロセスの一つに対応した
    複数のプログラム間データ通信支援プロセスとして実行
    される請求項1記載のシミュレーションプログラムの実
    行支援方法。
  10. 【請求項10】上記受け取るステップは、 各シミュレーションプロセスの基底情報を、そのシミュ
    レーションプロセスからそれに対応するプログラム間デ
    ータ通信支援プロセスに通知し、 各プログラム間データ通信支援プロセスに対応する一つ
    のシミュレーションプロセスから通知されたその一つの
    シミュレーションプロセスの基底情報を、その各プログ
    ラム間データ通信支援プロセスにより他のプログラム間
    データ通信支援プロセスに通知するステップを含み、 上記判別ステップは、 各プログラム間データ通信支援プロセスに対応する上記
    一つのシミュレーションプロセスから通知されたその一
    つのシミュレーションプロセスの基底情報と、該各プロ
    グラム間データ通信支援プロセス以外の他のプログラム
    間データ通信支援プロセスから通知された、該他のプロ
    グラム間データ通信支援プロセスに対応する他のシミュ
    レーションプロセスの基底情報とに基づいて、その各プ
    ログラム間データ通信支援プログラムに対応する上記一
    つのシミュレーションプロセスの基底と該他のシミュレ
    ーションプロセスの基底との間の位置関係を、該各プロ
    グラム間データ通信支援プロセスにより判別するステッ
    プを有し、 上記変換ステップは、上記演算結果データを生成した一
    つのシミュレーションプロセスに対応する一つのプログ
    ラム間データ通信支援プロセスとその演算結果データを
    使用する他のシミュレーションプロセスに対応する他の
    プログラム間データ通信支援プロセスの内の一方により
    実行され、 上記方法は、上記一つのプログラム間データ通信支援プ
    ロセスからその演算結果データを使用する上記他のシミ
    ュレーションプロセスに対応する上記他のプログラム間
    データ通信支援プロセスに演算結果データを送信するス
    テップをさらに有し、 上記送信される演算結果データは、上記変換ステップが
    上記一つのプログラム間データ通信支援プロセスにより
    実行されるときには、上記変換ステップの実行により得
    られる上記データであり、上記変換ステップが上記他の
    プログラム間データ通信支援プロセスにより実行される
    ときには、上記一つのシミュレーションプロセスが生成
    した上記演算結果データである請求項9記載のシミュレ
    ーションプログラムの実行支援方法。
  11. 【請求項11】上記方法は、上記一つのシミュレーショ
    ンプロセスにより生成される演算結果データを使用する
    他の一つまたは複数のシミュレーションプロセスがある
    か否かを、上記一つのシミュレーションプロセスに対応
    する上記一つのプログラム間データ通信支援プロセスに
    より検出するステップをさらに有し、 上記検出ステップは、上記一つのプログラム間データ通
    信支援プロセスにより上記判別ステップで判別された上
    記一つのシミュレーションプロセスと他のシミュレーシ
    ョンプロセスとの間の位置関係に基づいて行われ、 上記演算結果データを送信する上記ステップは、 他の一つのシミュレーションプロセスが上記検出ステッ
    プにより検出されたときには、上記一つのシミュレーシ
    ョンプロセスが生成した上記演算結果データを、その検
    出された一つの他のシミュレーションプロセスに対応す
    る一つの他のプログラム間データ通信支援プロセスに上
    記一つプログラム間データ通信支援プロセスにより転送
    し、 複数の他のシミュレーションプロセスが上記検出ステッ
    プで検出されたときには、上記一つのシミュレーション
    プロセスが生成した上記演算結果データを、上記一つの
    プログラム間データ通信支援プロセスにより該検出され
    た複数の他のシミュレーションプロセスの一つにそれぞ
    れ対応する複数の他のプログラム間データ通信支援プロ
    セスに上記一つのプログラム間データ通信支援プロセス
    により転送するステップからなり、 上記変換ステップは、 他の一つのシミュレーションプロセスが上記検出ステッ
    プで検出されたときには、該一つのプログラム間データ
    通信支援プロセスと該検出された他の一つのシミュレー
    ションプロセスに対応する他の一つのプログラム間デー
    タ通信支援プロセス内の一方により実行され、 複数の他のシミュレーションプロセスが上記検出ステッ
    プで検出されたときには、該検出された他の複数のシミ
    ュレーションプロセス一つにそれぞれ対応する複数の他
    のプログラム間データ通信支援プロセスかまたは該一つ
    のプログラム間データ通信支援プロセスにより実行され
    る請求項10記載のシミュレーションプログラムの実行
    支援方法。
  12. 【請求項12】各プログラム間データ通信支援プロセス
    により実行される上記判別ステップで判別される上記位
    置関係は、その各プログラム間データ通信支援プロセス
    が対応するシミュレーションプロセスのシミュレーショ
    ン対象領域と他のシミュレーションプロセスの一つのシ
    ミュレーション対象領域が相互に少なくとも一部重複し
    ているか否かの情報を含み、 上記一つのプログラム間データ通信支援プロセスにより
    実行される上記検出ステップは、上記演算結果データを
    生成した上記一つのシミュレーションプロセスのシミュ
    レーション対象領域に対して少なくとも一部で重複する
    領域をシミュレーション対象の領域とする少なくとも一
    つの他のシミュレーションプロセスがあるか否かを上記
    一つのシミュレーションプロセスと上記他のシミュレー
    ションプロセスとの間の上記判別された位置関係に基づ
    いて判別するステップを有する請求項11記載のシミュ
    レーションプログラムの実行支援方法。
  13. 【請求項13】それぞれ該複数のシミュレーションプロ
    セスの一つに対応する複数のライブラリが上記計算機シ
    ステム内にさらに設けられ、 各シミュレーションプロセスからそれに対応するプログ
    ラム間データ通信支援プロセスにその各シミュレーショ
    ンプロセスの基底情報を通知する上記ステップは、 その各シミュレーションプロセスから、そのシミュレー
    ションプロセスに対応する一つのライブラリに上記基底
    情報を関数呼び出しにより通知し、 その一つのライブラリから上記シミュレーションプロセ
    スに対応する上記プログラム間データ通信支援プロセス
    にその通知された基底情報を通知するステップからな
    り、 上記演算結果データを使用する上記他のシミュレーショ
    ンプロセスへのそれに対応する上記他のプログラム間デ
    ータ通信支援プロセスにより上記演算結果データを送信
    する上記ステップは、 上記他のプログラム間データ通信支援プロセスから、上
    記他のシミュレーションプロセスに対応する他のライブ
    ラリに上記演算結果データを通知し、 上記他のライブラリから上記他のシミュレーションプロ
    セスに上記通知された演算結果データを通知するステッ
    プを有する請求項10記載のシミュレーションプログラ
    ムの実行支援方法。
  14. 【請求項14】上記一つのプログラム間データ通信支援
    プロセスにより上記他のプログラム間データ通信支援プ
    ロセスに上記演算結果データを送信する上記ステップ
    は、上記一つのシミュレーションプロセスから出力され
    た、上記演算結果データの送信要求に応答して実行さ
    れ、 上記他のプログラム間データ通信支援プロセスによりさ
    らに上記他のシミュレーションプロセスに上記演算結果
    データを通知する上記ステップは、上記他のシミュレー
    ションプロセスから出力された、演算結果データの受信
    要求に応答して実行される請求項10記載のシミュレー
    ションプログラムの実行支援方法。
  15. 【請求項15】各シミュレーションプログラムは複数の
    シミュレーションプロセスとして実行され、各シミュレ
    ーションプロセスは、その各シミュレーションプログラ
    ムのシミュレーション対象領域の一部に対してその各シ
    ミュレーションプログラムが実行すべきシミュレーショ
    ンを実行し、もって該複数のシミュレーションプログラ
    ムはそれらの数より多い複数のシミュレーションプロセ
    スとして実行され、 上記プログラム間データ通信支援プログラムは、それぞ
    れ該複数のシミュレーションプロセスの一つに対応した
    複数のプログラム間データ通信支援プロセスとして実行
    される請求項10記載のシミュレーションプログラムの
    実行支援方法。
  16. 【請求項16】各プログラム間データ通信支援プロセス
    が対応する一つのシミュレーションプロセスの基底情報
    を他のプログラム間データ通信支援プロセスに通知する
    上記ステップは、その一つのシミュレーションプロセス
    が属するシミュレーションプログラム以外の他のシミュ
    レーションプログラムに属する複数の他のシミュレーシ
    ョンプロセスに対応する複数の他のプログラム間データ
    通信支援プロセスにその基底情報を通知するステップか
    らなり、 上記各プログラム間データ通信支援プロセスにより実行
    される上記判別ステップは、その各プログラム間データ
    通信支援プロセスに対応する一つのシミュレーションプ
    ロセスの基底と該一つのシミュレーションプロセスが属
    するシミュレーションプログラム以外の他のシミュレー
    ションプログラムに属する複数の他のシミュレーション
    プロセスの各々の基底との間の位置関係を、該各プログ
    ラム間データ通信支援プロセスにより判別するステップ
    を有し、 その判別は、その各プログラム間データ通信支援プロセ
    スに対応する上記一つのシミュレーションプロセスの基
    底情報と、該複数の他のシミュレーションプロセスの各
    々の基底情報とに基づいて行われる請求項15記載のシ
    ミュレーションプログラムの実行支援方法。
  17. 【請求項17】上記演算結果データを生成した上記一つ
    のシミュレーションプロセスが属するシミュレーション
    プログラム以外の他のシミュレーションプログラムに属
    する他の複数のシミュレーションプロセスの中に、上記
    一つのシミュレーションプロセスが生成する演算結果デ
    ータを使用する少なくとも一つの他のシミュレーション
    プロセスがあるか否かを、上記一つのシミュレーション
    プロセスに対応する一つのプログラム間データ通信支援
    プロセスにより検出するステップをさらに有し、 上記検出は、上記一つのシミュレーションプロセスと上
    記他の複数のシミュレーションプロセスの各々との間
    の、上記一つのシミュレーションプロセスに対応する上
    記一つのプログラム間データ通信支援プロセスにより上
    記判別ステップで判別された位置関係に基づいて、上記
    一つのプログラム間データ通信支援プログラムにより実
    行される請求項16記載のシミュレーションプログラム
    の実行支援方法。
  18. 【請求項18】上記複数のシミュレーションプログラム
    と該プログラム間データ通信支援プログラムは、上記計
    算機システムに含まれた同一のプロセッサ上で実行され
    る請求項1記載のシミュレーションプログラムの実行支
    援方法。
  19. 【請求項19】該複数のシミュレーションプログラムの
    内の少なくとも複数は、上記計算機システムに含まれた
    複数のプロセッサの内の互いに異なるものの上で実行さ
    れる請求項1記載のシミュレーションプログラムの実行
    支援方法。
  20. 【請求項20】上記複数のシミュレーションプロセスと
    該複数のプログラム間データ通信支援プロセスは、上記
    計算機システムに含まれた同一のプロセッサ上で実行さ
    れる請求項9記載のシミュレーションプログラムの実行
    支援方法。
  21. 【請求項21】該複数のシミュレーションプロセス内の
    少なくとも一部の複数のシミュレーションプロセスは、
    上記計算機システムに含まれた複数のプロセッサの内の
    互いに異なるものの上で実行され、 各シミュレーションプロセスとそれに対応する一つのプ
    ログラム間データ通信支援プロセスは、上記複数のプロ
    セッサの内の同一のプロセッサ上で実行される請求項9
    記載のシミュレーションプログラムの実行支援方法。
  22. 【請求項22】該複数のシミュレーションプログラムに
    対応する上記複数のシミュレーションプロセスの少なく
    とも一部の複数は、上記計算機システムに含まれた複数
    のプロセッサの内の互いに異なるものの上で実行され、 各シミュレーションプロセスとそれに対応する一つのプ
    ログラム間データ通信支援プロセスは、上記複数のプロ
    セッサの内の同一のプロセッサ上で実行される請求項1
    5記載のシミュレーションプログラムの実行支援方法。
  23. 【請求項23】該プログラム間データ通信支援プログラ
    ムは、それぞれ該複数のシミュレーションプログラムの
    一つに対応したそれぞれのサブルーチンとして実行され
    る、上記プログラム間データ通信支援プログラムにより
    実行されるべき処理をそれぞれ実行する複数のプログラ
    ムからなる請求項1記載のシミュレーションプログラム
    の実行支援方法。
  24. 【請求項24】複数のシミュレーションプログラムを協
    調して実行するのを支援するシミュレーションプログラ
    ムの実行支援方法であって、各シミュレーションプログ
    ラムは、それぞれ少なくとも一つの物理量の、シミュレ
    ーション対象の領域に属する基底上で定義された値を生
    成するようにプログラムされ、さらに、上記方法は上記
    計算機システムにより実行される複数のステップからな
    り、該複数のステップは、 各シミュレーションプログラムからその各シミュレーシ
    ョンプログラムが使用する基底に関する基底情報をプロ
    グラム間データ通信支援プログラムにより受け取り、 該複数のシミュレーションプログラムから受け取られた
    上記基底情報に基づいて、各シミュレーションプログラ
    ムの基底と他のシミュレーションプログラムの基底の間
    の位置関係を上記プログラム間データ通信支援プログラ
    ムにより判別し、 いずれか一つのシミュレーションプログラムが生成する
    演算結果データを使用する少なくとも一つの他のシミュ
    レーションプログラムがあるか否かをそれらのシミュレ
    ーションプログラムの基底の間の上記判別された位置関
    係に基づいて該プログラム間データ通信支援プログラム
    により検出し、 演算結果データが上記一つのシミュレーションプログラ
    ムによりその後生成されたときに、上記検出ステップで
    検出された少なくとも一つの他のシミュレーションプロ
    グラムに該プログラム間データ通信支援プログラムによ
    りその演算結果データを転送するステップよりなる。
  25. 【請求項25】上記判別ステップで判別される上記位置
    関係は、各シミュレーションプログラムのシミュレーシ
    ョン対象領域が他のシミュレーションプログラムのシミ
    ュレーション対象領域に少なくとも一部重複しているか
    否かの情報を含み、 上記検出ステップは、上記一つのシミュレーションプロ
    グラムのシミュレーション対象領域に対して少なくとも
    一部で重複する領域をシミュレーション対象の領域とす
    る他のシミュレーションプログラムがあるか否かを上記
    一つのシミュレーションプロセスと上記他のシミュレー
    ションプロセスとの間の上記判別された位置関係に基づ
    いて該プログラム間データ通信支援プログラムにより判
    別するステップを有する請求項24記載のシミュレーシ
    ョンプログラムの実行支援方法。
  26. 【請求項26】上記演算結果データを転送するステップ
    は、 他のシミュレーションプログラムが上記検出ステップに
    より検出されたときには、上記一つのシミュレーション
    プログラムが生成した上記演算結果データを、その検出
    された一つの他のシミュレーションプログラムに転送
    し、 他の複数のシミュレーションプログラムが上記検出ステ
    ップにより検出されたときには、上記一つのシミュレー
    ションプログラムが生成した上記演算結果データを、該
    検出された複数の他のシミュレーションプログラムの各
    々に転送するステップからなる請求項24記載のシミュ
    レーションプログラムの実行支援方法。
  27. 【請求項27】各シミュレーションプログラムは、少な
    くとも一つのシミュレーションプロセスとして実行さ
    れ、もって該複数のシミュレーションプログラムは複数
    のシミュレーションプロセスとして実行され、 上記プログラム間データ通信支援プログラムは、それぞ
    れ該複数のシミュレーションプロセスの一つに対応する
    複数のプログラム間データ通信支援プロセスとして実行
    される請求項24記載のシミュレーションプログラムの
    実行支援方法。
  28. 【請求項28】上記受け取るステップは、 各シミュレーションプロセスの基底情報を、そのシミュ
    レーションプロセスからそれに対応するプログラム間デ
    ータ通信支援プロセスに通知し、 各プログラム間データ通信支援プロセスに対応する一つ
    のシミュレーションプロセスから通知されたその一つの
    シミュレーションプロセスの基底情報を、その各プログ
    ラム間データ通信支援プロセス以外の他のプログラム間
    データ通信支援プロセスに該各プログラム間データ通信
    支援プロセスにより通知するステップからなり、 上記判別ステップは、 各プログラム間データ通信支援プロセスに対応する一つ
    のシミュレーションプロセスの基底情報と、該各プログ
    ラム間データ通信支援プロセス以外の他のプログラム間
    データ通信支援プロセスから通知された、該他のプログ
    ラム間データ通信支援プロセスに対応する他のシミュレ
    ーションプロセスの基底情報とに基づいて、上記一つの
    シミュレーションプロセスの基底と該他のシミュレーシ
    ョンプロセスの基底との間の位置関係を該各プログラム
    間データ通信支援プロセスにより判別するステップを有
    し、 上記転送ステップは、 演算結果データを生成した一つのシミュレーションプロ
    セスに対応する一つのプログラム間データ通信支援プロ
    セスからその演算結果データを使用する他のシミュレー
    ションプロセスに対応する他のプログラム間データ通信
    支援プロセスにその演算結果データを送信し、 上記他のプログラム間データ通信支援プロセスから上記
    他のシミュレーションプロセスに該送信された演算結果
    データを転送するステップをさらに有し、 上記検出ステップは、上記一つのシミュレーションプロ
    セス以外の他の複数のシミュレーションプロセスの中
    に、上記一つのシミュレーションプロセスが生成する演
    算結果データを使用する少なくとも一つの他のシミュレ
    ーションプロセスがあるか否かを、上記一つのシミュレ
    ーションプロセスに対応する上記一つのプログラム間デ
    ータ通信支援プロセスにより検出するステップを有し、 上記検出は、上記一つのシミュレーションプロセスと上
    記一つのシミュレーションプロセスが属するにシミュレ
    ーションプログラム以外の化のシミュレーションプログ
    ラムに属する他のシミュレーションプロセスとの間の、
    上記判別ステップで判別された位置関係に基づいて上記
    一つのプログラム間データ通信支援プロセスにより行わ
    れる請求項27記載のシミュレーションプログラムの実
    行支援方法。
  29. 【請求項29】各シミュレーションプログラムは複数の
    シミュレーションプロセスとして実行され、各シミュレ
    ーションプロセスは、その各シミュレーションプログラ
    ムのシミュレーション領域の一部に対してその各シミュ
    レーションプログラムのシミュレーションを実行し、も
    って該複数のシミュレーションプログラムはそれらの数
    より多い複数のシミュレーションプロセスとして実行さ
    れ、 上記プログラム間データ通信支援プログラムは、それぞ
    れ該複数のシミュレーションプロセスの一つに対応した
    複数のプログラム間データ通信支援プロセスとして実行
    される請求項28記載のシミュレーションプログラムの
    実行支援方法。
  30. 【請求項30】各プログラム間データ通信支援プロセス
    が対応する一つのシミュレーションプロセスの基底情報
    を他の複数のプログラム間データ通信支援プロセスに通
    知する上記ステップは、その一つのシミュレーションプ
    ロセスが属するシミュレーションプログラム以外の他の
    シミュレーションプログラムに属する複数の他のシミュ
    レーションプロセスに対応する複数の他のプログラム間
    データ通信支援プロセスにその基底情報を通知するステ
    ップからなり、 各プログラム間データ通信支援プロセスにより実行され
    る上記判別ステップは、その各プログラム間データ通信
    支援プロセスに対応する一つのシミュレーションプロセ
    スの基底と該各一つのシミュレーションプロセスが属す
    るシミュレーションプログラム以外の他のシミュレーシ
    ョンプログラムに属する他の複数のシミュレーションプ
    ロセスの各々の基底との間の位置関係を、該各プログラ
    ム間データ通信支援プロセスにより判別するステップを
    有し、 該判別は、その一つのシミュレーションプロセスの基底
    情報と、該他の複数のシミュレーションプロセスの各々
    の基底情報とに基づいて行われ、 上記検出ステップは、上記一つのシミュレーションプロ
    セスが属するシミュレーションプログラム以外の他のシ
    ミュレーションプログラムに属する他の複数のシミュレ
    ーションプロセスの中に、上記一つのシミュレーション
    プロセスが生成する演算結果データを使用する少なくと
    も一つの他のシミュレーションプロセスがあるか否か
    を、上記一つのシミュレーションプロセスに対応する一
    つのプログラム間データ通信支援プロセスにより検出す
    るステップを有し、 上記検出は、上記一つのシミュレーションプロセスと上
    記他の複数のシミュレーションプロセスの各々との間
    の、上記一つのプログラム間データ通信支援プロセスに
    より上記判別ステップで判別された位置関係に基づい
    て、上記一つのプログラム間データ通信支援プログラム
    により実行される請求項29記載のシミュレーションプ
    ログラムの実行支援方法。
  31. 【請求項31】上記複数のシミュレーションプログラム
    と該プログラム間データ通信支援プログラムは、上記計
    算機システムに含まれた同一のプロセッサ上で実行され
    る請求項24記載のシミュレーションプログラムの実行
    支援方法。
  32. 【請求項32】該複数のシミュレーションプログラムの
    内の少なくとも複数は、上記計算機システムに含まれた
    複数のプロセッサの内の互いに異なるものの上で実行さ
    れる請求項24記載のシミュレーションプログラムの実
    行支援方法。
  33. 【請求項33】該複数のシミュレーションプロセス内の
    少なくとも一部の複数のシミュレーションプロセスは、
    上記計算機システムに含まれた複数のプロセッサの内の
    互いに異なるものの上で実行され、 各シミュレーションプロセスとそれに対応する一つのプ
    ログラム間データ通信支援プロセスは、上記複数のプロ
    セッサの内の同一のプロセッサ上で実行される請求項2
    7記載のシミュレーションプログラムの実行支援方法。
  34. 【請求項34】該複数のシミュレーションプログラムに
    対応する上記複数のシミュレーションプロセスの少なく
    とも一部の複数は、上記計算機システムに含まれた複数
    のプロセッサの内の互いに異なるものの上で実行され、 各シミュレーションプロセスとそれに対応する一つのプ
    ログラム間データ通信支援プロセスは、上記複数のプロ
    セッサの内の同一のプロセッサ上で実行される請求項2
    9記載のシミュレーションプログラムの実行支援方法。
  35. 【請求項35】該プログラム間データ通信支援プログラ
    ムは、それぞれ該複数のシミュレーションプログラムの
    サブルーチンとして実行される、上記プログラム間デー
    タ通信支援プログラムの処理をそれぞれ実行する複数の
    プログラムからなる請求項24記載のシミュレーション
    プログラムの実行支援方法。
  36. 【請求項36】上記演算結果データを生成した上記一つ
    のシミュレーションプロセスに対応する上記一つのプロ
    グラム間データ通信支援プロセスにより、上記演算結果
    データを上記他のプログラム間データ通信支援プロセス
    に転送する上記転送ステップは、 上記演算結果データを上記他のシミュレーションプロセ
    スに依存して定められた暗号化用の第1のキーを使用し
    て上記一つのプログラム間データ通信支援プロセスによ
    り暗号化し、 該暗号化された演算結果データを上記演算結果データを
    使用する他のシミュレーションプロセスに対応する他の
    プログラム間データ通信支援プロセスに転送し、 上記転送された演算結果データを、上記他のシミュレー
    ションプロセスに依存して定められた解読用の第2のキ
    ーを使用して上記他のプログラム間データ通信支援プロ
    セスにより解読するステップからなる請求項28記載の
    シミュレーションプログラムの実行支援方法。
  37. 【請求項37】上記第1、第2のキーは、それぞれ上記
    他のシミュレーションプロセスに依存して定められた公
    開キーと上記他のシミュレーションプロセスに依存して
    定められた秘密キーである請求項36記載のシミュレー
    ションプログラムの実行支援方法。
  38. 【請求項38】複数のプログラムを協調して実行させる
    のを支援する複数のプログラムの実行支援方法であっ
    て、上記方法は上記計算機システムにより実行される複
    数のステップからなり、該複数のステップは、 各プログラムからその各プログラムが使用するデータに
    関連するデータ関連情報をプログラム間データ通信支援
    プログラムにより受け取り、 該複数のプログラムから受け取ったデータ関連情報に基
    づいて、各プログラムが取り扱うデータと他のプログラ
    ムが取り扱うデータの間の関係を上記プログラム間デー
    タ通信支援プログラムにより判別し、 いずれか一つのプログラムが生成したデータを、該複数
    のプログラムの内、そのデータを使用する少なくとも一
    つの他のプログラムが使用するデータに該プログラム間
    データ通信支援プログラムにより変換し、 上記変換ステップで得られる上記データを該他のプログ
    ラムに該プログラム間データ通信支援プログラムにより
    転送するステップを有し、 該変換ステップは、該一つのプログラムが取り扱うデー
    タと該他のプログラムが取り扱うデータとの間の上記判
    別ステップで判別された関係に依存して実行される。
  39. 【請求項39】複数のプログラムを協調して計算機シス
    テムにより実行させるのを支援するプログラムの実行支
    援方法であって、上記方法は上記計算機システムにより
    実行される複数のステップからなり、該複数のステップ
    は、 各プログラムからその各プログラムが使用するデータに
    関するデータ情報をプログラム間データ通信支援プログ
    ラムにより受け取り、 該複数のプログラムから受け取られたデータ情報に基づ
    いて、各プログラムが使用するデータと他のプログラム
    が使用するデータの間の関係を上記プログラム間データ
    通信支援プログラムにより判別し、 いずれか一つのプログラムが生成するデータを使用する
    少なくとも一つの他のプログラムがあるか否かをそれら
    のプログラムが使用するデータの間の上記判別された関
    係に基づいて、該プログラム間データ通信支援プログラ
    ムにより検出し、 上記一つのプログラムによりいずれかのデータが生成さ
    れたときに、上記生成されたデータを当該検出ステップ
    で検出された少なくとも一つの他のプログラムに該プロ
    グラム間データ通信支援プログラムにより転送するステ
    ップよりなる。
  40. 【請求項40】計算機システムに属する複数のプロセッ
    サユニットに複数のプログラムを割り当てる方法であっ
    て、上記計算機システムにより実行される複数のステッ
    プからなり、該複数のステップは、 リソース消費量が大きなプログラムがより先に割り当て
    られるように、複数のプログラムのリソース消費量に依
    存して、それらのプログラムをプロセッサユニットに割
    り当てる順序を決定し、 上記割り当て順序に従って上記複数のプログラムをそれ
    ぞれ上記複数のプロセッサユニットの一つに順次割り当
    てるステップを有し、 上記割り当てるステップは、次に割り当てるべきプログ
    ラムのリソース消費量と上記複数のプロセッサユニット
    が有するリソース余力とからそのプログラムを割り当て
    るべき一つのプロセッサユニットを選択するステップを
    有する。
  41. 【請求項41】上記割り当て順序を決定するステップ
    は、上記複数のプログラムのそれぞれが消費する複数種
    類リソースのそれぞれの消費量に依存して、上記割り当
    て順序を決定するステップを有する請求項40記載の割
    り当て方法。
  42. 【請求項42】上記複数種類リソースのそれぞれの消費
    量から上記割り当て順序を決定する上記ステップは、 上記複数のプログラムの各々が消費する複数種類リソー
    スのそれぞれの消費量とそれぞれの種類ごとに定めた重
    みとの積和の値に依存して、そのプログラムの総合実効
    リソース消費量を決定し、 総合実効リソース消費量がより大きなプログラムがより
    先に割り当てられるように、該複数のプログラムに対し
    て決定された複数の総合実効リソース消費量の大きさに
    依存して、該複数のプログラムの割り当て順序を決定す
    るステップからなる請求項41記載の割り当て方法。
  43. 【請求項43】一つのプロセッサユニットを選択する上
    記ステップは、上記次に割り当てるべきプログラムが消
    費する複数の種類のリソースのそれぞれの消費量と該複
    数のプロセッサユニットのそれぞれが有する該複数の種
    類のリソースのそれぞれのリソース余力とに基づいて、
    そのプログラムを割り当てるべき一つのプロセッサユニ
    ットを選択するステップを有する請求項40記載の割り
    当て方法。
  44. 【請求項44】上記プロセッサユニットを選択するステ
    ップは、 上記次に割り当てるべきプログラムが消費する複数の種
    類のリソースの内、そのプログラムの消費量が実効的に
    最大であるリソースの種別を判別し、 上記複数のプロセッサユニットの内、上記判別された種
    別のリソースのリソース余力が最大であるプロセッサユ
    ニットを選択するステップを有する請求項43記載の割
    り当て方法。
  45. 【請求項45】上記実効的に最大の消費量のリソースの
    種別を判別する上記ステップは、 上記プログラムの上記複数の種類のリソースのそれぞれ
    の消費量とそれぞれの種類ごとに定められた重みとの積
    の値により、それぞれのリソースの、個別実効消費量を
    生成し、 該複数の種類に対して生成された複数の実効個別消費量
    の内、値が最大である種類を選択するステップを有する
    請求項44記載の割り当て方法。
  46. 【請求項46】上記次に割り当てるべきプログラムが複
    数のプロセスとして実行されるべきプログラムであると
    きには、上記次に割り当てられるべきプログラムに対し
    て、それらのプロセスの数だけ、上記プロセッサユニッ
    トの割り当てるステップを順次実行する請求項42記載
    の割り当て方法。
  47. 【請求項47】計算機システムに属する複数のプロセッ
    サユニットに複数のプログラムを割り当てる方法であっ
    て、上記計算機システムにより実行される複数のステッ
    プからなり、該複数のステップは、 リソース消費量が大きなプログラムがより先に割り当て
    られるように、複数のプログラムのリソース消費量に依
    存して、それらのプログラムをプロセッサユニットに割
    り当てる順序を決定し、 上記割り当て順序に従って上記複数のプログラムをそれ
    ぞれ上記複数のプロセッサユニットの一つに順次割り当
    てるステップを有し、 上記割り当て順序を決定するステップは、 上記複数のプログラムの各々が消費する複数種類リソー
    スのそれぞれの消費量とそれぞれの種類ごとに定めた重
    みとの積和の値に依存して、そのプログラムの総合実効
    リソース消費量を決定し、 総合実効リソース消費量がより大きなプログラムがより
    先に割り当てられるように、該複数のプログラムに対し
    て決定された複数の総合実効リソース消費量の大きさに
    依存して、該複数のプログラムの割り当て順序を決定す
    るステップを有するもの。
  48. 【請求項48】計算機システムに属する複数のプロセッ
    サユニットに複数のプログラムを割り当てる方法であっ
    て、上記計算機システムにより実行されるステップから
    なり、該ステップは、 上記複数のプログラムをそれぞれ上記複数のプロセッサ
    ユニットの一つに順次割り当てるステップを有し、 上記割り当てるステップは、 次に割り当てるべきプログラムのリソース消費量と上記
    複数のプロセッサユニットが有するリソース余力とから
    そのプログラムを割り当てるべき一つのプロセッサユニ
    ットを選択するステップを有し、 上記プロセッサユニットを選択するステップは、 上記次に割り当てるべきプログラムが消費する複数の種
    類のリソースの内、そのプログラムの消費量が実効的に
    最大であるリソースの種別を判別し、 上記複数のプロセッサユニットの内、上記判別された種
    別のリソースのリソース余力が最大であるプロセッサユ
    ニットを選択するステップを有する。
  49. 【請求項49】上記実効的に最大の消費量のリソースの
    種別を判別する上記ステップは、 上記プログラムの上記複数の種類のリソースのそれぞれ
    の消費量とそれぞれの種類ごとに定められた重みとの積
    の値により、それぞれのリソースの、個別実効消費量を
    生成し、 該複数の種類に対して生成された複数の実効個別消費量
    の内、値が最大である種類を選択するステップを有する
    請求項48記載の割り当て方法。
  50. 【請求項50】上記複数のプログラムは、請求項1に記
    載の上記複数のシミュレーションプログラムと請求項1
    に記載の上記プログラム間データ通信支援プログラムを
    含み、 上記決定ステップと上記割り当てステップが上記複数の
    シミュレーションプログラムの各々を少なくとも一つ以
    上のプロセスとして実行するために、各シミュレーショ
    ンプログラムを少なくとも一つ以上のプロセッサに割り
    当てるように実行され、 上記方法は、 上記プログラム間データ通信支援プログラムを、上記複
    数のシミュレーションプログラムのいずれかが割り当て
    られた複数のプロセッサユニットの各々にプロセスとし
    て実行されるように割り当て、 上記複数のシミュレーションプログラムと上記プログラ
    ム間データ通信支援プログラムが割り当てられた後に、
    上記請求項1記載の複数のステップを実行するステップ
    をさらに有する請求項40記載の割り当て方法。
JP34230596A 1995-12-25 1996-12-24 シミュレーションプログラムの実行支援方法およびプログラム割り当て方法 Pending JPH10154136A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP34230596A JPH10154136A (ja) 1995-12-25 1996-12-24 シミュレーションプログラムの実行支援方法およびプログラム割り当て方法

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
JP33643095 1995-12-25
JP14258796 1996-06-05
JP8-142587 1996-09-30
JP7-336430 1996-09-30
JP25826696 1996-09-30
JP8-258266 1996-09-30
JP34230596A JPH10154136A (ja) 1995-12-25 1996-12-24 シミュレーションプログラムの実行支援方法およびプログラム割り当て方法

Publications (1)

Publication Number Publication Date
JPH10154136A true JPH10154136A (ja) 1998-06-09

Family

ID=27472461

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34230596A Pending JPH10154136A (ja) 1995-12-25 1996-12-24 シミュレーションプログラムの実行支援方法およびプログラム割り当て方法

Country Status (1)

Country Link
JP (1) JPH10154136A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004510219A (ja) * 2000-06-19 2004-04-02 ピー.シー.クロース・アンド・アソシエイツ・インコーポレーテッド 分散型シミュレーション
WO2011058657A1 (ja) 2009-11-16 2011-05-19 富士通株式会社 並列計算装置、並列計算方法、および並列計算プログラム
JP2011244623A (ja) * 2010-05-19 2011-12-01 Sumitomo Heavy Ind Ltd 連成解析システム、解析システム、および連成解析方法
JP2013134648A (ja) * 2011-12-27 2013-07-08 Kawasaki Heavy Ind Ltd 分散シミュレーション装置
JP2018085686A (ja) * 2016-11-25 2018-05-31 株式会社デンソー 車両用制御システム
JP2020021172A (ja) * 2018-07-30 2020-02-06 日本電気株式会社 データ管理装置、データ管理方法及びプログラム、並びに、シミュレーションシステム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004510219A (ja) * 2000-06-19 2004-04-02 ピー.シー.クロース・アンド・アソシエイツ・インコーポレーテッド 分散型シミュレーション
WO2011058657A1 (ja) 2009-11-16 2011-05-19 富士通株式会社 並列計算装置、並列計算方法、および並列計算プログラム
US8549261B2 (en) 2009-11-16 2013-10-01 Fujitsu Limited Parallel computing apparatus and parallel computing method
JP2011244623A (ja) * 2010-05-19 2011-12-01 Sumitomo Heavy Ind Ltd 連成解析システム、解析システム、および連成解析方法
JP2013134648A (ja) * 2011-12-27 2013-07-08 Kawasaki Heavy Ind Ltd 分散シミュレーション装置
JP2018085686A (ja) * 2016-11-25 2018-05-31 株式会社デンソー 車両用制御システム
JP2020021172A (ja) * 2018-07-30 2020-02-06 日本電気株式会社 データ管理装置、データ管理方法及びプログラム、並びに、シミュレーションシステム

Similar Documents

Publication Publication Date Title
US5963731A (en) Method of assisting execution of plural simulation programs for coupled simulation
CN110321695B (zh) 大数据系统密码服务方法、装置
US9544289B2 (en) Method and system for identity-based authentication of virtual machines
JP4041497B2 (ja) 少なくとも1つの非トラステッド・コンピュータにおいて計算の実行を開始する方法
JP4191927B2 (ja) 記憶ネットワーク上においてネットワーク・デバイスを識別する方法および装置
US20130205028A1 (en) Elastic, Massively Parallel Processing Data Warehouse
WO2014069827A1 (en) System and method for providing data analysis service in a cloud environment
US11861406B2 (en) Dynamic microservices allocation mechanism
Van Meter et al. Derived virtual devices: A secure distributed file system mechanism
JPH11338804A (ja) ネットワーク構成管理対象アクセスシステム及び方法
Dannenberg et al. A butler process for resource sharing on spice machines
KR102008095B1 (ko) 프라이버시-어웨어 그리드 기반의 공간 크라우드소싱 태스크 관리 방법 및 시스템
JP6683386B2 (ja) データ転送システム、及びデータ転送方法
JPH10154136A (ja) シミュレーションプログラムの実行支援方法およびプログラム割り当て方法
JPH07244644A (ja) エージェント管理システム
KR20130022093A (ko) 클라우드 컴퓨팅 시스템의 압축 이미지 파일 관리 장치 및 방법
Sharma et al. A review of scheduling algorithms in Hadoop
CN114969851A (zh) 一种基于fpga的数据处理方法、装置、设备及介质
Nguyen et al. Towards a cross-domain MapReduce framework
CN114338124A (zh) 云密码计算服务的管理方法、系统、电子设备及存储介质
JP2007293639A (ja) アクセス制御方法、アクセス制御方法を用いた機器及びシステム
Manivannane et al. A Cloud Resource Scheduling Framework for big data stream and analytics in Cloud Environment
KR102393183B1 (ko) 기업 서버의 로그 데이터 관리 및 처리 방법, 장치 및 시스템
KR102024846B1 (ko) 파일 시스템 프로그램 및 이를 이용한 데이터 센터 제어 방법
KR101319465B1 (ko) 엔스크린용 파일 제공 시스템

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070227

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070703