以下、実施形態について、図面を参照しながら詳細に説明する。まず、図1〜2を参照して第1実施形態について説明する。その後、図3〜20を参照して第2実施形態について説明し、さらに、図21〜23を参照して第3実施形態について説明する。最後にその他の実施形態についても説明する。
図1は、第1実施形態の割り当て処理のフローチャートである。図1の割り当て処理は、1台のコンピュータにより実行されてもよいし、複数台のコンピュータにより実行されてもよい。しかし、以下では説明の簡単化のため、単に「コンピュータ」と書く。
さて、ある種の解析は、時間領域での解析単位ごとに同期する2台以上の演算装置(processing devices)によって実行される。この種の解析の例は、例えば、並列FDTD法(parallel finite-difference time-domain method)による解析である。
並列FDTD法における1ステップ時間に関する電界の計算と、電界のデータの送受信とを含む処理は、時間領域での解析単位の一例である。演算装置同士は、解析単位ごとに(例えば、1解析単位における、電界のデータの送受信の開始の時点において)同期する。同様に、並列FDTD法における1ステップ時間に関する磁界の計算と、磁界のデータの送受信とを含む処理も、時間領域での解析単位の一例である。1ステップ時間は、後述の式(1)および(2)では、「Δt」と表記されている。
なお、演算装置は、「PE(processing element)」とも呼ばれる。
第1の台数の演算装置が存在するとき、これら第1の台数の演算装置のうちの2台以上により、解析が実行される。また、解析の対象として、ある空間的な領域が指定される。以下では、指定された空間的な領域を「解析対象領域」ともいう。
解析対象領域は、複数のセルに分割される。各セルは、換言すれば、解析対象領域内の部分領域である。複数のセルの大きさは同一でもよいし、不均一であってもよい。また、解析対象領域およびセルは、3次元であってもよいし、2次元または1次元であってもよい。
図1のステップS1では、コンピュータが、複数のセルの各々について、当該セルの位置に応じた処理によって生じる、位置依存の処理負荷(position-dependent processing load)を見積もる。なお、以下では説明の簡単化のため、あるセルについての処理を実行することによって演算装置に生じる処理負荷を、単に「セルの処理負荷」あるいは「セルの位置依存の処理負荷」などとも言う。
例えば、解析の結果を出力する対象として、解析対象領域内で、ある領域(以下では「出力領域」という)がユーザにより指定される場合がある。出力領域に含まれるセルの位置依存の処理負荷をステップS1で見積もる際、コンピュータは、データを出力する出力処理に起因する出力負荷を、位置依存の処理負荷に含める。例えば、出力処理は、演算装置がネットワークを介してデータを不揮発性の記憶装置に書き込む処理であってもよい。
また、複数のセルのうち、1つ以上のセルに関して、位置に固有の1つ以上の入力パラメタが指定される場合もあり得る。入力パラメタが指定された各セルの位置依存の処理負荷をステップS1で見積もる際、コンピュータは、1つ以上の入力パラメタを読み込む読み込み処理に起因する読み込み負荷を、位置依存の処理負荷に含める。例えば、読み込み処理は、所定のファイルから(またはメモリ上のある領域から)、演算装置が1つ以上の入力パラメタを読み込む処理であってもよい。また、上記の1つ以上の入力パラメタは、以下の2種類のパラメタの少なくとも一方を含んでいてもよい。
・解析対象領域内に位置する波源(電流源または磁流源)を定義するパラメタ。
・解析対象領域内に位置する回路素子の特性を定義するパラメタ。例えば、抵抗値、インダクタンス、コンダクタンスなどのパラメタ。
また、ステップS1でコンピュータは、2つの異なる媒質の境界に接するセルの位置依存の処理負荷を、1つの媒質の内部に位置するセルの位置依存の処理負荷よりも大きく見積もることが好ましい。また、並列FDTD法による解析が行われる場合、ステップS1でコンピュータは、吸収境界(absorbing boundary)に接するセルの位置依存の処理負荷を、吸収境界に接しないセルの位置依存の処理負荷よりも大きく見積もことが好ましい。
なお、ステップS1での見積もりは、解析手順の具体的実装に基づいて行われることが望ましい。
例えば、並列FDTD法による解析が行われるとする。並列FDTD法は、マクスウェルの方程式(Maxwell's equations)に基づく解析手法である。並列FDTD法による解析を行うシステム同士の間で、具体的な実装は異なり得る。例えば、あるシステム中の演算装置と他のシステム中の演算装置のハードウェア構成は異なり得る。また、演算装置間のネットワークトポロジも、システムごとに異なり得る。よって、「マクスウェルの方程式に基づく解析を、具体的にどのようにプログラミングして実装するのか」という点においても、個々のシステム同士は異なり得る。
したがって、ステップS1での見積もりは、システムの実装に基づいて行われることが望ましい。ステップS1での見積もりは、例えば、システムの実装に依存する以下のような種々の要因に基づいて行われることが望ましい。
・加算や乗算などの演算の種類ごとの、演算の実行回数。
・メモリアクセスの回数。
・1つの数値のデータサイズ。
・演算装置同士の間で送受信される数値データの量。
さて、ステップS1での見積もりの後、ステップS2でコンピュータは、セルの演算装置への割り当て(assignment)を行う。具体的には、コンピュータは、ある基準が満たされるという条件下で、第2の台数の演算装置に複数のセルを割り当てる。換言すれば、コンピュータは、上記条件下で、第2の台数の演算装置に複数のセルを分配(distribute)する。ステップS2の割り当てにより、第2の台数の演算装置の各々には、複数のセルのうちの1つ以上が割り当てられる。
ここで、第2の台数の演算装置は、第1の台数の演算装置の一部または全部である。例えば、ある種の環境においては、何台かの演算装置が他の解析に利用されている可能性があり得る。よって、第1の台数の演算装置のすべてが常に利用可能だとは限らない。また、解析対象領域の大きさや、ユーザが希望する解析精度など、何らかの要因によっては、第1の台数の演算装置をすべて使わなくても、十分に高速な解析が可能な場合もあり得る。よって、コンピュータは、適宜に第2の台数を決めてよい。
上記の「ある基準」は、具体的には、以下に述べる「合計処理時間」についての、演算装置間での均等性に関して決められた基準である。解析に使われるある演算装置の「合計処理時間」は、当該演算装置が、複数のセルの中から当該演算装置に割り当てられる1つ以上のセルの各々の位置に応じた処理を実行するのにかかる時間を含む。「合計処理時間」はさらに、当該演算装置が、解析に使われる他の1台以上の演算装置との間でデータを送受信するのにかかる時間を含んでもよい。
なお、上記のとおり、解析に使われる演算装置同士は、時間領域での解析単位ごとに同期する。したがって、解析は、複数の解析単位の連なりである。
合計処理時間は、解析全体に関する時間であってもよい。あるいは、合計処理時間は、所定数の解析単位あたりの時間であってもよい。所定数は、例えば1でもよいし、2以上でもよい。
例えば、所定数が2であってもよい。例えば、並列FDTD法における1ステップ時間に関する一連の処理は、2つの解析単位に相当する。並列FDTD法に関して、以下の時間を含むような合計処理時間が、2つの解析単位あたりの合計処理時間として見積もられてもよい(後述の図2も参照)。
・1ステップ時間に関する電界の計算を実行するのにかかる時間。
・電界の計算後、他の1台以上の演算装置との間でデータを送受信するのにかかる時間。
・1ステップ時間に関する磁界の計算を実行するのにかかる時間。
・磁界の計算後、他の1台以上の演算装置との間でデータを送受信するのにかかる時間。
また、ステップS1に関して説明したように、演算装置に割り当てられるセルの位置に応じて、演算装置は、出力処理を行う場合もあり得る。この場合、合計処理時間には、出力処理にかかる時間を含む。また、演算装置が読み取り処理を行う場合もあり得る。この場合、合計処理時間は、読み取り処理にかかる時間を含む。さらに、電界または磁界の計算にかかる1セルあたりの時間も、1つの媒質の内部に位置するセルと、2つの媒質の境界に接するセルとで異なり得る。もちろん、ある演算装置の合計処理時間は、当該演算装置に割り当てられるセルの数にも依存するし、当該演算装置の性能(例えばクロック周波数、メモリスループットなど)にも依存する。
コンピュータは、ステップS1で見積もった位置依存の処理負荷に基づいて、ステップS2で合計処理時間を適切に算出することができる。また、コンピュータは、「上記基準が満たされるか否か」について、算出した合計処理時間に基づいてステップS2で適切に判断することができる。よって、コンピュータは、上記基準が満たされるという条件下での割り当てを実現することができる。
ステップS2の処理は、より具体的には、暫定的な割り当てを行う処理と、暫定的な割り当てのもとで上記基準が満たされるか否かを判断する処理を含んでいてもよい。
暫定的な割り当てのもとで上記基準が満たされない場合、コンピュータは、暫定的な割り当てをやり直す。上記基準が満たされるような割り当てが見つかったら、コンピュータは、見つかった割り当てを実際に採用する。
例えば、コンピュータは、ステップS2において(あるいはステップS2の実行前に)、第2の台数(つまり解析を実行する演算装置の数)を決定してもよい。そして、コンピュータは、ステップS2において、決定した第2の台数を固定して、その固定した第2の台数に関して、上記のような暫定的な割り当てと判断を実行してもよい。つまり、ステップS2は、以下のような処理を含んでいてもよい。
・決定した第2の台数の演算装置に複数のセルを暫定的に割り当てる処理。
・暫定的な割り当てのもとで、第2の台数の演算装置間で上記基準が満たされるか否かを判断する処理。
・暫定的な割り当てのもとでは第2の台数の演算装置間で基準が満たされない場合には、第2の台数の演算装置に、複数のセルを暫定的に割り当て直す処理。より具体的には、位置依存の処理負荷が複数のセルの中で相対的に重い特定のグループに属するセルを割り当てる演算装置の台数である第3の台数を増やし、増やした第3の台数に応じて、暫定的な割り当てをやり直す処理。
なお、コンピュータが第2の台数を決定するためのアルゴリズムは、特に限定されない。コンピュータは、例えば以下のような要因のうち少なくとも1つに応じて第2の台数を決定してもよいし、他の要因に応じて第2の台数を決定してもよい。
・第1の台数の演算装置のうち、他の解析に利用中(または他の解析用に予約済み)の演算装置の台数。
・第1の台数の演算装置を共用するユーザの人数。
・解析対象領域および/または出力領域の大きさ。
・ユーザが指定する解析精度。
・解析対象領域に含まれる解析対象物の形状および/または材質。
・解析対象物中の回路の構成。
・波源の数および/または配置。
また、上記基準は、より具体的には、「決定された第2の台数の演算装置の間で、合計処理時間同士の比、差、または比と差の双方が、決められた許容範囲内に収まる」という基準であってもよい。許容範囲は、具体的には、1つ以上の閾値により予め定義されていてもよい。
また、上記の特定のグループは、具体的には、以下のいずれかの集合であってもよいし、以下の集合のうち2つ以上の和集合(union)であってもよい。
・出力領域に含まれるセルの集合。
・位置に固有の1つ以上の入力パラメタが指定されたセルの集合。
・2つの媒質の境界に接するセルの集合。
・吸収境界に接するセルの集合。
コンピュータは、以下の2つの条件をともに満たす演算装置に、特定のグループに属するセルの少なくとも一部を新たに割り当てることにより、第3の台数(すなわち、特定のグループに属するセルを割り当てる演算装置の台数)を増やしてもよい。
・特定のグループに属するセルの少なくとも一部が暫定的に割り当てられた演算装置と、第1の台数の演算装置間のネットワークトポロジにおいて、隣接している。
・特定のグループに属するどのセルも暫定的に割り当てられていない。
コンピュータは、以上のようにして増やした第3の台数に応じて、上記のとおり暫定的な割り当てをやり直す。コンピュータは、以下のような再割り当てを行うことで、上記基準が満たされるようにしてもよい。
・コンピュータは、特定のグループに属する1つ以上のセルを含む第1の個数のセルを、第2の台数の演算装置のうちの第1の演算装置に割り当てる。
・コンピュータは、第1の個数より多い第2の個数の、特定のグループには含まれないセルのみを、第2の台数の演算装置のうちの第2の演算装置に割り当てる。
ところで、ステップS2が実行される間、上記のように第2の台数が固定されていてもよいが、コンピュータは、ステップS2の実行中に第2の台数を動的に変更してもよい。つまり、ステップS2は、以下のような処理を含んでいてもよい。
・第2の台数を暫定的に決める処理。
・暫定的に決めた第2の台数の演算装置に、複数のセルを暫定的に割り当てる処理。
・暫定的な割り当てのもとで、第2の台数の演算装置間で上記基準が満たされるか否かを判断する処理。
・暫定的な割り当てのもとでは第2の台数の演算装置間で基準が満たされない場合には、第2の台数を増やす(つまり第2の台数を暫定的に決め直す)処理。
・増やした第2の台数の演算装置に、複数のセルを暫定的に割り当て直す処理。
より具体的には、コンピュータは、増やした第2の台数の演算装置に複数のセルを暫定的に割り当て直す際に、特定のグループに属するセルが暫定的に割り当てられる演算装置の台数を、増やす。コンピュータは、上記のような割り当て直しを1回以上繰り返すことで、基準が満たされるようにすることができる。
なお、ここでの「特定のグループ」は、第2の台数がステップS2の実行中に固定される上記の例における「特定のグループ」と同様である。つまり、「特定のグループ」は、複数のセルの中で位置依存の処理負荷が他のセルよりも相対的に重いセルのグループである。
コンピュータは、増やした第2の台数の演算装置へのセルの再割り当てにおいて、具体的には以下のように動作してもよい。それにより、コンピュータは、基準が満たされるようにしてもよい。
・コンピュータは、特定のグループに属する1つ以上のセルを含む第1の個数のセルを、増やした第2の台数の演算装置のうちの第1の演算装置に割り当てる。
・コンピュータは、第1の個数より多い第2の個数の、特定のグループには含まれないセルのみを、増やした第2の台数の演算装置のうちの第2の演算装置に割り当てる。
また、第2の台数がステップS2の実行中に動的に変更される場合、上記基準は、「暫定的に決められた第2の台数の演算装置の間で、合計処理時間同士の比、差、または比と差の双方が、決められた許容範囲内に収まる」という基準であってもよい。許容範囲は、具体的には、1つ以上の閾値により予め定義されていてもよい。
第2の台数が固定であるにせよ可変であるにせよ、ステップS2でコンピュータは、位置依存の処理負荷が重いセルが割り当てられる演算装置には相対的に少ない数のセルを割り当てる。それにより、コンピュータは、上記基準が満たされるようにする。
位置依存の処理負荷が重いセルの例は、出力領域に含まれるセルである。よって、コンピュータは、ステップS2において、例えば以下のような割り当てを行ってもよい。
・出力領域に含まれる1つ以上のセルを含む第1の個数のセルを、第2の台数の演算装置のうちの第1の演算装置に割り当てる。
・第1の個数より多い第2の個数の、出力領域には含まれないセルのみを、第2の台数の演算装置のうちの第2の演算装置に割り当てる。
なお、位置依存の処理負荷が重いセルは、出力領域に含まれるセルだけとは限らない。上記の特定のグループに属するセルの位置依存の処理負荷は重い。よって、コンピュータは、例えば以下のような割り当てを行ってもよい。
・位置に固有の1つ以上の入力パラメタが指定されたセルを含む第1の個数のセルを、第2の台数の演算装置のうちの第1の演算装置に割り当てる。
・第1の個数より多い第2の個数の、入力パラメタが指定されていないセルのみを、第2の台数の演算装置のうちの第2の演算装置に割り当てる。
以上のように、ステップS2での割り当ての具体的方法には様々なものがある。なお、まれに、上記基準を満たすような割り当てが見つからない場合もあり得る。その場合、ステップS2でコンピュータは、選択可能な割り当ての中から、合計処理時間についての均等性が最も高い割り当てを選ぶことが望ましい。
ステップS2での割り当てを終えると、コンピュータは図1の割り当て処理を終了する。一方、ステップS2での割り当てにしたがって、第2の台数の演算装置が解析を実行する。こうして実行される解析は、例えば、第2の台数の演算装置に、複数のセルを、セルの個数という観点において均等に割り当てた場合の解析と比べて、短時間で終了する。すなわち、第1実施形態によれば、解析が高速化される。
なぜなら、ステップS2の割り当ては、「合計処理時間についての演算装置間での均等性に関して決められた基準が満たされる」という条件下で行われるからである。よって、ステップS2によって決められた割り当てによれば、第2の台数の演算装置の間での合計処理時間の均等性は高い。
つまり、第2の台数の演算装置の間で、合計処理時間同士が少しは異なるかもしれないが、合計処理時間同士の差はそれほど大きくない。よって、既に処理を終えた演算装置が、同期のために、まだ処理を実行中の他の演算装置が処理を終了するまで待つ場合でも、待ち時間はそれほど長くない。第1実施形態によれば、同期ごとの無駄な待ち時間の削減により、解析全体が高速化される。
ところで、以上説明した図1の処理を行うコンピュータは、例えばステップS1のように見積もりを行う見積もり手段と、例えばステップS2のように割り当てを行う割り当て手段とを備える情報処理装置の一例である。また、当該情報処理装置は、第1の台数の演算装置と当該情報処理装置とを含む解析システムの一部として使われてもよい。なお、第1の台数の演算装置の各々は、少なくとも1台の他の演算装置と直接的または間接的に接続される。また、情報処理装置は、第1の台数の演算装置とネットワークを介して接続される。
以上のような情報処理装置は、物理的には、1台のコンピュータであってもよいし、2台以上の装置(例えば後述の図3における制御装置120とホスト端末150)により実現されてもよい。また、後述の図3には、第1の台数の演算装置の具体例として、PE140−1〜140−Pが例示されている(1<P)。
さて、図2は、同期のための待ち時間のせいで解析にかかる時間が長くなる問題を説明する図である。以下では説明の便宜上、図1に関して述べた「解析」が、具体的には並列FDTD法による解析であるものとする。また、上記のとおり、演算装置は「PE」とも呼ばれる。以下では、主に「PE」という名称を用いて説明を行う。
上記のように、図1の割り当て処理によれば解析が高速化されるが、図2には、図1の割り当て処理が行われない場合に起き得る問題が例示されている。
図2の例E1は、どのPEも出力処理を行わない場合の例である。紙幅の都合上、図2には3台のPE(以下、「PE#1」〜「PE#3」と表記する)それぞれの合計処理時間のみが例示されているが、解析には4台以上のPEが使われてもよい。
周知のように、マクスウェルの方程式を時間領域で離散化することで、式(1)と(2)が得られる。FDTD法は、式(1)と(2)に基づく。具体的には、式(1)と(2)を空間領域で離散化することにより、Yeeセルを用いた蛙跳び(leap-frog)アルゴリズムによる解析が可能となる。
なお、式(1)と(2)において、ベクトルEは電界を表す3次元ベクトルであり、ベクトルHは磁界を表す3次元ベクトルである。また、Δtは「ステップ時間」と呼ばれる単位時間を示す。ステップ時間Δtは、時間領域での離散化の単位である。そして、σは導電率を示し、εは誘電率を示し、μは透磁率を示す。添え字(superscript)の「n」や「n−1」等は、ステップ時間を単位とする時刻を示す。例えば、「n−1」という添え字のついたベクトルEは、t=(n−1)・Δtなる時刻tにおける電界を表す。なお、nは0以上の整数である。
式(1)から分かるように、ある時刻(t=n・Δt)の電界は、過去の時刻(t=(n−1)・Δt)の電界と、過去の時刻(t=(n−1/2)・Δt)の磁界に基づいて、計算される。また、式(2)から分かるように、ある時刻(t=(n+1/2)・Δt)の磁界は、過去の時刻(t=(n−1/2)・Δt)の磁界と、過去の時刻(t=n・Δt)の電界に基づいて計算される。
並列FDTD法では、複数のPEが使われる。よって、並列FDTD法では、計算された電界のデータがPE間で送受信され、計算された磁界のデータもPE間で送受信される。具体的には、各PEは、1ステップ時間に関して、電界の計算、電界のデータの送受信、磁界の計算、および、磁界のデータの送受信を行う。図2には、PE#1〜PE#3それぞれについて、1ステップ時間に関する合計処理時間が例示されている。
なお、あるPEがどのPEに電界のデータを送信し、どのPEから電界のデータを受信するかということは、並列FDTD解析の具体的実装に応じて異なり得る。同様に、あるPEがどのPEに磁界のデータを送信し、どのPEから磁界のデータを受信するかということも、並列FDTD解析の具体的実装に応じて異なり得る。
例えば、あるPEが担当するセルの範囲と、他のPEが担当するセルの範囲は、部分的にオーバラップしていてもよい。具体的実装の違いの一例は、例えば、オーバラップの有無である。具体的実装の違いの他の例は、例えば、PE間のネットワークトポロジにおける違いである(後述の図4も参照)。
さて、例E1のようにどのPEも出力処理を行わない場合、仮にセルの数に基づく単純な割り当てが行われたとしても、同期のための待ち時間は比較的短い。図2では、待ち時間が斜線パターンで示されている。なお、「セルの数に基づく単純な割り当て」とは、以下のような割り当て方法のことである。
・どのPEの性能も等しい場合は、解析対象領域に含まれるセルの個数をPEの台数で割ることにより、各PEに均等な数のセルを割り当てる方法。
・PE間に性能差がある場合は、例えば、性能に応じてセルをPE間に比例配分することにより、各PEに性能に応じた数のセルを割り当てる方法。
もちろん、割り算の端数の影響や、その他の要因により、例E1に示すように、例えばPE#3が、PE#1やPE#2よりも早く電界や磁界の計算を終える可能性もある。この場合、PE#3は、同期のために、PE#1とPE#2が計算を終えるのを待つ。つまり、PE#1〜PE#3のすべてが電界の計算を終えてから、PE間で電界のデータの送受信が行われる。同様に、PE#1〜PE#3のすべてが磁界の計算を終えてから、PE間で磁界のデータの送受信が行われる。
しかし、どのPEも出力処理を行わない場合には、例E1に示すように、1ステップ時間に関するPE間での合計処理時間の差は短い。つまり、仮に上記のような単純な割り当て方法が採用されたとしても、どのPEも出力処理を行わない場合には、待ち時間は短い。換言すれば、どのPEも出力処理を行わない場合には、セルの処理負荷の位置依存性の影響は小さいから、上記のようなセルの数に基づく単純な割り当て方法によって、合計処理時間の均一性を十分に高めることが可能である。
なお、すべてのPEが出力処理を行う場合にも、例E1と同様に、単純な割り当て方法によって、合計処理時間の均一性を十分に高めることが可能である。
ところが、例E2に示すように、あるPE(具体的には例えばPE#1)だけが出力処理を行い、他のPE(具体的には例えばPE#2とPE#3)が出力処理を行わない場合もあり得る。なお、図2では出力処理が行われている時間が黒く塗りつぶされている。
出力処理は、例E2に示すように、電界の計算の途中や磁界の計算の途中に行われてもよい。あるいは、出力処理は、電界の計算の開始前または終了後に行われてもよい。同様に、出力処理は、磁界の計算の開始前または終了後に行われてもよい。
また、例E2に示すように、1ステップ時間に関する処理あたり、2回以上に分散して出力処理が行われてもよい。逆に、1ステップ時間に関する処理あたり、1回にまとめて出力処理が行われてもよい。
また、例えば「300ステップ時間ごとに1回、計算結果を出力せよ」などとユーザが指定してもよい。この場合、出力処理は、各々が1ステップ時間に関する処理であるような300回の処理のうちの、1回の処理の中にのみ含められてもよい。あるいは、出力処理は、各々が1ステップ時間に関する処理であるような複数回(例えば300回でもよいし、50回などでもよい)の処理の中に、分散されていてもよい。
以上のように、どのように出力処理を時間的に分散させるかは、実施形態に応じて様々であってよい。しかし、いずれにしろ、「解析全体としては、1ステップ時間に関する処理あたりに、平均的にPE#1が出力処理を行うのにかかる時間は、出力処理の分散のさせ方によらない」と見なせる。よって、以下では出力処理の分散のさせ方についての議論は省略する。
さて、例E2のように、特定の1台または複数台のPEのみが出力処理を行う場合、上記のようなセルの数(および各PEの処理性能)に基づく単純な割り当て方法が採用されると、PE間で合計処理時間が大きく異なってしまう。つまり、無駄な待ち時間が増えてしまう。その結果、解析全体にかかる時間も不必要に長くなってしまう。
このような解析時間の長期化の問題は、発明者が研究・開発を行う過程で新たに気づいた問題である。よって、以下ではこの問題の背景について詳しく説明する。
並列FDTD法は、電磁界解析や光学解析などのために広く用いられている。近年では、並列FDTD法で使われるセルの数も増大する傾向にある。
例えば、誤差の低減(換言すれば解析精度の向上)のためには、解析対象領域をより小さなセルに分割することが有益である。よって、ユーザが求める解析精度が上がるにつれ、セルの数も増大する。
一方、シミュレータが扱うことのできるセルの数には上限があることも多い。例えば、上限が数千万セル程度のシミュレータも多い。しかし、ユーザは、上限を超えるような多数のセルを含むモデルを解析したい場合がある。
この場合、ユーザは、モデルを複数の部分モデルに分割する。分割は、各部分モデルのセル数が上限以内になるように、適切に行われる。すると、シミュレータは、各部分モデルに対して解析を実行することができる。ユーザは、各部分モデルの解析結果を統合することで、最終的な解析結果を得る。
しかし、分割なしにモデル全体を1回で解析することができれば、大変便利である。つまり、非常に多数の(例えば、数億〜百億程度の)セルを含むモデルを、分割せずに1回で解析することの可能なシミュレータが望ましい。
また、FDTD法では、Yee格子のサイズ(つまりセルの1辺の長さ)を小さくすることで、解析誤差を減らすことができる。例えば、Yee格子のサイズが、解析対象の電波の波長の1/20の場合、誤差を0.3%以下に抑えることができる。
よって、高周波数帯の電磁波(つまり波長の短い電磁波)の解析を精度よく行うには、波長に応じてセルを適切に微細化することが望ましい。近年では、高周波帯の電磁波を利用する製品(例えば、携帯電話、スマートフォンなど)も増加しているので、高周波帯の電磁波について解析したいユーザも多い。短波長の電磁波に合わせてセルのサイズが小さくなれば、当然、セルの数は増える。
以上のように、様々な要因により、解析対象領域内のセルの数は増大する傾向にある。数年後には、例えば百億個程度のセルを含むモデルの解析が一般的になる可能性すらある。なお、セルの数が百億個程度であれば、PEの数もセルの数に応じて増やすことが望ましい。例えば、数百台のPC(Personal Computer)を有するPCクラスタが解析に使われてもよいし、もちろん、スーパコンピュータが使われてもよい。
ところで、出力領域は、解析の目的や解析の条件に応じて、ユーザによって任意に指定される。解析対象領域内で指定される出力領域の数も、1箇所だけとは限らず、2箇所以上の出力領域が指定される可能性もある。また、出力領域の広さも、ユーザによって任意に指定され得る。
よって、出力されるデータの量も、ユーザの指定に応じて異なる。しかし、大まかな傾向として、以下のことが成り立つ。すなわち、解析対象(例えば、PC、スマートフォン、携帯電話、プリント配線基板など)が、より微細なセルに分割されるほど、出力領域に含まれるセルの数も増える傾向にある。例えば、解析対象領域が百億個程度のセルに分割される場合、出力されるデータの量も、TB(テラバイト)のオーダになる可能性がある。
また、解析対象の電磁波の周波数が高いほど、出力の時間的インターバルも短くすることが望ましい。例えば、数GHz(ギガヘルツ)程度以上の高周波数帯域の電磁波に関する解析では、出力の時間的インターバルの好ましい長さは、大変短い。ある一定の長さの期間に渡る経時的変化がシミュレートされる場合、出力の時間的インターバルが短いほど、出力の回数は多い。したがって、解析対象の電磁波の周波数が高いほど、出力されるデータの量も多い。
以上のとおり、セルの微細化や、解析対象の電磁波の周波数などに起因して、出力されるデータ量は厖大になり得る。そして、並列FDTD法では、空間的に連続する複数のセルが1つのPEに割り当てられることが一般的である。よって、出力領域に含まれるセルは、多くのPEに満遍なく分散されて割り当てられるのではなく、少数のPEに偏って割り当てられる場合が多い。つまり、数TBにも及ぶ多量のデータを出力する処理の負荷が、少数のPEに偏る場合が多い。
出力されるデータの量が少なければ、出力負荷の偏り(imbalance)が解析全体に与える影響も小さい。例えば、出力されるデータの量が数GB(ギガバイト)程度なら、たとえ出力負荷が少数のPEに偏っても、影響はそれほど大きくない。偏りの影響が少なければ、例E1に関して説明したような、セルの数(および各PEの処理能力)に基づく単純な割り当てが行われるとしても、待ち時間に起因する解析時間の長期化の問題は、わずかである。
上記のような、セルの数(および各PEの処理能力)に基づく単純な割り当ては、「どのセルの処理負荷もほぼ同等だ」ということを暗黙の前提としている。つまり、上記のような単純な割り当てでは、「セルの位置に応じて処理負荷が異なる」ということが考慮されない。出力負荷の偏りの影響が小さければ、たとえ単純な割り当てが行われても(つまり、たとえ処理負荷の位置依存性が無視されても)、それほど大幅には解析時間が長期化しない。
しかし、実際は、例えば、セルが出力領域に含まれるか否かによって、セルの処理負荷は異なる。すなわち、セル間で処理負荷には格差があり、各セルの処理負荷は当該セルの位置に依存する。よって、処理負荷の位置依存性を無視する単純な割り当てが仮に行われると、出力されるデータの量が多くなるにつれ、出力負荷の偏りが解析全体に与える影響も、無視できないほどに大きくなる。つまり、出力負荷の偏りは解析の高速化にとってのボトルネックである。そして、待ち時間の増大に起因する、解析時間の不必要な長期化の問題が、今後は深刻化するものと予測される。
そして、上述のとおり、出力負荷は今後ますます増大しそうである。よって、出力負荷の偏りに起因する解析時間の不必要な長期化の問題を回避することが望ましい。換言すれば、処理負荷の位置依存性に起因して特定のいくつかのPEの負荷が他のPEの負荷よりも重くなることを、防ぐことが望ましい。
また、FDTD法ではCourant条件が満たされるようにステップ時間Δtの長さが設定される。Courant条件によれば、セルのサイズが小さくなるほど、ステップ時間Δtも短くなる。つまり、ある一定の長さの期間に渡る経時的変化がシミュレートされる場合、セルの微細化にともなって解析のステップ数も増大する。ステップ数が増大すれば、1ステップ時間に関する一連の処理あたりの待ち時間が、解析全体にかかる時間に与える影響も、増大する。よって、ステップ時間Δtの長さという観点からも、処理負荷の位置依存性を考慮に入れて負荷の偏りを減らすことが望ましい。
ここで、再度、図2の例E2について説明する。例E2では、処理負荷の位置依存性が考慮されていない。つまり、例E2は、例E1と同様の単純な割り当てが行われた場合の例である。
例E1では、PE#1とPE#2の処理時間が同じなので、PE#2は、同期のためにPE#1が処理を完了するのを待つ必要がない。しかし、例E2では、出力処理を行うPE#1の処理時間は、出力処理にかかる時間の分だけ、PE#2の処理時間よりも長い。そのため、例E2では、PE#3だけでなくPE#2も、データの送受信の前に、同期のために、PE#1が処理(つまり電界または磁界を計算する処理)を完了するのをしばらく待つ。
例E1とE2での待ち時間を比較すれば分かるように、1ステップ時間についての一連の処理にかかる時間は、例E2の方が例E1よりも長い。そして、例E2と例E1での処理時間の差は、上記のように、出力処理の負荷が特定のPE(図2の例ではPE#1)に偏ることに起因している。
単純な割り当てでは処理負荷の位置依存性が無視されるが、実際には出力負荷の偏りがある。よって、例E2のように単純な割り当てが行われると、出力負荷の偏りに起因して、出力処理を行わないPE(つまりPE#2とPE#3)における待ち時間が増大する。このような待ち時間ではPEが遊んでいるから、このような待ち時間は無駄である。
したがって、例E2のように出力負荷に偏りがある場合、待ち時間を減らすように割り当てを変えることで、解析全体の効率性を高める余地がある。つまり、待ち時間を減らすように割り当てを変えることで、解析全体にかかる時間を短縮化する効果が得られる。そして、出力されるデータ量が今後増えるにつれ、そのような解析時間の短縮化の効果も顕著になると予測される。
そこで、上述のとおり第1実施形態では、コンピュータが、各セルの処理負荷の位置依存性を考慮に入れて(ステップS1を参照)、合計処理時間についてのPE間での均等性が基準を満たすように、セルのPEへの割り当てを決める(ステップS2を参照)。それにより、例E2に見られるようなPE間での合計処理時間の差は、縮小される。したがって、第1実施形態によれば、無駄な待ち時間が減り、解析全体が高速化される。
なお、セルの位置に依存して生じる重い負荷は、例E2に示したような出力負荷だけには限られない。図1のステップS1に関しても説明したとおり、波源や回路素子が配置された位置にあるセルの負荷は、1つ以上の入力パラメタを読み込む読み込み処理に起因して重い。
また、2つの異なる媒質の境界に接するセルの処理負荷は、1つの媒質の内部に位置するセルの処理負荷よりも重い。なぜなら、媒質の境界では、電界と磁界の計算に使われる式が複雑であるためである。さらに、吸収境界に接するセルの処理負荷は、吸収境界に接しないセルの処理負荷よりも重い。なぜなら、吸収境界では、電界と磁界の計算に使われる式が複雑であるためである。
このように、様々な要因によって、セルの位置に応じてセルの処理負荷は異なり得る。しかし、図1の割り当て処理は、処理負荷の位置依存性が何に起因するかによらず、解析時間の短縮化のためには有益である。
ところで、上述の図1のステップS2に関して、コンピュータが「第2の台数」を固定的に決定する場合と、コンピュータが「第2の台数」を動的に変更する場合を例示した。以下に説明する第2実施形態は前者の場合に相当し、第3実施形態は後者の場合に相当する。以下、図3〜20を参照して第2実施形態について説明し、図21〜23を参照して第3実施形態について説明する。
図3は、システム構成図である。図3のシステム100は、並列FDTD法による解析を行うシミュレータ110と、ホスト端末150と、1台以上のユーザ端末を含む。図3には、2台のユーザ端末160と161が例示されている。
シミュレータ110は、制御装置120と、スイッチ130と、複数台のPEと、これら複数のPEに接続された複数のメモリを含む。詳しくは後述するとおり、第2実施形態では、制御装置120とホスト端末150が協働して、図1と類似の処理を実行する。
図3には、P台(1<P)のPE140−1〜140−Pと、P台のメモリ141−1〜141−Pが例示されている。メモリ141−pはPE140−pに接続される(1≦p≦P)。図示の便宜上、図3ではPE間の接続は省略されている。なお、「P」は、図1に関して説明した「第1の台数」の具体例である。
詳しくは後述するように、PE140−p(1≦p≦P)は、並列FDTD法による解析のためのプログラム(換言すれば、複数のコマンドを含むコマンドセット)を制御装置120を介して受け取る。そして、PE140−pは、受け取ったプログラムをメモリ141−pに記憶し、メモリ141−pをワークエリアとしても用いながら、プログラムを実行する。
PE140−1〜140−Pの各々は、以下のいずれであってもよい。並列FDTD法による解析は、PE140−1〜140−Pの一部または全部により実行される。
・汎用的なCPU(Central Processing Unit)。例えばPC中のCPU。
・並列FDTD解析のためのASIC(Application-Specific Integrated Circuit)。
・FPGA(Field Programmable Gate Array)。
・GPU(Graphic Processing Unit)。
メモリ141−1〜141−Pの各々は、例えば、SRAM(Static Random Access Memory)であってもよいし、DRAM(Dynamic Random Access Memory)であってもよいし、両者の組み合わせであってもよい。
システム100は、解析結果を保存(save)するためのHDD(Hard Disk Drive)170も含む。HDD170は、NAS(Network-Attached Storage)として使われるHDDであってもよいし、ネットワーク180に接続された不図示のコンピュータのローカルHDDであってもよい。
HDD170が省略されてもよい(例えば、HDD170のかわりに後述のHDD153が使われてもよい)。あるいは、HDD170は、ネットワーク180ではなく後述のネットワーク181に接続されていてもよい。実施形態によっては、各PEからアクセスされる不図示のネットワークに、HDD170が接続されていてもよい。
シミュレータ110とホスト端末150とHDD170は、ネットワーク180を介して接続される。また、ホスト端末150は、ネットワーク181を介してユーザ端末160〜161とも接続される。
ネットワーク180と181の種類は特に限定されない。例えば、ネットワーク180は、LAN(Local Area Network)、VLAN(Virtual LAN)、WAN(Wide Area Network)、インターネット、またはその組み合わせであってもよい。また、ネットワーク181も、例えば、LAN、VLAN、WAN、インターネット、またはその組み合わせであってもよい。
ところで、シミュレータ110内の制御装置120は、CPU121と、メモリ122と、ローカルなHDD123を有する。また、制御装置120は、制御装置120をスイッチ130に接続するためのネットワークインタフェイス124を有する。さらに、制御装置120は、制御装置120をネットワーク180に接続するためのネットワークインタフェイス125も有する。なお、図3では紙幅の都合上、「ネットワークインタフェイス」が「NW I/F」と省略されている。制御装置120内の各コンポーネントは、バス126を介して互いに接続される。
ホスト端末150は、例えばワークステーションやPCなどの、汎用的なコンピュータであってもよい。ホスト端末150は、CPU151と、メモリ152と、ローカルなHDD153を有する。
さらに、ホスト端末150は、ホスト端末150をネットワーク180と181に接続するためのネットワークインタフェイス154も有する。ホスト端末150内の各コンポーネントは、バス155を介して互いに接続される。
ネットワークインタフェイス154は、例えば、拡張カード型のNIC(Network Interface Card)でもよいし、オンボード型のNICでもよい。ネットワークインタフェイス154は、具体的には、イーサネット(登録商標)用のインタフェイス装置であってもよく、ケーブルを挿すための物理的なポート、物理層の処理を行うための「PHYチップ」と呼ばれる回路、MAC副層の処理を行うための「MACチップ」と呼ばれる回路、などを含む。
ネットワークインタフェイス125もネットワークインタフェイス154と同様の装置である。ネットワークインタフェイス124は、PE140−1〜140−Pと制御装置120の間のネットワーク(つまりスイッチ130を介したネットワーク)の種類に応じたインタフェイス装置である。PE140−1〜140−Pと制御装置120の間のネットワークの種類によっては、ネットワークインタフェイス124も、イーサネット用のインタフェイス装置であってもよい。
なお、図3には1台のスイッチ130のみが例示されているが、2台以上のスイッチが使われてもよい。例えば、複数のスイッチがカスケード状に接続されていてもよい。
ユーザ端末160と161の各々は、例えばPCなどの端末である。図3では省略されているが、各ユーザ端末も、CPU、メモリ、ローカルHDD、ネットワークインタフェイスなどを有する。
なお、HDD123の代わりに(あるいはHDD123とともに)、SSD(Solid-State Drive)が使われてもよい。同様に、HDD153の代わりに(あるいはHDD153とともに)、SSDが使われてもよい。また、HDD170の代わりに(あるいはHDD170とともに)、SSDが使われてもよい。HDDとSSDは、いずれも、不揮発性記憶装置の例である。
また、図3では省略されているが、各PE140−p(1≦p≦P)には、さらに、当該PE用のローカルHDDが接続されていてもよいし、HDDの代わりに(あるいはHDDとともに)SSDが使われてもよい。あるいは、PE140−1〜140−Pが、共通のHDDおよび/または共通のSSDに接続されていてもよい。
ところで、制御装置120において、CPU121は、プログラムをメモリ122にロードし、メモリ122をワークエリアとしても用いながら、プログラムを実行する。プログラムは、予めHDD123にインストールされていてもよいし、ネットワーク180を介して制御装置120にダウンロードされてもよい。また、記憶媒体の読み取り装置(例えばメディアドライブやカードリーダなど)を制御装置120が備えていてもよい。その場合、プログラムは、記憶媒体に記憶されて提供され、読み取り装置を介してHDD123にコピーされてもよい。
同様に、ホスト端末150において、CPU151は、プログラムをメモリ152にロードし、メモリ152をワークエリアとしても用いながら、プログラムを実行する。プログラムは、予めHDD153にインストールされていてもよいし、ネットワーク180または181を介してホスト端末150にダウンロードされてもよい。また、記憶媒体の読み取り装置をホスト端末150が備えていてもよい。その場合、プログラムは、記憶媒体に記憶されて提供され、読み取り装置を介してHDD153にコピーされてもよい。
なお、制御装置120および/またはホスト端末150で使用可能な記憶媒体の例としては、以下のような、各種のコンピュータ読み取り可能な記憶媒体が挙げられる。これらの記憶媒体は、有形の(tangible)媒体であり、信号搬送波のような一時的な(transitory)媒体ではない。
・CD(Compact Disc)やDVD(Digital Versatile Disk)などの光ディスク。
・光磁気ディスク。
・磁気ディスク。
・フラッシュメモリなどの半導体メモリを用いたメモリカード。
また、以上のような記憶媒体だけでなく、メモリ122、メモリ141−1〜141−P、メモリ152、HDD123、およびHDD153も、コンピュータ読み取り可能で、有形の、非一時的な(non-transitory)媒体の例である。
さて、上記のとおり、図示の便宜上、図3ではPE間の接続は省略されているが、PE同士は実施形態に応じたトポロジで接続される。PE間は、適宜の種類のインターコネクト(例えばInfiniBandなど)により接続される。インターコネクトの種類は特に限定されない。図4は、PE間のネットワークトポロジを例示する図である。
PE140−1〜140−Pは、図4のトポロジT1のように、1次元的に接続されていてもよい。あるいは、PE140−1〜140−Pは、図4のトポロジT2のように、2次元メッシュ状に接続されていてもよい。PE140−1〜140−Pは、例えば3次元メッシュ状など、その他のトポロジで接続されていてもよい。なお、図4に例示した座標軸については後述する。
ところで、図4には、PE140−1〜140−Pに加えて、情報処理装置190も例示されている。接続情報処理装置190は、図3の制御装置120とホスト端末150に対応する。
図3のシステム100では、制御装置120とホスト端末150が分かれているが、後述の図5〜7のフローチャートからも分かるように、制御装置120とホスト端末150は、協働して複数のPEへの複数のセルの割り当てを行う。例えば、図1のステップS1と類似の見積もりを制御装置120が行い、ステップS2の割り当てのための一連の処理を、制御装置120とホスト端末150が分担する。制御装置120がホスト端末150としても動作するような実施形態も可能である。
換言すれば、1台の装置が、図1のステップS1の見積もりを行う見積もり部191と、ステップS2の割り当てを行う割り当て部192の双方を含んでいてもよいし、見積もり部191と割り当て部192が複数の装置に分散していてもよい。例えば、見積もり部191が制御装置120に実装されてもよく、割り当て部192が制御装置120とホスト端末150に分散されて実装されてもよい。別の観点から述べれば、情報処理装置190は、物理的には1台の装置(例えば1台のコンピュータ)であってもよいし、物理的には2台以上の装置(例えば制御装置120とホスト端末150)であってもよい。
図4に点線で示すように、PE140−1〜140−Pの各々は、情報処理装置190と接続されている。PE140−1〜140−Pの各々と情報処理装置190の間は、PE間のインターコネクトとは独立したネットワークにより接続されていてもよい。例えば、図3では、情報処理装置190の一部に対応する制御装置120が、スイッチ130を介して各PEと接続されている。また、情報処理装置190の一部に対応するホスト端末150は、ネットワーク180と制御装置120を介して間接的に各PEと接続されている。
続いて、図5〜7を参照して、図3のシステム100の動作について説明する。図5〜7は、第2実施形態によるシステム100の動作シーケンス図である。説明の便宜上、図5〜7には、ユーザ端末160〜161のうち、ユーザ端末160が使われる場合が示されている。また、紙幅の都合上、図5〜7には、PE140−1〜140−Pのうち、PE140−1と140−2のみが示されている。
ステップS101でユーザ端末160は、解析条件に関するユーザからの入力を受け取り、入力に基づいて解析条件を設定する。具体的には、ユーザ端末160は、解析条件を所定のファイルに書き込む。解析条件は、例えば以下のような種々の条件を含む。
・解析対象物の形状・大きさ・位置。
・解析対象物の材質に応じた誘電率および透磁率。
・解析対象物の周りの媒質(例えば空気)に応じた誘電率および透磁率。
・セルの大きさ(なお、全セルの大きさが等しくてもよいし、セルの大きさが不均一であってもよい)。
・利用する吸収境界条件の種類(例えば、PEC(Perfect Electric Conductor)、PMC(Perfect Magnetic Conductor)、PBC(Periodic Boundary Condition)、Mur、PML(Perfectly Matched Layer)など)。
・ステップ時間Δtの長さ。
・波源がある場合は、波源の位置と、波源の特性を定義する1つ以上のパラメタ。
・回路素子の振る舞いもシミュレータ110がシミュレートする場合(例えば解析対象物がプリント配線基板の場合など)は、回路素子の特性を定義する1つ以上のパラメタ。
ユーザ端末160は、解析条件を書き込んだファイル(以下「入力ファイル」という)を、ネットワーク181を介してホスト端末150に送信する。すると、ステップS102でホスト端末150は、ネットワークインタフェイス154を介して入力ファイルを受信し、受信した入力ファイルをHDD153に記憶する。そして、ホスト端末150は、入力ファイルの内容を読み込む。また、ホスト端末150は、PE140−1〜140−Pのうち使用可能なPEを制御装置120に問い合わせる。
すると、ステップS103で制御装置120は、使用可能なPEを確認し、使用可能なPEをホスト端末150に通知する。例えば、既にユーザ端末161のユーザからの要求に応じて何台かのPEが他の解析のために使用されている場合があり得る。例えばこのような場合には、PE140−1〜140−Pのすべてが使用可能とは限らない。
続いて、ステップS104でホスト端末150は、使用可能ないくつかのPEに、暫定的にセルを割り当てる。
具体的には、ホスト端末150は、まず、使用可能なPEの中から、解析に使用するPEを決定する。ホスト端末150は、「PE間のネットワーク(例えば図4を参照)において、使用可能なPEがどの範囲に存在しているか」ということに応じて、使用可能なPEの中から、解析に使用するPEを選ぶことが望ましい。
例えば、P=60で、使用可能なPEが40台の場合、ホスト端末150は、40台すべてのPEを解析に使用することに決めてもよい。あるいは、ホスト端末150は、使用可能な40台のPEのうちの一部(例えば25台のPE)のみを解析に使用することに決めてもよい。こうして「解析に使用する」と決定されたPEの台数が、図1に関して説明した「第2の台数」である。
ホスト端末150は、解析対象物の形状に応じて、適宜の座標軸変換を行ってもよい。例えば、入力ファイルで解析対象物が3次元直交座標系を用いて定義されているものとし、3つの座標軸を、便宜上、「X’軸」、「Y’軸」、および「Z’軸」ということにする。ホスト端末150は、X’軸、Y’軸、およびZ’軸の中で、解析対象物が占める範囲が最も長い(あるいは当該範囲内のセル数が最も多い)座標軸を、解析におけるX軸と決めてもよい。ホスト端末150は、X’軸、Y’軸、およびZ’軸のうちの残りの2つの座標軸を、解析におけるY軸およびZ軸と決めてもよい。あるいは、ホスト端末150は、その他の適宜のポリシにしたがって座標軸変換を行ってもよい。
図4に示すX軸、Y軸、およびZ軸は、以上のようにして座標軸変換が行われた後のX軸、Y軸、およびZ軸であってもよい。
例えば、PE140−1〜140−Pは、解析用のX軸、Y軸、またはZ軸のいずれかと対応づけられた、ある1つの方向に沿って1次元的に接続されていてもよい。図4のトポロジT1は、PE140−1〜140−Pが接続される方向がZ軸と対応づけられているようなトポロジの例である。
あるいは、PE140−1〜140−Pは、解析用のX軸、Y軸、およびZ軸のうちのいずれか2つの座標軸と対応づけられた2つの方向に沿って2次元状に接続されていてもよい。例えば、トポロジT2は、Y軸とZ軸に対応づけられた2次元トポロジの例である。実施形態によっては、PE140−1〜140−P間のネットワークトポロジが、解析用のX軸、Y軸、およびZ軸と対応づけられた3次元トポロジであってもよい。
もちろん、上記のような座標軸変換は省略されてもよい。つまり、ホスト端末150は、入力ファイルで使われているX’軸、Y’軸、およびZ’軸を、それぞれ、解析におけるX軸、Y軸、およびZ軸として使うことに決めてもよい。
いずれにせよ、ステップS104でホスト端末150は、どのPEを解析に用いるかを決め、座標軸も決める。よって、ホスト端末150は、入力ファイルでの定義に基づいて、X軸方向のセルの数、Y軸方向のセルの数、およびZ軸方向のセルの数を計算することができる。つまり、ホスト端末150は、解析対象領域に含まれるセルの数を計算することができる。
よって、ホスト端末150は、ステップS104においてさらに、解析に使うPEの数と、解析対象領域に含まれるセルの数とに基づいて、暫定的にセルをPEに割り当てる。ステップS104での暫定的な割り当ては、初期割り当てであり、以降のステップで変更される可能性がある。よって、ステップS104での暫定的な割り当ては、どのような割り当て方であってもよい。例えば、ステップS104では、図2に関して説明したような、セル数に基づく単純な割り当てが行われてもよい。
以下では説明の便宜上、ホスト端末150が解析に使うと決めたPEの台数を「n」とする(なお、PEの台数を示す「n」は、式(1)や(2)における「n」とは別の変数である)。また、これらn台のPEを「PE(1)〜PE(n)」のように表記することもある。
PE140−1〜140−Pの性能は互いに異なっていてもよいが、以下では説明の簡単化のため、PE140−1〜140−Pの性能は同等であるものとする。また、2種類以上のサイズのセルが入力ファイルにより定義されていてもよいが、以下では説明の簡単化のため、すべてのセルの大きさが等しいものとする。
例えば、ステップS104でホスト端末150は、解析対象領域に含まれるセルの総数を、解析に使うPEの台数nで割ることにより、各PEに割り当てるセルの数を暫定的に決めてもよい。図8には、ステップS104での初期割り当ての一例が示されている。
具体的には、図8の例は、PE140−1〜140−Pが図4のトポロジT2のように2次元メッシュ状に接続されている場合の例である。
また、ステップS104でホスト端末150は、P台のPEのうち、25台のPEを解析に使うことに決めたものとする。つまり、n=25だとする。より具体的には、ホスト端末150は、トポロジT2においてY方向に連続する5個のPEとZ方向に連続する5個のPEにより定義される25(=5×5)個のPEを、解析に使うことに決めたものとする。
図8の例では、解析対象領域A1は、Y方向に20個のセルを含み、Z方向に20個のセルを含む。なお、解析対象領域A1がX方向に含むセルの数は、図8には明示されていない。トポロジT2のように2次元メッシュ状に接続されたPE(1)〜PE(25)が使われる場合、X方向のセルの数によらず、後述の再割り当て等の処理が適用可能である。説明の便宜上、以下ではX方向のセルの数を「XN」と表記することがある。
以下では説明の便宜上、セルを単位とする座標を「格子座標」という。解析対象領域A1は、格子座標(X,Y,Z)が0≦X≦XNかつ0≦Y≦20かつ0≦Z≦20を満たす領域である。
図8において、解析対象領域A1を示す大きな矩形(つまり20×20セルの矩形)の下辺は、3次元空間において解析対象物が置かれた面(例えば、机の表面、または、床など)に相当する。解析対象領域A1を示す矩形の残りの3辺は、いずれも、吸収境界である。
入力ファイルでの定義によれば、出力領域A2は、格子座標(X,Y,Z)が0≦X≦XNかつ0≦Y≦20かつ5≦Z≦8を満たす領域である。図8において出力領域A2は、縦線のハッチングにより示されている。
また、入力ファイルでの定義によれば、解析対象物は、格子座標(X,Y,Z)が0≦X≦XNかつ0≦Y≦16かつ4≦Z≦16を満たす領域(以下、「物体領域A3」という)を占める。図8において物体領域A3は、横線のハッチングにより示されている。また、出力領域A2と物体領域A3の双方に属するセルは、格子状のハッチングにより示されている。
解析対象領域A1のうち、物体領域A3以外の領域の媒質(例えば、空気あるいは真空など)は、入力ファイルで定義されている。もちろん、解析対象物の媒質も、入力ファイルで定義されている。
解析対象領域A1のY方向のセルの数は20であり、解析に使われるPEはY方向に5個連続している。よって、ステップS104でホスト端末150は、各PEに割り当てるセルのY方向の個数を、4(=20/5)個と決める。
また、解析対象領域A1のZ方向のセルの数は20であり、解析に使われるPEはZ方向に5個連続している。よって、ステップS104でホスト端末150は、各PEに割り当てるセルのZ方向の個数を、4(=20/5)個と決める。
つまり、ホスト端末150は、暫定的に、25個のPEの各々に、16×XN(=XN×4×4)個のセルを均等に割り当てることに決める。図8には、PE(1)〜PE(25)に割り当てられるセルの範囲が、太線により示されている。例えば、図8によれば、PE(12)には、格子座標(X,Y,Z)が0≦X≦XNかつ8≦Y≦12かつ4≦Z≦8を満たすような16×XN個のセルが暫定的に割り当てられる。
さて、ここで図5の説明に戻る。ホスト端末150は、ステップS104で、例えば図8のように暫定的にセルのPEへの割り当てを決めた後、ステップS105で、暫定的な割り当てを制御装置120に通知する。なお、ステップS105の通知には、入力ファイルに基づいて、以下のような情報も含められる。
・解析対象領域A1、出力領域A2、および物体領域A3の定義。
・解析対象物の材質に応じた誘電率および透磁率。
・物体領域A3の周りの媒質に応じた誘電率および透磁率。
・入力ファイルで波源および/または回路素子に関する1つ以上のパラメタが定義されている場合は、当該1つ以上のパラメタ。
・吸収境界条件の種類。
・ステップ時間Δtの長さ。
なお、以下では説明の簡単化のため、波源や回路素子についての入力パラメタが指定されていない場合について、主に説明する。換言すれば、以下では主に、セルの処理負荷の位置依存性の主たる要因が「セルが出力領域に含まれるか否か」ということであるような場合について、説明する。
ステップS105での通知を受信すると、ステップS106で制御装置120は、ステップS105で通知された暫定的な割り当てにおいて出力を担当するPEを抽出する。ステップS106の処理は、具体的には、例えば図9に示すような抽出処理であってもよい。
図9の抽出処理は、図4のトポロジT2のようにY方向とZ方向の2次元メッシュ状に接続されたPEのうちn台のPEが解析に使われる場合の抽出処理の例である。他のトポロジで接続されたPEのうちn台のPEが解析に使われる場合にも、制御装置120は図9と類似の処理により、出力を担当するPEを抽出することができる。
具体的には、図9のステップS201で制御装置120は、出力領域(例えば図8の出力領域A2)を定義する出力領域情報を読み取る。出力定義情報はステップS105での通知に含まれている。
ここで、出力領域の中で最も原点に近い点を、出力領域の「最近端(nearest end)」ということにする。また、出力領域の中で最も原点から遠い点を、出力領域の「最遠端(farthest end)」ということにする。
ステップS201で制御装置120は、読み取った出力領域情報に基づき、出力領域の最近端の格子座標(より具体的にはY方向とZ方向の格子座標)を、変数YosとZosに代入する。また、制御装置120は、出力領域の最遠端の格子座標(より具体的にはY方向とZ方向の格子座標)を、変数YoeとZoeに代入する。例えば、図8の例では、Yos=0かつZos=5かつYoe=20かつZoe=8である。
次に、ステップS202で制御装置120は、解析に使われるn台のPEの中から、ステップS203〜S204の判断の対象として未選択のPEを1つ選ぶ。以下、ステップS202で選択されたPEを「選択PE」という。
制御装置120は、ホスト端末150から通知された暫定的な割り当てによって選択PEに割り当てられたセルにおける最近端の格子座標(より具体的にはY方向とZ方向の格子座標)を、変数YsとZsに代入する。また、制御装置120は、暫定的な割り当てによって選択PEに割り当てられたセルにおける最遠端の格子座標(より具体的にはY方向とZ方向の格子座標)を、変数YeとZeに代入する。
例えば、図8の例において、ステップS202でPE(2)が選ばれたとする。この場合、Ys=0かつZs=4かつYe=4かつZe=8である。
次に、ステップS203で制御装置120は、条件(i)が成り立つ(hold true)か否かを判断する。
(Ye<Yos) OR (Yoe<Ys) (i)
条件(i)が成り立たない場合、制御装置120は、次にステップS204を実行する。具体的には、制御装置120は、条件(ii)が成り立つか否かを判断する。
(Ze<Zos) OR (Zoe<Zs) (ii)
図8の例では、例えばPE(1)が選択PEの場合には、Ze=4かつZos=5なので、条件(ii)が成り立つ。逆に、図8の例において例えばPE(2)が選択PEの場合には、Ze=8かつZos=5かつZoe=8かつZs=4なので、条件(ii)が成り立たない。
条件(i)と(ii)の少なくとも一方が成り立つ場合、次に、ステップS205が実行される。具体的には、ステップS205で制御装置120は、「選択PEには、出力領域内のセルが1つも割り当てられていない」ということを記憶する。つまり、制御装置120は、「選択PEは出力を担当しない」ということを記憶する。
逆に、条件(i)と(ii)のいずれも成り立たない場合は、ステップS206が実行される。具体的には、ステップS206で制御装置120は、「選択PEには、出力領域内のセルが1つ以上割り当てられている」ということを記憶する。つまり、制御装置120は、「選択PEは出力を担当する」ということを記憶する。
ステップS205またはS206の処理が終わると、制御装置120は、次にステップS207で、解析に使われるn台のPEの中に未選択のPEが残っているか否かを判断する。未選択のPEがまだ残っていれば、制御装置120は再度ステップS202を実行する。逆に、もしn台のPEがすべて選択済みなら、図9の抽出処理は終了する。
図9の抽出処理が終了すると、次に、制御装置120は、図5のステップS107で、n台のPEそれぞれの処理量を見積もる。第2実施形態では、処理量は、1ステップ時間に関する合計処理時間で表される。
具体的には、制御装置120は、1≦h≦nなる各hについて、1ステップ時間に関する一連の処理をPE(h)が実行するのにかかる合計処理時間T(h)を見積もる。合計処理時間T(h)は、式(3)のように表される。
式(3)において、Ncell(h)は、PE(h)に暫定的に割り当てられているセルの個数である。すなわち、Ncell(h)は、暫定的な割り当てにおいてPE(h)が担当するセルの個数である。なお、以下では説明の簡単化のため、「PE(h)に暫定的に割り当てられているNcell(h)個のセルのうちでg番目のセル」のことを、単に「g番目のセル」ともいう。
また、式(3)において、Tin(h,g)は、g番目のセルに関して、g番目のセルの位置に固有の1つ以上の入力パラメタがある場合に、当該1つ以上の入力パラメタをPE(h)が読み込むのにかかる時間である。例えば、波源がg番目のセルに配置されている場合、または、シミュレート対象の回路素子がg番目のセルに配置されている場合、Tin(h,g)は正である。逆に、g番目のセルに関して、g番目のセルの位置に固有の入力パラメタがなければ、Tin(h,g)=0である。
なお、g番目のセルに関して読み込む対象のパラメタの数が多いほど、Tin(h,g)も長い。また、パラメタの種類によって、パラメタが読み込まれる頻度が異なっていてもよい。例えば、解析が開始される前に一度だけ読み込まれるパラメタ、1ステップ時間に関する処理のたびに1回読み込まれるパラメタ、所定回数のステップ時間に関する処理のたびに1回読み込まれるパラメタ、などがあり得る。一方、Tin(h,g)は、1ステップ時間に関する処理あたりの、平均的な読み込み時間である。よって、Tin(h,g)は、各パラメタの読み込み頻度にも依存する。
また、式(3)において、Tcal(h,g)は、PE(h)に暫定的に割り当てられているg番目のセルに関して、PE(h)が電界の計算と磁界の計算を行うのにかかる時間である。Tcal(h,g)は、PE(h)に暫定的に割り当てられているg番目のセルの位置に応じて、異なり得る。なぜなら、電界と磁界の具体的な計算手順は、以下のような、セルの位置に依存する種々の要因によって異なるからである。
・セルが吸収境界に接するか否か。
・セルが2つの媒質の境界に接するか否か。
・セル内に波源またはシミュレート対象の回路素子が配置されているか否か。
また、式(3)において、Ttxrx(h,g)は、以下の送信時間と受信時間の和である。
・PE(h)に暫定的に割り当てられているg番目のセルに関してPE(h)が計算した電界および/または磁界のデータを、PE(h)が他のPEに送信する場合、その送信にかかる時間。
・PE(h)に暫定的に割り当てられているg番目のセルに関して、PE(h)が他のセルから電界および/または磁界のデータを受信する場合、その受信にかかる時間。
なお、PE(h)に暫定的に割り当てられているg番目のセルの位置によっては、g番目のセルに関して他のPEとの間でデータの送信もデータの受信も行われない。よって、Ttxrx(h,g)=0の場合もある。例えば、PE(h)に割り当てられている全セルのうち、他のPEに割り当てられているどのセルとも接していない、内部のセルに関しては、Ttxrx(h,g)=0である。
また、式(3)において、Tout(h,g)は、PE(h)に暫定的に割り当てられているg番目のセルに関する出力処理にかかる時間である。PE(h)に暫定的に割り当てられているg番目のセルが、出力領域に含まれていれば、Tout(h,g)は正である。逆に、PE(h)に暫定的に割り当てられているg番目のセルが、出力領域に含まれていなければ、Tout(h,g)=0である。
なお、例えば「30ステップ時間のシミュレーションごとに1回、データを出力せよ」などと、出力の間隔がステップS102の入力ファイルで指定されていてもよい。時間Tout(h,g)は、出力処理に関して1ステップ時間あたりに平均的にかかる時間を示す。
ところで、PE(h)に割り当てられている全セル中の最近端の格子座標を(Xs(h),Ys(h),Zs(h))とする。また、PE(h)に割り当てられている全セル中の最遠端の格子座標を(Xe(h),Ye(h),Ze(h))とする。すると、式(3)中のNcell(h)は、式(4)のように表される。
Ncell(h)=(Xe(h)-Xs(h))×(Ye(h)-Ys(h))×(Ze(h)-Zs(h)) (4)
例えば、図8の例では、PE(2)に暫定的に割り当てられているセルの個数Ncell(2)は、式(5)のとおりである。
Ncell(2)=(XN-0)×(4-0)×(8-4)=16×XN (5)
以下、式(3)中のTcal(h,g)とTtxrx(h,g)とTout(h,g)の詳細について、例示する。
例えば、FDTD法による解析プログラムでは、格子座標(i+1/2,j,k)や(i,j+1/2,k)や(i,j,k+1/2)を、いずれも3次元配列のインデックス(i,j,k)で表す技法が採用される場合がある。この種のプログラミング技法が採用される場合、例えば以下の式(6)〜(8)にしたがって電界が計算されてもよい。式(6)〜(8)において、「*」は乗算記号であり、「(i,j,k)」は3次元配列のインデックスである。
Ex(i,j,k)=Cx*Ex(i,j,k)
+Gx*[{Hz(i,j,k)-Hz(i,j-1,k)}-{Hy(i,j,k)-Hy(i,j,k-1)}] (6)
Ey(i,j,k)=Cy*Ey(i,j,k)
+Gy*[{Hx(i,j,k)-Hx(i,j,k-1)}-{Hz(i,j,k)-Hz(i-1,j,k)}] (7)
Ez(i,j,k)=Cz*Ez(i,j,k)
+Gz*[{Hy(i,j,k)-Hy(i-1,j,k)}-{Hx(i,j,k)-Hx(i,j-1,k)}] (8)
なお、式(6)〜(8)において、Ex、Ey、Ezは、それぞれ、電界ベクトルのX成分、Y成分、Z成分である。また、Hx、Hy、Hzは、それぞれ、磁界ベクトルのX成分、Y成分、Z成分である。そして、Cx、Cy、Cz、Gx、Gy、およびGzは係数である。
式(6)〜(8)は、具体的には、以下の2つの条件を満たすセルに関する電界の計算のための式である。
・ある1つの媒質の内部に位置する(したがって、他の媒質とは接しておらず、吸収境界にも接していない)。
・波源や回路素子等を含まない。
なお、式(6)の右辺のEx(i,j,k)は、直前のステップ時間に関して既に計算されて、メモリに格納されている値である。一方、左辺のEx(i,j,k)は、現在の計算対象のステップ時間に関する、電界ベクトルのX成分である。
あるPEが、式(6)にしたがって、あるセルに関して電界ベクトルのX成分を計算する場合、制御装置120は、以下の3つの時間の和を、電界ベクトルのX成分の計算にかかる時間として見積もる(後述の図10も参照)。
・式(6)の右辺に現れる7つの値(すなわち、Cxと、Ex(i,j,k)と、Gxと、Hz(i,j,k)と、Hz(i,j−1,k)と、Hy(i,j,k)と、Hy(i,j,k−1))をPEがメモリから読み込むのにかかる時間。
・3回の減算と2回の乗算と1回の加算をPEが実行するのにかかる時間。
・計算の結果得られた値(つまり左辺のEx(i,j,k))をPEがメモリに書き込むのにかかる時間。
つまり、制御装置120は、8(=7+1)回のメモリアクセスにかかる時間と、減算・乗算・加算等の計算にかかる時間との和を、電界ベクトルのX成分の計算にかかる時間として見積もる。
式(7)と(8)に関しても同様である。つまり、制御装置120は、8回のメモリアクセスにかかる時間と、減算・乗算・加算等の計算にかかる時間との和を、電界ベクトルのY成分の計算にかかる時間として見積もる。また、制御装置120は、8回のメモリアクセスにかかる時間と、減算・乗算・加算等の計算にかかる時間との和を、電界ベクトルのZ成分の計算にかかる時間として見積もる。
磁界についての計算式の例示は省略する。しかし、制御装置120は、上記と同様にして、PEが磁界の計算に使う式に基づいて、磁界の計算にかかる時間を見積もる。
例えば、PE(h)に暫定的に割り当てられたg番目のセルが、ある1つの媒質の内部に位置しており、波源や回路素子等を含まないものとする。この場合、g番目のセルに関する磁界の各成分の計算にかかる時間も、電界の各成分の計算にかかる時間とほぼ等しいと見なせる。よって、この場合、式(3)のTcal(h,g)は、式(9)のとおりである。なお、式(9)における時間の単位は秒である。
式(9)において、6という値が乗算されている理由は、式(9)が、上記の場合(つまり、電界の3つの成分と磁界の3つの成分という6つの値の計算にかかる時間が、互いにほぼ等しいと見なせる場合)に使われる式だからである。異なる成分の計算にかかる時間同士が異なる場合は、制御装置120は、式(9)のように6を乗算する代わりに、PEが各成分を計算するのにかかる時間をそれぞれ見積もって、見積もった時間同士を足す。
また、式(9)におけるNmem(h,g)は、1つの成分の計算あたりの、メモリアクセスの回数を示す。より具体的には、Nmem(h,g)は、PE(h)が、暫定的に割り当てられたg番目のセルについて、電界(または磁界)の1つの成分を計算するために行うメモリアクセスの回数である。式(6)の例では、Nmem(h,g)=8である。セルの位置や実際のプログラミングによっては、PEが、式(6)〜(8)とは異なる式にしたがって電界と磁界の計算を行う場合があり得る。つまり、Nmem(h,g)の値は、PEが実行する実際の計算手順に応じて異なり得る。
また、式(9)におけるSizeは、1つの成分のデータのサイズを示す。例えば、電界と磁界の各成分が4バイトの浮動小数点により表される場合、Size=4である。Sizeは、シミュレータ110の仕様によって決まる定数である。
また、式(9)におけるTPmemは、PEとメモリの間の伝送スループットである(単位は、バイト毎秒(bytes per second)である)。なお、式(9)では簡単のため、PE140−pとメモリ141−pの間の伝送スループットが、pによらず同じであるものと仮定している(1≦p≦P)。よって、式(9)ではスループットTPmemは定数である。
また、式(9)におけるCal(h,g)は、1つの成分の計算あたりの、加算・乗算等の算術計算にかかる時間を示す。例えば、PE(h)が、暫定的に割り当てられたg番目のセルについて、式(6)〜(8)にしたがって電界を計算する場合、Cal(h,g)は、3回の減算と2回の乗算と1回の加算をPE(h)が実行するのにかかる時間である。Cal(h,g)は、PE(h)のハードウェア仕様(例えば、クロック周波数や、1回の加算・減算・乗算・除算にそれぞれかかるクロックサイクル数など)と、PE(h)が実行する実際の計算手順とに応じた値である。
なお、算術計算にかかる時間がメモリアクセス時間に比べて大幅に小さい場合は、Cal(h,g)の影響は小さい。よって、この場合は、適宜の小さな値の定数がCal(h,g)の代わりに使われてもよい。
ところで、式(3)中のTcal(h,g)は、PE(h)に暫定的に割り当てられたg番目のセルの位置によって、式(9)により計算される場合もあり得るし、他の式により計算される場合もあり得る。
例えば、直方体の解析対象領域の6つの面のうちの1つが、X=0と表される平面であるとする。この平面に適用される吸収境界条件がPECである場合、電界の計算に式(10)と(11)が使われてもよい。
Ey(1,j,k)=0.0 (10)
Ez(1,j,k)=0.0 (11)
式(10)による計算にかかる時間は、0.0という定数をメモリに書き込む1回のメモリアクセスにかかる時間だけである。式(11)についても同様である。
あるいは、X=0と表される平面に適用される吸収境界条件がPMCである場合、電界の計算に式(12)と(13)が使われてもよく、磁界の計算に式(14)と(15)が使われてもよい。
Ey(1,j,k)=Cy(1,j,k)*Ey(1,j,k)
+Gy(1,j,k)*(Hx(1,j,k)-Hx(1,j,k-1)-2.0*Hz(1,j,k)) (12)
Ez(1,j,k)=Cz(1,j,k)*Ez(1,j,k)
+Gz(1,j,k)*(2.0*Hy(1,j,k)-Hx(1,j,k)+Hx(1,j-1,k)) (13)
Hz(0,j,k)=-Hz(1,j,k) (14)
Hy(0,j,k)=-Hy(1,j,k) (15)
式(12)による計算は、7回のメモリアクセスと、3回の乗算と、2回の減算と、1回の加算を含む。つまり、式(12)による計算の負荷は、7回のメモリアクセスと、3回の乗算と、2回の減算と、1回の加算により生じる負荷である。よって、式(12)による計算にかかる時間は、7回のメモリアクセスと、3回の乗算と、2回の減算と、1回の加算にかかる時間である。
また、式(13)による計算の負荷は、7回のメモリアクセスと、3回の乗算と、1回の減算と、2回の加算により生じる負荷である。
一方、式(14)による計算の負荷は、2回のメモリアクセスと、1回の、正負の符号を反転する演算とにより生じる負荷である。式(15)による計算の負荷も、式(14)による計算の負荷と同様である。
あるいは、X=0と表される平面に適用される吸収境界条件がPBCである場合、電界の計算に式(16)と(17)が使われてもよい。なお、式(16)と(17)における「i’」は、解析対象領域の最遠端のX座標に対応するインデックスである。
Ey(1,j,k)=Cy*Ey(1,j,k)
+Gy*(Hx(1,j,k)-Hx(1,j,k-1)-Hz(1,j,k)+Hz(i',j,k)) (16)
Ez(1,j,k)=Cz*Ez(1,j,k)
+Gz*(Hy(1,j,k)-Hy(i',j,k)-Hx(1,j,k)+Hx(1,j-1,k)) (17)
式(16)による計算の負荷は、8回のメモリアクセスと、2回の乗算と、2回の加算と、2回の減算により生じる負荷である。式(17)による計算の負荷も、式(16)による計算の負荷と同様である。
もちろん、MurやPMLなどのその他の吸収境界条件が適用されてもよい。式(10)〜(17)を式(6)〜(8)と比べれば明らかなように、セルの位置によって、また、適用される吸収境界条件にもよって、以下の数は様々に異なり得る。
・電界の計算にともなうメモリアクセスの回数。
・電界の計算にともなう算術演算の回数。
・磁界の計算にともなうメモリアクセスの回数。
・磁界の計算にともなう算術演算の回数。
また、波源、ポート素子、回路素子(抵抗器、キャパシタ、インダクタなど)の有無によっても、時間Tcal(h,g)は異なり得る。さらに、電磁波が人体に与える影響の評価のために並列FDTD法が使われる場合などには、SAR(Specific Absorption Rate)も入力パラメタの1つとして使われる。SARが使われるかどうかによっても、時間Tcal(h,g)は異なり得る。
以上のように、各セルについての時間Tcal(h,g)に影響する要因(例えば、メモリアクセスの回数、加算の回数、減算の回数、乗算の回数など)は、セルの位置に応じて異なり得る。そして、位置に応じて異なるセルごとの時間Tcal(h,g)は、具体的には、ステップS102の入力ファイルの内容により決まる。例えば、以下の事柄はいずれも時間Tcal(h,g)に影響を与える要因の例であり、これらの要因はいずれも入力ファイル中に定義されている。
・ある位置のセルが、異なる媒質同士の境界に接するかどうか。
・ある位置のセルに波源が配置されているか。
・ある位置のセルが吸収境界に接するかどうか。
・どの吸収境界条件が使われるか。
よって、制御装置120は、入力ファイル中の定義に基づいて、具体的にどの方法により時間Tcal(h,g)を算出すれば良いかを判断する。そして、制御装置120は、各セルの位置に応じた適宜の式にしたがって(例えば式(9)にしたがって)、時間Tcal(h,g)を算出する。
さて、式(3)には、データの送受信にかかる時間Ttxrx(h,g)も含まれる。上記のように、PE(h)に割り当てられている全セルのうち、他のPEに割り当てられているどのセルとも接していない内部のセルに関しては、Ttxrx(h,g)=0である。よって、データの送受信にかかる時間に関しては、式(18)のように表すこともできる。
式(18)におけるNadj(h)は、大まかに言うと、PE(h)と他のPEとの間で、データを送受信する対象となるセルの数である。式(18)におけるSizeは、式(9)におけるSizeと同様である。また、式(18)におけるTPlinkは、PE間のリンクの伝送スループットであり、その単位はバイト毎秒である。なお、式(18)において12(=2×2×3)という値が乗算されているのは、以下の理由による。
・送信と受信という2種類の処理が行われるから。
・2種類のデータ(つまり電界のデータと磁界のデータ)が送受信されるから。
・電界ベクトルと磁界ベクトルそれぞれの3つの成分(つまり、X成分、Y成分、Z成分)が送受信されるから。
以下に、Nadj(h)についてより具体的に説明する。
PE(h)には、Xs(h)≦X≦Xe(h)かつYs(h)≦Y≦Ye(h)かつZs(h)≦Z≦Ze(h)を満たす直方体の範囲内のセルが割り当てられている。X軸、Y軸、またはZ軸の、正または負の方向において当該範囲に隣接するセルが割り当てられた他のPEを、便宜上、「隣接PE」という。
PE(h)にとって、隣接PEは1つだけ存在する場合もあり得るし、2つ以上の隣接PEが存在する場合もあり得る。隣接PEの数は、PE間のトポロジ(図4を参照)、当該トポロジ内でのPE(h)の位置、およびセルのPEへの割り当て方による。例えば、図8の例では、PE(2)の隣接PEは、PE(1)とPE(7)とPE(3)である。
なお、例えばZ軸の正の方向においてPE(2)に隣接するPEの数は、図8の例では1である。しかし、PE間の接続トポロジと、セルのPEへの割り当て方によっては、2台以上のPEがZ軸の正の方向においてPE(2)に隣接していてもよい。他の方向についても同様である。
したがって、ある1つの方向においてPE(h)に隣接する隣接PEの数は、0、1、または複数である。PE(h)に暫定的に割り当てられているNcell(h)個のセルのうち、ある1つの方向の1つ以上の隣接PEに割り当てられたセルに接するものを、便宜上「境界面セル」という。式(18)におけるNadj(h)は、隣接PEが存在する方向における境界面セルの数のうち、最大の数である。
例えば、図4のトポロジT1のようにPE同士が接続されている場合があり得る。ここで、図4において右端でも左端でもない、中間に位置するPEは、右隣のPEとのデータ送受信と並行して、左隣のPEとのデータ送受信を行うことができるものとすると、Nadj(h)は式(19)のとおりである。
Nadj(h)=(Xe(h)-Xs(h))×(Ye(h)-Ys(h)) (19)
あるいは、図4のトポロジT2のようにPE同士が接続されている場合があり得る。トポロジT2においては、隣接PEの数は2、3、または4である。ここで、各PEは、当該PEにとってのすべての隣接PEと並行してデータ送受信を行うことができるものとすると、Nadj(h)は式(20)のとおりである。
Nadj(h)=max((Xe(h)-Xs(h))×(Ye(h)-Ys(h)),
(Xe(h)-Xs(h))×(Ze(h)-Zs(h))) (20)
なお、PE間のリンクが半二重リンクの場合は、上記のように式(18)において12という値が乗算されてもよい。逆に、PE間のリンクが全二重リンクの場合は、12の代わりに6(=2×3)という値が使われてもよい。
いずれにせよ、各PEのハードウェア仕様や、PE間のネットワークの物理的構成に応じて、制御装置120は、PE(h)がデータの送受信を行うのにかかる時間を適切に見積もる。例えば、PE(h)が2台以上の隣接PEと同時に通信する機能を持たない場合は、Nadj(h)は式(19)〜(20)とは異なる。
また、各PEのハードウェア仕様によっては、式(18)におけるTPlinkが、min(TPmem,TPlink)に置き換えられてもよい。なぜなら、PEのハードウェア仕様によっては、以下の時間がボトルネックとなってしまう可能性がある(つまり、以下の時間が、データ送受信処理にかかる時間を決定づける可能性がある)からである。
・PEが送信対象のデータをメモリから読み出すのにかかる時間。
・PEが受信したデータをメモリに書き込むのにかかる時間。
しかし、例えばPEでパイプライン処理が行われている場合などには、データ送受信にかかる時間の見積もりにおいて、PEとメモリとの間の伝送スループットTPmemの影響を無視しても差し支えない。式(18)は、PEとメモリとの間の伝送スループットTPmemの影響を無視しても差し支えない場合に適用される式の例である。
以上様々に例示したように、制御装置120がTtxrx(h,g)を見積もる具体的方法は、各PEのハードウェア仕様や、PE間のネットワークの物理的構成に応じて異なり得る。
さて、式(3)には、データの出力にかかる時間Tout(h,g)も含まれる。上記のように、PE(h)に暫定的に割り当てられているg番目のセルが、出力領域に含まれていなければ、Tout(h,g)=0である。よって、出力処理にかかる時間に関しては、式(21)のように表すこともできる。
式(21)におけるNout(h)は、PE(h)に暫定的に割り当てられているNcell(h)個のセルのうち、出力領域に含まれるセルの個数である。ここで、PE(h)に暫定的に割り当てられているNcell(h)個のセルのうちで出力領域に含まれるセルの最近端と最遠端の座標(より詳しくは格子座標)を、それぞれ(Xos(h),Yos(h),Zos(h))と(Xoe(h),Yoe(h),Zoe(h))とする。すると、Nout(h)は式(22)のように表される。例えば、図8の例においては、Nout(2)=12×XNである。
Nout(h)=(Xoe(h)-Xos(h))×(Yoe(h)-Yos(h))×(Zoe(h)-Zos(h)) (22)
また、式(21)におけるNreqは、ユーザが出力対象として要求したデータの種類の数である。出力対象になり得るデータは全部で6種類(すなわち、電界ベクトルのX成分、Y成分、Z成分と、磁界ベクトルのX成分、Y成分、Z成分)なので、1≦Nreq≦6である。なお、制御装置120は、ステップS102の入力ファイルに指定された内容から、Nreqを認識することができる。
また、式(21)におけるSizeおよびTPmemは、式(9)におけるSizeおよびTPmemと同様である。
式(21)におけるIntvは、出力間隔を示す。具体的には、出力間隔Intvは、「何ステップ時間ごとに1回の割合でデータを出力してほしいとユーザが要望したか」を表す。例えばユーザが「ステップ時間Δtの30倍の時間ごとに1回の割合でデータを出力してほしい」旨をステップS101で入力すると、入力ファイルには、30という出力間隔が設定される。この場合、制御装置120は、入力ファイルに基づいて、Intv=30と認識することができる。
なお、制御装置120は、図9の抽出処理の結果として、以下の2つの条件のどちらが成り立つのかを認識しているので、効率的に式(21)による計算を行うことができる。
・1≦g≦Ncell(h)を満たす、どのgについても、Tout(h,g)=0である。つまり、Nout(h)=0である。
・1≦g≦Ncell(h)を満たす、あるgについては、0<Tout(h,g)である。つまり、0<Nout(h)である。
ところで、PEから出力されたデータは、スイッチ130を介して制御装置120に送信され、制御装置120からネットワーク180を介してHDD170に書き込まれる。よって、システム100の具体的構成によっては、出力処理にかかる時間は、様々な要因(例えば、スイッチ130を介したPEと制御装置120との間の伝送スループットなど)に依存する可能性がある。制御装置120は、システム100の具体的なハードウェア仕様に応じた適切な方法で、Tout(h,g)を見積もる。
例えば、式(21)は、出力処理にかかる時間が主にメモリアクセス時間に依存する場合に相当する。図2の例E2に示したように、出力処理は時間的に分散されて実行されてもよい。出力処理が時間的に分散されている場合、PEからHDD170に至るネットワーク経路の伝送スループットが、出力処理にかかる時間に与える影響は、無視して差し支えない。この場合、出力処理にかかる時間は、主として出力対象のデータをPEがメモリから読み出すためのメモリアクセスにかかる時間により規定される。式(21)は、そのような場合に適切な式である。
以上様々に説明したように、制御装置120は、以下のような諸因に応じた適切な方法により、図5のステップS107で、PE(1)〜PE(n)各々の合計処理時間を見積もる。
・入力ファイルの内容。
・PEやネットワーク等のハードウェア仕様(例えば、PEとメモリの間、PE同士の間、PEとスイッチ130の間それぞれの伝送スループットなどについての仕様を含む。また、各PEのクロック周波数、各PEでパイプライン処理が行われるかどうか、パイプラインのステージ数、浮動小数点データのサイズ、などについての仕様も含む)。
・各PEによる具体的計算手順(換言すれば、並列FDTD法が具体的にどのようにプログラムされて実装されているか、ということ)。
ある観点によれば、ステップS107で制御装置120が行う処理は、図1のステップS1における、各セルの位置依存の処理負荷の見積もり(例えば、メモリアクセスの回数や演算の回数の見積もり)を含む。さらに、ステップS107の処理は、見積もった処理負荷から処理時間を算出することを含む。処理負荷からの処理時間の算出は、上述の説明から分かるように、具体的には、例えば以下のような処理を含んでいてもよい。
・式(9)、(18)、および(21)のような、スループットによる除算。
・加算や乗算等の各種演算の回数からの、処理時間Cal(h,g)の決定。
また、ステップS107における各PE(h)の合計処理時間T(h)の算出は、「合計処理時間の均等性についての基準が満たされているか否か」を判断するために図1のステップS2で行われる、各演算装置の合計処理時間を算出する処理に相当する。そして、「合計処理時間の均等性についての基準が満たされているか否か」についてのステップS2での判断は、ステップS108に相当する。
具体的には、ステップS108で制御装置120は、合計処理時間T(h)のばらつき(dispersion)が許容範囲内か否かを判断する(1≦h≦n)。ステップS108の判断は、例えば、n個の合計処理時間についての標準偏差(または四分位数範囲(IQR:interquartile range))などの統計量(statistic)と、閾値との比較に基づいていてもよい。あるいは、標準偏差またはIQRをn個の合計処理時間の平均値で割った値が、適宜の閾値と比較されてもよい。しかし、本実施形態では、ステップS108において、具体的には以下のような判断が行われる。
ステップS108で制御装置120は、出力を担当しないPEの中での合計処理時間T(h)の基準値(以下「Tref」と表記する)を算出する。基準値Trefは、具体的には、出力を担当しないPEにおける合計処理時間T(h)の統計量であってもよい。統計量として最小値が使われることが好ましいが、第1四分位数や平均値などが統計量として利用されてもよい。
あるいは、処理の簡単化のため、制御装置120は、出力を担当しないPEのうちの任意の1台を選び、選んだPEの合計処理時間T(h)を基準値Trefとして使ってもよい。なぜなら、出力を担当しないPE間での合計処理時間の差がそれほど大きくならないように、ステップS104での初期割り当てとステップS112での再割り当てが行われるからである。
そして、出力を担当するすべてのPEに関して条件(iii)が満たされる場合、制御装置120は、「合計処理時間のばらつきは許容範囲内である」と判断する。逆に、出力を担当するPEのうち、条件(iii)を満たさないPEが1台以上ある場合、制御装置120は、「合計処理時間のばらつきは許容範囲内ではない」と判断する。なお、条件(iii)における「Ta」は、1より大きい(例えば、1.1〜1.3程度の)所定の閾値である。
T(h)/Tref < Ta (iii)
なお、図9に関して説明したとおり、制御装置120は、「PE(1)〜PE(n)のうち、どのPEが出力を担当し、どのPEは出力を担当しないのか」ということを既に認識している。そのため制御装置120は、基準値Trefを得ることもできるし、上記の判断を行うこともできる。
制御装置120は、「合計処理時間のばらつきは許容範囲内である」と判断した場合は、次にステップS109を実行する。ステップS109で制御装置120は、現在の暫定的な割り当てを採用することに決める。つまり、この場合、ステップS109でPE(1)〜PE(n)へのセルの割り当てが最終的に決定される。制御装置120は、割り当てが最終的に決定したことをホスト端末150に通知する。
逆に、ステップS108で制御装置120が「合計処理時間のばらつきは許容範囲内ではない」と判断した場合、制御装置120は、ホスト端末150に対して「割り当てはまだ決定していない」と通知する。また、この場合、制御装置120は、「現在の暫定的な割り当てではどのPEが出力を担当するのか」についても、ホスト端末150に通知する。
したがって、ステップS110でホスト端末150は、「割り当てが決定したのか否か」を、制御装置120からの通知に基づいて判断することができる。
割り当てが決定した場合、ホスト端末150は、次に図6のステップS116を実行する。逆に、割り当てが決定していない場合、ホスト端末150は、次にステップS111〜S112を実行し、さらに、再度ステップS105を実行する。
具体的には、ステップS111でホスト端末150は、出力を担当するPEを増やすための処理を行う。ステップS111の詳細は後述する。
そして、ステップS112でホスト端末150は、ステップS111の結果に基づいて、セルをPE(1)〜PE(n)に割り当て直す。ステップS112での再割り当ても、暫定的な割り当てである。ステップS112の詳細も後述する。
次に、ホスト端末150は、再度ステップS105を実行する。つまり、ホスト端末150は、再度の暫定的な割り当てを制御装置120に通知する。なお、2回目以降のステップS105の実行においては、ホスト端末150は、入力ファイルで定義されている各種の情報(例えば出力領域の定義など)の制御装置120への通知を省略してよい。
こうして、新たな割り当てについての通知を受けると、制御装置120は、再度、ステップS106以降のステップを実行する。よって、仮にステップS104での最初の割り当てでは合計処理時間のばらつきが許容範囲外であっても、再割り当てが1回以上行われた結果として、ばらつきが許容範囲内であるような割り当てが見つかる。その結果、図6のステップS113以降のステップが実行される。
ある観点によれば、ステップS108の判断は、図1のステップS2に関して説明した基準(つまり、合計処理時間についての演算装置間での均等性に関する基準)が満たされるか否かについての判断である。合計処理時間T(h)のばらつきが許容範囲内ならば、基準は満たされ、ばらつきが許容範囲外ならば基準は満たされない。そして、基準が満たされるような割り当てが見つかるまで、ステップS111〜S112での再割り当てが繰り返されるので、ステップS109で最終的に決定される割り当ては、上記基準を満たす。つまり、ステップS2と同様に、第2実施形態においても、上記基準が満たされるという条件下での割り当てが行われる。
さて、制御装置120は、ステップS109で割り当てを最終的に決定した後、図6のステップS113を実行する。ステップS113で制御装置120は、PE(1)〜PE(n)の各々について、「計算領域」のサイズを算出する。ここで、PE(h)の「計算領域」とは、PE(h)に割り当てられた全セルについて電界と磁界を計算するためにPE(h)が使用するメモリ上の領域のことである。PE(h)の計算領域は、少なくとも、以下の領域を含む。
・PE(h)に割り当てられた各セルに関して計算される電界ベクトルのX成分、Y成分、Z成分を記憶する領域。
・PE(h)に割り当てられた各セルに関して計算される磁界ベクトルのX成分、Y成分、Z成分を記憶する領域。
制御装置120は、ステップS109で決定した割り当てに基づいて、各計算領域のサイズを算出する。そして、制御装置120は、PE(1)〜PE(n)の各々に、計算領域のサイズを通知する。
なお、図5〜7には、PE140−1と140−2がいずれも解析に使われる場合が例示されている(例えば、PE(1)がPE140−1であってもよく、PE(2)がPE140−2であってもよい)。よって、PE140−1は、PE140−1が使用するメモリ141−1上の領域のサイズについての通知を、制御装置120から受信する。同様に、PE140−2は、PE140−2が使用するメモリ141−2上の領域のサイズについての通知を、制御装置120から受信する。
ステップS114でPE140−1は、制御装置120からの通知に基づいて、計算領域を確保(allocate)する。同様に、ステップS115でPE140−2は、制御装置120からの通知に基づいて、計算領域を確保する。
一方、ホスト端末150は、「割り当てが決定した」とステップS110で判断した後、ステップS116で各PE(h)の「スケジュール表(schedule)」を作成する(1≦h≦n)。ここで、PE(h)の「スケジュール表」とは、PE(h)が実行する一連のコマンドのことである。スケジュール表に含まれる個々のコマンドは、具体的には、マシン語(machine code)である。
図10〜11は、スケジュール表を模式的に説明する図である。ステップS116でホスト端末150は、PE(1)〜PE(n)の各々について、図10〜11に例示するようなスケジュール表を作成してもよい。
なお、図10〜11におけるコマンドセット間の順序、コマンド間の順序、コマンドの数、および具体的なコマンドの内容などは、説明のための例示である。コマンドセット間の順序、コマンド間の順序、コマンドの数、および具体的なコマンドの内容などは、実施形態に応じて適宜変更されてよい。また、出力間隔によっては、出力を実行するか否かを判断するためのコマンドなどがさらに追加されてもよい。また、各コマンドの具体的内容は、PEの種類によって異なる。例えば、PEがFPGAまたはASICである場合、スケジュール表が、回路へ入力として与えられる入力パラメタの集合を含んでいてもよい。
さて、図10のスケジュール表200は、出力を担当するPE用のスケジュール表の例である。より具体的には、電界ベクトルと磁界ベクトルのそれぞれについてX成分、Y成分、Z成分を出力するようユーザが要求した場合の例が、図10には示されている。つまり図10は、式(21)においてNreq=6の場合の一例を示す。
スケジュール表200は、以下のようなコマンドセット201〜214を含む。各コマンドセットは、1つ以上のコマンドを含む。
・電界ベクトルのX成分Exを演算(compute)するためのコマンドセット201。
・電界ベクトルのY成分Eyを演算するためのコマンドセット202。
・電界ベクトルのZ成分Ezを演算するためのコマンドセット203。
・電界ベクトルのデータの送受信用のコマンドセット204。
・磁界ベクトルのX成分Hxを演算するためのコマンドセット205。
・磁界ベクトルのY成分Hyを演算するためのコマンドセット206。
・磁界ベクトルのZ成分Hzを演算するためのコマンドセット207。
・磁界ベクトルのデータの送受信用のコマンドセット208。
・スイッチ130と制御装置120を介して、Exの演算結果をHDD170に出力するための(つまりExの演算結果のコピー用の)コマンドセット209。
・Eyの演算結果のコピー用のコマンドセット210。
・Ezの演算結果のコピー用のコマンドセット211。
・Hxの演算結果のコピー用のコマンドセット212。
・Hyの演算結果のコピー用のコマンドセット213。
・Hzの演算結果のコピー用のコマンドセット214。
図10には、コマンドセット201〜214のうち、コマンドセット201の詳細が模式的に例示されている。また、図11には、コマンドセット204と209の詳細が模式的に例示されている。
例えば、あるPEには、ある媒質の内部に位置するセルのみが割り当てられている場合があり得る。図10には、そのような場合におけるコマンドセット201の例が模式的に示されている。上記のとおり、媒質の内部に位置するセルに関しては、式(6)により電界のX成分Exが計算されてもよい。以下に式(6)を再掲する。
Ex(i,j,k)=Cx*Ex(i,j,k)
+Gx*[{Hz(i,j,k)-Hz(i,j-1,k)}-{Hy(i,j,k)-Hy(i,j,k-1)}] (6)
図10には、式(6)に基づくコマンドセット201の詳細が、模式的に例示されている。具体的には、コマンドセット201は、以下のようなコマンド221〜232を含む。図10の例では、各メモリ141−pは、具体的にはSDRAM(Synchronous Dynamic Random Access Memory)であるものとする(1≦p≦P)。
・インデックス変数i,j,kにそれぞれ値を設定するためのいくつかのコマンド221(図10では便宜上、コマンド221が1つのブロックにより図示されている)。
・式(6)中の係数Cxをメモリから読み出すためのコマンド222。
・式(6)の右辺のEx(i,j,k)をメモリから読み出すためのコマンド223。
・式(6)中の係数Gxをメモリから読み出すためのコマンド224。
・式(6)中のHz(i,j,k)をメモリから読み出すためのコマンド225。
・式(6)中のHz(i,j−1,k)をメモリから読み出すためのコマンド226。
・式(6)中のHy(i,j,k)をメモリから読み出すためのコマンド227。
・式(6)中のHy(i,j,k−1)をメモリから読み出すためのコマンド228。
・式(6)にしたがって算術演算を行うためのいくつかのコマンド。なお、図10では図示の便宜上、コマンド229と230のみが例示されている。
・計算の結果として得られた値を、Ex(i,j,k)としてメモリに書き込むためのコマンド231。
・条件分岐とジャンプのためのいくつかのコマンド232。
なお、図10では便宜上、コマンド232が1つのブロックにより図示されている。コマンド232は、具体的には、「割り当てられた全セルについて電界ベクトルのX成分の計算が終了したのか、それとも、まだ次のセルが残っているのか」を判断するためのコマンドを含む。コマンド232はさらに、後者の場合においてインデックス変数i,j,kのうちのいずれか1つを更新するためのコマンドと、コマンド222のアドレスにジャンプするためのコマンドを含む。
ところで、図5のステップS107に関する上記の説明では、具体的なプログラムの実装に応じて見積もりが行われることを述べた。図10〜11は、その具体的なプログラムの実装の例を示す図でもある。
例えば、図10のコマンドセット201にしたがって、PEは、コマンド222〜228による7回のリードアクセスと、コマンド231による1回のライトアクセスを実行する。ステップS107に関して述べた「Nmem(h,g)=8」という例は、以上のようなコマンドセット201の詳細と対応している。
さて、図11には、電界ベクトルのデータの送受信用のコマンドセット204の詳細が模式的に例示されている。具体的には、コマンドセット204は、以下のようなコマンド241〜250を含む。
・インデックス変数i,j,kにそれぞれ値を設定するためのいくつかのコマンド241(図11では便宜上、コマンド241が1つのブロックにより図示されている)。
・隣接PEに送信する対象のEx(i,j,k)をメモリから読み出すためのコマンド242。
・隣接PEに送信する対象のEy(i,j,k)をメモリから読み出すためのコマンド243。
・隣接PEに送信する対象のEz(i,j,k)をメモリから読み出すためのコマンド244。
・読み出したEx(i,j,k)とEy(i,j,k)とEz(i,j,k)を隣接PEに送信するための、1つまたは複数のコマンド245。
・隣接PEから、インデックス(ii,jj,kk)により表される座標の電界ベクトルのデータを受信するための、1つまたは複数のコマンド246。
・受信したEx(ii,jj,kk)をメモリに書き込むためのコマンド247。
・受信したEy(ii,jj,kk)をメモリに書き込むためのコマンド248。
・受信したEz(ii,jj,kk)をメモリに書き込むためのコマンド249。
・コマンド232と類似の、条件分岐とジャンプのためのいくつかのコマンド250。ジャンプ先アドレス(jump-to address)はコマンド242のアドレスである。
なお、図11のコマンドセット204を実行するPEが、どのPEへデータを送信し、どのPEからデータを受信するかは、並列FDTD法の実装による。データの送信先および/またはデータの送信元は、例えば、「隣接する2つのPEがそれぞれ担当するセルの範囲がオーバラップするような割り当てが行われるか否か」といった、実装の詳細に依存する。
さて、図11には、スイッチ130と制御装置120を介して、Exの演算結果をHDD170に出力するための(つまりExの演算結果のコピー用の)コマンドセット209の詳細も、模式的に例示されている。具体的には、コマンドセット209は、以下のようなコマンド261〜264を含む。
・インデックス変数i,j,kにそれぞれ値を設定するためのいくつかのコマンド261(図11では便宜上、コマンド261が1つのブロックにより図示されている)。
・出力対象のEx(i,j,k)をメモリから読み出すためのコマンド262。
・読み出したEx(i,j,k)をHDD170に出力するための(換言すれば、読み出したEx(i,j,k)を、スイッチ130を介して制御装置120に送信するための)コマンド263。
・コマンド232と類似の、条件分岐とジャンプのためのいくつかのコマンド264。ジャンプ先アドレスはコマンド262のアドレスである。
上述の式(21)が、PEとメモリの間の伝送スループットTPmemによる除算を含むのは、コマンド262によるメモリアクセスによって、出力処理にかかる時間が影響を受けるからである。
さて、再度、図6の説明に戻る。ステップS116でホスト端末150は、例えば図10〜11のようなスケジュール表をPE(1)〜PE(n)の各々について作成し、作成した各スケジュール表を制御装置120に送信する。
すると、ステップS117で制御装置120は、初期化処理を行う。つまり、制御装置120は、各PE(h)に、PE(h)用のスケジュール表を送信する(1≦h≦n)。
よって、PE140−1はPE140−1用のスケジュール表を受信する。すると、PE140−1は、ステップS118で、「演算情報」を設定する。なお、ここでの「演算情報」とは、PE140−1が解析を実行するために使う情報であり、受信したPE140−1用のスケジュール表を少なくとも含む情報である。
例えばPE140−1が汎用的なCPUである場合、PE140−1用のスケジュール表は、具体的には、CPU用のマシン語で記述されたプログラムである。よって、この場合、ステップS118でPE140−1は、具体的には、受信したPE140−1用のスケジュール表をメモリ141−1にロードする。
同様に、PE140−2はPE140−2用のスケジュール表を受信する。そして、PE140−2は、ステップS119で演算情報を設定する。
また、制御装置120は、ステップS120でPE(1)〜PE(n)に演算を開始するよう命令する。すると、命令に応じて、PE(1)〜PE(n)は演算を開始する。
具体的には、ステップS121でPE140−1が電界を計算し、それと並行して、ステップS122でPE140−2が電界を計算する。
次に、ステップS123でPE140−1が電界のデータの送受信を行い、それと並行して、ステップS124でPE140−2が電界のデータの送受信を行う。例えば、PE140−1と140−2にそれぞれ割り当てられているセルの範囲同士がオーバラップする場合などには、PE140−1がPE140−2にデータを送り、かつ、PE140−1がPE140−2からデータを受信するような実装が採用されてもよい。図6でステップS123とS124を結ぶ両向き矢印は、このような実装を例示している。並列FDTD法の実装によっては、あるPEにとってのデータの送信先とデータの送信元が異なることもあり得る。
電界のデータの送受信の完了後、ステップS125でPE140−1が磁界を計算し、それと並行して、ステップS126でPE140−2が磁界を計算する。
次に、ステップS127でPE140−1が磁界のデータの送受信を行い、それと並行して、ステップS128でPE140−2が磁界のデータの送受信を行う。ステップS127〜S128はステップS123〜S124と類似である。
さてここで説明の便宜上、以下のように仮定する。
・図10のスケジュール表200に示すように、磁界のデータの送受信の後に出力処理が行われるような実装が採用されているものとする。
・ただし、図10のスケジュール表200では説明の簡単化のために省略されているが、PE140−1用のスケジュール表は、出力間隔に関する条件分岐コマンドなども含むものとする。
・PE140−1には、出力領域に含まれるセルが割り当てられているものとする。
・PE140−2には、出力領域に含まれるセルが割り当てられていないものとする。
以上のような仮定によれば、ステップS118で設定した演算情報にしたがって動作するPE140−1は、ステップS127での磁界のデータの送受信の完了後、ステップS129で、「出力処理を行うか否か」を判断する。この判断は、上記の仮定のとおり、PE140−1用のスケジュール表に含まれる条件分岐コマンドにしたがって行われる。
また、この条件分岐コマンドの引数に指定される出力間隔は、ステップS102の入力ファイルにおいて指定されている値である。つまり、ホスト端末150は、ステップS116でのスケジュール表の作成において、入力ファイルに指定されている出力間隔の値を参照して、ユーザにより指定された出力間隔に応じたコマンドをスケジュール表に含める。
PE140−1は、「出力処理を行う」とステップS129で判断した場合、次にステップS130で演算結果を出力する。例えば、電界と磁界の双方のデータを出力するようにユーザが指定した場合は、PE140−1は、ステップS121で計算した電界のデータと、S125で計算した磁界のデータを、スイッチ130を介して制御装置120に送信する。
ステップS130での演算結果の出力後、PE140−1はステップS131を実行する。あるいは、PE140−1は、「出力処理を行わない」とステップS129で判断した場合には、ステップS129での判断の次にステップS131を実行する。
具体的には、ステップS131でPE140−1は、解析対象の最後のステップ時間まで、既に解析を終えたか否かを判断する。最後のステップ時間まではまだ解析が済んでいない場合、PE140−1は、次にステップS121を再度実行する。つまり、最後のステップ時間まではまだ解析が済んでいない場合、PE140−1は、次のステップ時間に関する処理を行う。
さて、上記の仮定によれば、PE140−2には、出力領域に含まれるセルが割り当てられていない。よって、PE140−2は、ステップS128での送受信の完了後、ステップS132の判断を実行する。つまり、ステップS132でPE140−2は、解析対象の最後のステップ時間まで、既に解析を終えたか否かを判断する。最後のステップ時間まではまだ解析が済んでいない場合、PE140−2は、次にステップS122を再度実行する。
ところで、ステップS130で出力されたデータは、制御装置120を介してHDD170に書き込まれる。そして、HDD170に書き込まれたデータがユーザに提供される。
より具体的には、例えば図7に例示するように、制御装置120がステップS133でデータを圧縮して、圧縮したデータをHDD170に書き込んでもよい。制御装置120は、データのHDD170への書き込みをホスト端末150に通知してもよい。
また、ホスト端末150は、ステップS134で、HDD170上のデータ(つまり解析結果)を加工してもよい。例えば、ホスト端末150は、電界および/または磁界の数値データを視覚化してもよい。つまり、ホスト端末150は、電界および/または磁界の経時的変化を示す動画データを生成してもよい。ホスト端末150は、加工した解析結果をユーザ端末160に送信する。
すると、ステップS135でユーザ端末160は、解析結果を表示する。よって、ユーザは、解析結果を見ることができる。
ところで、説明の簡単化のため図5〜7では省略されているが、制御装置120は、PE(1)〜PE(n)による解析の進捗を監視してもよい。例えば各PE(h)は、1ステップ時間についての一連の処理が終了するたびに(例えばステップS131やS132の判断の直前に)、制御装置120に終了を通知してもよい。すると、制御装置120は、各PE(h)からの通知に基づいて、解析の進捗を監視することができる。
全ステップ時間について解析が完了した場合、ステップS136で制御装置120は、演算終了をPE(1)〜PE(n)とホスト端末150に通知する。すると、通知に応じて、ステップS137でPE140−1は、計算領域を解放する。同様に、ステップS138でPE140−2も、計算領域を解放する。また、ステップS139でホスト端末150は、適宜の終了処理を行う。終了処理は、例えば、ユーザ端末160に対して終了を通知する処理であってもよい。
続いて、以上説明した図5〜7の処理に関する更なる詳細を説明する。
以下に説明するステップS111〜S112の具体例は、PE140−1〜140−Pが図4のトポロジT1のようにZ方向に1次元的に接続されている場合に適用可能である。この場合、Z方向に接続されるP台のPEのうちのn台が解析に使われる。
また、以下に説明するステップS111〜S112の具体例は、PE140−1〜140−PがトポロジT2のようにY方向とZ方向に2次元メッシュ状に接続されている場合にも適用可能である。この場合、「解析に使う」とステップS104で決められたn台のPEは、具体的には、Y方向にny台並び、Z方向にnz台並んだ、合計(ny×nz)台のPEであるものとする。つまり、n=ny×nzとする。なお、nyは1以上n以下の整数であり、nzも1以上n以下の整数である。PE140−1〜140−PがトポロジT1のように接続されている場合は、ny=1である。
以下では説明の便宜上、PE(1)〜PE(n)のうち、Y方向に接続されるny台のPEを「1列(column)のPE」とも言う。また、PE(1)〜PE(n)のうち、Z方向に接続されるnz台のPEを「1行(row)のPE」とも言う。
図5のステップS111でホスト端末150は、n台のPEのうち、出力領域を担当するPEを含むような、ある1行のPEに着目する。そして、ホスト端末150は、着目した行の中で、出力を担当するPEの台数を、Z軸の正の方向または負の方向に、1つ増やす。そして、ステップS112でホスト端末150は、ステップS111で着目した行において、nz台のPE間でのセルの割り当てを変更する。さらに、ny>1の場合には、ホスト端末150は、残りの行の割り当ても同様に変更する。
以下、図12〜13を参照して、ステップS111についてさらに詳しく説明する。図12は、ある1行のnz台のPEの中で出力を担当するPEを増やす処理を例示する図である。また、図13は図12に例示した処理のためのフローチャートである。
図12には、PE(1)〜PE(n)のうち、ステップS111でホスト端末150がPE(1)〜PE(nz)に着目した場合の3つの例E3〜E5が示されている。図12では、小さな矩形が個々のセルを示す。また、各PEに割り当てられる複数のセルが、太線で囲われている。出力領域A4〜A6に属するセルは、網点パターンにより示されている。
図12に示すように、PE(1)は、解析対象領域中でZ方向において最も原点に近いセルが割り当てられるPEである。逆に、PE(nz)は、解析対象領域中でZ方向において最も原点から遠いセルが割り当てられるPEである。
また、以下では説明の便宜上、ステップS111でホスト端末150が着目した行のnz台のPEのうち、出力を担当するPEの数をNとする(1≦N<nz)。そして、それらN台のPEを、「PE_o(1)〜PE_o(N)」とも表記する。
なお、図12に示すように、PE_o(1)は、出力領域中でZ方向において最も原点に近いセルが割り当てられるPEであるものとする。逆に、PE_o(N)は、出力領域中でZ方向において最も原点から遠いセルが割り当てられるPEであるものとする。
例E3のようにPE_o(1)=PE(1)である場合、ホスト端末150は、PE_o(N)とZ軸の正の方向に隣接するPEを、出力を担当するPEの集合に加える。こうして加えられたPEが、例E3では、「PE_o(N+1)」と示されている。
例E4のようにPE_o(N)=PE(nz)である場合、ホスト端末150は、PE_o(1)とZ軸の負の方向に隣接するPEを、出力を担当するPEの集合に加える。この場合、今までのPE_o(k)が、新たなPE_o(k+1)である(1≦k≦N)。また、出力を担当するPEの集合に新たに加えられたPEが、新たなPE_o(1)である。
例E5のように、PE_o(1)≠PE(1)かつPE_o(N)≠PE(nz)の場合もあり得る。この場合、ホスト端末150は、PE_o(N)とZ軸の正の方向に隣接するPEを、出力を担当するPEの集合に加えてもよいし、あるいは、PE_o(1)とZ軸の負の方向に隣接するPEを、出力を担当するPEの集合に加えてもよい。よりバランスの良い割り当てのためには、ホスト端末150は、出力を担当するPEの集合に加えるPEを、以下の2つの範囲R1とR2に基づいて決定することが好ましい。
・PE_o(1)〜PE_o(N)に暫定的に割り当てられているセルのZ方向の範囲R1。
・出力領域A6のZ方向の範囲R2。
より具体的には、ホスト端末150は、PE_o(1)〜PE_o(N)に暫定的に割り当てられているセルの中心点のZ座標(以下「Zoc」と表記する)を算出する。また、ホスト端末150は、出力領域A6の中心点のZ座標(以下「Zc」と表記する)を算出する。座標ZocとZcは、セルを単位として表される格子座標である。
そして、例E5のようにZoc>Zcの場合は、ホスト端末150は、PE_o(N)とZ軸の正の方向に隣接するPEを、出力を担当するPEの集合に加える。こうして加えられたPEが、例E5では、「PE_o(N+1)」と示されている。
逆にZoc≦Zcの場合は、ホスト端末150は、PE_o(1)とZ軸の負の方向に隣接するPEを、出力を担当するPEの集合に加える。この場合、今までのPE_o(k)が、新たなPE_o(k+1)である(1≦k≦N)。また、出力を担当するPEの集合に新たに加えられたPEが、新たなPE_o(1)である。
以上、図12を参照して説明した処理は、具体的には図13のフローチャートにしたがって行われる。
ステップS301でホスト端末150は、以下の2つが等しいか否かを判断する。
・ホスト端末150が着目している行において出力を担当するN台のPE(すなわちPE_o(1)〜PE_o(N))のうち、原点に最も近い、最近端のPE(すなわちPE_o(1))。
・ホスト端末150が着目している行内の全部でnz台のPEのうち、最近端のPE(例えば、PE(1)〜PE(nz)の行にホスト端末150が着目している場合は、PE(1))。
両者が等しい場合(例えば、図12の例E3のような場合)、ホスト端末150は次にステップS302を実行する。逆に、両者が異なるPE同士である場合は、ホスト端末150は次にステップS303を実行する。
ステップS302でホスト端末150は、ホスト端末150が着目している行において出力を担当するN台のPEのうちの最遠端のPE(つまりPE_o(N))にZ軸の正の方向に隣接するPEを、出力を担当するPEの集合に追加する。こうして追加されるPEが、図12の例E3やE5では「PE_o(N+1)」と示されている。ステップS302の実行が完了すると、図13の処理も完了する。
ステップS303でホスト端末150は、以下の2つが等しいか否かを判断する。
・ホスト端末150が着目している行において出力を担当するN台のPE(すなわちPE_o(1)〜PE_o(N))のうち、原点から最も遠い、最遠端のPE(すなわちPE_o(N))。
・ホスト端末150が着目している行内の全部でnz台のPEのうち、最遠端のPE(例えば、PE(1)〜PE(nz)の行にホスト端末150が着目している場合は、PE(nz))。
両者が等しい場合(例えば、図12の例E4のような場合)、ホスト端末150は次にステップS304を実行する。逆に、両者が異なるPE同士である場合は、ホスト端末150は次にステップS305を実行する。
ステップS304でホスト端末150は、ホスト端末150が着目している行において出力を担当するN台のPEのうちの最近端のPE(つまりPE_o(1))にZ軸の負の方向に隣接するPEを、出力を担当するPEの集合に追加する。図12の例E4に示すとおり、今までのPE_o(k)が、新たなPE_o(k+1)である(1≦k≦N)。また、出力を担当するPEの集合に新たに加えられたPEが、新たなPE_o(1)である。ステップS304の実行が完了すると、図13の処理も完了する。
ステップS305でホスト端末150は、出力領域の中心点の座標(Xoc,Yoc,Zoc)を算出する。ここで、出力領域の最近端の格子座標を(Xos,Yos,Zos)とし、出力領域の最遠端の格子座標を(Xoe,Yoe,Zoe)とする。ステップS305でホスト端末150は、具体的には、以下の式(23)〜(25)にしたがって出力領域の中心点の座標(Xoc,Yoc,Zoc)を算出する。
Xoc=(Xos+Xoe)/2 (23)
Yoc=(Yos+Yoe)/2 (24)
Zoc=(Zos+Zoe)/2 (25)
次に、ステップS306でホスト端末150は、ホスト端末150が着目している行において出力を担当するN台のPE(すなわちPE_o(1)〜PE_o(N))が担当する全セルの中心点の座標(Xc,Yc,Zc)を算出する。なお、ある正のhが存在して、1≦k≦Nなる各kについてPE(h+k)=PE_o(k)だとすると、式(19)や式(20)で用いた表記を使って、座標(Xc,Yc,Zc)は式(26)〜(28)のように表される。
Xc=(Xs(h+1)+Xe(h+N))/2 (26)
Yc=(Ys(h+1)+Ye(h+N))/2 (27)
Zc=(Zs(h+1)+Ze(h+N))/2 (28)
次に、ステップS307でホスト端末150は、ZocがZcより大きいか否かを判断する。Zoc>Zcの場合(例えば、図12の例E5のような場合)、ホスト端末150は次にステップS302を実行する。逆に、Zoc≦Zcの場合、ホスト端末150は次にステップS304を実行する。
なお、図13の処理はZ軸方向での割り当ての調整に関する処理である。よって、ステップS305とS306では、X座標とY座標の算出は省略されてもよい。
例えば、図5のステップS104での初期割り当てが図8のようであり、かつ、ステップS111でホスト端末150がPE(1)〜PE(25)のうちPE(1)〜PE(5)の行に着目したとする。この場合、以下のとおりである。
・ny=5
・nz=5
・N=1
・PE_o(1)=PE_o(N)=PE(2)
・Zoc=(5+8)/2=6.5
・Zc=(4+8)/2=6
したがって、ステップS301、S303、S305、S306、S307、S302が、この順に実行され、出力を担当するPEの集合にはPE(3)が追加される。
続いて、図14〜18を参照して、図5のステップS112についてさらに詳しく説明する。図14は、ホスト端末150が、ステップS111で着目した行のnz台のPEの中での割り当てを変更する再割り当て処理の概要を説明する図である。理解を容易にするために、図14には、以下のような具体的な場合における再割り当て処理が例示されている。
・解析対象領域のZ方向の範囲(より詳しくは、格子座標で表される範囲)は、0≦Z≦36である。
・出力領域A7のZ方向の範囲(より詳しくは、格子座標で表される範囲)は、9≦Z≦18である。
・nz=6である。
・PE(1)〜PE(6)の行がステップS111で着目された。
・現在の暫定的な割り当てによれば、PE(1)〜PE(6)のいずれにも、Z方向に6個のセルが割り当てられている。
・よって、N=2かつPE_o(1)=PE(2)かつPE_o(2)=PE(3)である。
以上のような場合において、図5のステップS111(より詳細には図13の処理)が実行されると、PE(4)が、出力を担当するPEの集合に新たに追加される。なぜなら、以下のとおりZoc>Zcなので、ステップS302が実行されるからである。
・Zoc=(9+18)/2=13.5
・Zc=(6+18)/2=12
図14のステップS401は、以上のようにしてPE(4)が、出力を担当するPEの集合に、PE_o(3)として新たに追加された段階を示す。
次に、ステップS402でホスト端末150は、出力領域A7のZ方向の範囲を、出力を担当する(N+1)台のPEに均等に割り当てる。図14の例では、出力領域A7のZ方向には9個のセルが含まれ、(N+1)=3である。よって、ホスト端末150は、PE_o(1)〜PE_o(3)の各々に、Z方向に3(=9/3)個ずつのセルを暫定的に割り当てる。なお、出力領域A7のZ方向のセルの個数が(N+1)で割り切れない場合は、ホスト端末150は適宜の端数処理を行う。
また、ステップS402では、出力領域A7に属さないセルの割り当ては変更されない。例えば、6≦Z≦9の範囲に属するセルは、PE_o(1)(すなわちPE(2))に暫定的に割り当てられたままである。同様に、18≦Z≦24の範囲に属するセルは、PE_o(3)(すなわちPE(4))に暫定的に割り当てられたままである。
次に、ステップS403でホスト端末150は、以下の2つのセルの集合間の境界B1を調整する。
・出力を担当するPEの集合に、新たに追加したPE(つまりPE_o(3))に割り当てられるセルの集合。
・当該新たに追加したPEから見て、原点から離れる方向にあって、かつ、出力を担当しないPE(つまりPE(5)とPE(6))に割り当てられるセルの集合。
図14の例では、ステップS403が実行される直前の境界B1のZ座標は、24である。ステップS403でホスト端末150は、具体的には、Z軸の負の方向に境界B1をずらしながら、以下の2つの条件がともに満たされるような境界B1の位置を探す。
1つ目の条件は、「PE_o(3)(すなわちPE(4))の合計処理時間T(4)が、第1の閾値未満である」という条件である。
また、PE_o(3)から見て原点から遠い方にあって、出力を担当しない全PE(すなわちPE(5)とPE(6))に、原点から見て出力領域A7より遠くにある出力領域A7外のセルを、ホスト端末150が均等に割り当てるものとする。2つ目の条件は、「こうして均等にセルが割り当てられたそれらのPEの合計処理時間の平均値が、第2の閾値未満である」という条件である。
以下、第1の閾値を「U1」と表記し、第2の閾値を「U2」と表記する。閾値U1とU2は互いに等しくてもよく、異なっていてもよい。
例えば、解析に使われるn台のPEについてステップS107で見積もられた合計処理時間の平均値と、適宜の定数との積が、閾値U1として使われてもよい。閾値U2についても同様である。また、上記の「適宜の定数」は、1より大きな値だが、あまり大きすぎない値である。例えば、1.1〜1.3程度の値が上記の「適宜の定数」として使われてもよい。
図14の例では、ステップS402の段階における境界B1のZ座標(より詳しくは格子座標)は24である。よって、ホスト端末150は、境界B1のZ座標を1ずつ減らしながら、2つの条件がともに満たされるか否かをチェックする。そして、2つの条件が同時に満たされるような境界B1の位置が見つかったら、ホスト端末150は境界B1を固定する。
2つの条件が同時には満たされない場合、ホスト端末150は、ステップS404の調整を行う。具体的には、ホスト端末150は、2つ目の条件が満たされる中で最も原点に近いZ座標に境界B1を固定する。そして、ホスト端末150は、1つ目の条件が満たされるように、以下の2つのセルの集合間の境界B2を調整する。
・PE_o(3)に割り当てられるセルの集合。
・出力を担当するPEのうち、今回新たに追加されたPE_o(3)に隣接するPE(つまりPE_o(2))に割り当てられるセルの集合。
なお、ステップS404における調整は、具体的には、境界B2をZ軸の正の方向に1セルずつ移動させることによる調整である。図14の例では、ステップS404の調整が行われる直前の境界B2のZ座標は、15である。
その後、ホスト端末150はステップS405で、ステップS403〜S404と類似の調整を、出力領域A7の最近端のセルを担当するPE_o(1)に関して行う。ステップS405の調整は、ステップS403〜S404の調整と対称的な調整である。
換言すれば、ステップS403のように境界B1をZ軸の負の方向に移動する調整の代わりに、ステップS405では境界をZ軸の正の方向に移動する調整が行われる。また、ステップS404のように境界B2をZ軸の正の方向に移動する調整の代わりに、ステップS405では境界をZ軸の負の方向に移動する調整が行われる。
図14には、PE_o(1)(つまりPE(2))に割り当てられるセルの集合と、PE(1)に割り当てられるセルの集合との境界B3を、Z軸の正の方向に移動する調整(つまりステップS403と類似の調整)が図示されている。上記の2つの条件が同時には満たされない場合にステップS404が行われるのと同様に、以下の2つの条件が同時には満たされない場合に、ステップS405では、ステップS404と対称的な不図示の調整が行われる。
・PE_o(1)(すなわちPE(2))の合計処理時間T(2)が、閾値U1未満である。
・PE_o(1)から見て原点に近い方にあって、出力を担当しない全PEに、原点から見て出力領域A7より近くにある出力領域A7外のセルを均等に割り当てた場合、均等にセルが割り当てられた上記全PEの合計処理時間の平均値が、閾値U2未満である。
最後に、ステップS406でホスト端末150は、出力領域A7のZ方向の範囲うち、PE_o(1)にもPE_o(N+1)にも割り当てられていない残りの範囲のセルを、PE_o(2)〜PE_o(N)に均等に割り当てる。図14の例ではN=2なので、残りの範囲のセルはすべてPE_o(2)(つまりPE(3))に割り当てられる。
つまり、図14の再割り当てによれば、以下のように暫定的な割り当てが変化する。以下の変化は、PE間での合計処理時間の均等性を高めるような変化である。
・出力を担当しないPE(1)に割り当てられるセルの範囲は、0≦Z≦6から0≦Z≦7に広がる。
・出力を担当するPE(2)に割り当てられるセルの範囲は、6≦Z≦12から7≦Z≦12に縮まる。
・同様に、出力を担当するPE(3)に割り当てられるセルの範囲は、12≦Z≦18から12≦Z≦16に縮まる。
・新たに出力を担当することに決められたPE(4)に割り当てらるセルの範囲は、18≦Z≦24から16≦Z≦22へと変更される。
・出力を担当しないPE(5)に割り当てられるセルの範囲は、24≦Z≦30から22≦Z≦29へと変更される(つまり範囲が広がる)。
・出力を担当しないPE(6)に割り当てられるセルの範囲は、30≦Z≦36から29≦Z≦36に広がる。
続いて、図14を参照して説明した以上の処理について、図15〜18のフローチャートを参照してより詳しく説明する。図5のステップS111に相当する図13の処理において、出力を担当するPEの集合への新たなPEの追加が、ステップS302で行われた場合は、図15〜16のフローチャートにしたがってステップS112の再割り当てが行われる。逆に、出力を担当するPEの集合への新たなPEの追加が、ステップS304で行われた場合は、図17〜18のフローチャートにしたがってステップS112の再割り当てが行われる。
図15〜16のフローチャートと、図17〜18のフローチャートは、「Z軸の正の方向か負の方向か」ということに関して対称的である。なお、ステップS112に関して説明したように、ホスト端末150は、n(=ny×nz)台のPEのうち、ある1行のnz台のPEに着目して、それらnz台のPEの中での再割り当てを行う。そして、ny>1の場合には、ホスト端末150は、残りの行の割り当ても同様に変更する。図15〜18に関する以下の説明では、便宜上、ホスト端末150がPE(1)〜PE(nz)の行に着目したものと仮定している。
さて、図15のステップS501でホスト端末150は、出力領域のZ方向の範囲(例えば、図8の例では5≦Z≦8、図14の例では9≦Z≦18)を、PE_o(1)〜PE_o(N+1)に均等に割り当てる。ステップS501は図14のステップS402に相当する。ステップS402に関して説明したとおり、ステップS501では、出力領域に属さないセルの割り当ては変更されない。
なお、出力領域のZ方向に沿ったセルの個数が(N+1)で割り切れない場合は、ホスト端末150は適宜の端数処理を行う。以下、特に明示はしないが、他のステップ(例えばステップS504、S514、S516、S525など)でも、場合によっては何らかの端数処理が行われる。
次に、ステップS502でホスト端末150は、出力を担当するPEの集合に図13のステップS302で追加したPE_o(N+1)に関する判断を行う。具体的には、ホスト端末150は、PE_o(N+1)がPE(nz)であるか否かを判断する。
PE_o(N+1)がPE(nz)でない場合、PE_o(N+1)に割り当てるセルのZ方向の範囲に関して、Z座標の上限を調整する余地があり得る。例えば、図14では、PE_o(N+1)(すなわちPE_o(3))は、PE(nz)(すなわちPE(6))ではない。よって、図14では、PE_o(3)に割り当てられるセルのZ方向の範囲に関して、Z座標の上限(つまり境界B1のZ座標)を調整する余地があり得る。よって、PE_o(N+1)がPE(nz)でない場合、ホスト端末150は次にステップS503を実行する。
逆に、PE_o(N+1)がPE(nz)である場合、PE_o(N+1)に割り当てるセルのZ方向の範囲に関して、Z座標の上限を調整する余地はない。よって、この場合、ホスト端末150は、PE_o(N+1)に割り当てるセルの範囲に関して、Z座標の下限を調整するか否かを決めるために、次にステップS511を実行する。
さて、ステップS503〜S508のループは、図14のステップS403に対応する。また、ステップS509とステップS510〜S512のループは、図14のステップS404に対応する。
なお、以下では説明の便宜上、PE間のトポロジのZ方向において、PE_o(1)よりも原点に近いPE(例えば図14におけるPE(1)など)を、「出力を担当しない、近端側(near side)のPE」と言う。逆に、PE間のトポロジのZ方向において、PE_o(N+1)よりも原点から遠いPE(例えば図14におけるPE(5)とPE(6)など)を、「出力を担当しない、遠端側(far side)のPE」と言う。
また、Z方向において出力領域よりも原点に近い位置にあるセル(例えば図14において、セルの最遠端のZ座標が9以下であるようなセル)を、「出力領域外にある近端側のセル」と言う。逆に、Z方向において出力領域よりも原点から遠い位置にあるセル(例えば図14において、セルの最近端のZ座標が18以上であるようなセル)を、「出力領域外にある遠端側のセル」と言う。
具体的には、ステップS503でホスト端末150は、PE_o(N+1)に割り当てられるセルの集合と、出力を担当しない遠端側のPEに割り当てられるセルの集合との境界のZ座標を、1だけ減らす。ステップS503は、図14のステップS403で境界B1を左の方向に1セル分だけ移動することに対応する。
次に、ステップS504でホスト端末150は、出力を担当しない遠端側の全PEに、出力領域外にある遠端側の全セルを均等に割り当てる。つまり、Z方向において、ステップS503で更新された境界のZ座標から、解析対象領域のZ座標の上限までの範囲に含まれるセルを、ホスト端末150は、出力を担当しない遠端側の全PEに均等に割り当てる。なお、ステップS504が実行される場合、出力を担当しない遠端側のPEの個数は1以上である(なぜなら、PE_o(N+1)≠PE(nz)だということがステップS502で既に確認されているため)。
次に、ステップS505でホスト端末150は、ステップS504での暫定的な割り当てに基づいて、出力を担当しない遠端側のPEの合計処理時間(以下「T2」とする)を算出する。
ところで、上記のとおり出力を担当しない遠端側のPEの個数は1以上である。ホスト端末150は、そのうちの任意の1台のPEについて合計処理時間を算出し、算出結果を合計処理時間T2として用いてもよい。あるいは、ホスト端末150は、出力を担当しない遠端側の全PEについてそれぞれ合計処理時間を算出し、算出した合計処理時間の平均値を合計処理時間T2として用いてもよい。
上記のとおり、ステップS504の割り当ては、セルの数に関して均等な割り当てである。よって、Z方向のセルの個数についての端数の影響や、セルの数以外の要因による影響がわずかならば、ホスト端末150は、出力を担当しない遠端側の任意の1台のPEの合計処理時間を、合計処理時間T2として用いてもよい。
逆に、出力を担当しない遠端側のPE間での、以下のような種々の影響による合計処理時間のばらつきを考慮に入れるために、ホスト端末150は、出力を担当しない遠端側の全PEの合計処理時間の平均値を、合計処理時間T2として用いてもよい。
・Z方向のセルの個数についての端数の影響。
・波源もしくは回路素子が存在するセルがあるか否かによる影響。
・媒質間の境界もしくは吸収境界に接するセルがあるか否かによる影響。
なお、ステップS505でホスト端末150が個々のPEについて合計処理時間を算出する具体的な方法は、図5のステップS107で制御装置120が各PEの処理時間を見積もる方法と同様である。また、後述のステップS507、S511、S517、S519、S523などにおいても、ホスト端末150は、ステップS107と同様の方法で合計処理時間を算出する。
さて次に、ステップS506でホスト端末150は、合計処理時間T2を、図14のステップS403に関して説明した閾値U2と比較する。
T2<U2ならば、ステップS403に関して説明した2つ目の条件が満たされる。よって、T2<U2の場合、「1つ目の条件も満たされるか否か」をさらにチェックするために、ホスト端末150は次にステップS507を実行する。逆に、T2≧U2ならば、ホスト端末150は次にステップS509を実行する。
ステップS507でホスト端末150は、PE_o(N+1)の合計処理時間(以下「T1」とする)を算出する。ステップS507での合計処理時間T1の算出は、ステップS501での割り当てと、ステップS503で移動した境界とに基づく。つまり、合計処理時間T1は、PE_o(N+1)に割り当てられるセルの範囲の変更に基づいて算出される。
次に、ステップS508でホスト端末150は、合計処理時間T1を、図14のステップS403に関して説明した閾値U1と比較する。
T1<U1ならば、ステップS403に関して説明した1つ目の条件も満たされる。よって、T1<U1の場合、図14のステップS404のような調整は省略される。具体的には、T1<U1の場合、ホスト端末150は次にステップS513を実行する。
逆に、T1≧U1ならば、ホスト端末150は再度ステップS503を実行する。つまり、場合によっては、ステップS503〜S508の一連の処理が2回以上繰り返し実行される。そして、そのような繰り返しにより、PE_o(N+1)に割り当てられるセルの集合と、出力を担当しない遠端側のPEに割り当てられるセルの集合との境界のZ座標が、徐々に減らされてゆく。
ここで、境界のZ座標を減らすことは、すなわち、PE_o(N+1)に割り当てるセルの個数を減らし、代わりに、出力を担当しない遠端側のPEに割り当てるセルの個数を増やすことである。このような境界の移動は、PE_o(N+1)の合計処理時間を閾値U1未満に抑えるために行われる。
しかし、場合によっては、PE_o(N+1)の合計処理時間が閾値U1未満に減るよりも前に、出力を担当しない遠端側のPEの合計処理時間T2が閾値U2以上になってしまう可能性がある。つまり、出力を担当しない遠端側のPEにホスト端末150があまりに多くのセルを割り当てすぎたために、合計処理時間T2が長くなり過ぎる場合があり得る。この場合、ステップS506でT2≧U2と判断される。つまり、図14に関して説明した「2つの条件が同時には満たされない場合」とは、具体的には、ステップS506でT2≧U2と判断される場合である。
図14のステップS404に関して説明したとおり、2つの条件が同時には満たされない場合、ホスト端末150は、以下のように動作する。
・PE_o(N+1)に割り当てられるセルの集合の遠端側の境界を、2つ目の条件が満たされる中で最も原点に近いZ座標に固定する。
・1つ目の条件が満たされるように、PE_o(N+1)に割り当てられるセルの集合の近端側の境界を調整する。
図14のステップS404での調整は、図15のステップS509〜S512に相当する。
具体的には、まず、ステップS509でホスト端末150は、直近のステップS503で減らしたZ座標を1つだけ戻す。つまり、ホスト端末150は、PE_o(N+1)に割り当てられるセルの集合と、出力を担当しない遠端側のPEに割り当てられるセルの集合との境界のZ座標を、1つだけ増やす。例えば図14に関して例示したようなやり方によって、閾値U2が適切に定められている限り、ステップS509の実行により2つ目の条件が再度満たされるようになる。
また、ステップS509の結果として、PE_o(N+1)に割り当てられるセルの集合と、出力を担当しない遠端側のPEに割り当てられるセルの集合との境界が固定される。なおここでの「固定」とは、図15〜16の再割り当て処理の中での「固定」に過ぎず、図15〜16の処理による再割り当て自体がまだ暫定的なものであることに注意されたい。
次に、ステップS510でホスト端末150は、PE_o(N+1)に割り当てられるセルの集合と、PE_o(N)に割り当てられるセルの集合との境界のZ座標を、1だけ増やす。例えば、図14のステップS404での境界B2の移動は、ステップS510に相当する。
次に、ステップS511でホスト端末150は、PE_o(N+1)の合計処理時間T1を算出する。ステップS511では、ステップS509で固定された遠端側の境界と、ステップS510で変更された近端側の境界に基づいて(つまり、PE_o(N+1)に割り当てられるセルの範囲の変更に基づいて)、合計処理時間T1が算出される。
そして、ステップS512でホスト端末150は、合計処理時間T1を閾値U1と比較する。
T1<U1ならば、ステップS403に関して説明した1つ目の条件も満たされる。よって、T1<U1の場合、図14のステップS405のような調整が適用可能か否かをチェックするために、ホスト端末150は次にステップS513を実行する。
逆に、T1≧U1ならば、ホスト端末150は再度ステップS510を実行する。つまり、場合によっては、ステップS510〜S512の一連の処理が2回以上繰り返し実行される。そして、そのような繰り返しにより、PE_o(N+1)に割り当てられるセルの個数が徐々に減らされてゆく。例えば図14に関して例示したようなやり方によって閾値U1が適切に定められている限り、セルの個数の減少に応じて、いずれはステップS512でT1<U1と判断される。
また、ステップS502に関して述べたように、PE_o(N+1)がPE(nz)である場合にも、ステップS511が実行され、続いてステップS512が実行される。この場合、合計処理時間T1が閾値U1未満ならば、PE_o(N+1)に割り当てるセルの個数を調整する必要がない。よって、T1<U1ならば、ホスト端末150は次にステップS513を実行する。逆に、T1≧U1ならば、ステップS510の実行により、PE_o(N+1)に割り当てるセルの個数が減らされる。
さて、ステップS513でホスト端末150は、PE_o(1)がPE(1)であるか否かを判断する。PE_o(1)がPE(1)である場合、ホスト端末150は次にステップS514を実行する。逆に、PE_o(1)がPE(1)でない場合、図14のステップS405のような調整が適用可能なので、ホスト端末150は次に図16のステップS515を実行する。
ステップS514でホスト端末150は、出力領域の残りの部分をPE_o(1)〜PE_o(N)に均等に割り当てる。ここで、「出力領域の残りの部分」とは、出力領域のZ方向の最近端から、ステップS514が実行される時点においてPE_o(N+1)に割り当てられているセルの集合のZ方向の最近端までの範囲である。
なお、ステップS514が実行される場合、PE_o(1)はPE(1)である。よって、出力領域外の近端側にセルが1つ以上存在する場合、当該1つ以上のセルはPE_o(1)に割り当てられている。この場合、ステップS514の実行の結果として、PE_o(1)には、出力領域外にある近端側の上記1つ以上のセルと、ステップS514での均等な割り当てによる出力領域内の1つ以上のセルが割り当てられることになる。
ステップS514での割り当てが完了すると、図15〜16の再割り当て処理も完了する。
さて、図16のステップS515〜S524は図14のステップS405に対応し、ステップS525はステップS406に対応する。また、ステップS515〜S524は、ステップS503〜S512と対称な処理である。よって、以下ではステップS515〜S524の意味についての詳細な説明は省略する。
ステップS515でホスト端末150は、PE_o(1)に割り当てられるセルの集合と、出力を担当しない近端側のPEに割り当てられるセルの集合との境界のZ座標を、1だけ増やす。次に、ステップS516でホスト端末150は、出力を担当しない近端側の全PEに、出力領域外にある近端側の全セルを均等に割り当てる。
そして、ステップS517でホスト端末150は、ステップS516での割り当てに基づいて、出力を担当しない近端側のPEの合計処理時間(以下「T4」とする)を算出する。ホスト端末150は、出力を担当しない近端側の任意の1台のPEの合計処理時間を合計処理時間T4として用いてもよいし、出力を担当しない近端側の全PEの合計処理時間の平均値を合計処理時間T4として用いてもよい。
続いて、ステップS518でホスト端末150は、合計処理時間T4と閾値U2を比較する。T4<U2ならば、ホスト端末150は、次にステップS519を実行する。逆に、T4≧U2ならば、ホスト端末150は次にステップS521を実行する。
ステップS519でホスト端末150は、ステップS501での割り当てと、ステップS515で移動した境界とに基づいて、PE_o(1)の合計処理時間(以下「T3」とする)を算出する。そして、ステップS520でホスト端末150は、合計処理時間T3と閾値U1を比較する。T3<U1ならば、ホスト端末150は次にステップS525を実行する。逆に、T3≧U1ならば、ホスト端末150は再度ステップS515を実行する。
さて、ステップS521でホスト端末150は、直近のステップS515で増やしたZ座標を1つだけ戻す。つまり、ホスト端末150は、PE_o(1)に割り当てられるセルの集合と、出力を担当しない近端側のPEに割り当てられるセルの集合との境界のZ座標を、1だけ減らす。
次に、ステップS522でホスト端末150は、PE_o(1)に割り当てられるセルの集合と、PE_o(2)に割り当てられるセルの集合との境界のZ座標を、1だけ減らす。そして、ステップS523でホスト端末150は、ステップS521で固定された近端側の境界と、ステップS522で変更された遠端側の境界に基づいて、PE_o(1)の合計処理時間T3を算出する。
次に、ステップS524でホスト端末150は、合計処理時間T3を閾値U1と比較する。T3<U1ならば、ホスト端末150は次にステップS525を実行する。逆に、T3≧U1ならば、ホスト端末150は再度ステップS522を実行する。
ステップS525でホスト端末150は、出力領域の残りの部分をPE_o(2)〜PE_o(N)に均等に割り当てる。ここで、「出力領域の残りの部分」とは、PE_o(1)に割り当てられているセルの最遠端から、PE_o(N+1)に割り当てられているセルの最近端までの範囲である。ステップS525での割り当てが完了すると、図15〜16の再割り当て処理も完了する。
続いて、図17〜18のフローチャートについて説明する。上記のように、図13の処理において、出力を担当するPEの集合への新たなPEの追加が、ステップS304で行われた場合は、図17〜18のフローチャートにしたがって図5のステップS112の再割り当てが行われる。また、図17〜18のフローチャートは、「Z軸の正の方向か負の方向か」ということに関して、図15〜16のフローチャートと対称的である。よって、図17〜18のフローチャートについては簡単に説明する。
ステップS601はステップS501と同様である。
次に、ステップS602でホスト端末150は、PE_o(1)がPE(1)であるか否かを判断する。PE_o(1)がPE(1)の場合、ホスト端末150は次にステップS611を実行する。PE_o(1)がPE(1)ではない場合、ホスト端末150は次にステップS603を実行する。ステップS603〜S612は、ステップS515〜S524と同様である。
ステップS608またはS612でT3<U1と判断した場合、ホスト端末150は、次にステップS613を実行する。具体的には、ステップS613でホスト端末150は、PE_o(N+1)がPE(nz)であるか否かを判断する。
PE_o(N+1)がPE(nz)である場合、ホスト端末150は、次にステップS614を実行する。逆に、PE_o(N+1)がPE(nz)ではない場合、ホスト端末150は、次に図18のステップS615を実行する。
ステップS614でホスト端末150は、出力領域の残りの部分をPE_o(2)〜PE_o(N+1)に均等に割り当てる。ここで、「出力領域の残りの部分」とは、ステップS614が実行される時点においてPE_o(1)に割り当てられているセルの集合のZ方向の最遠端から、出力領域のZ方向の最遠端までの範囲である。ステップS614での割り当てが完了すると、図17〜18の再割り当て処理も完了する。
さて、ステップS615〜S624は、ステップS503〜S512と同様である。ステップS620またはS624でT1<U1と判断した場合、ホスト端末150は、次にステップS625を実行する。ステップS625はステップS525と同様である。ステップS625での割り当てが完了すると、図17〜18の再割り当て処理も完了する。
さて、図19は、第2実施形態による最終的な割り当ての例を示す図である。図19は、具体的には、ステップS104で図8のような初期割り当てが行われた場合の、最終的な割り当ての例を示す。図19における解析対象領域A1、出力領域A2、および物体領域A3は、図8と同様である。また、図19は、Z軸方向の割り当ての変更のみが行われる場合(つまりY軸方向での割り当ての変更は行われない場合)の例である。0≦j≦4なる各jについて、以下のことが成り立つ。
図8では、PE(5j+1)に、格子座標(X,Y,Z)が0≦X≦XNかつ4j≦Y≦4j+4かつ0≦Z≦4を満たすような、16×XN個のセルが割り当てられている。一方、図19では、PE(5j+1)に、格子座標(X,Y,Z)が0≦X≦XNかつ4j≦Y≦4j+4かつ0≦Z≦5を満たすような、20×XN個のセルが割り当てられている。
図8では、PE(5j+2)に、格子座標(X,Y,Z)が0≦X≦XNかつ4j≦Y≦4j+4かつ4≦Z≦8を満たすような、16×XN個のセルが割り当てられている。一方、図19では、PE(5j+2)に、格子座標(X,Y,Z)が0≦X≦XNかつ4j≦Y≦4j+4かつ5≦Z≦7を満たすような、8×XN個のセルが割り当てられている。
図8では、PE(5j+3)に、格子座標(X,Y,Z)が0≦X≦XNかつ4j≦Y≦4j+4かつ8≦Z≦12を満たすような、16×XN個のセルが割り当てられている。一方、図19では、PE(5j+3)に、格子座標(X,Y,Z)が0≦X≦XNかつ4j≦Y≦4j+4かつ7≦Z≦10を満たすような、12×XN個のセルが割り当てられている。
図8では、PE(5j+4)に、格子座標(X,Y,Z)が0≦X≦XNかつ4j≦Y≦4j+4かつ12≦Z≦16を満たすような、16×XN個のセルが割り当てられている。一方、図19では、PE(5j+4)に、格子座標(X,Y,Z)が0≦X≦XNかつ4j≦Y≦4j+4かつ10≦Z≦15を満たすような、20×XN個のセルが割り当てられている。
図8では、PE(5j+5)に、格子座標(X,Y,Z)が0≦X≦XNかつ4j≦Y≦4j+4かつ16≦Z≦20を満たすような、16×XN個のセルが割り当てられている。一方、図19では、PE(5j+5)に、格子座標(X,Y,Z)が0≦X≦XNかつ4j≦Y≦4j+4かつ15≦Z≦20を満たすような、20×XN個のセルが割り当てられている。
以上のとおり、図19の最終的な割り当てによれば、出力領域A2に含まれるセルが割り当てられたPEには、8×XN〜12×XN個という相対的に少ない数のセルのみが割り当てられる。一方、出力領域A2に含まれるセルが割り当てられていないPEには、20×XN個という相対的に多い数のセルが割り当てられる。その結果、全体としてはPE間で合計処理時間の均一性が高まり、無駄な待ち時間が減る。よって、解析全体も高速化する。
さて、図20は、第2実施形態によって解析時間が短縮される効果を示す図である。図20では、図8の初期割り当てが最終的に採用される場合の例E6と、図19の割り当てが採用される場合の例E7が比較されている。図2と同様に図20においても、黒く塗った部分は出力処理を示し、斜線パターンの部分は待ち時間を示す。また、図8と19にはPE(1)〜PE(25)へのセルの割り当てが示されているが、図20では紙幅の都合上、PE(1)〜PE(5)についてのみ、合計処理時間の内訳が示されている。
例E7において、1ステップ時間に関する解析ごとにかかる時間はL1秒である。他方、例E6において、1ステップ時間に関する解析ごとにかかる時間は(L1+L2)秒である。つまり、第2実施形態によれば、1ステップ時間あたりL2秒の時間が短縮される。
以下、例E6とE7についてより詳しく説明する。なお、簡単化のため、図20には、式(9)のCal(h,g)がセルの位置によらずほぼ一定の場合が例示されている。また、説明の便宜上、図8と19に関して述べたX方向のセルの個数XNが10個であるものとする。
図8の割り当てでは、PE(1)〜PE(5)のいずれにも、160(=10×4×4)個のセルが割り当てられている。よって、例E6では、PE(1)〜PE(5)はほぼ同じ時間で電界の計算を終える。
また、例E6ではPE(2)は120(=10×4×3)個のセルのデータの出力を担当するが、PE(1)とPE(3)〜PE(5)は出力を担当しない。ここで、出力間隔Intv(式(21)を参照)がユーザにより指定されているものとする。また、出力処理は時間的に分散されるものとする。具体的には、1ステップ時間についての処理あたり、PE(2)は120/Intv個のセルのデータを出力するものとする。例E6では、PE(2)は、電界の計算後、120/Intv個のセルの電界のデータを出力し、磁界の計算後、120/Intv個のセルの磁界のデータを出力するものとする。
PE(2)が120/Intv個のセルの電界のデータを出力している間、PE(1)とPE(3)〜PE(5)は何もせず、ただPE(2)が出力処理を終えるのを待っている。そして、PE(2)が120/Intv個のセルの電界のデータを出力し終えると、電界のデータを送受信する処理を各PEが行う。
ここで、図4のトポロジT2では1台のPEには最大で4台の隣接PEがある。PEは、4台の隣接PEと並列に通信することができるように構成されていてもよい。この場合、PEがデータの送受信を行うのにかかる時間は、隣接PEとのデータの送受信にかかる時間のうちの最大値である。
図8によれば、PE(1)〜PE(5)の各々は、Y方向の隣接PEには、40(=10×4)個のセルのデータを送信し、Z方向の隣接PEには、40(=10×4)個のセルのデータを送信する。受信に関しても同様である。よって、PE(1)〜PE(5)のいずれにおいても、電界のデータの送受信にかかる時間は、40個のセルのデータを送受信するのにかかる時間である。
また、データ送受信の完了後、PE(1)〜PE(5)の各々は、割り当てられた160個のセルそれぞれについて磁界を計算する。例E6では、PE(1)〜PE(5)はほぼ同じ時間で磁界の計算を終える。
その後、PE(2)は、120/Intv個のセルの磁界のデータを出力するが、PE(1)とPE(3)〜PE(5)は、その出力処理の間、何もしない。そして、PE(2)が120/Intv個のセルの磁界のデータを出力し終えると、磁界のデータを送受信する処理を各PEが行う。磁界のデータを送受信するのにかかる時間も、電界のデータを送受信するのにかかる時間と同様である。
したがって、例E6では、1ステップ時間についての解析あたり、PE(2)が240/Intv(=120/Intv+120/Intv)個のセルのデータを出力するのにかかる時間だけ、他の4台のPEに無駄な待ち時間が生じている。他方、例E7は、合計処理時間の均等性が高くなるように、図19のような割り当てが最終的に決められた場合の例である。例E7では待ち時間が少ないので、解析全体にかかる時間も短い。
具体的には、図19の割り当てでは、PE(1)とPE(4)とPE(5)の各々には、出力領域に属さない200(=10×4×5)個のセルが割り当てられている。また、PE(1)とPE(4)とPE(5)の各々は、Y方向の隣接PEに50(=10×5)個のセルのデータを送信し、Y方向の隣接PEから50個のセルのデータを受信する。そして、PE(1)とPE(4)とPE(5)の各々は、Z方向の隣接PEに40(=10×4)個のセルのデータを送信し、Z方向の隣接PEから40個のセルのデータを受信する。
よって、例E7では、PE(1)とPE(4)とPE(5)の各々が電界の計算をするのにかかる時間は、200個のセルについて電界を計算するのにかかる時間である。また、PE(1)とPE(4)とPE(5)の各々が電界のデータの送受信を行うのにかかる時間は、50個のセルのデータを送受信するのにかかる時間である。なぜなら、max(50,40)=50だからである。
同様に、例E7では、PE(1)とPE(4)とPE(5)の各々が磁界の計算をするのにかかる時間は、200個のセルについて磁界を計算するのにかかる時間である。また、PE(1)とPE(4)とPE(5)の各々が磁界のデータの送受信を行うのにかかる時間は、50個のセルのデータを送受信するのにかかる時間である。
他方、図19の割り当てでは、PE(2)には、出力領域に属する80(=10×4×2)個のセルが割り当てられている。また、PE(2)は、Y方向の隣接PEに20(=10×2)個のセルのデータを送信し、Y方向の隣接PEから20個のセルのデータを受信する。そして、PE(2)は、Z方向の隣接PEに40(=10×4)個のセルのデータを送信し、Z方向の隣接PEから40個のセルのデータを受信する。
よって、例E7では、PE(2)が電界を計算するのにかかる時間は、80個のセルについて電界を計算するのにかかる時間である。また、PE(2)が電界のデータの送受信を行うのにかかる時間は、40個のセルのデータを送受信するのにかかる時間である。
同様に、例E7では、PE(2)が磁界を計算するのにかかる時間は、80個のセルについて磁界を計算するのにかかる時間である。また、PE(2)が磁界のデータの送受信を行うのにかかる時間は、40個のセルのデータを送受信するのにかかる時間である。
また、例E7でPE(2)は、電界を計算した後、80/Intv個のセルの電界のデータを出力する。同様に、PE(2)は、磁界を計算した後、80/Intv個のセルの磁界のデータを出力する。
さて、図19の割り当てでは、PE(3)には、出力領域に属する40(=10×4×1)個のセルと、出力領域に属さない80(=10×4×2)個のセルが割り当てられている。また、PE(3)は、Y方向の隣接PEに30(=10×3)個のセルのデータを送信し、Y方向の隣接PEから30個のセルのデータを受信する。そして、PE(3)は、Z方向の隣接PEに40(=10×4)個のセルのデータを送信し、Z方向の隣接PEから40個のセルのデータを受信する。
よって、例E7では、PE(3)が電界を計算するのにかかる時間は、120(=40+80)個のセルについて電界を計算するのにかかる時間である。また、PE(3)が電界のデータの送受信を行うのにかかる時間は、40個のセルのデータを送受信するのにかかる時間である。
同様に、例E7では、PE(3)が磁界を計算するのにかかる時間は、120個のセルについて磁界を計算するのにかかる時間である。また、PE(3)が磁界のデータの送受信を行うのにかかる時間は、40個のセルのデータを送受信するのにかかる時間である。
また、例E7でPE(3)は、電界を計算した後、40/Intv個のセルの電界のデータを出力する。同様に、PE(3)は、磁界を計算した後、40/Intv個のセルの磁界のデータを出力する。
例E7では、200個のセルについて電界を計算するのにかかる時間は、80個のセルについて電界を計算するのにかかる時間と、80/Intv個のセルの電界のデータを出力するのにかかる時間の和よりも少し長い。また、例E7では、200個のセルについて電界を計算するのにかかる時間は、120個のセルについて電界を計算するのにかかる時間と、40/Intv個のセルの電界のデータを出力するのにかかる時間の和よりも少し長い。よって、例E7では、PE(2)とPE(3)は、いずれも、出力処理を終えた後、PE(1)とPE(4)とPE(5)が電界の計算を終了するのを待つ。しかし、この待ち時間はそれほど長くない。磁界の計算と磁界のデータの出力に関しても同様である。
また、PE(1)とPE(4)とPE(5)の各々がデータの送受信を行うのにかかる時間は、50個のセルのデータを送受信するのにかかる時間である。しかし、PE(2)とPE(3)の各々がデータの送受信を行うのにかかる時間は、40個のセルのデータを送受信するのにかかる時間である。よって、PE(2)とPE(3)は、いずれも、データの送受信を終えた後、PE(1)とPE(4)とPE(5)がデータの送受信を終えるのを待つ。しかし、この待ち時間はわずかである。
よって、4台のPEが比較的長い時間遊んでいる例E6と比べると、2台のPEが短時間だけ遊んでいる例E7の方が、PE(1)〜PE(5)のリソースが効率よく利用されている。その結果、例E6では1ステップ時間あたりの解析が(L1+L2)秒かかるのに対し、例E7では1ステップ時間あたりの解析がL1秒で終わる。
続いて、図21〜23を参照して第3実施形態について説明する。なお、第2実施形態との共通点については、適宜説明を省略する。既に述べたとおり、第3実施形態は、図1のステップS2で「第2の台数」が動的に変更される場合に相当する。つまり、第3実施形態では、使用可能なPEが余っている場合に好適である。
図21は、第3実施形態のシステムの動作シーケンス図である。図21を図5と比較すれば分かるように、第3実施形態では、第2実施形態におけるステップS111の処理がステップS701の処理に置き換えられる。また、第3実施形態では、第2実施形態におけるステップS112の処理がステップS702の処理に置き換えられる。
また、第2実施形態では、解析に使うPEの台数nがステップS104で決められ、固定される。しかし、第3実施形態では、解析に使うPEの台数nは、ステップS104では暫定的に決められるに過ぎず、後にステップS701で台数nが増やされることがある。
しかし、その他の点(図21中のその他のステップ、および、図6〜7中のステップ)では、第3実施形態は第2実施形態と同様である。以下、第2実施形態との違いについて説明する。
ステップS701でホスト端末150は、解析に使用するPEの台数nを増やす。
上記のとおり、第2実施形態のステップS111では、ホスト端末150が、n台のPEのうち、出力領域を担当するPEを含むような、ある1行のPEに着目する。同様に、ステップS701でも、ある1行のPEが着目される。
具体的には、ホスト端末150は、着目した行のnz台のPEの間での合計処理時間の偏りに基づいて、PEの列の数をnzから(nz+M)に増やす。つまり、ステップS701でホスト端末150は、解析に使うPEの台数をn(=ny×nz)からny×(nz+M)に増やす。ホスト端末150は、ステップS701において、例えば後述の図22のフローチャートにしたがって、解析に使用するPEを増やしてもよい。
すると、ステップS702でホスト端末150は、ny×(nz+M)台のPEへのセルの再割り当てを実行する。より具体的には、ホスト端末150は、各行内で(nz+M)台のPEのうちの(N+M)台のPEが出力処理を担当するように、PEへのセルの割り当てをステップS702で変更する。つまり、ホスト端末150は、ある1行に関して割り当てを変更し、変更後の割り当てを他の行にも適用する。そして、ステップS702での再割り当ての後、ホスト端末150は再度ステップS105を実行する。
第3実施形態においても第2実施形態と同様に、図1のステップS2における基準が満たされるという条件下で、適切な割り当てが見い出される。なぜなら、ステップS108で合計処理時間のばらつきが許容範囲内であることが確認されてから、ステップS109で最終的に割り当てが決定されるからである。したがって、第3実施形態によっても、解析の高速化という効果が得られる。
さて、図22は、解析に使用するPEの数を増やす処理のフローチャートである。
ステップS801でホスト端末150は、着目している行のnz台のPEのうち、出力を担当しないPEの合計処理時間T(h)の基準値Trefを算出する。ホスト端末150は、ステップS108で制御装置120が基準値Trefを算出するのと同様にして、基準値Trefを算出する。
つまり、ホスト端末150は、出力を担当しない任意の1台のPEの合計処理時間を基準値Trefとして用いてもよいし、出力を担当しないPEにおける合計処理時間T(h)の統計量を、基準値Trefとして用いてもよい。統計量は、具体的には例えば最小値であってもよい。
次に、ステップS802でホスト端末150は、インデックス変数qを1に初期化する。
次に、ステップS803でホスト端末150は、PE_o(q)(すなわち、現在の暫定的な割り当てにおいて出力を担当するq台目のPE)の合計処理時間を算出する。以下では説明の便宜上、PE_o(q)の合計処理時間を「To(q)」と表記する。ステップS803での合計処理時間To(q)の算出方法は、制御装置120がステップS107で合計処理時間を算出する方法と同様である。
さらに、ステップS804でホスト端末150は、PE_o(q)の合計処理時間To(q)と基準値Trefとの差を算出する。以下では説明の便宜上、算出された差を「T_out(q)」と表記する。
続いて、ステップS805でホスト端末150は、差T_out(q)と閾値(便宜上、「Tb」と表記する)を比較する。閾値Tbは、基準値Trefに応じた値であってもよい。例えば、閾値Tbは、基準値Trefに比較的小さな正の定数(例えば0.1)を掛けて得られる値であってもよい。なお、ここでの「0.1」という値は、単なる例示のための値である。
T_out(q)<Tbの場合、ホスト端末150は、「出力を担当しない他のPEと比べてPE_o(q)に過剰に負荷がかかるわけではない」と判断する。よって、T_out(q)<Tbの場合、ホスト端末150は、次にステップS806を実行する。
逆に、T_out(q)≧Tbの場合、ホスト端末150は、「現在の暫定的な割り当てによれば、出力を担当しない他のPEと比べてPE_o(q)に過剰に負荷がかかってしまう」と判断する。つまり、ホスト端末150は、「現在の暫定的な割り当てによってPE_o(q)に割り当てられているセルを、PE_o(q)と、さらに1台以上のPEとに分散化することが適切である」と判断する。よって、T_out(q)≧Tbの場合、「分散化のために新たに何台のPEを追加するか」を決めるため、ホスト端末150は次にステップS807を実行する。
以下では説明の便宜上、現在の暫定的な割り当てによってPE_o(q)に割り当てられているセルを割り当て直す対象のPEの台数を「m(q)」と表記する。
ステップS806でホスト端末150は、m(q)を1に設定する。逆に、ステップS807でホスト端末150は、式(29)のようにm(q)を設定する。
m(q)=int(T_out(q)/Tb) (29)
なお、式(29)における関数int(r)は、引数rに最も近い整数を返す関数でもよいし、切り上げ関数でもよいし、切り捨て関数でもよい。ステップS806またはS807でのm(q)の設定後、ホスト端末150は、ステップS808において、「インデックス変数qと、1行のnz台のPEのうち現在の暫定的な割り当てにおいて出力を担当するPEの台数Nとが等しいか否か」を判断する。
もし、q≠Nであれば(具体的にはq<Nであれば)、ホスト端末150は次にステップS809を実行する。逆に、q=Nであれば、ホスト端末150は次にステップS810を実行する。
ステップS809でホスト端末150は、インデックス変数qを1だけインクリメントする。そして、ホスト端末150は再度ステップS803を実行する。
一方、ステップS810でホスト端末150は、式(30)にしたがって、1行あたりに増やすPEの台数Mを算出する。
M = max(1, m(1)+m(2)+…+m(N)-N) (30)
ところで、実際に1行あたりM台のPEを解析用に追加することが可能であるか否かは、使用可能な残りのPEの台数(より正確には、PE間のネットワークトポロジ中のどの位置に、それら使用可能なPEが残っているか)による。よって、ステップS810の次に、ステップS811で、ホスト端末150は、使用可能なPEが十分に残っているか否かを判断する。
例えば、PE同士が図4のトポロジT2のように2次元状に接続されており、ny=3かつnz=4かつM=2だとする。この場合、ホスト端末150は、「列の数を4から6(=4+2)に増やすことが可能か否か」を判断する。つまり、ホスト端末150は、「3行×6列の範囲の18台のPEが、使用可能な状態で残っているか否か」を判断する。ステップS811の判断は、ステップS103での制御装置120からの通知に基づく。
列の数をnzから(nz+M)に増やすことが可能である場合(つまり、ny行×(nz+M)列の範囲のny×(nz+M)台のPEが使用可能な状態である場合)、使用可能なPEが十分に残っている。よって、この場合、ステップS810で計算した値Mを減らす必要はないので、図22の処理も終了する。
逆に、使用可能なPEの台数がny×(nz+M)台に満たない場合、または、使用可能なPEが、ny行×(nz+M)列の範囲に連続していない場合には、ホスト端末150は「使用可能なPEが十分には残っていない」と判断する。そして、ホスト端末150は、「使用可能なPEが十分には残っていない」と判断した場合、ステップS812で、使用可能な残りのPEに応じて、Mの値を減らす。
例えば、PE同士が図4のトポロジT2のように2次元状に接続されており、ny=3かつnz=4だとする。また、ホスト端末150がステップS810でMの値を2と算出したものとする。そして、ステップS103の通知によれば、3行×(4+1)列の範囲に連続した15台のPEが使用可能であるものとする。しかし、3行×(4+2)列の範囲に渡って使用可能なPEが残っている部分は、トポロジT2内にはないものとする。この場合、ホスト端末150は、ステップS811でMの値を1に減らす。ステップS811でのMの値の変更が終了すると、図22の処理も終了する。
以上のようにして、図21のステップS701でホスト端末150は、解析に使用するPEの台数を、n(=ny×nz)台からny×(nz+M)台へと増やすことに決める。
なお、ステップS812の実行の結果、Mの値が0となる場合もあり得る。この場合は、図21のステップS702では、第2実施形態と同様の処理が行われる。つまり、M=0の場合、ホスト端末150は、解析に使うPEの総数は増やさずに、出力を担当するPEの数を増やす。
以下では、M>0の場合のステップS702の詳細について説明する。
現在の暫定的な割り当てによれば、各行において、Z方向の原点に近い方から順に、以下のような合計nz台のPEが含まれるものとする。
・出力を担当しないu1台のPE(0≦u1≦nz−N)。
・出力を担当するN台のPE。
・出力を担当しないu2台のPE(0≦u2≦nz−N、かつ、u1+u2=nz−N)
例えば、PE(1)〜PE(nz)の行では、PE(1)〜PE(u1)は出力を担当せず、PE(u1+1)〜PE(u1+N)が出力を担当し、PE(u1+N+1)〜PE(nz)は出力を担当しない。
ホスト端末150は、図21のステップS702において、具体的には、出力を担当しないu1台のPEと、出力を担当する(N+M)台のPEと、出力を担当しないu2台のPEが各行に含まれるように、再割り当てを行う。第3実施形態でM>0の場合、ホスト端末150は、以下のように変形される図15〜16のフローチャートにしたがって、または、以下のように変形される図17〜18のフローチャートにしたがって、着目している行について再割り当てを行う。
具体的には、図15〜16の再割り当て処理は、第3実施形態では以下のように変形される。なお、説明の便宜上、変形された図15〜16の処理は、PE(1)〜PE(nz+M)の行に関して実行されるものとする。
・ステップS501では、出力領域のZ方向の範囲がPE_o(1)〜PE_o(N+M)に均等に割り当てられる。また、出力領域外の近端側のセルの中で相対的に出力領域に近い方に位置する少なくとも一部のセルが、PE_o(1)に割り当てられる。同様に、出力領域外の遠端側のセルの中で相対的に出力領域に近い方に位置する少なくとも一部のセルが、PE_o(N+M)に割り当てられる。なお、上記の「少なくとも一部のセル」の数(具体的には、Z方向におけるセルの数)は、ホスト端末150が任意に決めてよい。
・ステップS502では、PE_o(N+M)とPE(nz+M)が等しいか否かが判断される。
・ステップS503〜S509とS511でのPE_o(N+1)に関する処理は、PE_o(N+M)に関する処理に置き換えられる。
・ステップS510でのPE_o(N+1)とPE_o(N)に関する処理は、PE_o(N+M)とPE_o(N+M−1)に関する処理に置き換えられる。
・ステップS514では、出力領域の残りの部分がPE_o(1)〜PE_o(N+M−1)に均等に割り当てられる。
・ステップS525では、出力領域の残りの部分がPE_o(2)〜PE_o(N+M−1)に均等に割り当てられる。
また、図17〜18の再割り当て処理は、第3実施形態では以下のように変形される。なお、説明の便宜上、変形された図17〜18の処理は、PE(1)〜PE(nz+M)の行に関して実行されるものとする。
・ステップS601では、出力領域のZ方向の範囲がPE_o(1)〜PE_o(N+M)に均等に割り当てられる。また、出力領域外の近端側のセルの中で相対的に出力領域に近い方に位置する少なくとも一部のセルが、PE_o(1)に割り当てられる。同様に、出力領域外の遠端側のセルの中で相対的に出力領域に近い方に位置する少なくとも一部のセルが、PE_o(N+M)に割り当てられる。なお、上記の「少なくとも一部のセル」の数(具体的には、Z方向におけるセルの数)は、ホスト端末150が任意に決めてよい。
・ステップS613では、PE_o(N+M)とPE(nz+M)が等しいか否かが判断される。そして両者が等しい場合、ステップS614では、出力領域の残りの部分がPE_o(2)〜PE_o(N+M)に均等に割り当てられる。
・ステップS615〜S621とS623でのPE_o(N+1)に関する処理は、PE_o(N+M)に関する処理に置き換えられる。
・ステップS622でのPE_o(N+1)とPE_o(N)に関する処理は、PE_o(N+M)とPE_o(N+M−1)に関する処理に置き換えられる。
・ステップS625では、出力領域の残りの部分がPE_o(2)〜PE_o(N+M−1)に均等に割り当てられる。
なお、ホスト端末150は、「変形された図15〜16のフローチャートと、変形された図17〜18のフローチャートのどちらにしたがって再割り当てを行うか」ということを、以下のようにして決めてもよい。
ステップS702の再割り当てを実行する直前の、現在の暫定的な割り当てにおけるPE_o(1)が、Z方向において最も原点に近いPEである第1の場合(例えばPE_o(1)がPE(1)である場合)があり得る。この場合、ホスト端末150は、変形された図15〜16のフローチャートにしたがってステップS702で再割り当てを行う。
また、現在の暫定的な割り当てにおけるPE_o(N)が、Z方向において最も原点から遠いPEである場合(例えばPE_o(N)がPE(nz)である場合)があり得る。この場合、ホスト端末150は、変形された図17〜18のフローチャートにしたがってステップS702で再割り当てを行う。
そして、上記2つの場合のいずれでもない場合、ホスト端末150は、以下の2つのZ座標の比較に基づいて、変形された図15〜16のフローチャートと変形された図17〜18のフローチャートのいずれかを選んでもよい。
・現在の暫定的な割り当てのもとでPE_o(1)〜PE_o(N)に割り当てられる全セルの中心点のZ座標Zc。
・出力領域の中心点のZ座標Zoc。
例えば、Zoc>Zcならば、ホスト端末150は、変形された図15〜16のフローチャートにしたがってステップS702で再割り当てを行う。逆に、Zoc≦Zcならば、ホスト端末150は、変形された図17〜18のフローチャートにしたがってステップS702で再割り当てを行う。
いずれにせよ、ホスト端末150は、第2実施形態と類似の方法によって境界を調整することで、ステップS702において、ある行での再割り当てを行う。そして、ホスト端末150は、その再割り当ての結果を、他の行にも適用する。その後、ホスト端末150は再度ステップS105の通知を行う。
さて、図23は、第3実施形態による最終的な割り当ての例を示す図である。図23は、具体的には、ステップS104で図8のような初期割り当てが行われた場合の、最終的な割り当ての例を示す。図23における解析対象領域A1、出力領域A2、および物体領域A3は、図8と同様である。また、図23は、Z軸方向の割り当ての変更のみが行われる場合(つまりY軸方向での割り当ての変更は行われない場合)の例である。
なお、図8と図23の双方において、「PE(6)」等の表記がなされている。しかし、図23では「(6)」等の番号はリナンバリングされているので、図8のPE(6)と図23のPE(6)は同じではない。
例えば、図4のトポロジT2において、解析に使用するPEの範囲がZ軸の正の方向に広げられたとする。この場合、図23のPE(1)、PE(7)、PE(13)、PE(19)、PE(25)が、それぞれ、図8のPE(1)、PE(6)、PE(11)、PE(16)、PE(21)に相当する。また、この場合、図23のPE(5)、PE(11)、PE(17)、PE(23)、PE(29)が、それぞれ、図8のPE(5)、PE(10)、PE(15)、PE(20)、PE(25)に相当する。
逆に、図4のトポロジT2において、解析に使用するPEの範囲がZ軸の負の方向に広げられる場合もあり得る。この場合は、図23のPE(6)、PE(12)、PE(18)、PE(24)、PE(30)が、それぞれ、図8のPE(5)、PE(10)、PE(15)、PE(20)、PE(25)に相当する。また、この場合、図23のPE(2)、PE(8)、PE(14)、PE(20)、PE(26)が、それぞれ、図8のPE(1)、PE(6)、PE(11)、PE(16)、PE(21)に相当する。
解析に使用するPEの範囲が、Z軸の正の方向と負の方向のどちらに広げられたにせよ、0≦j≦4なる各jについて、以下のことが成り立つ。
図8では、格子座標(X,Y,Z)が0≦X≦XNかつ4j≦Y≦4j+4かつ0≦Z≦20を満たすような、80×XN個のセルが、5台のPE(すなわちPE(5j+1)〜PE(5j+5))に均等に割り当てられている。一方、図23では、これら80×XN個のセルが、6台のPE(すなわちPE(6j+1)〜PE(6j+6))に割り当てられている。
具体的には、図23において、PE(6j+1)には、0≦Z≦4を満たす範囲の、16×XN個のセルが割り当てられており、PE(6j+2)には、4≦Z≦6を満たす範囲の、8×XN個のセルが割り当てられている。また、PE(6j+3)には、6≦Z≦8を満たす範囲の、8×XN個のセルが割り当てられており、PE(6j+4)には、8≦Z≦12を満たす範囲の、16×XN個のセルが割り当てられている。そして、PE(6j+5)には、12≦Z≦16を満たす範囲の、16×XN個のセルが割り当てられており、PE(6j+6)には、16≦Z≦20を満たす範囲の、16×XN個のセルが割り当てられている。
以上のとおり、出力領域A2に含まれるセルが割り当てられたPEには、8×XN個という相対的に少ない数のセルのみが割り当てられる。一方、出力領域A2に含まれるセルが割り当てられていないPEには、16×XN個という相対的に多い数のセルが割り当てられる。その結果、全体としてはPE間で合計処理時間の均一性が高まり、無駄な待ち時間が減る。よって、解析全体も高速化する。
ところで、本発明は上記の第1〜第3実施形態に限られるものではない。上記の説明においてもいくつかの変形について説明したが、上記第1〜第3実施形態は、さらに例えば下記の観点から様々に変形することもできる。上記および下記の種々の変形は、相互に矛盾しない限り、任意に組み合わせることが可能である。
合計処理時間を見積もる方法は、並列FDTD法による解析がどのようにプログラムされるかに応じて様々であってよい。また、合計処理時間の均等性に関する基準も、実施形態に応じて様々であってよい。
上記実施形態において、例えば以下のようないくつかのステップでは、2つの数値同士が比較される。
・図5と図21におけるステップS108。
・図13のステップS307。
・図15〜16の再割り当て処理におけるステップS506、S508、S512、S518、S520、S524。
・図17〜18の再割り当て処理におけるステップS606、S608、S612、S618、S620、S624。
これらのステップにおける2つの数値同士の比較は、実施形態により「第1の数値が、第2の数値を超えるか否か」を判断する処理であってもよいし、「第1の数値が、第2の数値以上か否か」を判断する処理であってもよい。
また、図3〜4に例示したシステム構成は一例である。他の構成のシステムに上記実施形態が適用されてもよい。ネットワーク構成によっては、ホスト端末150が2つ以上のネットワークインタフェイスを有していてもよいし、制御装置120が1つのネットワークインタフェイスだけを有していてもよい。実施形態によっては、ある1台の特定のPEが、解析のためのPEとして動作するだけでなく、ホスト端末150および/または制御装置120として動作してもよい。
また、第2〜第3実施形態に関して、ある行のPEについての割り当ての変更を、他の行にも同様に適用する処理を説明した。しかし、PE間の接続のトポロジによっては、行ごとに独立に割り当ての変更が行われてもよい。
また、解析対象領域を、1次元の複数のセルに分割するか、2次元の複数のセルに分割するか、あるいは3次元の複数のセルに分割するかは、実施形態に応じて適宜決められてよい。PE間の接続トポロジも実施形態に応じて様々であってよい。
第2〜第3実施形態に関しては、Z方向での調整による再割り当てについて説明した。実施形態によっては、Z方向での調整による再割り当ての繰り返しの前または後に、ホスト端末150が、Y方向での調整による再割り当てを行ってもよい。例えば、図8のような初期割り当てに関して、ホスト端末150は、PE(17)に割り当てるセルの集合とPE(22)に割り当てるセルの集合との境界のY座標を減らしてもよい。このようなY方向での境界の移動は、図15〜16と類似の処理がY方向に関して行われる場合の、ステップS503の処理に相当する。
同様に、ホスト端末150は、X方向での調整による再割り当てを行ってもよい。図15〜18のフローチャートに適宜の変更を加えることで、図15〜18のフローチャートは、Y方向での調整による再割り当てにも適用することが可能であり、X方向での調整による再割り当てにも適用することが可能である。以上説明したように、再割り当ては、ある1つの座標軸の方向に沿った調整だけを含んでいてもよいし、2つまたは3つの座標軸のそれぞれに沿った調整を含んでいてもよい。
また、図15〜18のフローチャートには、PEへのセルの割り当ての境界を、1つの座標軸(具体的にはZ軸)に沿って、1セルずつ調整するための具体的手順が例示されている。しかし、境界を動かすことによる調整の手順は、図15〜18のフローチャートに例示した手順に限られない。例えば、複数セルずつ境界が移動されてもよい。
また、「図15〜16の手順と図17〜18の手順のどちらが適用されるか」を決めるためのポリシも、第2〜第3実施形態のようなポリシには限定されない。例えば、常に図15〜16の手順が適用される実施形態や、常に図17〜18の手順が適用される実施形態なども可能である。
最後に、上記の種々の実施形態に関して、さらに下記の付記を開示する。
(付記1)
コンピュータが、
第1の台数の演算装置のうち、時間領域での解析単位ごとに同期する2台以上の演算装置によって実行される解析の対象として指定された空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もり、
前記解析に使われる各演算装置が前記複数のセルの中から当該演算装置に割り当てられる1つ以上のセルの各々の前記位置に応じた前記処理を実行するのにかかる時間を含む合計処理時間についての、前記演算装置間での均等性に関して決められた基準が満たされるという条件下で、前記第1の台数の演算装置の一部または全部である第2の台数の演算装置に、前記複数のセルを割り当てる
ことを特徴とする割り当て方法。
(付記2)
前記解析の結果を出力する対象として前記解析対象領域内で指定される出力領域に含まれるセルの前記位置依存の処理負荷を見積もる際、前記コンピュータは、データを出力する出力処理に起因する出力負荷を、前記位置依存の処理負荷に含める
ことを特徴とする付記1に記載の割り当て方法。
(付記3)
前記コンピュータは、前記出力領域に含まれる1つ以上のセルを含む第1の個数のセルを、前記第2の台数の演算装置のうちの第1の演算装置に割り当てるとともに、前記第1の個数より多い第2の個数の、前記出力領域には含まれないセルのみを、前記第2の台数の演算装置のうちの第2の演算装置に割り当てることにより、前記基準が満たされるようにする
ことを特徴とする付記2に記載の割り当て方法。
(付記4)
前記第2の台数を決定し、
決定した前記第2の台数の演算装置に、前記複数のセルを暫定的に割り当て、
暫定的な割り当てのもとでは前記第2の台数の演算装置間で前記基準が満たされない場合には、前記位置依存の処理負荷が前記複数のセルの中で相対的に重い特定のグループに属するセルを割り当てる演算装置の台数である第3の台数を増やし、
増やした前記第3の台数に応じて、前記第2の台数の演算装置に前記複数のセルを暫定的に割り当て直す
ことを含むことを特徴とする付記1から3のいずれか1項に記載の割り当て方法。
(付記5)
前記特定のグループに属する前記セルの少なくとも一部が暫定的に割り当てられた第1の演算装置と、前記第1の台数の演算装置間のネットワークトポロジにおいて隣接しており、かつ、前記特定のグループに属するどのセルも暫定的に割り当てられていない第2の演算装置に、前記特定のグループに属する前記セルの少なくとも一部を割り当てることにより、前記コンピュータは前記第3の台数を増やす
ことを特徴とする付記4に記載の割り当て方法。
(付記6)
前記コンピュータは、前記特定のグループに属する1つ以上のセルを含む第1の個数のセルを、前記第2の台数の演算装置のうちの第1の演算装置に割り当てるとともに、前記第1の個数より多い第2の個数の、前記特定のグループには含まれないセルのみを、前記第2の台数の演算装置のうちの第2の演算装置に割り当てることにより、前記基準が満たされるようにする
ことを特徴とする付記4または5に記載の割り当て方法。
(付記7)
前記基準は、決定された前記第2の台数の演算装置の間で、前記合計処理時間同士の比、差、または前記比と前記差の双方が、決められた許容範囲内に収まる、という基準である
ことを特徴とする付記4から6のいずれか1項に記載の割り当て方法。
(付記8)
前記第2の台数を暫定的に決め、
暫定的に決めた前記第2の台数の演算装置に、前記複数のセルを暫定的に割り当て、
暫定的な割り当てのもとでは前記第2の台数の演算装置間で前記基準が満たされない場合には、前記第2の台数を増やし、
増やした前記第2の台数の演算装置に、前記複数のセルを暫定的に割り当て直す
ことを含むことを特徴とする付記1から3のいずれか1項に記載の割り当て方法。
(付記9)
前記コンピュータは、増やした前記第2の台数の演算装置に前記複数のセルを暫定的に割り当て直す際に、前記位置依存の処理負荷が前記複数のセルの中で相対的に重い特定のグループに属するセルが暫定的に割り当てられる演算装置の台数を増やす
ことを特徴とする付記8に記載の割り当て方法。
(付記10)
前記コンピュータは、前記特定のグループに属する1つ以上のセルを含む第1の個数のセルを、増やした前記第2の台数の演算装置のうちの第1の演算装置に割り当てるとともに、前記第1の個数より多い第2の個数の、前記特定のグループには含まれないセルのみを、増やした前記第2の台数の演算装置のうちの第2の演算装置に割り当てることにより、前記基準が満たされるようにする
ことを特徴とする付記9に記載の割り当て方法。
(付記11)
前記基準は、暫定的に決められた前記第2の台数の演算装置の間で、前記合計処理時間同士の比、差、または前記比と前記差の双方が、決められた許容範囲内に収まる、という基準である
ことを特徴とする付記8から10のいずれか1項に記載の割り当て方法。
(付記12)
前記複数のセルのうち、位置に固有の1つ以上の入力パラメタが指定されるセルの前記位置依存の処理負荷を見積もる際、前記コンピュータは、前記1つ以上の入力パラメタを読み込む読み込み処理に起因する読み込み負荷を、前記位置依存の処理負荷に含める
ことを特徴とする付記1から11のいずれか1項に記載の割り当て方法。
(付記13)
前記1つ以上の入力パラメタは、前記解析対象領域内に位置する波源を定義するパラメタと、前記解析対象領域内に位置する回路素子の特性を定義するパラメタの、少なくとも一方を含む
ことを特徴とする付記12に記載の割り当て方法。
(付記14)
前記コンピュータは、2つの異なる媒質の境界に接するセルの前記位置依存の処理負荷を、1つの媒質の内部に位置するセルの前記位置依存の処理負荷よりも大きく見積もる
ことを特徴とする付記1から13のいずれか1項に記載の割り当て方法。
(付記15)
前記解析は、並列FDTD(finite-difference time-domain)法による解析であることを特徴とする付記1から14のいずれか1項に記載の割り当て方法。
(付記16)
前記コンピュータは、吸収境界に接するセルの前記位置依存の処理負荷を、前記吸収境界に接しないセルの前記位置依存の処理負荷よりも大きく見積もる
ことを特徴とする付記15に記載の割り当て方法。
(付記17)
前記合計処理時間は、他の1台以上の演算装置との間でデータを送受信するのにかかる時間を含む
ことを特徴とする付記1から16のいずれか1項に記載の割り当て方法。
(付記18)
コンピュータに、
第1の台数の演算装置のうち、時間領域での解析単位ごとに同期する2台以上の演算装置によって実行される解析の対象として指定された空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もり、
前記解析に使われる各演算装置が前記複数のセルの中から当該演算装置に割り当てられる1つ以上のセルの各々の前記位置に応じた前記処理を実行するのにかかる時間を含む合計処理時間についての、前記演算装置間での均等性に関して決められた基準が満たされるという条件下で、前記第1の台数の演算装置の一部または全部である第2の台数の演算装置に、前記複数のセルを割り当てる
ことを含む処理を実行させるための割り当てプログラム。
(付記19)
第1の台数の演算装置のうち、時間領域での解析単位ごとに同期する2台以上の演算装置によって実行される解析の対象として指定された空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もる見積もり手段と、
前記解析に使われる各演算装置が前記複数のセルの中から当該演算装置に割り当てられる1つ以上のセルの各々の前記位置に応じた前記処理を実行するのにかかる時間を含む合計処理時間についての、前記演算装置間での均等性に関して決められた基準が満たされるという条件下で、前記第1の台数の演算装置の一部または全部である第2の台数の演算装置に、前記複数のセルを割り当てる割り当て手段
を備える情報処理装置。
(付記20)
各々が、少なくとも1台の他の演算装置と直接的または間接的に接続された、第1の台数の演算装置と、
前記第1の台数の演算装置の各々とネットワークを介して接続された情報処理装置であって、
前記第1の台数の演算装置のうち、時間領域での解析単位ごとに同期する2台以上の演算装置によって実行される解析の対象として指定された空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もる見積もり手段と、
前記解析に使われる各演算装置が前記複数のセルの中から当該演算装置に割り当てられる1つ以上のセルの各々の前記位置に応じた前記処理を実行するのにかかる時間を含む合計処理時間についての、前記演算装置間での均等性に関して決められた基準が満たされるという条件下で、前記第1の台数の演算装置の一部または全部である第2の台数の演算装置に、前記複数のセルを割り当てる割り当て手段とを備える情報処理装置と、
を備える解析システム。