(57)【要約】【課題】解析を高速化する。【解決手段】コンピュータが、空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もる（Ｓ１）。空間的な解析対象領域は、第１の台数の演算装置のうち、時間領域での解析単位ごとに同期する２台以上の演算装置によって実行される解析の対象として指定される。また、解析に使われる各演算装置が複数のセルの中から当該演算装置に割り当てられる１つ以上のセルの各々の位置に応じた処理を実行するのにかかる時間を含む合計処理時間についての、演算装置間での均等性に関して、基準が決められている。コンピュータは、当該基準が満たされるという条件下で、第１の台数の演算装置の一部または全部である第２の台数の演算装置に、複数のセルを割り当てる（Ｓ２）。【選択図】図１
2014211699.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
第１の台数の演算装置のうち、時間領域での解析単位ごとに同期する２台以上の演算装置によって実行される解析の対象として指定された空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もり、
前記解析に使われる各演算装置が前記複数のセルの中から当該演算装置に割り当てられる１つ以上のセルの各々の前記位置に応じた前記処理を実行するのにかかる時間を含む合計処理時間についての、前記演算装置間での均等性に関して決められた基準が満たされるという条件下で、前記第１の台数の演算装置の一部または全部である第２の台数の演算装置に、前記複数のセルを割り当てる
ことを特徴とする割り当て方法。
【請求項２】
前記解析の結果を出力する対象として前記解析対象領域内で指定される出力領域に含まれるセルの前記位置依存の処理負荷を見積もる際、前記コンピュータは、データを出力する出力処理に起因する出力負荷を、前記位置依存の処理負荷に含める
ことを特徴とする請求項１に記載の割り当て方法。
【請求項３】
前記第２の台数を決定し、
決定した前記第２の台数の演算装置に、前記複数のセルを暫定的に割り当て、
暫定的な割り当てのもとでは前記第２の台数の演算装置間で前記基準が満たされない場合には、前記位置依存の処理負荷が前記複数のセルの中で相対的に重い特定のグループに属するセルを割り当てる演算装置の台数である第３の台数を増やし、
増やした前記第３の台数に応じて、前記第２の台数の演算装置に前記複数のセルを暫定的に割り当て直す
ことを含むことを特徴とする請求項１または２に記載の割り当て方法。
【請求項４】
前記第２の台数を暫定的に決め、
暫定的に決めた前記第２の台数の演算装置に、前記複数のセルを暫定的に割り当て、
暫定的な割り当てのもとでは前記第２の台数の演算装置間で前記基準が満たされない場合には、前記第２の台数を増やし、
増やした前記第２の台数の演算装置に、前記複数のセルを暫定的に割り当て直す
ことを含むことを特徴とする請求項１または２に記載の割り当て方法。
【請求項５】
前記コンピュータは、増やした前記第２の台数の演算装置に前記複数のセルを暫定的に割り当て直す際に、前記位置依存の処理負荷が前記複数のセルの中で相対的に重い特定のグループに属するセルが暫定的に割り当てられる演算装置の台数を増やす
ことを特徴とする請求項４に記載の割り当て方法。
【請求項６】
前記複数のセルのうち、位置に固有の１つ以上の入力パラメタが指定されるセルの前記位置依存の処理負荷を見積もる際、前記コンピュータは、前記１つ以上の入力パラメタを読み込む読み込み処理に起因する読み込み負荷を、前記位置依存の処理負荷に含める
ことを特徴とする請求項１から５のいずれか１項に記載の割り当て方法。
【請求項７】
コンピュータに、
第１の台数の演算装置のうち、時間領域での解析単位ごとに同期する２台以上の演算装置によって実行される解析の対象として指定された空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もり、
前記解析に使われる各演算装置が前記複数のセルの中から当該演算装置に割り当てられる１つ以上のセルの各々の前記位置に応じた前記処理を実行するのにかかる時間を含む合計処理時間についての、前記演算装置間での均等性に関して決められた基準が満たされるという条件下で、前記第１の台数の演算装置の一部または全部である第２の台数の演算装置に、前記複数のセルを割り当てる
ことを含む処理を実行させるための割り当てプログラム。
【請求項８】
第１の台数の演算装置のうち、時間領域での解析単位ごとに同期する２台以上の演算装置によって実行される解析の対象として指定された空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もる見積もり手段と、
前記解析に使われる各演算装置が前記複数のセルの中から当該演算装置に割り当てられる１つ以上のセルの各々の前記位置に応じた前記処理を実行するのにかかる時間を含む合計処理時間についての、前記演算装置間での均等性に関して決められた基準が満たされるという条件下で、前記第１の台数の演算装置の一部または全部である第２の台数の演算装置に、前記複数のセルを割り当てる割り当て手段
を備える情報処理装置。
【請求項９】
各々が、少なくとも１台の他の演算装置と直接的または間接的に接続された、第１の台数の演算装置と、
前記第１の台数の演算装置の各々とネットワークを介して接続された情報処理装置であって、
前記第１の台数の演算装置のうち、時間領域での解析単位ごとに同期する２台以上の演算装置によって実行される解析の対象として指定された空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もる見積もり手段と、
前記解析に使われる各演算装置が前記複数のセルの中から当該演算装置に割り当てられる１つ以上のセルの各々の前記位置に応じた前記処理を実行するのにかかる時間を含む合計処理時間についての、前記演算装置間での均等性に関して決められた基準が満たされるという条件下で、前記第１の台数の演算装置の一部または全部である第２の台数の演算装置に、前記複数のセルを割り当てる割り当て手段とを備える情報処理装置と、
を備える解析システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算装置（processing devices）によって実行される解析のための技術に関する。
【背景技術】
【０００２】
汎用または専用の演算装置を用いた様々な解析（例えば、電磁場解析、光学解析、音場解析など）について、多くの研究がなされている。種々の解析アルゴリズムの中には、１台の演算装置により解析を実行するためのアルゴリズムもあり、複数の演算装置により解析を実行するための並列アルゴリズムもある。
【０００３】
例えば、解析対象領域の一部で、空間分解能が高い解析が望まれる場合がある。ある電磁場解析装置は、そのような場合にも以下のような効果を達成することを目的とする装置である。
【０００４】
・全領域において計算格子を細かくする必要がない。
・全体の計算量が増加するのを防ぐことができる。
・計算の高速性を実現することができる。
・高精度解析にかかる計算コストを低減させることができる。
【０００５】
具体的には、当該電磁場解析装置における計算領域階層的分割部が、計算精度評価部により計算精度が不充分とされた計算領域から、計算精度が不充分な領域を、高精度計算領域として階層的に分割する。そして、解析対象領域内精度データの計算精度情報に基づいて、新たに空間分解能の高い格子領域が定義される。すなわち、計算格子生成部により生成された計算格子よりも細かい計算格子が、生成される。
【０００６】
また、微小な散乱体を含む音場において、計算機負荷を低減させることができるとともに、計算時間を短縮することができるような、音場解析方法も提案されている。具体的には、解析対象音場のうち、散乱体を含む領域およびその近傍領域とからなるサブグリッド領域が、同一寸法の第１グリッドで空間離散化される。また、解析対象音場のうち、サブグリッド領域以外の通常グリッド領域が、同一寸法で、かつ、１辺が第１グリッドの各辺の複数倍の大きさである第２グリッドで、空間離散化される。
【０００７】
さらに、複数台のコンピュータを用いて並列処理を行うことで、以下の目的を達成しようとする回路解析システムも提案されている。
【０００８】
・ＦＤＴＤ（finite-difference time-domain）解析処理および回路シミュレーション処理を同時に実行することができる。
・解析速度と解析精度の向上を実現することができる
【０００９】
具体的には、回路解析システムは、通信ネットワークを介して接続されている第１〜第５コンピュータを含む。第１〜第２コンピュータがＦＤＴＤ法による電磁界解析を行い、第４〜第５コンピュータがシミュレーションを行う。解析対象となる領域は、複数のサブ領域、および、これらのサブ領域間のオーバーラップ領域に分割される。各サブ領域における電磁界の解析が、第１〜第２コンピュータによって並列に行われる。また、各サブ領域における等価回路網のシミュレーションが、第４〜第５コンピュータによって並列に行われる。第３コンピュータによって実現される制御部は、コンピュータ間の同期を制御する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００３−３３０９７７号公報
【特許文献２】特開２０１２−１４２４６号公報
【特許文献３】特開２００４−５４６４２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ある解析単位ごとに同期する２台以上の演算装置によって実行される解析においては、同期のための待ち時間が生じることがあり得る。例えば、第１の演算装置がある解析単位の処理を終えた後も、第２の演算装置が当該解析単位の処理をまだ実行中である、という場合があり得る。この場合、第１の演算装置は、同期のために、少なくとも第２の演算装置が処理を終えるまで待つ。待ち時間は、解析全体にかかる時間を長期化させる要因である。
【００１２】
本発明は、１つの側面では、解析の高速化を目的とする。
【課題を解決するための手段】
【００１３】
一態様において、コンピュータが行う割り当て方法が提供される。前記割り当て方法は、空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もることを含む。前記空間的な解析対象領域は、第１の台数の演算装置のうち、時間領域での解析単位ごとに同期する２台以上の演算装置によって実行される解析の対象として指定される。
【００１４】
前記解析に使われる各演算装置が前記複数のセルの中から当該演算装置に割り当てられる１つ以上のセルの各々の前記位置に応じた前記処理を実行するのにかかる時間を含む合計処理時間についての、前記演算装置間での均等性に関して、基準が決められているとする。前記割り当て方法は、前記基準が満たされるという条件下で、前記第１の台数の演算装置の一部または全部である第２の台数の演算装置に、前記複数のセルを割り当てることを含む。
【発明の効果】
【００１５】
待ち時間が減るので、解析が高速化される。
【図面の簡単な説明】
【００１６】
【図１】第１実施形態の割り当て処理のフローチャートである。
【図２】同期のための待ち時間のせいで解析にかかる時間が長くなる問題を説明する図である。
【図３】システム構成図である。
【図４】ＰＥ間のネットワークトポロジを例示する図である。
【図５】第２実施形態のシステムの動作シーケンス図（その１）である。
【図６】第２実施形態のシステムの動作シーケンス図（その２）である。
【図７】第２実施形態のシステムの動作シーケンス図（その３）である。
【図８】セル数に基づく単純な初期割り当ての例を示す図である。
【図９】出力を担当するＰＥを抽出する処理のフローチャートである。
【図１０】スケジュール表を模式的に説明する図（その１）である。
【図１１】スケジュール表を模式的に説明する図（その２）である。
【図１２】出力を担当するＰＥを増やす処理を例示する図である。
【図１３】出力を担当するＰＥを増やす処理のフローチャートである。
【図１４】再割り当て処理の概要を説明する図である。
【図１５】再割り当て処理のフローチャート（その１）である。
【図１６】再割り当て処理のフローチャート（その２）である。
【図１７】再割り当て処理のフローチャート（その３）である。
【図１８】再割り当て処理のフローチャート（その４）である。
【図１９】第２実施形態による最終的な割り当ての例を示す図である。
【図２０】第２実施形態によって解析時間が短縮される効果を示す図である。
【図２１】第３実施形態のシステムの動作シーケンス図である。
【図２２】解析に使用するＰＥの数を増やす処理のフローチャートである。
【図２３】第３実施形態による最終的な割り当ての例を示す図である。
【発明を実施するための形態】
【００１７】
以下、実施形態について、図面を参照しながら詳細に説明する。まず、図１〜２を参照して第１実施形態について説明する。その後、図３〜２０を参照して第２実施形態について説明し、さらに、図２１〜２３を参照して第３実施形態について説明する。最後にその他の実施形態についても説明する。
【００１８】
図１は、第１実施形態の割り当て処理のフローチャートである。図１の割り当て処理は、１台のコンピュータにより実行されてもよいし、複数台のコンピュータにより実行されてもよい。しかし、以下では説明の簡単化のため、単に「コンピュータ」と書く。
【００１９】
さて、ある種の解析は、時間領域での解析単位ごとに同期する２台以上の演算装置（processing devices）によって実行される。この種の解析の例は、例えば、並列ＦＤＴＤ法（parallel finite-difference time-domain method）による解析である。
【００２０】
並列ＦＤＴＤ法における１ステップ時間に関する電界の計算と、電界のデータの送受信とを含む処理は、時間領域での解析単位の一例である。演算装置同士は、解析単位ごとに（例えば、１解析単位における、電界のデータの送受信の開始の時点において）同期する。同様に、並列ＦＤＴＤ法における１ステップ時間に関する磁界の計算と、磁界のデータの送受信とを含む処理も、時間領域での解析単位の一例である。１ステップ時間は、後述の式（１）および（２）では、「Δｔ」と表記されている。
【００２１】
なお、演算装置は、「ＰＥ（processing element）」とも呼ばれる。
第１の台数の演算装置が存在するとき、これら第１の台数の演算装置のうちの２台以上により、解析が実行される。また、解析の対象として、ある空間的な領域が指定される。以下では、指定された空間的な領域を「解析対象領域」ともいう。
【００２２】
解析対象領域は、複数のセルに分割される。各セルは、換言すれば、解析対象領域内の部分領域である。複数のセルの大きさは同一でもよいし、不均一であってもよい。また、解析対象領域およびセルは、３次元であってもよいし、２次元または１次元であってもよい。
【００２３】
図１のステップＳ１では、コンピュータが、複数のセルの各々について、当該セルの位置に応じた処理によって生じる、位置依存の処理負荷（position-dependent processing load）を見積もる。なお、以下では説明の簡単化のため、あるセルについての処理を実行することによって演算装置に生じる処理負荷を、単に「セルの処理負荷」あるいは「セルの位置依存の処理負荷」などとも言う。
【００２４】
例えば、解析の結果を出力する対象として、解析対象領域内で、ある領域（以下では「出力領域」という）がユーザにより指定される場合がある。出力領域に含まれるセルの位置依存の処理負荷をステップＳ１で見積もる際、コンピュータは、データを出力する出力処理に起因する出力負荷を、位置依存の処理負荷に含める。例えば、出力処理は、演算装置がネットワークを介してデータを不揮発性の記憶装置に書き込む処理であってもよい。
【００２５】
また、複数のセルのうち、１つ以上のセルに関して、位置に固有の１つ以上の入力パラメタが指定される場合もあり得る。入力パラメタが指定された各セルの位置依存の処理負荷をステップＳ１で見積もる際、コンピュータは、１つ以上の入力パラメタを読み込む読み込み処理に起因する読み込み負荷を、位置依存の処理負荷に含める。例えば、読み込み処理は、所定のファイルから（またはメモリ上のある領域から）、演算装置が１つ以上の入力パラメタを読み込む処理であってもよい。また、上記の１つ以上の入力パラメタは、以下の２種類のパラメタの少なくとも一方を含んでいてもよい。
【００２６】
・解析対象領域内に位置する波源（電流源または磁流源）を定義するパラメタ。
・解析対象領域内に位置する回路素子の特性を定義するパラメタ。例えば、抵抗値、インダクタンス、コンダクタンスなどのパラメタ。
【００２７】
また、ステップＳ１でコンピュータは、２つの異なる媒質の境界に接するセルの位置依存の処理負荷を、１つの媒質の内部に位置するセルの位置依存の処理負荷よりも大きく見積もることが好ましい。また、並列ＦＤＴＤ法による解析が行われる場合、ステップＳ１でコンピュータは、吸収境界（absorbing boundary）に接するセルの位置依存の処理負荷を、吸収境界に接しないセルの位置依存の処理負荷よりも大きく見積もことが好ましい。
【００２８】
なお、ステップＳ１での見積もりは、解析手順の具体的実装に基づいて行われることが望ましい。
【００２９】
例えば、並列ＦＤＴＤ法による解析が行われるとする。並列ＦＤＴＤ法は、マクスウェルの方程式（Maxwell's equations）に基づく解析手法である。並列ＦＤＴＤ法による解析を行うシステム同士の間で、具体的な実装は異なり得る。例えば、あるシステム中の演算装置と他のシステム中の演算装置のハードウェア構成は異なり得る。また、演算装置間のネットワークトポロジも、システムごとに異なり得る。よって、「マクスウェルの方程式に基づく解析を、具体的にどのようにプログラミングして実装するのか」という点においても、個々のシステム同士は異なり得る。
【００３０】
したがって、ステップＳ１での見積もりは、システムの実装に基づいて行われることが望ましい。ステップＳ１での見積もりは、例えば、システムの実装に依存する以下のような種々の要因に基づいて行われることが望ましい。
【００３１】
・加算や乗算などの演算の種類ごとの、演算の実行回数。
・メモリアクセスの回数。
・１つの数値のデータサイズ。
・演算装置同士の間で送受信される数値データの量。
【００３２】
さて、ステップＳ１での見積もりの後、ステップＳ２でコンピュータは、セルの演算装置への割り当て（assignment）を行う。具体的には、コンピュータは、ある基準が満たされるという条件下で、第２の台数の演算装置に複数のセルを割り当てる。換言すれば、コンピュータは、上記条件下で、第２の台数の演算装置に複数のセルを分配（distribute）する。ステップＳ２の割り当てにより、第２の台数の演算装置の各々には、複数のセルのうちの１つ以上が割り当てられる。
【００３３】
ここで、第２の台数の演算装置は、第１の台数の演算装置の一部または全部である。例えば、ある種の環境においては、何台かの演算装置が他の解析に利用されている可能性があり得る。よって、第１の台数の演算装置のすべてが常に利用可能だとは限らない。また、解析対象領域の大きさや、ユーザが希望する解析精度など、何らかの要因によっては、第１の台数の演算装置をすべて使わなくても、十分に高速な解析が可能な場合もあり得る。よって、コンピュータは、適宜に第２の台数を決めてよい。
【００３４】
上記の「ある基準」は、具体的には、以下に述べる「合計処理時間」についての、演算装置間での均等性に関して決められた基準である。解析に使われるある演算装置の「合計処理時間」は、当該演算装置が、複数のセルの中から当該演算装置に割り当てられる１つ以上のセルの各々の位置に応じた処理を実行するのにかかる時間を含む。「合計処理時間」はさらに、当該演算装置が、解析に使われる他の１台以上の演算装置との間でデータを送受信するのにかかる時間を含んでもよい。
【００３５】
なお、上記のとおり、解析に使われる演算装置同士は、時間領域での解析単位ごとに同期する。したがって、解析は、複数の解析単位の連なりである。
【００３６】
合計処理時間は、解析全体に関する時間であってもよい。あるいは、合計処理時間は、所定数の解析単位あたりの時間であってもよい。所定数は、例えば１でもよいし、２以上でもよい。
【００３７】
例えば、所定数が２であってもよい。例えば、並列ＦＤＴＤ法における１ステップ時間に関する一連の処理は、２つの解析単位に相当する。並列ＦＤＴＤ法に関して、以下の時間を含むような合計処理時間が、２つの解析単位あたりの合計処理時間として見積もられてもよい（後述の図２も参照）。
【００３８】
・１ステップ時間に関する電界の計算を実行するのにかかる時間。
・電界の計算後、他の１台以上の演算装置との間でデータを送受信するのにかかる時間。
・１ステップ時間に関する磁界の計算を実行するのにかかる時間。
・磁界の計算後、他の１台以上の演算装置との間でデータを送受信するのにかかる時間。
【００３９】
また、ステップＳ１に関して説明したように、演算装置に割り当てられるセルの位置に応じて、演算装置は、出力処理を行う場合もあり得る。この場合、合計処理時間には、出力処理にかかる時間を含む。また、演算装置が読み取り処理を行う場合もあり得る。この場合、合計処理時間は、読み取り処理にかかる時間を含む。さらに、電界または磁界の計算にかかる１セルあたりの時間も、１つの媒質の内部に位置するセルと、２つの媒質の境界に接するセルとで異なり得る。もちろん、ある演算装置の合計処理時間は、当該演算装置に割り当てられるセルの数にも依存するし、当該演算装置の性能（例えばクロック周波数、メモリスループットなど）にも依存する。
【００４０】
コンピュータは、ステップＳ１で見積もった位置依存の処理負荷に基づいて、ステップＳ２で合計処理時間を適切に算出することができる。また、コンピュータは、「上記基準が満たされるか否か」について、算出した合計処理時間に基づいてステップＳ２で適切に判断することができる。よって、コンピュータは、上記基準が満たされるという条件下での割り当てを実現することができる。
【００４１】
ステップＳ２の処理は、より具体的には、暫定的な割り当てを行う処理と、暫定的な割り当てのもとで上記基準が満たされるか否かを判断する処理を含んでいてもよい。
【００４２】
暫定的な割り当てのもとで上記基準が満たされない場合、コンピュータは、暫定的な割り当てをやり直す。上記基準が満たされるような割り当てが見つかったら、コンピュータは、見つかった割り当てを実際に採用する。
【００４３】
例えば、コンピュータは、ステップＳ２において（あるいはステップＳ２の実行前に）、第２の台数（つまり解析を実行する演算装置の数）を決定してもよい。そして、コンピュータは、ステップＳ２において、決定した第２の台数を固定して、その固定した第２の台数に関して、上記のような暫定的な割り当てと判断を実行してもよい。つまり、ステップＳ２は、以下のような処理を含んでいてもよい。
【００４４】
・決定した第２の台数の演算装置に複数のセルを暫定的に割り当てる処理。
・暫定的な割り当てのもとで、第２の台数の演算装置間で上記基準が満たされるか否かを判断する処理。
・暫定的な割り当てのもとでは第２の台数の演算装置間で基準が満たされない場合には、第２の台数の演算装置に、複数のセルを暫定的に割り当て直す処理。より具体的には、位置依存の処理負荷が複数のセルの中で相対的に重い特定のグループに属するセルを割り当てる演算装置の台数である第３の台数を増やし、増やした第３の台数に応じて、暫定的な割り当てをやり直す処理。
【００４５】
なお、コンピュータが第２の台数を決定するためのアルゴリズムは、特に限定されない。コンピュータは、例えば以下のような要因のうち少なくとも１つに応じて第２の台数を決定してもよいし、他の要因に応じて第２の台数を決定してもよい。
【００４６】
・第１の台数の演算装置のうち、他の解析に利用中（または他の解析用に予約済み）の演算装置の台数。
・第１の台数の演算装置を共用するユーザの人数。
・解析対象領域および／または出力領域の大きさ。
・ユーザが指定する解析精度。
・解析対象領域に含まれる解析対象物の形状および／または材質。
・解析対象物中の回路の構成。
・波源の数および／または配置。
【００４７】
また、上記基準は、より具体的には、「決定された第２の台数の演算装置の間で、合計処理時間同士の比、差、または比と差の双方が、決められた許容範囲内に収まる」という基準であってもよい。許容範囲は、具体的には、１つ以上の閾値により予め定義されていてもよい。
【００４８】
また、上記の特定のグループは、具体的には、以下のいずれかの集合であってもよいし、以下の集合のうち２つ以上の和集合（union）であってもよい。
【００４９】
・出力領域に含まれるセルの集合。
・位置に固有の１つ以上の入力パラメタが指定されたセルの集合。
・２つの媒質の境界に接するセルの集合。
・吸収境界に接するセルの集合。
【００５０】
コンピュータは、以下の２つの条件をともに満たす演算装置に、特定のグループに属するセルの少なくとも一部を新たに割り当てることにより、第３の台数（すなわち、特定のグループに属するセルを割り当てる演算装置の台数）を増やしてもよい。
【００５１】
・特定のグループに属するセルの少なくとも一部が暫定的に割り当てられた演算装置と、第１の台数の演算装置間のネットワークトポロジにおいて、隣接している。
・特定のグループに属するどのセルも暫定的に割り当てられていない。
【００５２】
コンピュータは、以上のようにして増やした第３の台数に応じて、上記のとおり暫定的な割り当てをやり直す。コンピュータは、以下のような再割り当てを行うことで、上記基準が満たされるようにしてもよい。
【００５３】
・コンピュータは、特定のグループに属する１つ以上のセルを含む第１の個数のセルを、第２の台数の演算装置のうちの第１の演算装置に割り当てる。
・コンピュータは、第１の個数より多い第２の個数の、特定のグループには含まれないセルのみを、第２の台数の演算装置のうちの第２の演算装置に割り当てる。
【００５４】
ところで、ステップＳ２が実行される間、上記のように第２の台数が固定されていてもよいが、コンピュータは、ステップＳ２の実行中に第２の台数を動的に変更してもよい。つまり、ステップＳ２は、以下のような処理を含んでいてもよい。
【００５５】
・第２の台数を暫定的に決める処理。
・暫定的に決めた第２の台数の演算装置に、複数のセルを暫定的に割り当てる処理。
・暫定的な割り当てのもとで、第２の台数の演算装置間で上記基準が満たされるか否かを判断する処理。
・暫定的な割り当てのもとでは第２の台数の演算装置間で基準が満たされない場合には、第２の台数を増やす（つまり第２の台数を暫定的に決め直す）処理。
・増やした第２の台数の演算装置に、複数のセルを暫定的に割り当て直す処理。
【００５６】
より具体的には、コンピュータは、増やした第２の台数の演算装置に複数のセルを暫定的に割り当て直す際に、特定のグループに属するセルが暫定的に割り当てられる演算装置の台数を、増やす。コンピュータは、上記のような割り当て直しを１回以上繰り返すことで、基準が満たされるようにすることができる。
【００５７】
なお、ここでの「特定のグループ」は、第２の台数がステップＳ２の実行中に固定される上記の例における「特定のグループ」と同様である。つまり、「特定のグループ」は、複数のセルの中で位置依存の処理負荷が他のセルよりも相対的に重いセルのグループである。
【００５８】
コンピュータは、増やした第２の台数の演算装置へのセルの再割り当てにおいて、具体的には以下のように動作してもよい。それにより、コンピュータは、基準が満たされるようにしてもよい。
【００５９】
・コンピュータは、特定のグループに属する１つ以上のセルを含む第１の個数のセルを、増やした第２の台数の演算装置のうちの第１の演算装置に割り当てる。
・コンピュータは、第１の個数より多い第２の個数の、特定のグループには含まれないセルのみを、増やした第２の台数の演算装置のうちの第２の演算装置に割り当てる。
【００６０】
また、第２の台数がステップＳ２の実行中に動的に変更される場合、上記基準は、「暫定的に決められた第２の台数の演算装置の間で、合計処理時間同士の比、差、または比と差の双方が、決められた許容範囲内に収まる」という基準であってもよい。許容範囲は、具体的には、１つ以上の閾値により予め定義されていてもよい。
【００６１】
第２の台数が固定であるにせよ可変であるにせよ、ステップＳ２でコンピュータは、位置依存の処理負荷が重いセルが割り当てられる演算装置には相対的に少ない数のセルを割り当てる。それにより、コンピュータは、上記基準が満たされるようにする。
【００６２】
位置依存の処理負荷が重いセルの例は、出力領域に含まれるセルである。よって、コンピュータは、ステップＳ２において、例えば以下のような割り当てを行ってもよい。
【００６３】
・出力領域に含まれる１つ以上のセルを含む第１の個数のセルを、第２の台数の演算装置のうちの第１の演算装置に割り当てる。
・第１の個数より多い第２の個数の、出力領域には含まれないセルのみを、第２の台数の演算装置のうちの第２の演算装置に割り当てる。
【００６４】
なお、位置依存の処理負荷が重いセルは、出力領域に含まれるセルだけとは限らない。上記の特定のグループに属するセルの位置依存の処理負荷は重い。よって、コンピュータは、例えば以下のような割り当てを行ってもよい。
【００６５】
・位置に固有の１つ以上の入力パラメタが指定されたセルを含む第１の個数のセルを、第２の台数の演算装置のうちの第１の演算装置に割り当てる。
・第１の個数より多い第２の個数の、入力パラメタが指定されていないセルのみを、第２の台数の演算装置のうちの第２の演算装置に割り当てる。
【００６６】
以上のように、ステップＳ２での割り当ての具体的方法には様々なものがある。なお、まれに、上記基準を満たすような割り当てが見つからない場合もあり得る。その場合、ステップＳ２でコンピュータは、選択可能な割り当ての中から、合計処理時間についての均等性が最も高い割り当てを選ぶことが望ましい。
【００６７】
ステップＳ２での割り当てを終えると、コンピュータは図１の割り当て処理を終了する。一方、ステップＳ２での割り当てにしたがって、第２の台数の演算装置が解析を実行する。こうして実行される解析は、例えば、第２の台数の演算装置に、複数のセルを、セルの個数という観点において均等に割り当てた場合の解析と比べて、短時間で終了する。すなわち、第１実施形態によれば、解析が高速化される。
【００６８】
なぜなら、ステップＳ２の割り当ては、「合計処理時間についての演算装置間での均等性に関して決められた基準が満たされる」という条件下で行われるからである。よって、ステップＳ２によって決められた割り当てによれば、第２の台数の演算装置の間での合計処理時間の均等性は高い。
【００６９】
つまり、第２の台数の演算装置の間で、合計処理時間同士が少しは異なるかもしれないが、合計処理時間同士の差はそれほど大きくない。よって、既に処理を終えた演算装置が、同期のために、まだ処理を実行中の他の演算装置が処理を終了するまで待つ場合でも、待ち時間はそれほど長くない。第１実施形態によれば、同期ごとの無駄な待ち時間の削減により、解析全体が高速化される。
【００７０】
ところで、以上説明した図１の処理を行うコンピュータは、例えばステップＳ１のように見積もりを行う見積もり手段と、例えばステップＳ２のように割り当てを行う割り当て手段とを備える情報処理装置の一例である。また、当該情報処理装置は、第１の台数の演算装置と当該情報処理装置とを含む解析システムの一部として使われてもよい。なお、第１の台数の演算装置の各々は、少なくとも１台の他の演算装置と直接的または間接的に接続される。また、情報処理装置は、第１の台数の演算装置とネットワークを介して接続される。
【００７１】
以上のような情報処理装置は、物理的には、１台のコンピュータであってもよいし、２台以上の装置（例えば後述の図３における制御装置１２０とホスト端末１５０）により実現されてもよい。また、後述の図３には、第１の台数の演算装置の具体例として、ＰＥ１４０−１〜１４０−Ｐが例示されている（１＜Ｐ）。
【００７２】
さて、図２は、同期のための待ち時間のせいで解析にかかる時間が長くなる問題を説明する図である。以下では説明の便宜上、図１に関して述べた「解析」が、具体的には並列ＦＤＴＤ法による解析であるものとする。また、上記のとおり、演算装置は「ＰＥ」とも呼ばれる。以下では、主に「ＰＥ」という名称を用いて説明を行う。
【００７３】
上記のように、図１の割り当て処理によれば解析が高速化されるが、図２には、図１の割り当て処理が行われない場合に起き得る問題が例示されている。
【００７４】
図２の例Ｅ１は、どのＰＥも出力処理を行わない場合の例である。紙幅の都合上、図２には３台のＰＥ（以下、「ＰＥ＃１」〜「ＰＥ＃３」と表記する）それぞれの合計処理時間のみが例示されているが、解析には４台以上のＰＥが使われてもよい。
【００７５】
周知のように、マクスウェルの方程式を時間領域で離散化することで、式（１）と（２）が得られる。ＦＤＴＤ法は、式（１）と（２）に基づく。具体的には、式（１）と（２）を空間領域で離散化することにより、Ｙｅｅセルを用いた蛙跳び（leap-frog）アルゴリズムによる解析が可能となる。
【数１】
2014211699.tif 000003
【数２】
2014211699.tif 000004
【００７６】
なお、式（１）と（２）において、ベクトルＥは電界を表す３次元ベクトルであり、ベクトルＨは磁界を表す３次元ベクトルである。また、Δｔは「ステップ時間」と呼ばれる単位時間を示す。ステップ時間Δｔは、時間領域での離散化の単位である。そして、σは導電率を示し、εは誘電率を示し、μは透磁率を示す。添え字（superscript）の「ｎ」や「ｎ−１」等は、ステップ時間を単位とする時刻を示す。例えば、「ｎ−１」という添え字のついたベクトルＥは、ｔ＝（ｎ−１）・Δｔなる時刻ｔにおける電界を表す。なお、ｎは０以上の整数である。
【００７７】
式（１）から分かるように、ある時刻（ｔ＝ｎ・Δｔ）の電界は、過去の時刻（ｔ＝（ｎ−１）・Δｔ）の電界と、過去の時刻（ｔ＝（ｎ−１／２）・Δｔ）の磁界に基づいて、計算される。また、式（２）から分かるように、ある時刻（ｔ＝（ｎ＋１／２）・Δｔ）の磁界は、過去の時刻（ｔ＝（ｎ−１／２）・Δｔ）の磁界と、過去の時刻（ｔ＝ｎ・Δｔ）の電界に基づいて計算される。
【００７８】
並列ＦＤＴＤ法では、複数のＰＥが使われる。よって、並列ＦＤＴＤ法では、計算された電界のデータがＰＥ間で送受信され、計算された磁界のデータもＰＥ間で送受信される。具体的には、各ＰＥは、１ステップ時間に関して、電界の計算、電界のデータの送受信、磁界の計算、および、磁界のデータの送受信を行う。図２には、ＰＥ＃１〜ＰＥ＃３それぞれについて、１ステップ時間に関する合計処理時間が例示されている。
【００７９】
なお、あるＰＥがどのＰＥに電界のデータを送信し、どのＰＥから電界のデータを受信するかということは、並列ＦＤＴＤ解析の具体的実装に応じて異なり得る。同様に、あるＰＥがどのＰＥに磁界のデータを送信し、どのＰＥから磁界のデータを受信するかということも、並列ＦＤＴＤ解析の具体的実装に応じて異なり得る。
【００８０】
例えば、あるＰＥが担当するセルの範囲と、他のＰＥが担当するセルの範囲は、部分的にオーバラップしていてもよい。具体的実装の違いの一例は、例えば、オーバラップの有無である。具体的実装の違いの他の例は、例えば、ＰＥ間のネットワークトポロジにおける違いである（後述の図４も参照）。
【００８１】
さて、例Ｅ１のようにどのＰＥも出力処理を行わない場合、仮にセルの数に基づく単純な割り当てが行われたとしても、同期のための待ち時間は比較的短い。図２では、待ち時間が斜線パターンで示されている。なお、「セルの数に基づく単純な割り当て」とは、以下のような割り当て方法のことである。
【００８２】
・どのＰＥの性能も等しい場合は、解析対象領域に含まれるセルの個数をＰＥの台数で割ることにより、各ＰＥに均等な数のセルを割り当てる方法。
・ＰＥ間に性能差がある場合は、例えば、性能に応じてセルをＰＥ間に比例配分することにより、各ＰＥに性能に応じた数のセルを割り当てる方法。
【００８３】
もちろん、割り算の端数の影響や、その他の要因により、例Ｅ１に示すように、例えばＰＥ＃３が、ＰＥ＃１やＰＥ＃２よりも早く電界や磁界の計算を終える可能性もある。この場合、ＰＥ＃３は、同期のために、ＰＥ＃１とＰＥ＃２が計算を終えるのを待つ。つまり、ＰＥ＃１〜ＰＥ＃３のすべてが電界の計算を終えてから、ＰＥ間で電界のデータの送受信が行われる。同様に、ＰＥ＃１〜ＰＥ＃３のすべてが磁界の計算を終えてから、ＰＥ間で磁界のデータの送受信が行われる。
【００８４】
しかし、どのＰＥも出力処理を行わない場合には、例Ｅ１に示すように、１ステップ時間に関するＰＥ間での合計処理時間の差は短い。つまり、仮に上記のような単純な割り当て方法が採用されたとしても、どのＰＥも出力処理を行わない場合には、待ち時間は短い。換言すれば、どのＰＥも出力処理を行わない場合には、セルの処理負荷の位置依存性の影響は小さいから、上記のようなセルの数に基づく単純な割り当て方法によって、合計処理時間の均一性を十分に高めることが可能である。
【００８５】
なお、すべてのＰＥが出力処理を行う場合にも、例Ｅ１と同様に、単純な割り当て方法によって、合計処理時間の均一性を十分に高めることが可能である。
【００８６】
ところが、例Ｅ２に示すように、あるＰＥ（具体的には例えばＰＥ＃１）だけが出力処理を行い、他のＰＥ（具体的には例えばＰＥ＃２とＰＥ＃３）が出力処理を行わない場合もあり得る。なお、図２では出力処理が行われている時間が黒く塗りつぶされている。
【００８７】
出力処理は、例Ｅ２に示すように、電界の計算の途中や磁界の計算の途中に行われてもよい。あるいは、出力処理は、電界の計算の開始前または終了後に行われてもよい。同様に、出力処理は、磁界の計算の開始前または終了後に行われてもよい。
【００８８】
また、例Ｅ２に示すように、１ステップ時間に関する処理あたり、２回以上に分散して出力処理が行われてもよい。逆に、１ステップ時間に関する処理あたり、１回にまとめて出力処理が行われてもよい。
【００８９】
また、例えば「３００ステップ時間ごとに１回、計算結果を出力せよ」などとユーザが指定してもよい。この場合、出力処理は、各々が１ステップ時間に関する処理であるような３００回の処理のうちの、１回の処理の中にのみ含められてもよい。あるいは、出力処理は、各々が１ステップ時間に関する処理であるような複数回（例えば３００回でもよいし、５０回などでもよい）の処理の中に、分散されていてもよい。
【００９０】
以上のように、どのように出力処理を時間的に分散させるかは、実施形態に応じて様々であってよい。しかし、いずれにしろ、「解析全体としては、１ステップ時間に関する処理あたりに、平均的にＰＥ＃１が出力処理を行うのにかかる時間は、出力処理の分散のさせ方によらない」と見なせる。よって、以下では出力処理の分散のさせ方についての議論は省略する。
【００９１】
さて、例Ｅ２のように、特定の１台または複数台のＰＥのみが出力処理を行う場合、上記のようなセルの数（および各ＰＥの処理性能）に基づく単純な割り当て方法が採用されると、ＰＥ間で合計処理時間が大きく異なってしまう。つまり、無駄な待ち時間が増えてしまう。その結果、解析全体にかかる時間も不必要に長くなってしまう。
【００９２】
このような解析時間の長期化の問題は、発明者が研究・開発を行う過程で新たに気づいた問題である。よって、以下ではこの問題の背景について詳しく説明する。
【００９３】
並列ＦＤＴＤ法は、電磁界解析や光学解析などのために広く用いられている。近年では、並列ＦＤＴＤ法で使われるセルの数も増大する傾向にある。
【００９４】
例えば、誤差の低減（換言すれば解析精度の向上）のためには、解析対象領域をより小さなセルに分割することが有益である。よって、ユーザが求める解析精度が上がるにつれ、セルの数も増大する。
【００９５】
一方、シミュレータが扱うことのできるセルの数には上限があることも多い。例えば、上限が数千万セル程度のシミュレータも多い。しかし、ユーザは、上限を超えるような多数のセルを含むモデルを解析したい場合がある。
【００９６】
この場合、ユーザは、モデルを複数の部分モデルに分割する。分割は、各部分モデルのセル数が上限以内になるように、適切に行われる。すると、シミュレータは、各部分モデルに対して解析を実行することができる。ユーザは、各部分モデルの解析結果を統合することで、最終的な解析結果を得る。
【００９７】
しかし、分割なしにモデル全体を１回で解析することができれば、大変便利である。つまり、非常に多数の（例えば、数億〜百億程度の）セルを含むモデルを、分割せずに１回で解析することの可能なシミュレータが望ましい。
【００９８】
また、ＦＤＴＤ法では、Ｙｅｅ格子のサイズ（つまりセルの１辺の長さ）を小さくすることで、解析誤差を減らすことができる。例えば、Ｙｅｅ格子のサイズが、解析対象の電波の波長の１／２０の場合、誤差を０．３％以下に抑えることができる。
【００９９】
よって、高周波数帯の電磁波（つまり波長の短い電磁波）の解析を精度よく行うには、波長に応じてセルを適切に微細化することが望ましい。近年では、高周波帯の電磁波を利用する製品（例えば、携帯電話、スマートフォンなど）も増加しているので、高周波帯の電磁波について解析したいユーザも多い。短波長の電磁波に合わせてセルのサイズが小さくなれば、当然、セルの数は増える。
【０１００】
以上のように、様々な要因により、解析対象領域内のセルの数は増大する傾向にある。数年後には、例えば百億個程度のセルを含むモデルの解析が一般的になる可能性すらある。なお、セルの数が百億個程度であれば、ＰＥの数もセルの数に応じて増やすことが望ましい。例えば、数百台のＰＣ（Personal Computer）を有するＰＣクラスタが解析に使われてもよいし、もちろん、スーパコンピュータが使われてもよい。
【０１０１】
ところで、出力領域は、解析の目的や解析の条件に応じて、ユーザによって任意に指定される。解析対象領域内で指定される出力領域の数も、１箇所だけとは限らず、２箇所以上の出力領域が指定される可能性もある。また、出力領域の広さも、ユーザによって任意に指定され得る。
【０１０２】
よって、出力されるデータの量も、ユーザの指定に応じて異なる。しかし、大まかな傾向として、以下のことが成り立つ。すなわち、解析対象（例えば、ＰＣ、スマートフォン、携帯電話、プリント配線基板など）が、より微細なセルに分割されるほど、出力領域に含まれるセルの数も増える傾向にある。例えば、解析対象領域が百億個程度のセルに分割される場合、出力されるデータの量も、ＴＢ（テラバイト）のオーダになる可能性がある。
【０１０３】
また、解析対象の電磁波の周波数が高いほど、出力の時間的インターバルも短くすることが望ましい。例えば、数ＧＨｚ（ギガヘルツ）程度以上の高周波数帯域の電磁波に関する解析では、出力の時間的インターバルの好ましい長さは、大変短い。ある一定の長さの期間に渡る経時的変化がシミュレートされる場合、出力の時間的インターバルが短いほど、出力の回数は多い。したがって、解析対象の電磁波の周波数が高いほど、出力されるデータの量も多い。
【０１０４】
以上のとおり、セルの微細化や、解析対象の電磁波の周波数などに起因して、出力されるデータ量は厖大になり得る。そして、並列ＦＤＴＤ法では、空間的に連続する複数のセルが１つのＰＥに割り当てられることが一般的である。よって、出力領域に含まれるセルは、多くのＰＥに満遍なく分散されて割り当てられるのではなく、少数のＰＥに偏って割り当てられる場合が多い。つまり、数ＴＢにも及ぶ多量のデータを出力する処理の負荷が、少数のＰＥに偏る場合が多い。
【０１０５】
出力されるデータの量が少なければ、出力負荷の偏り（imbalance）が解析全体に与える影響も小さい。例えば、出力されるデータの量が数ＧＢ（ギガバイト）程度なら、たとえ出力負荷が少数のＰＥに偏っても、影響はそれほど大きくない。偏りの影響が少なければ、例Ｅ１に関して説明したような、セルの数（および各ＰＥの処理能力）に基づく単純な割り当てが行われるとしても、待ち時間に起因する解析時間の長期化の問題は、わずかである。
【０１０６】
上記のような、セルの数（および各ＰＥの処理能力）に基づく単純な割り当ては、「どのセルの処理負荷もほぼ同等だ」ということを暗黙の前提としている。つまり、上記のような単純な割り当てでは、「セルの位置に応じて処理負荷が異なる」ということが考慮されない。出力負荷の偏りの影響が小さければ、たとえ単純な割り当てが行われても（つまり、たとえ処理負荷の位置依存性が無視されても）、それほど大幅には解析時間が長期化しない。
【０１０７】
しかし、実際は、例えば、セルが出力領域に含まれるか否かによって、セルの処理負荷は異なる。すなわち、セル間で処理負荷には格差があり、各セルの処理負荷は当該セルの位置に依存する。よって、処理負荷の位置依存性を無視する単純な割り当てが仮に行われると、出力されるデータの量が多くなるにつれ、出力負荷の偏りが解析全体に与える影響も、無視できないほどに大きくなる。つまり、出力負荷の偏りは解析の高速化にとってのボトルネックである。そして、待ち時間の増大に起因する、解析時間の不必要な長期化の問題が、今後は深刻化するものと予測される。
【０１０８】
そして、上述のとおり、出力負荷は今後ますます増大しそうである。よって、出力負荷の偏りに起因する解析時間の不必要な長期化の問題を回避することが望ましい。換言すれば、処理負荷の位置依存性に起因して特定のいくつかのＰＥの負荷が他のＰＥの負荷よりも重くなることを、防ぐことが望ましい。
【０１０９】
また、ＦＤＴＤ法ではＣｏｕｒａｎｔ条件が満たされるようにステップ時間Δｔの長さが設定される。Ｃｏｕｒａｎｔ条件によれば、セルのサイズが小さくなるほど、ステップ時間Δｔも短くなる。つまり、ある一定の長さの期間に渡る経時的変化がシミュレートされる場合、セルの微細化にともなって解析のステップ数も増大する。ステップ数が増大すれば、１ステップ時間に関する一連の処理あたりの待ち時間が、解析全体にかかる時間に与える影響も、増大する。よって、ステップ時間Δｔの長さという観点からも、処理負荷の位置依存性を考慮に入れて負荷の偏りを減らすことが望ましい。
【０１１０】
ここで、再度、図２の例Ｅ２について説明する。例Ｅ２では、処理負荷の位置依存性が考慮されていない。つまり、例Ｅ２は、例Ｅ１と同様の単純な割り当てが行われた場合の例である。
【０１１１】
例Ｅ１では、ＰＥ＃１とＰＥ＃２の処理時間が同じなので、ＰＥ＃２は、同期のためにＰＥ＃１が処理を完了するのを待つ必要がない。しかし、例Ｅ２では、出力処理を行うＰＥ＃１の処理時間は、出力処理にかかる時間の分だけ、ＰＥ＃２の処理時間よりも長い。そのため、例Ｅ２では、ＰＥ＃３だけでなくＰＥ＃２も、データの送受信の前に、同期のために、ＰＥ＃１が処理（つまり電界または磁界を計算する処理）を完了するのをしばらく待つ。
【０１１２】
例Ｅ１とＥ２での待ち時間を比較すれば分かるように、１ステップ時間についての一連の処理にかかる時間は、例Ｅ２の方が例Ｅ１よりも長い。そして、例Ｅ２と例Ｅ１での処理時間の差は、上記のように、出力処理の負荷が特定のＰＥ（図２の例ではＰＥ＃１）に偏ることに起因している。
【０１１３】
単純な割り当てでは処理負荷の位置依存性が無視されるが、実際には出力負荷の偏りがある。よって、例Ｅ２のように単純な割り当てが行われると、出力負荷の偏りに起因して、出力処理を行わないＰＥ（つまりＰＥ＃２とＰＥ＃３）における待ち時間が増大する。このような待ち時間ではＰＥが遊んでいるから、このような待ち時間は無駄である。
【０１１４】
したがって、例Ｅ２のように出力負荷に偏りがある場合、待ち時間を減らすように割り当てを変えることで、解析全体の効率性を高める余地がある。つまり、待ち時間を減らすように割り当てを変えることで、解析全体にかかる時間を短縮化する効果が得られる。そして、出力されるデータ量が今後増えるにつれ、そのような解析時間の短縮化の効果も顕著になると予測される。
【０１１５】
そこで、上述のとおり第１実施形態では、コンピュータが、各セルの処理負荷の位置依存性を考慮に入れて（ステップＳ１を参照）、合計処理時間についてのＰＥ間での均等性が基準を満たすように、セルのＰＥへの割り当てを決める（ステップＳ２を参照）。それにより、例Ｅ２に見られるようなＰＥ間での合計処理時間の差は、縮小される。したがって、第１実施形態によれば、無駄な待ち時間が減り、解析全体が高速化される。
【０１１６】
なお、セルの位置に依存して生じる重い負荷は、例Ｅ２に示したような出力負荷だけには限られない。図１のステップＳ１に関しても説明したとおり、波源や回路素子が配置された位置にあるセルの負荷は、１つ以上の入力パラメタを読み込む読み込み処理に起因して重い。
【０１１７】
また、２つの異なる媒質の境界に接するセルの処理負荷は、１つの媒質の内部に位置するセルの処理負荷よりも重い。なぜなら、媒質の境界では、電界と磁界の計算に使われる式が複雑であるためである。さらに、吸収境界に接するセルの処理負荷は、吸収境界に接しないセルの処理負荷よりも重い。なぜなら、吸収境界では、電界と磁界の計算に使われる式が複雑であるためである。
【０１１８】
このように、様々な要因によって、セルの位置に応じてセルの処理負荷は異なり得る。しかし、図１の割り当て処理は、処理負荷の位置依存性が何に起因するかによらず、解析時間の短縮化のためには有益である。
【０１１９】
ところで、上述の図１のステップＳ２に関して、コンピュータが「第２の台数」を固定的に決定する場合と、コンピュータが「第２の台数」を動的に変更する場合を例示した。以下に説明する第２実施形態は前者の場合に相当し、第３実施形態は後者の場合に相当する。以下、図３〜２０を参照して第２実施形態について説明し、図２１〜２３を参照して第３実施形態について説明する。
【０１２０】
図３は、システム構成図である。図３のシステム１００は、並列ＦＤＴＤ法による解析を行うシミュレータ１１０と、ホスト端末１５０と、１台以上のユーザ端末を含む。図３には、２台のユーザ端末１６０と１６１が例示されている。
【０１２１】
シミュレータ１１０は、制御装置１２０と、スイッチ１３０と、複数台のＰＥと、これら複数のＰＥに接続された複数のメモリを含む。詳しくは後述するとおり、第２実施形態では、制御装置１２０とホスト端末１５０が協働して、図１と類似の処理を実行する。
【０１２２】
図３には、Ｐ台（１＜Ｐ）のＰＥ１４０−１〜１４０−Ｐと、Ｐ台のメモリ１４１−１〜１４１−Ｐが例示されている。メモリ１４１−ｐはＰＥ１４０−ｐに接続される（１≦ｐ≦Ｐ）。図示の便宜上、図３ではＰＥ間の接続は省略されている。なお、「Ｐ」は、図１に関して説明した「第１の台数」の具体例である。
【０１２３】
詳しくは後述するように、ＰＥ１４０−ｐ（１≦ｐ≦Ｐ）は、並列ＦＤＴＤ法による解析のためのプログラム（換言すれば、複数のコマンドを含むコマンドセット）を制御装置１２０を介して受け取る。そして、ＰＥ１４０−ｐは、受け取ったプログラムをメモリ１４１−ｐに記憶し、メモリ１４１−ｐをワークエリアとしても用いながら、プログラムを実行する。
【０１２４】
ＰＥ１４０−１〜１４０−Ｐの各々は、以下のいずれであってもよい。並列ＦＤＴＤ法による解析は、ＰＥ１４０−１〜１４０−Ｐの一部または全部により実行される。
【０１２５】
・汎用的なＣＰＵ（Central Processing Unit）。例えばＰＣ中のＣＰＵ。
・並列ＦＤＴＤ解析のためのＡＳＩＣ（Application-Specific Integrated Circuit）。
・ＦＰＧＡ（Field Programmable Gate Array）。
・ＧＰＵ（Graphic Processing Unit）。
【０１２６】
メモリ１４１−１〜１４１−Ｐの各々は、例えば、ＳＲＡＭ（Static Random Access Memory）であってもよいし、ＤＲＡＭ（Dynamic Random Access Memory）であってもよいし、両者の組み合わせであってもよい。
【０１２７】
システム１００は、解析結果を保存（save）するためのＨＤＤ（Hard Disk Drive）１７０も含む。ＨＤＤ１７０は、ＮＡＳ（Network-Attached Storage）として使われるＨＤＤであってもよいし、ネットワーク１８０に接続された不図示のコンピュータのローカルＨＤＤであってもよい。
【０１２８】
ＨＤＤ１７０が省略されてもよい（例えば、ＨＤＤ１７０のかわりに後述のＨＤＤ１５３が使われてもよい）。あるいは、ＨＤＤ１７０は、ネットワーク１８０ではなく後述のネットワーク１８１に接続されていてもよい。実施形態によっては、各ＰＥからアクセスされる不図示のネットワークに、ＨＤＤ１７０が接続されていてもよい。
【０１２９】
シミュレータ１１０とホスト端末１５０とＨＤＤ１７０は、ネットワーク１８０を介して接続される。また、ホスト端末１５０は、ネットワーク１８１を介してユーザ端末１６０〜１６１とも接続される。
【０１３０】
ネットワーク１８０と１８１の種類は特に限定されない。例えば、ネットワーク１８０は、ＬＡＮ（Local Area Network）、ＶＬＡＮ（Virtual LAN）、ＷＡＮ（Wide Area Network）、インターネット、またはその組み合わせであってもよい。また、ネットワーク１８１も、例えば、ＬＡＮ、ＶＬＡＮ、ＷＡＮ、インターネット、またはその組み合わせであってもよい。
【０１３１】
ところで、シミュレータ１１０内の制御装置１２０は、ＣＰＵ１２１と、メモリ１２２と、ローカルなＨＤＤ１２３を有する。また、制御装置１２０は、制御装置１２０をスイッチ１３０に接続するためのネットワークインタフェイス１２４を有する。さらに、制御装置１２０は、制御装置１２０をネットワーク１８０に接続するためのネットワークインタフェイス１２５も有する。なお、図３では紙幅の都合上、「ネットワークインタフェイス」が「ＮＷ  Ｉ／Ｆ」と省略されている。制御装置１２０内の各コンポーネントは、バス１２６を介して互いに接続される。
【０１３２】
ホスト端末１５０は、例えばワークステーションやＰＣなどの、汎用的なコンピュータであってもよい。ホスト端末１５０は、ＣＰＵ１５１と、メモリ１５２と、ローカルなＨＤＤ１５３を有する。
【０１３３】
さらに、ホスト端末１５０は、ホスト端末１５０をネットワーク１８０と１８１に接続するためのネットワークインタフェイス１５４も有する。ホスト端末１５０内の各コンポーネントは、バス１５５を介して互いに接続される。
【０１３４】
ネットワークインタフェイス１５４は、例えば、拡張カード型のＮＩＣ（Network Interface Card）でもよいし、オンボード型のＮＩＣでもよい。ネットワークインタフェイス１５４は、具体的には、イーサネット（登録商標）用のインタフェイス装置であってもよく、ケーブルを挿すための物理的なポート、物理層の処理を行うための「ＰＨＹチップ」と呼ばれる回路、ＭＡＣ副層の処理を行うための「ＭＡＣチップ」と呼ばれる回路、などを含む。
【０１３５】
ネットワークインタフェイス１２５もネットワークインタフェイス１５４と同様の装置である。ネットワークインタフェイス１２４は、ＰＥ１４０−１〜１４０−Ｐと制御装置１２０の間のネットワーク（つまりスイッチ１３０を介したネットワーク）の種類に応じたインタフェイス装置である。ＰＥ１４０−１〜１４０−Ｐと制御装置１２０の間のネットワークの種類によっては、ネットワークインタフェイス１２４も、イーサネット用のインタフェイス装置であってもよい。
【０１３６】
なお、図３には１台のスイッチ１３０のみが例示されているが、２台以上のスイッチが使われてもよい。例えば、複数のスイッチがカスケード状に接続されていてもよい。
【０１３７】
ユーザ端末１６０と１６１の各々は、例えばＰＣなどの端末である。図３では省略されているが、各ユーザ端末も、ＣＰＵ、メモリ、ローカルＨＤＤ、ネットワークインタフェイスなどを有する。
【０１３８】
なお、ＨＤＤ１２３の代わりに（あるいはＨＤＤ１２３とともに）、ＳＳＤ（Solid-State Drive）が使われてもよい。同様に、ＨＤＤ１５３の代わりに（あるいはＨＤＤ１５３とともに）、ＳＳＤが使われてもよい。また、ＨＤＤ１７０の代わりに（あるいはＨＤＤ１７０とともに）、ＳＳＤが使われてもよい。ＨＤＤとＳＳＤは、いずれも、不揮発性記憶装置の例である。
【０１３９】
また、図３では省略されているが、各ＰＥ１４０−ｐ（１≦ｐ≦Ｐ）には、さらに、当該ＰＥ用のローカルＨＤＤが接続されていてもよいし、ＨＤＤの代わりに（あるいはＨＤＤとともに）ＳＳＤが使われてもよい。あるいは、ＰＥ１４０−１〜１４０−Ｐが、共通のＨＤＤおよび／または共通のＳＳＤに接続されていてもよい。
【０１４０】
ところで、制御装置１２０において、ＣＰＵ１２１は、プログラムをメモリ１２２にロードし、メモリ１２２をワークエリアとしても用いながら、プログラムを実行する。プログラムは、予めＨＤＤ１２３にインストールされていてもよいし、ネットワーク１８０を介して制御装置１２０にダウンロードされてもよい。また、記憶媒体の読み取り装置（例えばメディアドライブやカードリーダなど）を制御装置１２０が備えていてもよい。その場合、プログラムは、記憶媒体に記憶されて提供され、読み取り装置を介してＨＤＤ１２３にコピーされてもよい。
【０１４１】
同様に、ホスト端末１５０において、ＣＰＵ１５１は、プログラムをメモリ１５２にロードし、メモリ１５２をワークエリアとしても用いながら、プログラムを実行する。プログラムは、予めＨＤＤ１５３にインストールされていてもよいし、ネットワーク１８０または１８１を介してホスト端末１５０にダウンロードされてもよい。また、記憶媒体の読み取り装置をホスト端末１５０が備えていてもよい。その場合、プログラムは、記憶媒体に記憶されて提供され、読み取り装置を介してＨＤＤ１５３にコピーされてもよい。
【０１４２】
なお、制御装置１２０および／またはホスト端末１５０で使用可能な記憶媒体の例としては、以下のような、各種のコンピュータ読み取り可能な記憶媒体が挙げられる。これらの記憶媒体は、有形の（tangible）媒体であり、信号搬送波のような一時的な（transitory）媒体ではない。
【０１４３】
・ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disk）などの光ディスク。
・光磁気ディスク。
・磁気ディスク。
・フラッシュメモリなどの半導体メモリを用いたメモリカード。
【０１４４】
また、以上のような記憶媒体だけでなく、メモリ１２２、メモリ１４１−１〜１４１−Ｐ、メモリ１５２、ＨＤＤ１２３、およびＨＤＤ１５３も、コンピュータ読み取り可能で、有形の、非一時的な（non-transitory）媒体の例である。
【０１４５】
さて、上記のとおり、図示の便宜上、図３ではＰＥ間の接続は省略されているが、ＰＥ同士は実施形態に応じたトポロジで接続される。ＰＥ間は、適宜の種類のインターコネクト（例えばＩｎｆｉｎｉＢａｎｄなど）により接続される。インターコネクトの種類は特に限定されない。図４は、ＰＥ間のネットワークトポロジを例示する図である。
【０１４６】
ＰＥ１４０−１〜１４０−Ｐは、図４のトポロジＴ１のように、１次元的に接続されていてもよい。あるいは、ＰＥ１４０−１〜１４０−Ｐは、図４のトポロジＴ２のように、２次元メッシュ状に接続されていてもよい。ＰＥ１４０−１〜１４０−Ｐは、例えば３次元メッシュ状など、その他のトポロジで接続されていてもよい。なお、図４に例示した座標軸については後述する。
【０１４７】
ところで、図４には、ＰＥ１４０−１〜１４０−Ｐに加えて、情報処理装置１９０も例示されている。接続情報処理装置１９０は、図３の制御装置１２０とホスト端末１５０に対応する。
【０１４８】
図３のシステム１００では、制御装置１２０とホスト端末１５０が分かれているが、後述の図５〜７のフローチャートからも分かるように、制御装置１２０とホスト端末１５０は、協働して複数のＰＥへの複数のセルの割り当てを行う。例えば、図１のステップＳ１と類似の見積もりを制御装置１２０が行い、ステップＳ２の割り当てのための一連の処理を、制御装置１２０とホスト端末１５０が分担する。制御装置１２０がホスト端末１５０としても動作するような実施形態も可能である。
【０１４９】
換言すれば、１台の装置が、図１のステップＳ１の見積もりを行う見積もり部１９１と、ステップＳ２の割り当てを行う割り当て部１９２の双方を含んでいてもよいし、見積もり部１９１と割り当て部１９２が複数の装置に分散していてもよい。例えば、見積もり部１９１が制御装置１２０に実装されてもよく、割り当て部１９２が制御装置１２０とホスト端末１５０に分散されて実装されてもよい。別の観点から述べれば、情報処理装置１９０は、物理的には１台の装置（例えば１台のコンピュータ）であってもよいし、物理的には２台以上の装置（例えば制御装置１２０とホスト端末１５０）であってもよい。
【０１５０】
図４に点線で示すように、ＰＥ１４０−１〜１４０−Ｐの各々は、情報処理装置１９０と接続されている。ＰＥ１４０−１〜１４０−Ｐの各々と情報処理装置１９０の間は、ＰＥ間のインターコネクトとは独立したネットワークにより接続されていてもよい。例えば、図３では、情報処理装置１９０の一部に対応する制御装置１２０が、スイッチ１３０を介して各ＰＥと接続されている。また、情報処理装置１９０の一部に対応するホスト端末１５０は、ネットワーク１８０と制御装置１２０を介して間接的に各ＰＥと接続されている。
【０１５１】
続いて、図５〜７を参照して、図３のシステム１００の動作について説明する。図５〜７は、第２実施形態によるシステム１００の動作シーケンス図である。説明の便宜上、図５〜７には、ユーザ端末１６０〜１６１のうち、ユーザ端末１６０が使われる場合が示されている。また、紙幅の都合上、図５〜７には、ＰＥ１４０−１〜１４０−Ｐのうち、ＰＥ１４０−１と１４０−２のみが示されている。
【０１５２】
ステップＳ１０１でユーザ端末１６０は、解析条件に関するユーザからの入力を受け取り、入力に基づいて解析条件を設定する。具体的には、ユーザ端末１６０は、解析条件を所定のファイルに書き込む。解析条件は、例えば以下のような種々の条件を含む。
【０１５３】
・解析対象物の形状・大きさ・位置。
・解析対象物の材質に応じた誘電率および透磁率。
・解析対象物の周りの媒質（例えば空気）に応じた誘電率および透磁率。
・セルの大きさ（なお、全セルの大きさが等しくてもよいし、セルの大きさが不均一であってもよい）。
・利用する吸収境界条件の種類（例えば、ＰＥＣ（Perfect Electric Conductor）、ＰＭＣ（Perfect Magnetic Conductor）、ＰＢＣ（Periodic Boundary Condition）、Ｍｕｒ、ＰＭＬ（Perfectly Matched Layer）など）。
・ステップ時間Δｔの長さ。
・波源がある場合は、波源の位置と、波源の特性を定義する１つ以上のパラメタ。
・回路素子の振る舞いもシミュレータ１１０がシミュレートする場合（例えば解析対象物がプリント配線基板の場合など）は、回路素子の特性を定義する１つ以上のパラメタ。
【０１５４】
ユーザ端末１６０は、解析条件を書き込んだファイル（以下「入力ファイル」という）を、ネットワーク１８１を介してホスト端末１５０に送信する。すると、ステップＳ１０２でホスト端末１５０は、ネットワークインタフェイス１５４を介して入力ファイルを受信し、受信した入力ファイルをＨＤＤ１５３に記憶する。そして、ホスト端末１５０は、入力ファイルの内容を読み込む。また、ホスト端末１５０は、ＰＥ１４０−１〜１４０−Ｐのうち使用可能なＰＥを制御装置１２０に問い合わせる。
【０１５５】
すると、ステップＳ１０３で制御装置１２０は、使用可能なＰＥを確認し、使用可能なＰＥをホスト端末１５０に通知する。例えば、既にユーザ端末１６１のユーザからの要求に応じて何台かのＰＥが他の解析のために使用されている場合があり得る。例えばこのような場合には、ＰＥ１４０−１〜１４０−Ｐのすべてが使用可能とは限らない。
【０１５６】
続いて、ステップＳ１０４でホスト端末１５０は、使用可能ないくつかのＰＥに、暫定的にセルを割り当てる。
【０１５７】
具体的には、ホスト端末１５０は、まず、使用可能なＰＥの中から、解析に使用するＰＥを決定する。ホスト端末１５０は、「ＰＥ間のネットワーク（例えば図４を参照）において、使用可能なＰＥがどの範囲に存在しているか」ということに応じて、使用可能なＰＥの中から、解析に使用するＰＥを選ぶことが望ましい。
【０１５８】
例えば、Ｐ＝６０で、使用可能なＰＥが４０台の場合、ホスト端末１５０は、４０台すべてのＰＥを解析に使用することに決めてもよい。あるいは、ホスト端末１５０は、使用可能な４０台のＰＥのうちの一部（例えば２５台のＰＥ）のみを解析に使用することに決めてもよい。こうして「解析に使用する」と決定されたＰＥの台数が、図１に関して説明した「第２の台数」である。
【０１５９】
ホスト端末１５０は、解析対象物の形状に応じて、適宜の座標軸変換を行ってもよい。例えば、入力ファイルで解析対象物が３次元直交座標系を用いて定義されているものとし、３つの座標軸を、便宜上、「Ｘ’軸」、「Ｙ’軸」、および「Ｚ’軸」ということにする。ホスト端末１５０は、Ｘ’軸、Ｙ’軸、およびＺ’軸の中で、解析対象物が占める範囲が最も長い（あるいは当該範囲内のセル数が最も多い）座標軸を、解析におけるＸ軸と決めてもよい。ホスト端末１５０は、Ｘ’軸、Ｙ’軸、およびＺ’軸のうちの残りの２つの座標軸を、解析におけるＹ軸およびＺ軸と決めてもよい。あるいは、ホスト端末１５０は、その他の適宜のポリシにしたがって座標軸変換を行ってもよい。
【０１６０】
図４に示すＸ軸、Ｙ軸、およびＺ軸は、以上のようにして座標軸変換が行われた後のＸ軸、Ｙ軸、およびＺ軸であってもよい。
【０１６１】
例えば、ＰＥ１４０−１〜１４０−Ｐは、解析用のＸ軸、Ｙ軸、またはＺ軸のいずれかと対応づけられた、ある１つの方向に沿って１次元的に接続されていてもよい。図４のトポロジＴ１は、ＰＥ１４０−１〜１４０−Ｐが接続される方向がＺ軸と対応づけられているようなトポロジの例である。
【０１６２】
あるいは、ＰＥ１４０−１〜１４０−Ｐは、解析用のＸ軸、Ｙ軸、およびＺ軸のうちのいずれか２つの座標軸と対応づけられた２つの方向に沿って２次元状に接続されていてもよい。例えば、トポロジＴ２は、Ｙ軸とＺ軸に対応づけられた２次元トポロジの例である。実施形態によっては、ＰＥ１４０−１〜１４０−Ｐ間のネットワークトポロジが、解析用のＸ軸、Ｙ軸、およびＺ軸と対応づけられた３次元トポロジであってもよい。
【０１６３】
もちろん、上記のような座標軸変換は省略されてもよい。つまり、ホスト端末１５０は、入力ファイルで使われているＸ’軸、Ｙ’軸、およびＺ’軸を、それぞれ、解析におけるＸ軸、Ｙ軸、およびＺ軸として使うことに決めてもよい。
【０１６４】
いずれにせよ、ステップＳ１０４でホスト端末１５０は、どのＰＥを解析に用いるかを決め、座標軸も決める。よって、ホスト端末１５０は、入力ファイルでの定義に基づいて、Ｘ軸方向のセルの数、Ｙ軸方向のセルの数、およびＺ軸方向のセルの数を計算することができる。つまり、ホスト端末１５０は、解析対象領域に含まれるセルの数を計算することができる。
【０１６５】
よって、ホスト端末１５０は、ステップＳ１０４においてさらに、解析に使うＰＥの数と、解析対象領域に含まれるセルの数とに基づいて、暫定的にセルをＰＥに割り当てる。ステップＳ１０４での暫定的な割り当ては、初期割り当てであり、以降のステップで変更される可能性がある。よって、ステップＳ１０４での暫定的な割り当ては、どのような割り当て方であってもよい。例えば、ステップＳ１０４では、図２に関して説明したような、セル数に基づく単純な割り当てが行われてもよい。
【０１６６】
以下では説明の便宜上、ホスト端末１５０が解析に使うと決めたＰＥの台数を「ｎ」とする（なお、ＰＥの台数を示す「ｎ」は、式（１）や（２）における「ｎ」とは別の変数である）。また、これらｎ台のＰＥを「ＰＥ（１）〜ＰＥ（ｎ）」のように表記することもある。
【０１６７】
ＰＥ１４０−１〜１４０−Ｐの性能は互いに異なっていてもよいが、以下では説明の簡単化のため、ＰＥ１４０−１〜１４０−Ｐの性能は同等であるものとする。また、２種類以上のサイズのセルが入力ファイルにより定義されていてもよいが、以下では説明の簡単化のため、すべてのセルの大きさが等しいものとする。
【０１６８】
例えば、ステップＳ１０４でホスト端末１５０は、解析対象領域に含まれるセルの総数を、解析に使うＰＥの台数ｎで割ることにより、各ＰＥに割り当てるセルの数を暫定的に決めてもよい。図８には、ステップＳ１０４での初期割り当ての一例が示されている。
【０１６９】
具体的には、図８の例は、ＰＥ１４０−１〜１４０−Ｐが図４のトポロジＴ２のように２次元メッシュ状に接続されている場合の例である。
【０１７０】
また、ステップＳ１０４でホスト端末１５０は、Ｐ台のＰＥのうち、２５台のＰＥを解析に使うことに決めたものとする。つまり、ｎ＝２５だとする。より具体的には、ホスト端末１５０は、トポロジＴ２においてＹ方向に連続する５個のＰＥとＺ方向に連続する５個のＰＥにより定義される２５（＝５×５）個のＰＥを、解析に使うことに決めたものとする。
【０１７１】
図８の例では、解析対象領域Ａ１は、Ｙ方向に２０個のセルを含み、Ｚ方向に２０個のセルを含む。なお、解析対象領域Ａ１がＸ方向に含むセルの数は、図８には明示されていない。トポロジＴ２のように２次元メッシュ状に接続されたＰＥ（１）〜ＰＥ（２５）が使われる場合、Ｘ方向のセルの数によらず、後述の再割り当て等の処理が適用可能である。説明の便宜上、以下ではＸ方向のセルの数を「ＸＮ」と表記することがある。
【０１７２】
以下では説明の便宜上、セルを単位とする座標を「格子座標」という。解析対象領域Ａ１は、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ０≦Ｙ≦２０かつ０≦Ｚ≦２０を満たす領域である。
【０１７３】
図８において、解析対象領域Ａ１を示す大きな矩形（つまり２０×２０セルの矩形）の下辺は、３次元空間において解析対象物が置かれた面（例えば、机の表面、または、床など）に相当する。解析対象領域Ａ１を示す矩形の残りの３辺は、いずれも、吸収境界である。
【０１７４】
入力ファイルでの定義によれば、出力領域Ａ２は、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ０≦Ｙ≦２０かつ５≦Ｚ≦８を満たす領域である。図８において出力領域Ａ２は、縦線のハッチングにより示されている。
【０１７５】
また、入力ファイルでの定義によれば、解析対象物は、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ０≦Ｙ≦１６かつ４≦Ｚ≦１６を満たす領域（以下、「物体領域Ａ３」という）を占める。図８において物体領域Ａ３は、横線のハッチングにより示されている。また、出力領域Ａ２と物体領域Ａ３の双方に属するセルは、格子状のハッチングにより示されている。
【０１７６】
解析対象領域Ａ１のうち、物体領域Ａ３以外の領域の媒質（例えば、空気あるいは真空など）は、入力ファイルで定義されている。もちろん、解析対象物の媒質も、入力ファイルで定義されている。
【０１７７】
解析対象領域Ａ１のＹ方向のセルの数は２０であり、解析に使われるＰＥはＹ方向に５個連続している。よって、ステップＳ１０４でホスト端末１５０は、各ＰＥに割り当てるセルのＹ方向の個数を、４（＝２０／５）個と決める。
【０１７８】
また、解析対象領域Ａ１のＺ方向のセルの数は２０であり、解析に使われるＰＥはＺ方向に５個連続している。よって、ステップＳ１０４でホスト端末１５０は、各ＰＥに割り当てるセルのＺ方向の個数を、４（＝２０／５）個と決める。
【０１７９】
つまり、ホスト端末１５０は、暫定的に、２５個のＰＥの各々に、１６×ＸＮ（＝ＸＮ×４×４）個のセルを均等に割り当てることに決める。図８には、ＰＥ（１）〜ＰＥ（２５）に割り当てられるセルの範囲が、太線により示されている。例えば、図８によれば、ＰＥ（１２）には、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ８≦Ｙ≦１２かつ４≦Ｚ≦８を満たすような１６×ＸＮ個のセルが暫定的に割り当てられる。
【０１８０】
さて、ここで図５の説明に戻る。ホスト端末１５０は、ステップＳ１０４で、例えば図８のように暫定的にセルのＰＥへの割り当てを決めた後、ステップＳ１０５で、暫定的な割り当てを制御装置１２０に通知する。なお、ステップＳ１０５の通知には、入力ファイルに基づいて、以下のような情報も含められる。
【０１８１】
・解析対象領域Ａ１、出力領域Ａ２、および物体領域Ａ３の定義。
・解析対象物の材質に応じた誘電率および透磁率。
・物体領域Ａ３の周りの媒質に応じた誘電率および透磁率。
・入力ファイルで波源および／または回路素子に関する１つ以上のパラメタが定義されている場合は、当該１つ以上のパラメタ。
・吸収境界条件の種類。
・ステップ時間Δｔの長さ。
【０１８２】
なお、以下では説明の簡単化のため、波源や回路素子についての入力パラメタが指定されていない場合について、主に説明する。換言すれば、以下では主に、セルの処理負荷の位置依存性の主たる要因が「セルが出力領域に含まれるか否か」ということであるような場合について、説明する。
【０１８３】
ステップＳ１０５での通知を受信すると、ステップＳ１０６で制御装置１２０は、ステップＳ１０５で通知された暫定的な割り当てにおいて出力を担当するＰＥを抽出する。ステップＳ１０６の処理は、具体的には、例えば図９に示すような抽出処理であってもよい。
【０１８４】
図９の抽出処理は、図４のトポロジＴ２のようにＹ方向とＺ方向の２次元メッシュ状に接続されたＰＥのうちｎ台のＰＥが解析に使われる場合の抽出処理の例である。他のトポロジで接続されたＰＥのうちｎ台のＰＥが解析に使われる場合にも、制御装置１２０は図９と類似の処理により、出力を担当するＰＥを抽出することができる。
【０１８５】
具体的には、図９のステップＳ２０１で制御装置１２０は、出力領域（例えば図８の出力領域Ａ２）を定義する出力領域情報を読み取る。出力定義情報はステップＳ１０５での通知に含まれている。
【０１８６】
ここで、出力領域の中で最も原点に近い点を、出力領域の「最近端（nearest end）」ということにする。また、出力領域の中で最も原点から遠い点を、出力領域の「最遠端（farthest end）」ということにする。
【０１８７】
ステップＳ２０１で制御装置１２０は、読み取った出力領域情報に基づき、出力領域の最近端の格子座標（より具体的にはＹ方向とＺ方向の格子座標）を、変数ＹｏｓとＺｏｓに代入する。また、制御装置１２０は、出力領域の最遠端の格子座標（より具体的にはＹ方向とＺ方向の格子座標）を、変数ＹｏｅとＺｏｅに代入する。例えば、図８の例では、Ｙｏｓ＝０かつＺｏｓ＝５かつＹｏｅ＝２０かつＺｏｅ＝８である。
【０１８８】
次に、ステップＳ２０２で制御装置１２０は、解析に使われるｎ台のＰＥの中から、ステップＳ２０３〜Ｓ２０４の判断の対象として未選択のＰＥを１つ選ぶ。以下、ステップＳ２０２で選択されたＰＥを「選択ＰＥ」という。
【０１８９】
制御装置１２０は、ホスト端末１５０から通知された暫定的な割り当てによって選択ＰＥに割り当てられたセルにおける最近端の格子座標（より具体的にはＹ方向とＺ方向の格子座標）を、変数ＹｓとＺｓに代入する。また、制御装置１２０は、暫定的な割り当てによって選択ＰＥに割り当てられたセルにおける最遠端の格子座標（より具体的にはＹ方向とＺ方向の格子座標）を、変数ＹｅとＺｅに代入する。
【０１９０】
例えば、図８の例において、ステップＳ２０２でＰＥ（２）が選ばれたとする。この場合、Ｙｓ＝０かつＺｓ＝４かつＹｅ＝４かつＺｅ＝８である。
【０１９１】
次に、ステップＳ２０３で制御装置１２０は、条件（ｉ）が成り立つ（hold true）か否かを判断する。
(Ye<Yos) OR (Yoe<Ys)        (i)
【０１９２】
条件（ｉ）が成り立たない場合、制御装置１２０は、次にステップＳ２０４を実行する。具体的には、制御装置１２０は、条件（ｉｉ）が成り立つか否かを判断する。
(Ze<Zos) OR (Zoe<Zs)        (ii)
【０１９３】
図８の例では、例えばＰＥ（１）が選択ＰＥの場合には、Ｚｅ＝４かつＺｏｓ＝５なので、条件（ｉｉ）が成り立つ。逆に、図８の例において例えばＰＥ（２）が選択ＰＥの場合には、Ｚｅ＝８かつＺｏｓ＝５かつＺｏｅ＝８かつＺｓ＝４なので、条件（ｉｉ）が成り立たない。
【０１９４】
条件（ｉ）と（ｉｉ）の少なくとも一方が成り立つ場合、次に、ステップＳ２０５が実行される。具体的には、ステップＳ２０５で制御装置１２０は、「選択ＰＥには、出力領域内のセルが１つも割り当てられていない」ということを記憶する。つまり、制御装置１２０は、「選択ＰＥは出力を担当しない」ということを記憶する。
【０１９５】
逆に、条件（ｉ）と（ｉｉ）のいずれも成り立たない場合は、ステップＳ２０６が実行される。具体的には、ステップＳ２０６で制御装置１２０は、「選択ＰＥには、出力領域内のセルが１つ以上割り当てられている」ということを記憶する。つまり、制御装置１２０は、「選択ＰＥは出力を担当する」ということを記憶する。
【０１９６】
ステップＳ２０５またはＳ２０６の処理が終わると、制御装置１２０は、次にステップＳ２０７で、解析に使われるｎ台のＰＥの中に未選択のＰＥが残っているか否かを判断する。未選択のＰＥがまだ残っていれば、制御装置１２０は再度ステップＳ２０２を実行する。逆に、もしｎ台のＰＥがすべて選択済みなら、図９の抽出処理は終了する。
【０１９７】
図９の抽出処理が終了すると、次に、制御装置１２０は、図５のステップＳ１０７で、ｎ台のＰＥそれぞれの処理量を見積もる。第２実施形態では、処理量は、１ステップ時間に関する合計処理時間で表される。
【０１９８】
具体的には、制御装置１２０は、１≦ｈ≦ｎなる各ｈについて、１ステップ時間に関する一連の処理をＰＥ（ｈ）が実行するのにかかる合計処理時間Ｔ（ｈ）を見積もる。合計処理時間Ｔ（ｈ）は、式（３）のように表される。
【数３】
2014211699.tif 000005
【０１９９】
式（３）において、Ｎｃｅｌｌ（ｈ）は、ＰＥ（ｈ）に暫定的に割り当てられているセルの個数である。すなわち、Ｎｃｅｌｌ（ｈ）は、暫定的な割り当てにおいてＰＥ（ｈ）が担当するセルの個数である。なお、以下では説明の簡単化のため、「ＰＥ（ｈ）に暫定的に割り当てられているＮｃｅｌｌ（ｈ）個のセルのうちでｇ番目のセル」のことを、単に「ｇ番目のセル」ともいう。
【０２００】
また、式（３）において、Ｔｉｎ（ｈ，ｇ）は、ｇ番目のセルに関して、ｇ番目のセルの位置に固有の１つ以上の入力パラメタがある場合に、当該１つ以上の入力パラメタをＰＥ（ｈ）が読み込むのにかかる時間である。例えば、波源がｇ番目のセルに配置されている場合、または、シミュレート対象の回路素子がｇ番目のセルに配置されている場合、Ｔｉｎ（ｈ，ｇ）は正である。逆に、ｇ番目のセルに関して、ｇ番目のセルの位置に固有の入力パラメタがなければ、Ｔｉｎ（ｈ，ｇ）＝０である。
【０２０１】
なお、ｇ番目のセルに関して読み込む対象のパラメタの数が多いほど、Ｔｉｎ（ｈ，ｇ）も長い。また、パラメタの種類によって、パラメタが読み込まれる頻度が異なっていてもよい。例えば、解析が開始される前に一度だけ読み込まれるパラメタ、１ステップ時間に関する処理のたびに１回読み込まれるパラメタ、所定回数のステップ時間に関する処理のたびに１回読み込まれるパラメタ、などがあり得る。一方、Ｔｉｎ（ｈ，ｇ）は、１ステップ時間に関する処理あたりの、平均的な読み込み時間である。よって、Ｔｉｎ（ｈ，ｇ）は、各パラメタの読み込み頻度にも依存する。
【０２０２】
また、式（３）において、Ｔｃａｌ（ｈ，ｇ）は、ＰＥ（ｈ）に暫定的に割り当てられているｇ番目のセルに関して、ＰＥ（ｈ）が電界の計算と磁界の計算を行うのにかかる時間である。Ｔｃａｌ（ｈ，ｇ）は、ＰＥ（ｈ）に暫定的に割り当てられているｇ番目のセルの位置に応じて、異なり得る。なぜなら、電界と磁界の具体的な計算手順は、以下のような、セルの位置に依存する種々の要因によって異なるからである。
【０２０３】
・セルが吸収境界に接するか否か。
・セルが２つの媒質の境界に接するか否か。
・セル内に波源またはシミュレート対象の回路素子が配置されているか否か。
【０２０４】
また、式（３）において、Ｔｔｘｒｘ（ｈ，ｇ）は、以下の送信時間と受信時間の和である。
【０２０５】
・ＰＥ（ｈ）に暫定的に割り当てられているｇ番目のセルに関してＰＥ（ｈ）が計算した電界および／または磁界のデータを、ＰＥ（ｈ）が他のＰＥに送信する場合、その送信にかかる時間。
・ＰＥ（ｈ）に暫定的に割り当てられているｇ番目のセルに関して、ＰＥ（ｈ）が他のセルから電界および／または磁界のデータを受信する場合、その受信にかかる時間。
【０２０６】
なお、ＰＥ（ｈ）に暫定的に割り当てられているｇ番目のセルの位置によっては、ｇ番目のセルに関して他のＰＥとの間でデータの送信もデータの受信も行われない。よって、Ｔｔｘｒｘ（ｈ，ｇ）＝０の場合もある。例えば、ＰＥ（ｈ）に割り当てられている全セルのうち、他のＰＥに割り当てられているどのセルとも接していない、内部のセルに関しては、Ｔｔｘｒｘ（ｈ，ｇ）＝０である。
【０２０７】
また、式（３）において、Ｔｏｕｔ（ｈ，ｇ）は、ＰＥ（ｈ）に暫定的に割り当てられているｇ番目のセルに関する出力処理にかかる時間である。ＰＥ（ｈ）に暫定的に割り当てられているｇ番目のセルが、出力領域に含まれていれば、Ｔｏｕｔ（ｈ，ｇ）は正である。逆に、ＰＥ（ｈ）に暫定的に割り当てられているｇ番目のセルが、出力領域に含まれていなければ、Ｔｏｕｔ（ｈ，ｇ）＝０である。
【０２０８】
なお、例えば「３０ステップ時間のシミュレーションごとに１回、データを出力せよ」などと、出力の間隔がステップＳ１０２の入力ファイルで指定されていてもよい。時間Ｔｏｕｔ（ｈ，ｇ）は、出力処理に関して１ステップ時間あたりに平均的にかかる時間を示す。
【０２０９】
ところで、ＰＥ（ｈ）に割り当てられている全セル中の最近端の格子座標を（Ｘｓ（ｈ），Ｙｓ（ｈ），Ｚｓ（ｈ））とする。また、ＰＥ（ｈ）に割り当てられている全セル中の最遠端の格子座標を（Ｘｅ（ｈ），Ｙｅ（ｈ），Ｚｅ（ｈ））とする。すると、式（３）中のＮｃｅｌｌ（ｈ）は、式（４）のように表される。
Ncell(h)=(Xe(h)-Xs(h))×(Ye(h)-Ys(h))×(Ze(h)-Zs(h))    (4)
【０２１０】
例えば、図８の例では、ＰＥ（２）に暫定的に割り当てられているセルの個数Ｎｃｅｌｌ（２）は、式（５）のとおりである。
Ncell(2)=(XN-0)×(4-0)×(8-4)=16×XN    (5)
【０２１１】
以下、式（３）中のＴｃａｌ（ｈ，ｇ）とＴｔｘｒｘ（ｈ，ｇ）とＴｏｕｔ（ｈ，ｇ）の詳細について、例示する。
【０２１２】
例えば、ＦＤＴＤ法による解析プログラムでは、格子座標（ｉ＋１／２，ｊ，ｋ）や（ｉ，ｊ＋１／２，ｋ）や（ｉ，ｊ，ｋ＋１／２）を、いずれも３次元配列のインデックス（ｉ，ｊ，ｋ）で表す技法が採用される場合がある。この種のプログラミング技法が採用される場合、例えば以下の式（６）〜（８）にしたがって電界が計算されてもよい。式（６）〜（８）において、「＊」は乗算記号であり、「（ｉ，ｊ，ｋ）」は３次元配列のインデックスである。
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)
【０２１３】
なお、式（６）〜（８）において、Ｅｘ、Ｅｙ、Ｅｚは、それぞれ、電界ベクトルのＸ成分、Ｙ成分、Ｚ成分である。また、Ｈｘ、Ｈｙ、Ｈｚは、それぞれ、磁界ベクトルのＸ成分、Ｙ成分、Ｚ成分である。そして、Ｃｘ、Ｃｙ、Ｃｚ、Ｇｘ、Ｇｙ、およびＧｚは係数である。
【０２１４】
式（６）〜（８）は、具体的には、以下の２つの条件を満たすセルに関する電界の計算のための式である。
【０２１５】
・ある１つの媒質の内部に位置する（したがって、他の媒質とは接しておらず、吸収境界にも接していない）。
・波源や回路素子等を含まない。
【０２１６】
なお、式（６）の右辺のＥｘ（ｉ，ｊ，ｋ）は、直前のステップ時間に関して既に計算されて、メモリに格納されている値である。一方、左辺のＥｘ（ｉ，ｊ，ｋ）は、現在の計算対象のステップ時間に関する、電界ベクトルのＸ成分である。
【０２１７】
あるＰＥが、式（６）にしたがって、あるセルに関して電界ベクトルのＸ成分を計算する場合、制御装置１２０は、以下の３つの時間の和を、電界ベクトルのＸ成分の計算にかかる時間として見積もる（後述の図１０も参照）。
【０２１８】
・式（６）の右辺に現れる７つの値（すなわち、Ｃｘと、Ｅｘ（ｉ，ｊ，ｋ）と、Ｇｘと、Ｈｚ（ｉ，ｊ，ｋ）と、Ｈｚ（ｉ，ｊ−１，ｋ）と、Ｈｙ（ｉ，ｊ，ｋ）と、Ｈｙ（ｉ，ｊ，ｋ−１））をＰＥがメモリから読み込むのにかかる時間。
・３回の減算と２回の乗算と１回の加算をＰＥが実行するのにかかる時間。
・計算の結果得られた値（つまり左辺のＥｘ（ｉ，ｊ，ｋ））をＰＥがメモリに書き込むのにかかる時間。
【０２１９】
つまり、制御装置１２０は、８（＝７＋１）回のメモリアクセスにかかる時間と、減算・乗算・加算等の計算にかかる時間との和を、電界ベクトルのＸ成分の計算にかかる時間として見積もる。
【０２２０】
式（７）と（８）に関しても同様である。つまり、制御装置１２０は、８回のメモリアクセスにかかる時間と、減算・乗算・加算等の計算にかかる時間との和を、電界ベクトルのＹ成分の計算にかかる時間として見積もる。また、制御装置１２０は、８回のメモリアクセスにかかる時間と、減算・乗算・加算等の計算にかかる時間との和を、電界ベクトルのＺ成分の計算にかかる時間として見積もる。
【０２２１】
磁界についての計算式の例示は省略する。しかし、制御装置１２０は、上記と同様にして、ＰＥが磁界の計算に使う式に基づいて、磁界の計算にかかる時間を見積もる。
【０２２２】
例えば、ＰＥ（ｈ）に暫定的に割り当てられたｇ番目のセルが、ある１つの媒質の内部に位置しており、波源や回路素子等を含まないものとする。この場合、ｇ番目のセルに関する磁界の各成分の計算にかかる時間も、電界の各成分の計算にかかる時間とほぼ等しいと見なせる。よって、この場合、式（３）のＴｃａｌ（ｈ，ｇ）は、式（９）のとおりである。なお、式（９）における時間の単位は秒である。
【数４】
2014211699.tif 000006
【０２２３】
式（９）において、６という値が乗算されている理由は、式（９）が、上記の場合（つまり、電界の３つの成分と磁界の３つの成分という６つの値の計算にかかる時間が、互いにほぼ等しいと見なせる場合）に使われる式だからである。異なる成分の計算にかかる時間同士が異なる場合は、制御装置１２０は、式（９）のように６を乗算する代わりに、ＰＥが各成分を計算するのにかかる時間をそれぞれ見積もって、見積もった時間同士を足す。
【０２２４】
また、式（９）におけるＮｍｅｍ（ｈ，ｇ）は、１つの成分の計算あたりの、メモリアクセスの回数を示す。より具体的には、Ｎｍｅｍ（ｈ，ｇ）は、ＰＥ（ｈ）が、暫定的に割り当てられたｇ番目のセルについて、電界（または磁界）の１つの成分を計算するために行うメモリアクセスの回数である。式（６）の例では、Ｎｍｅｍ（ｈ，ｇ）＝８である。セルの位置や実際のプログラミングによっては、ＰＥが、式（６）〜（８）とは異なる式にしたがって電界と磁界の計算を行う場合があり得る。つまり、Ｎｍｅｍ（ｈ，ｇ）の値は、ＰＥが実行する実際の計算手順に応じて異なり得る。
【０２２５】
また、式（９）におけるＳｉｚｅは、１つの成分のデータのサイズを示す。例えば、電界と磁界の各成分が４バイトの浮動小数点により表される場合、Ｓｉｚｅ＝４である。Ｓｉｚｅは、シミュレータ１１０の仕様によって決まる定数である。
【０２２６】
また、式（９）におけるＴＰｍｅｍは、ＰＥとメモリの間の伝送スループットである（単位は、バイト毎秒（bytes per second）である）。なお、式（９）では簡単のため、ＰＥ１４０−ｐとメモリ１４１−ｐの間の伝送スループットが、ｐによらず同じであるものと仮定している（１≦ｐ≦Ｐ）。よって、式（９）ではスループットＴＰｍｅｍは定数である。
【０２２７】
また、式（９）におけるＣａｌ（ｈ，ｇ）は、１つの成分の計算あたりの、加算・乗算等の算術計算にかかる時間を示す。例えば、ＰＥ（ｈ）が、暫定的に割り当てられたｇ番目のセルについて、式（６）〜（８）にしたがって電界を計算する場合、Ｃａｌ（ｈ，ｇ）は、３回の減算と２回の乗算と１回の加算をＰＥ（ｈ）が実行するのにかかる時間である。Ｃａｌ（ｈ，ｇ）は、ＰＥ（ｈ）のハードウェア仕様（例えば、クロック周波数や、１回の加算・減算・乗算・除算にそれぞれかかるクロックサイクル数など）と、ＰＥ（ｈ）が実行する実際の計算手順とに応じた値である。
【０２２８】
なお、算術計算にかかる時間がメモリアクセス時間に比べて大幅に小さい場合は、Ｃａｌ（ｈ，ｇ）の影響は小さい。よって、この場合は、適宜の小さな値の定数がＣａｌ（ｈ，ｇ）の代わりに使われてもよい。
【０２２９】
ところで、式（３）中のＴｃａｌ（ｈ，ｇ）は、ＰＥ（ｈ）に暫定的に割り当てられたｇ番目のセルの位置によって、式（９）により計算される場合もあり得るし、他の式により計算される場合もあり得る。
【０２３０】
例えば、直方体の解析対象領域の６つの面のうちの１つが、Ｘ＝０と表される平面であるとする。この平面に適用される吸収境界条件がＰＥＣである場合、電界の計算に式（１０）と（１１）が使われてもよい。
Ey(1,j,k)=0.0    (10)
Ez(1,j,k)=0.0    (11)
【０２３１】
式（１０）による計算にかかる時間は、０．０という定数をメモリに書き込む１回のメモリアクセスにかかる時間だけである。式（１１）についても同様である。
【０２３２】
あるいは、Ｘ＝０と表される平面に適用される吸収境界条件がＰＭＣである場合、電界の計算に式（１２）と（１３）が使われてもよく、磁界の計算に式（１４）と（１５）が使われてもよい。
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)
【０２３３】
式（１２）による計算は、７回のメモリアクセスと、３回の乗算と、２回の減算と、１回の加算を含む。つまり、式（１２）による計算の負荷は、７回のメモリアクセスと、３回の乗算と、２回の減算と、１回の加算により生じる負荷である。よって、式（１２）による計算にかかる時間は、７回のメモリアクセスと、３回の乗算と、２回の減算と、１回の加算にかかる時間である。
【０２３４】
また、式（１３）による計算の負荷は、７回のメモリアクセスと、３回の乗算と、１回の減算と、２回の加算により生じる負荷である。
【０２３５】
一方、式（１４）による計算の負荷は、２回のメモリアクセスと、１回の、正負の符号を反転する演算とにより生じる負荷である。式（１５）による計算の負荷も、式（１４）による計算の負荷と同様である。
【０２３６】
あるいは、Ｘ＝０と表される平面に適用される吸収境界条件がＰＢＣである場合、電界の計算に式（１６）と（１７）が使われてもよい。なお、式（１６）と（１７）における「ｉ’」は、解析対象領域の最遠端のＸ座標に対応するインデックスである。
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)
【０２３７】
式（１６）による計算の負荷は、８回のメモリアクセスと、２回の乗算と、２回の加算と、２回の減算により生じる負荷である。式（１７）による計算の負荷も、式（１６）による計算の負荷と同様である。
【０２３８】
もちろん、ＭｕｒやＰＭＬなどのその他の吸収境界条件が適用されてもよい。式（１０）〜（１７）を式（６）〜（８）と比べれば明らかなように、セルの位置によって、また、適用される吸収境界条件にもよって、以下の数は様々に異なり得る。
【０２３９】
・電界の計算にともなうメモリアクセスの回数。
・電界の計算にともなう算術演算の回数。
・磁界の計算にともなうメモリアクセスの回数。
・磁界の計算にともなう算術演算の回数。
【０２４０】
また、波源、ポート素子、回路素子（抵抗器、キャパシタ、インダクタなど）の有無によっても、時間Ｔｃａｌ（ｈ，ｇ）は異なり得る。さらに、電磁波が人体に与える影響の評価のために並列ＦＤＴＤ法が使われる場合などには、ＳＡＲ（Specific Absorption Rate）も入力パラメタの１つとして使われる。ＳＡＲが使われるかどうかによっても、時間Ｔｃａｌ（ｈ，ｇ）は異なり得る。
【０２４１】
以上のように、各セルについての時間Ｔｃａｌ（ｈ，ｇ）に影響する要因（例えば、メモリアクセスの回数、加算の回数、減算の回数、乗算の回数など）は、セルの位置に応じて異なり得る。そして、位置に応じて異なるセルごとの時間Ｔｃａｌ（ｈ，ｇ）は、具体的には、ステップＳ１０２の入力ファイルの内容により決まる。例えば、以下の事柄はいずれも時間Ｔｃａｌ（ｈ，ｇ）に影響を与える要因の例であり、これらの要因はいずれも入力ファイル中に定義されている。
【０２４２】
・ある位置のセルが、異なる媒質同士の境界に接するかどうか。
・ある位置のセルに波源が配置されているか。
・ある位置のセルが吸収境界に接するかどうか。
・どの吸収境界条件が使われるか。
【０２４３】
よって、制御装置１２０は、入力ファイル中の定義に基づいて、具体的にどの方法により時間Ｔｃａｌ（ｈ，ｇ）を算出すれば良いかを判断する。そして、制御装置１２０は、各セルの位置に応じた適宜の式にしたがって（例えば式（９）にしたがって）、時間Ｔｃａｌ（ｈ，ｇ）を算出する。
【０２４４】
さて、式（３）には、データの送受信にかかる時間Ｔｔｘｒｘ（ｈ，ｇ）も含まれる。上記のように、ＰＥ（ｈ）に割り当てられている全セルのうち、他のＰＥに割り当てられているどのセルとも接していない内部のセルに関しては、Ｔｔｘｒｘ（ｈ，ｇ）＝０である。よって、データの送受信にかかる時間に関しては、式（１８）のように表すこともできる。
【数５】
2014211699.tif 000007
【０２４５】
式（１８）におけるＮａｄｊ（ｈ）は、大まかに言うと、ＰＥ（ｈ）と他のＰＥとの間で、データを送受信する対象となるセルの数である。式（１８）におけるＳｉｚｅは、式（９）におけるＳｉｚｅと同様である。また、式（１８）におけるＴＰｌｉｎｋは、ＰＥ間のリンクの伝送スループットであり、その単位はバイト毎秒である。なお、式（１８）において１２（＝２×２×３）という値が乗算されているのは、以下の理由による。
【０２４６】
・送信と受信という２種類の処理が行われるから。
・２種類のデータ（つまり電界のデータと磁界のデータ）が送受信されるから。
・電界ベクトルと磁界ベクトルそれぞれの３つの成分（つまり、Ｘ成分、Ｙ成分、Ｚ成分）が送受信されるから。
【０２４７】
以下に、Ｎａｄｊ（ｈ）についてより具体的に説明する。
ＰＥ（ｈ）には、Ｘｓ（ｈ）≦Ｘ≦Ｘｅ（ｈ）かつＹｓ（ｈ）≦Ｙ≦Ｙｅ（ｈ）かつＺｓ（ｈ）≦Ｚ≦Ｚｅ（ｈ）を満たす直方体の範囲内のセルが割り当てられている。Ｘ軸、Ｙ軸、またはＺ軸の、正または負の方向において当該範囲に隣接するセルが割り当てられた他のＰＥを、便宜上、「隣接ＰＥ」という。
【０２４８】
ＰＥ（ｈ）にとって、隣接ＰＥは１つだけ存在する場合もあり得るし、２つ以上の隣接ＰＥが存在する場合もあり得る。隣接ＰＥの数は、ＰＥ間のトポロジ（図４を参照）、当該トポロジ内でのＰＥ（ｈ）の位置、およびセルのＰＥへの割り当て方による。例えば、図８の例では、ＰＥ（２）の隣接ＰＥは、ＰＥ（１）とＰＥ（７）とＰＥ（３）である。
【０２４９】
なお、例えばＺ軸の正の方向においてＰＥ（２）に隣接するＰＥの数は、図８の例では１である。しかし、ＰＥ間の接続トポロジと、セルのＰＥへの割り当て方によっては、２台以上のＰＥがＺ軸の正の方向においてＰＥ（２）に隣接していてもよい。他の方向についても同様である。
【０２５０】
したがって、ある１つの方向においてＰＥ（ｈ）に隣接する隣接ＰＥの数は、０、１、または複数である。ＰＥ（ｈ）に暫定的に割り当てられているＮｃｅｌｌ（ｈ）個のセルのうち、ある１つの方向の１つ以上の隣接ＰＥに割り当てられたセルに接するものを、便宜上「境界面セル」という。式（１８）におけるＮａｄｊ（ｈ）は、隣接ＰＥが存在する方向における境界面セルの数のうち、最大の数である。
【０２５１】
例えば、図４のトポロジＴ１のようにＰＥ同士が接続されている場合があり得る。ここで、図４において右端でも左端でもない、中間に位置するＰＥは、右隣のＰＥとのデータ送受信と並行して、左隣のＰＥとのデータ送受信を行うことができるものとすると、Ｎａｄｊ（ｈ）は式（１９）のとおりである。
Nadj(h)=(Xe(h)-Xs(h))×(Ye(h)-Ys(h))    (19)
【０２５２】
あるいは、図４のトポロジＴ２のようにＰＥ同士が接続されている場合があり得る。トポロジＴ２においては、隣接ＰＥの数は２、３、または４である。ここで、各ＰＥは、当該ＰＥにとってのすべての隣接ＰＥと並行してデータ送受信を行うことができるものとすると、Ｎａｄｊ（ｈ）は式（２０）のとおりである。
Nadj(h)=max((Xe(h)-Xs(h))×(Ye(h)-Ys(h)),
(Xe(h)-Xs(h))×(Ze(h)-Zs(h)))    (20)
【０２５３】
なお、ＰＥ間のリンクが半二重リンクの場合は、上記のように式（１８）において１２という値が乗算されてもよい。逆に、ＰＥ間のリンクが全二重リンクの場合は、１２の代わりに６（＝２×３）という値が使われてもよい。
【０２５４】
いずれにせよ、各ＰＥのハードウェア仕様や、ＰＥ間のネットワークの物理的構成に応じて、制御装置１２０は、ＰＥ（ｈ）がデータの送受信を行うのにかかる時間を適切に見積もる。例えば、ＰＥ（ｈ）が２台以上の隣接ＰＥと同時に通信する機能を持たない場合は、Ｎａｄｊ（ｈ）は式（１９）〜（２０）とは異なる。
【０２５５】
また、各ＰＥのハードウェア仕様によっては、式（１８）におけるＴＰｌｉｎｋが、ｍｉｎ（ＴＰｍｅｍ，ＴＰｌｉｎｋ）に置き換えられてもよい。なぜなら、ＰＥのハードウェア仕様によっては、以下の時間がボトルネックとなってしまう可能性がある（つまり、以下の時間が、データ送受信処理にかかる時間を決定づける可能性がある）からである。
【０２５６】
・ＰＥが送信対象のデータをメモリから読み出すのにかかる時間。
・ＰＥが受信したデータをメモリに書き込むのにかかる時間。
【０２５７】
しかし、例えばＰＥでパイプライン処理が行われている場合などには、データ送受信にかかる時間の見積もりにおいて、ＰＥとメモリとの間の伝送スループットＴＰｍｅｍの影響を無視しても差し支えない。式（１８）は、ＰＥとメモリとの間の伝送スループットＴＰｍｅｍの影響を無視しても差し支えない場合に適用される式の例である。
【０２５８】
以上様々に例示したように、制御装置１２０がＴｔｘｒｘ（ｈ，ｇ）を見積もる具体的方法は、各ＰＥのハードウェア仕様や、ＰＥ間のネットワークの物理的構成に応じて異なり得る。
【０２５９】
さて、式（３）には、データの出力にかかる時間Ｔｏｕｔ（ｈ，ｇ）も含まれる。上記のように、ＰＥ（ｈ）に暫定的に割り当てられているｇ番目のセルが、出力領域に含まれていなければ、Ｔｏｕｔ（ｈ，ｇ）＝０である。よって、出力処理にかかる時間に関しては、式（２１）のように表すこともできる。
【数６】
2014211699.tif 000008
【０２６０】
式（２１）におけるＮｏｕｔ（ｈ）は、ＰＥ（ｈ）に暫定的に割り当てられているＮｃｅｌｌ（ｈ）個のセルのうち、出力領域に含まれるセルの個数である。ここで、ＰＥ（ｈ）に暫定的に割り当てられているＮｃｅｌｌ（ｈ）個のセルのうちで出力領域に含まれるセルの最近端と最遠端の座標（より詳しくは格子座標）を、それぞれ（Ｘｏｓ（ｈ），Ｙｏｓ（ｈ），Ｚｏｓ（ｈ））と（Ｘｏｅ（ｈ），Ｙｏｅ（ｈ），Ｚｏｅ（ｈ））とする。すると、Ｎｏｕｔ（ｈ）は式（２２）のように表される。例えば、図８の例においては、Ｎｏｕｔ（２）＝１２×ＸＮである。
Nout(h)=(Xoe(h)-Xos(h))×(Yoe(h)-Yos(h))×(Zoe(h)-Zos(h))    (22)
【０２６１】
また、式（２１）におけるＮｒｅｑは、ユーザが出力対象として要求したデータの種類の数である。出力対象になり得るデータは全部で６種類（すなわち、電界ベクトルのＸ成分、Ｙ成分、Ｚ成分と、磁界ベクトルのＸ成分、Ｙ成分、Ｚ成分）なので、１≦Ｎｒｅｑ≦６である。なお、制御装置１２０は、ステップＳ１０２の入力ファイルに指定された内容から、Ｎｒｅｑを認識することができる。
【０２６２】
また、式（２１）におけるＳｉｚｅおよびＴＰｍｅｍは、式（９）におけるＳｉｚｅおよびＴＰｍｅｍと同様である。
【０２６３】
式（２１）におけるＩｎｔｖは、出力間隔を示す。具体的には、出力間隔Ｉｎｔｖは、「何ステップ時間ごとに１回の割合でデータを出力してほしいとユーザが要望したか」を表す。例えばユーザが「ステップ時間Δｔの３０倍の時間ごとに１回の割合でデータを出力してほしい」旨をステップＳ１０１で入力すると、入力ファイルには、３０という出力間隔が設定される。この場合、制御装置１２０は、入力ファイルに基づいて、Ｉｎｔｖ＝３０と認識することができる。
【０２６４】
なお、制御装置１２０は、図９の抽出処理の結果として、以下の２つの条件のどちらが成り立つのかを認識しているので、効率的に式（２１）による計算を行うことができる。
【０２６５】
・１≦ｇ≦Ｎｃｅｌｌ（ｈ）を満たす、どのｇについても、Ｔｏｕｔ（ｈ，ｇ）＝０である。つまり、Ｎｏｕｔ（ｈ）＝０である。
・１≦ｇ≦Ｎｃｅｌｌ（ｈ）を満たす、あるｇについては、０＜Ｔｏｕｔ（ｈ，ｇ）である。つまり、０＜Ｎｏｕｔ（ｈ）である。
【０２６６】
ところで、ＰＥから出力されたデータは、スイッチ１３０を介して制御装置１２０に送信され、制御装置１２０からネットワーク１８０を介してＨＤＤ１７０に書き込まれる。よって、システム１００の具体的構成によっては、出力処理にかかる時間は、様々な要因（例えば、スイッチ１３０を介したＰＥと制御装置１２０との間の伝送スループットなど）に依存する可能性がある。制御装置１２０は、システム１００の具体的なハードウェア仕様に応じた適切な方法で、Ｔｏｕｔ（ｈ，ｇ）を見積もる。
【０２６７】
例えば、式（２１）は、出力処理にかかる時間が主にメモリアクセス時間に依存する場合に相当する。図２の例Ｅ２に示したように、出力処理は時間的に分散されて実行されてもよい。出力処理が時間的に分散されている場合、ＰＥからＨＤＤ１７０に至るネットワーク経路の伝送スループットが、出力処理にかかる時間に与える影響は、無視して差し支えない。この場合、出力処理にかかる時間は、主として出力対象のデータをＰＥがメモリから読み出すためのメモリアクセスにかかる時間により規定される。式（２１）は、そのような場合に適切な式である。
【０２６８】
以上様々に説明したように、制御装置１２０は、以下のような諸因に応じた適切な方法により、図５のステップＳ１０７で、ＰＥ（１）〜ＰＥ（ｎ）各々の合計処理時間を見積もる。
【０２６９】
・入力ファイルの内容。
・ＰＥやネットワーク等のハードウェア仕様（例えば、ＰＥとメモリの間、ＰＥ同士の間、ＰＥとスイッチ１３０の間それぞれの伝送スループットなどについての仕様を含む。また、各ＰＥのクロック周波数、各ＰＥでパイプライン処理が行われるかどうか、パイプラインのステージ数、浮動小数点データのサイズ、などについての仕様も含む）。
・各ＰＥによる具体的計算手順（換言すれば、並列ＦＤＴＤ法が具体的にどのようにプログラムされて実装されているか、ということ）。
【０２７０】
ある観点によれば、ステップＳ１０７で制御装置１２０が行う処理は、図１のステップＳ１における、各セルの位置依存の処理負荷の見積もり（例えば、メモリアクセスの回数や演算の回数の見積もり）を含む。さらに、ステップＳ１０７の処理は、見積もった処理負荷から処理時間を算出することを含む。処理負荷からの処理時間の算出は、上述の説明から分かるように、具体的には、例えば以下のような処理を含んでいてもよい。
【０２７１】
・式（９）、（１８）、および（２１）のような、スループットによる除算。
・加算や乗算等の各種演算の回数からの、処理時間Ｃａｌ（ｈ，ｇ）の決定。
【０２７２】
また、ステップＳ１０７における各ＰＥ（ｈ）の合計処理時間Ｔ（ｈ）の算出は、「合計処理時間の均等性についての基準が満たされているか否か」を判断するために図１のステップＳ２で行われる、各演算装置の合計処理時間を算出する処理に相当する。そして、「合計処理時間の均等性についての基準が満たされているか否か」についてのステップＳ２での判断は、ステップＳ１０８に相当する。
【０２７３】
具体的には、ステップＳ１０８で制御装置１２０は、合計処理時間Ｔ（ｈ）のばらつき（dispersion）が許容範囲内か否かを判断する（１≦ｈ≦ｎ）。ステップＳ１０８の判断は、例えば、ｎ個の合計処理時間についての標準偏差（または四分位数範囲（ＩＱＲ：interquartile range））などの統計量（statistic）と、閾値との比較に基づいていてもよい。あるいは、標準偏差またはＩＱＲをｎ個の合計処理時間の平均値で割った値が、適宜の閾値と比較されてもよい。しかし、本実施形態では、ステップＳ１０８において、具体的には以下のような判断が行われる。
【０２７４】
ステップＳ１０８で制御装置１２０は、出力を担当しないＰＥの中での合計処理時間Ｔ（ｈ）の基準値（以下「Ｔｒｅｆ」と表記する）を算出する。基準値Ｔｒｅｆは、具体的には、出力を担当しないＰＥにおける合計処理時間Ｔ（ｈ）の統計量であってもよい。統計量として最小値が使われることが好ましいが、第１四分位数や平均値などが統計量として利用されてもよい。
【０２７５】
あるいは、処理の簡単化のため、制御装置１２０は、出力を担当しないＰＥのうちの任意の１台を選び、選んだＰＥの合計処理時間Ｔ（ｈ）を基準値Ｔｒｅｆとして使ってもよい。なぜなら、出力を担当しないＰＥ間での合計処理時間の差がそれほど大きくならないように、ステップＳ１０４での初期割り当てとステップＳ１１２での再割り当てが行われるからである。
【０２７６】
そして、出力を担当するすべてのＰＥに関して条件（ｉｉｉ）が満たされる場合、制御装置１２０は、「合計処理時間のばらつきは許容範囲内である」と判断する。逆に、出力を担当するＰＥのうち、条件（ｉｉｉ）を満たさないＰＥが１台以上ある場合、制御装置１２０は、「合計処理時間のばらつきは許容範囲内ではない」と判断する。なお、条件（ｉｉｉ）における「Ｔａ」は、１より大きい（例えば、１．１〜１．３程度の）所定の閾値である。
T(h)/Tref < Ta    (iii)
【０２７７】
なお、図９に関して説明したとおり、制御装置１２０は、「ＰＥ（１）〜ＰＥ（ｎ）のうち、どのＰＥが出力を担当し、どのＰＥは出力を担当しないのか」ということを既に認識している。そのため制御装置１２０は、基準値Ｔｒｅｆを得ることもできるし、上記の判断を行うこともできる。
【０２７８】
制御装置１２０は、「合計処理時間のばらつきは許容範囲内である」と判断した場合は、次にステップＳ１０９を実行する。ステップＳ１０９で制御装置１２０は、現在の暫定的な割り当てを採用することに決める。つまり、この場合、ステップＳ１０９でＰＥ（１）〜ＰＥ（ｎ）へのセルの割り当てが最終的に決定される。制御装置１２０は、割り当てが最終的に決定したことをホスト端末１５０に通知する。
【０２７９】
逆に、ステップＳ１０８で制御装置１２０が「合計処理時間のばらつきは許容範囲内ではない」と判断した場合、制御装置１２０は、ホスト端末１５０に対して「割り当てはまだ決定していない」と通知する。また、この場合、制御装置１２０は、「現在の暫定的な割り当てではどのＰＥが出力を担当するのか」についても、ホスト端末１５０に通知する。
【０２８０】
したがって、ステップＳ１１０でホスト端末１５０は、「割り当てが決定したのか否か」を、制御装置１２０からの通知に基づいて判断することができる。
【０２８１】
割り当てが決定した場合、ホスト端末１５０は、次に図６のステップＳ１１６を実行する。逆に、割り当てが決定していない場合、ホスト端末１５０は、次にステップＳ１１１〜Ｓ１１２を実行し、さらに、再度ステップＳ１０５を実行する。
【０２８２】
具体的には、ステップＳ１１１でホスト端末１５０は、出力を担当するＰＥを増やすための処理を行う。ステップＳ１１１の詳細は後述する。
【０２８３】
そして、ステップＳ１１２でホスト端末１５０は、ステップＳ１１１の結果に基づいて、セルをＰＥ（１）〜ＰＥ（ｎ）に割り当て直す。ステップＳ１１２での再割り当ても、暫定的な割り当てである。ステップＳ１１２の詳細も後述する。
【０２８４】
次に、ホスト端末１５０は、再度ステップＳ１０５を実行する。つまり、ホスト端末１５０は、再度の暫定的な割り当てを制御装置１２０に通知する。なお、２回目以降のステップＳ１０５の実行においては、ホスト端末１５０は、入力ファイルで定義されている各種の情報（例えば出力領域の定義など）の制御装置１２０への通知を省略してよい。
【０２８５】
こうして、新たな割り当てについての通知を受けると、制御装置１２０は、再度、ステップＳ１０６以降のステップを実行する。よって、仮にステップＳ１０４での最初の割り当てでは合計処理時間のばらつきが許容範囲外であっても、再割り当てが１回以上行われた結果として、ばらつきが許容範囲内であるような割り当てが見つかる。その結果、図６のステップＳ１１３以降のステップが実行される。
【０２８６】
ある観点によれば、ステップＳ１０８の判断は、図１のステップＳ２に関して説明した基準（つまり、合計処理時間についての演算装置間での均等性に関する基準）が満たされるか否かについての判断である。合計処理時間Ｔ（ｈ）のばらつきが許容範囲内ならば、基準は満たされ、ばらつきが許容範囲外ならば基準は満たされない。そして、基準が満たされるような割り当てが見つかるまで、ステップＳ１１１〜Ｓ１１２での再割り当てが繰り返されるので、ステップＳ１０９で最終的に決定される割り当ては、上記基準を満たす。つまり、ステップＳ２と同様に、第２実施形態においても、上記基準が満たされるという条件下での割り当てが行われる。
【０２８７】
さて、制御装置１２０は、ステップＳ１０９で割り当てを最終的に決定した後、図６のステップＳ１１３を実行する。ステップＳ１１３で制御装置１２０は、ＰＥ（１）〜ＰＥ（ｎ）の各々について、「計算領域」のサイズを算出する。ここで、ＰＥ（ｈ）の「計算領域」とは、ＰＥ（ｈ）に割り当てられた全セルについて電界と磁界を計算するためにＰＥ（ｈ）が使用するメモリ上の領域のことである。ＰＥ（ｈ）の計算領域は、少なくとも、以下の領域を含む。
【０２８８】
・ＰＥ（ｈ）に割り当てられた各セルに関して計算される電界ベクトルのＸ成分、Ｙ成分、Ｚ成分を記憶する領域。
・ＰＥ（ｈ）に割り当てられた各セルに関して計算される磁界ベクトルのＸ成分、Ｙ成分、Ｚ成分を記憶する領域。
【０２８９】
制御装置１２０は、ステップＳ１０９で決定した割り当てに基づいて、各計算領域のサイズを算出する。そして、制御装置１２０は、ＰＥ（１）〜ＰＥ（ｎ）の各々に、計算領域のサイズを通知する。
【０２９０】
なお、図５〜７には、ＰＥ１４０−１と１４０−２がいずれも解析に使われる場合が例示されている（例えば、ＰＥ（１）がＰＥ１４０−１であってもよく、ＰＥ（２）がＰＥ１４０−２であってもよい）。よって、ＰＥ１４０−１は、ＰＥ１４０−１が使用するメモリ１４１−１上の領域のサイズについての通知を、制御装置１２０から受信する。同様に、ＰＥ１４０−２は、ＰＥ１４０−２が使用するメモリ１４１−２上の領域のサイズについての通知を、制御装置１２０から受信する。
【０２９１】
ステップＳ１１４でＰＥ１４０−１は、制御装置１２０からの通知に基づいて、計算領域を確保（allocate）する。同様に、ステップＳ１１５でＰＥ１４０−２は、制御装置１２０からの通知に基づいて、計算領域を確保する。
【０２９２】
一方、ホスト端末１５０は、「割り当てが決定した」とステップＳ１１０で判断した後、ステップＳ１１６で各ＰＥ（ｈ）の「スケジュール表（schedule）」を作成する（１≦ｈ≦ｎ）。ここで、ＰＥ（ｈ）の「スケジュール表」とは、ＰＥ（ｈ）が実行する一連のコマンドのことである。スケジュール表に含まれる個々のコマンドは、具体的には、マシン語（machine code）である。
【０２９３】
図１０〜１１は、スケジュール表を模式的に説明する図である。ステップＳ１１６でホスト端末１５０は、ＰＥ（１）〜ＰＥ（ｎ）の各々について、図１０〜１１に例示するようなスケジュール表を作成してもよい。
【０２９４】
なお、図１０〜１１におけるコマンドセット間の順序、コマンド間の順序、コマンドの数、および具体的なコマンドの内容などは、説明のための例示である。コマンドセット間の順序、コマンド間の順序、コマンドの数、および具体的なコマンドの内容などは、実施形態に応じて適宜変更されてよい。また、出力間隔によっては、出力を実行するか否かを判断するためのコマンドなどがさらに追加されてもよい。また、各コマンドの具体的内容は、ＰＥの種類によって異なる。例えば、ＰＥがＦＰＧＡまたはＡＳＩＣである場合、スケジュール表が、回路へ入力として与えられる入力パラメタの集合を含んでいてもよい。
【０２９５】
さて、図１０のスケジュール表２００は、出力を担当するＰＥ用のスケジュール表の例である。より具体的には、電界ベクトルと磁界ベクトルのそれぞれについてＸ成分、Ｙ成分、Ｚ成分を出力するようユーザが要求した場合の例が、図１０には示されている。つまり図１０は、式（２１）においてＮｒｅｑ＝６の場合の一例を示す。
【０２９６】
スケジュール表２００は、以下のようなコマンドセット２０１〜２１４を含む。各コマンドセットは、１つ以上のコマンドを含む。
【０２９７】
・電界ベクトルのＸ成分Ｅｘを演算（compute）するためのコマンドセット２０１。
・電界ベクトルのＹ成分Ｅｙを演算するためのコマンドセット２０２。
・電界ベクトルのＺ成分Ｅｚを演算するためのコマンドセット２０３。
・電界ベクトルのデータの送受信用のコマンドセット２０４。
・磁界ベクトルのＸ成分Ｈｘを演算するためのコマンドセット２０５。
・磁界ベクトルのＹ成分Ｈｙを演算するためのコマンドセット２０６。
・磁界ベクトルのＺ成分Ｈｚを演算するためのコマンドセット２０７。
・磁界ベクトルのデータの送受信用のコマンドセット２０８。
・スイッチ１３０と制御装置１２０を介して、Ｅｘの演算結果をＨＤＤ１７０に出力するための（つまりＥｘの演算結果のコピー用の）コマンドセット２０９。
・Ｅｙの演算結果のコピー用のコマンドセット２１０。
・Ｅｚの演算結果のコピー用のコマンドセット２１１。
・Ｈｘの演算結果のコピー用のコマンドセット２１２。
・Ｈｙの演算結果のコピー用のコマンドセット２１３。
・Ｈｚの演算結果のコピー用のコマンドセット２１４。
【０２９８】
図１０には、コマンドセット２０１〜２１４のうち、コマンドセット２０１の詳細が模式的に例示されている。また、図１１には、コマンドセット２０４と２０９の詳細が模式的に例示されている。
【０２９９】
例えば、あるＰＥには、ある媒質の内部に位置するセルのみが割り当てられている場合があり得る。図１０には、そのような場合におけるコマンドセット２０１の例が模式的に示されている。上記のとおり、媒質の内部に位置するセルに関しては、式（６）により電界のＸ成分Ｅｘが計算されてもよい。以下に式（６）を再掲する。
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)
【０３００】
図１０には、式（６）に基づくコマンドセット２０１の詳細が、模式的に例示されている。具体的には、コマンドセット２０１は、以下のようなコマンド２２１〜２３２を含む。図１０の例では、各メモリ１４１−ｐは、具体的にはＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）であるものとする（１≦ｐ≦Ｐ）。
【０３０１】
・インデックス変数ｉ，ｊ，ｋにそれぞれ値を設定するためのいくつかのコマンド２２１（図１０では便宜上、コマンド２２１が１つのブロックにより図示されている）。
・式（６）中の係数Ｃｘをメモリから読み出すためのコマンド２２２。
・式（６）の右辺のＥｘ（ｉ，ｊ，ｋ）をメモリから読み出すためのコマンド２２３。
・式（６）中の係数Ｇｘをメモリから読み出すためのコマンド２２４。
・式（６）中のＨｚ（ｉ，ｊ，ｋ）をメモリから読み出すためのコマンド２２５。
・式（６）中のＨｚ（ｉ，ｊ−１，ｋ）をメモリから読み出すためのコマンド２２６。
・式（６）中のＨｙ（ｉ，ｊ，ｋ）をメモリから読み出すためのコマンド２２７。
・式（６）中のＨｙ（ｉ，ｊ，ｋ−１）をメモリから読み出すためのコマンド２２８。
・式（６）にしたがって算術演算を行うためのいくつかのコマンド。なお、図１０では図示の便宜上、コマンド２２９と２３０のみが例示されている。
・計算の結果として得られた値を、Ｅｘ（ｉ，ｊ，ｋ）としてメモリに書き込むためのコマンド２３１。
・条件分岐とジャンプのためのいくつかのコマンド２３２。
【０３０２】
なお、図１０では便宜上、コマンド２３２が１つのブロックにより図示されている。コマンド２３２は、具体的には、「割り当てられた全セルについて電界ベクトルのＸ成分の計算が終了したのか、それとも、まだ次のセルが残っているのか」を判断するためのコマンドを含む。コマンド２３２はさらに、後者の場合においてインデックス変数ｉ，ｊ，ｋのうちのいずれか１つを更新するためのコマンドと、コマンド２２２のアドレスにジャンプするためのコマンドを含む。
【０３０３】
ところで、図５のステップＳ１０７に関する上記の説明では、具体的なプログラムの実装に応じて見積もりが行われることを述べた。図１０〜１１は、その具体的なプログラムの実装の例を示す図でもある。
【０３０４】
例えば、図１０のコマンドセット２０１にしたがって、ＰＥは、コマンド２２２〜２２８による７回のリードアクセスと、コマンド２３１による１回のライトアクセスを実行する。ステップＳ１０７に関して述べた「Ｎｍｅｍ（ｈ，ｇ）＝８」という例は、以上のようなコマンドセット２０１の詳細と対応している。
【０３０５】
さて、図１１には、電界ベクトルのデータの送受信用のコマンドセット２０４の詳細が模式的に例示されている。具体的には、コマンドセット２０４は、以下のようなコマンド２４１〜２５０を含む。
【０３０６】
・インデックス変数ｉ，ｊ，ｋにそれぞれ値を設定するためのいくつかのコマンド２４１（図１１では便宜上、コマンド２４１が１つのブロックにより図示されている）。
・隣接ＰＥに送信する対象のＥｘ（ｉ，ｊ，ｋ）をメモリから読み出すためのコマンド２４２。
・隣接ＰＥに送信する対象のＥｙ（ｉ，ｊ，ｋ）をメモリから読み出すためのコマンド２４３。
・隣接ＰＥに送信する対象のＥｚ（ｉ，ｊ，ｋ）をメモリから読み出すためのコマンド２４４。
・読み出したＥｘ（ｉ，ｊ，ｋ）とＥｙ（ｉ，ｊ，ｋ）とＥｚ（ｉ，ｊ，ｋ）を隣接ＰＥに送信するための、１つまたは複数のコマンド２４５。
・隣接ＰＥから、インデックス（ｉｉ，ｊｊ，ｋｋ）により表される座標の電界ベクトルのデータを受信するための、１つまたは複数のコマンド２４６。
・受信したＥｘ（ｉｉ，ｊｊ，ｋｋ）をメモリに書き込むためのコマンド２４７。
・受信したＥｙ（ｉｉ，ｊｊ，ｋｋ）をメモリに書き込むためのコマンド２４８。
・受信したＥｚ（ｉｉ，ｊｊ，ｋｋ）をメモリに書き込むためのコマンド２４９。
・コマンド２３２と類似の、条件分岐とジャンプのためのいくつかのコマンド２５０。ジャンプ先アドレス（jump-to address）はコマンド２４２のアドレスである。
【０３０７】
なお、図１１のコマンドセット２０４を実行するＰＥが、どのＰＥへデータを送信し、どのＰＥからデータを受信するかは、並列ＦＤＴＤ法の実装による。データの送信先および／またはデータの送信元は、例えば、「隣接する２つのＰＥがそれぞれ担当するセルの範囲がオーバラップするような割り当てが行われるか否か」といった、実装の詳細に依存する。
【０３０８】
さて、図１１には、スイッチ１３０と制御装置１２０を介して、Ｅｘの演算結果をＨＤＤ１７０に出力するための（つまりＥｘの演算結果のコピー用の）コマンドセット２０９の詳細も、模式的に例示されている。具体的には、コマンドセット２０９は、以下のようなコマンド２６１〜２６４を含む。
【０３０９】
・インデックス変数ｉ，ｊ，ｋにそれぞれ値を設定するためのいくつかのコマンド２６１（図１１では便宜上、コマンド２６１が１つのブロックにより図示されている）。
・出力対象のＥｘ（ｉ，ｊ，ｋ）をメモリから読み出すためのコマンド２６２。
・読み出したＥｘ（ｉ，ｊ，ｋ）をＨＤＤ１７０に出力するための（換言すれば、読み出したＥｘ（ｉ，ｊ，ｋ）を、スイッチ１３０を介して制御装置１２０に送信するための）コマンド２６３。
・コマンド２３２と類似の、条件分岐とジャンプのためのいくつかのコマンド２６４。ジャンプ先アドレスはコマンド２６２のアドレスである。
【０３１０】
上述の式（２１）が、ＰＥとメモリの間の伝送スループットＴＰｍｅｍによる除算を含むのは、コマンド２６２によるメモリアクセスによって、出力処理にかかる時間が影響を受けるからである。
【０３１１】
さて、再度、図６の説明に戻る。ステップＳ１１６でホスト端末１５０は、例えば図１０〜１１のようなスケジュール表をＰＥ（１）〜ＰＥ（ｎ）の各々について作成し、作成した各スケジュール表を制御装置１２０に送信する。
【０３１２】
すると、ステップＳ１１７で制御装置１２０は、初期化処理を行う。つまり、制御装置１２０は、各ＰＥ（ｈ）に、ＰＥ（ｈ）用のスケジュール表を送信する（１≦ｈ≦ｎ）。
【０３１３】
よって、ＰＥ１４０−１はＰＥ１４０−１用のスケジュール表を受信する。すると、ＰＥ１４０−１は、ステップＳ１１８で、「演算情報」を設定する。なお、ここでの「演算情報」とは、ＰＥ１４０−１が解析を実行するために使う情報であり、受信したＰＥ１４０−１用のスケジュール表を少なくとも含む情報である。
【０３１４】
例えばＰＥ１４０−１が汎用的なＣＰＵである場合、ＰＥ１４０−１用のスケジュール表は、具体的には、ＣＰＵ用のマシン語で記述されたプログラムである。よって、この場合、ステップＳ１１８でＰＥ１４０−１は、具体的には、受信したＰＥ１４０−１用のスケジュール表をメモリ１４１−１にロードする。
【０３１５】
同様に、ＰＥ１４０−２はＰＥ１４０−２用のスケジュール表を受信する。そして、ＰＥ１４０−２は、ステップＳ１１９で演算情報を設定する。
【０３１６】
また、制御装置１２０は、ステップＳ１２０でＰＥ（１）〜ＰＥ（ｎ）に演算を開始するよう命令する。すると、命令に応じて、ＰＥ（１）〜ＰＥ（ｎ）は演算を開始する。
【０３１７】
具体的には、ステップＳ１２１でＰＥ１４０−１が電界を計算し、それと並行して、ステップＳ１２２でＰＥ１４０−２が電界を計算する。
【０３１８】
次に、ステップＳ１２３でＰＥ１４０−１が電界のデータの送受信を行い、それと並行して、ステップＳ１２４でＰＥ１４０−２が電界のデータの送受信を行う。例えば、ＰＥ１４０−１と１４０−２にそれぞれ割り当てられているセルの範囲同士がオーバラップする場合などには、ＰＥ１４０−１がＰＥ１４０−２にデータを送り、かつ、ＰＥ１４０−１がＰＥ１４０−２からデータを受信するような実装が採用されてもよい。図６でステップＳ１２３とＳ１２４を結ぶ両向き矢印は、このような実装を例示している。並列ＦＤＴＤ法の実装によっては、あるＰＥにとってのデータの送信先とデータの送信元が異なることもあり得る。
【０３１９】
電界のデータの送受信の完了後、ステップＳ１２５でＰＥ１４０−１が磁界を計算し、それと並行して、ステップＳ１２６でＰＥ１４０−２が磁界を計算する。
【０３２０】
次に、ステップＳ１２７でＰＥ１４０−１が磁界のデータの送受信を行い、それと並行して、ステップＳ１２８でＰＥ１４０−２が磁界のデータの送受信を行う。ステップＳ１２７〜Ｓ１２８はステップＳ１２３〜Ｓ１２４と類似である。
【０３２１】
さてここで説明の便宜上、以下のように仮定する。
【０３２２】
・図１０のスケジュール表２００に示すように、磁界のデータの送受信の後に出力処理が行われるような実装が採用されているものとする。
・ただし、図１０のスケジュール表２００では説明の簡単化のために省略されているが、ＰＥ１４０−１用のスケジュール表は、出力間隔に関する条件分岐コマンドなども含むものとする。
・ＰＥ１４０−１には、出力領域に含まれるセルが割り当てられているものとする。
・ＰＥ１４０−２には、出力領域に含まれるセルが割り当てられていないものとする。
【０３２３】
以上のような仮定によれば、ステップＳ１１８で設定した演算情報にしたがって動作するＰＥ１４０−１は、ステップＳ１２７での磁界のデータの送受信の完了後、ステップＳ１２９で、「出力処理を行うか否か」を判断する。この判断は、上記の仮定のとおり、ＰＥ１４０−１用のスケジュール表に含まれる条件分岐コマンドにしたがって行われる。
【０３２４】
また、この条件分岐コマンドの引数に指定される出力間隔は、ステップＳ１０２の入力ファイルにおいて指定されている値である。つまり、ホスト端末１５０は、ステップＳ１１６でのスケジュール表の作成において、入力ファイルに指定されている出力間隔の値を参照して、ユーザにより指定された出力間隔に応じたコマンドをスケジュール表に含める。
【０３２５】
ＰＥ１４０−１は、「出力処理を行う」とステップＳ１２９で判断した場合、次にステップＳ１３０で演算結果を出力する。例えば、電界と磁界の双方のデータを出力するようにユーザが指定した場合は、ＰＥ１４０−１は、ステップＳ１２１で計算した電界のデータと、Ｓ１２５で計算した磁界のデータを、スイッチ１３０を介して制御装置１２０に送信する。
【０３２６】
ステップＳ１３０での演算結果の出力後、ＰＥ１４０−１はステップＳ１３１を実行する。あるいは、ＰＥ１４０−１は、「出力処理を行わない」とステップＳ１２９で判断した場合には、ステップＳ１２９での判断の次にステップＳ１３１を実行する。
【０３２７】
具体的には、ステップＳ１３１でＰＥ１４０−１は、解析対象の最後のステップ時間まで、既に解析を終えたか否かを判断する。最後のステップ時間まではまだ解析が済んでいない場合、ＰＥ１４０−１は、次にステップＳ１２１を再度実行する。つまり、最後のステップ時間まではまだ解析が済んでいない場合、ＰＥ１４０−１は、次のステップ時間に関する処理を行う。
【０３２８】
さて、上記の仮定によれば、ＰＥ１４０−２には、出力領域に含まれるセルが割り当てられていない。よって、ＰＥ１４０−２は、ステップＳ１２８での送受信の完了後、ステップＳ１３２の判断を実行する。つまり、ステップＳ１３２でＰＥ１４０−２は、解析対象の最後のステップ時間まで、既に解析を終えたか否かを判断する。最後のステップ時間まではまだ解析が済んでいない場合、ＰＥ１４０−２は、次にステップＳ１２２を再度実行する。
【０３２９】
ところで、ステップＳ１３０で出力されたデータは、制御装置１２０を介してＨＤＤ１７０に書き込まれる。そして、ＨＤＤ１７０に書き込まれたデータがユーザに提供される。
【０３３０】
より具体的には、例えば図７に例示するように、制御装置１２０がステップＳ１３３でデータを圧縮して、圧縮したデータをＨＤＤ１７０に書き込んでもよい。制御装置１２０は、データのＨＤＤ１７０への書き込みをホスト端末１５０に通知してもよい。
【０３３１】
また、ホスト端末１５０は、ステップＳ１３４で、ＨＤＤ１７０上のデータ（つまり解析結果）を加工してもよい。例えば、ホスト端末１５０は、電界および／または磁界の数値データを視覚化してもよい。つまり、ホスト端末１５０は、電界および／または磁界の経時的変化を示す動画データを生成してもよい。ホスト端末１５０は、加工した解析結果をユーザ端末１６０に送信する。
【０３３２】
すると、ステップＳ１３５でユーザ端末１６０は、解析結果を表示する。よって、ユーザは、解析結果を見ることができる。
【０３３３】
ところで、説明の簡単化のため図５〜７では省略されているが、制御装置１２０は、ＰＥ（１）〜ＰＥ（ｎ）による解析の進捗を監視してもよい。例えば各ＰＥ（ｈ）は、１ステップ時間についての一連の処理が終了するたびに（例えばステップＳ１３１やＳ１３２の判断の直前に）、制御装置１２０に終了を通知してもよい。すると、制御装置１２０は、各ＰＥ（ｈ）からの通知に基づいて、解析の進捗を監視することができる。
【０３３４】
全ステップ時間について解析が完了した場合、ステップＳ１３６で制御装置１２０は、演算終了をＰＥ（１）〜ＰＥ（ｎ）とホスト端末１５０に通知する。すると、通知に応じて、ステップＳ１３７でＰＥ１４０−１は、計算領域を解放する。同様に、ステップＳ１３８でＰＥ１４０−２も、計算領域を解放する。また、ステップＳ１３９でホスト端末１５０は、適宜の終了処理を行う。終了処理は、例えば、ユーザ端末１６０に対して終了を通知する処理であってもよい。
【０３３５】
続いて、以上説明した図５〜７の処理に関する更なる詳細を説明する。
以下に説明するステップＳ１１１〜Ｓ１１２の具体例は、ＰＥ１４０−１〜１４０−Ｐが図４のトポロジＴ１のようにＺ方向に１次元的に接続されている場合に適用可能である。この場合、Ｚ方向に接続されるＰ台のＰＥのうちのｎ台が解析に使われる。
【０３３６】
また、以下に説明するステップＳ１１１〜Ｓ１１２の具体例は、ＰＥ１４０−１〜１４０−ＰがトポロジＴ２のようにＹ方向とＺ方向に２次元メッシュ状に接続されている場合にも適用可能である。この場合、「解析に使う」とステップＳ１０４で決められたｎ台のＰＥは、具体的には、Ｙ方向にｎｙ台並び、Ｚ方向にｎｚ台並んだ、合計（ｎｙ×ｎｚ）台のＰＥであるものとする。つまり、ｎ＝ｎｙ×ｎｚとする。なお、ｎｙは１以上ｎ以下の整数であり、ｎｚも１以上ｎ以下の整数である。ＰＥ１４０−１〜１４０−ＰがトポロジＴ１のように接続されている場合は、ｎｙ＝１である。
【０３３７】
以下では説明の便宜上、ＰＥ（１）〜ＰＥ（ｎ）のうち、Ｙ方向に接続されるｎｙ台のＰＥを「１列（column）のＰＥ」とも言う。また、ＰＥ（１）〜ＰＥ（ｎ）のうち、Ｚ方向に接続されるｎｚ台のＰＥを「１行（row）のＰＥ」とも言う。
【０３３８】
図５のステップＳ１１１でホスト端末１５０は、ｎ台のＰＥのうち、出力領域を担当するＰＥを含むような、ある１行のＰＥに着目する。そして、ホスト端末１５０は、着目した行の中で、出力を担当するＰＥの台数を、Ｚ軸の正の方向または負の方向に、１つ増やす。そして、ステップＳ１１２でホスト端末１５０は、ステップＳ１１１で着目した行において、ｎｚ台のＰＥ間でのセルの割り当てを変更する。さらに、ｎｙ＞１の場合には、ホスト端末１５０は、残りの行の割り当ても同様に変更する。
【０３３９】
以下、図１２〜１３を参照して、ステップＳ１１１についてさらに詳しく説明する。図１２は、ある１行のｎｚ台のＰＥの中で出力を担当するＰＥを増やす処理を例示する図である。また、図１３は図１２に例示した処理のためのフローチャートである。
【０３４０】
図１２には、ＰＥ（１）〜ＰＥ（ｎ）のうち、ステップＳ１１１でホスト端末１５０がＰＥ（１）〜ＰＥ（ｎｚ）に着目した場合の３つの例Ｅ３〜Ｅ５が示されている。図１２では、小さな矩形が個々のセルを示す。また、各ＰＥに割り当てられる複数のセルが、太線で囲われている。出力領域Ａ４〜Ａ６に属するセルは、網点パターンにより示されている。
【０３４１】
図１２に示すように、ＰＥ（１）は、解析対象領域中でＺ方向において最も原点に近いセルが割り当てられるＰＥである。逆に、ＰＥ（ｎｚ）は、解析対象領域中でＺ方向において最も原点から遠いセルが割り当てられるＰＥである。
【０３４２】
また、以下では説明の便宜上、ステップＳ１１１でホスト端末１５０が着目した行のｎｚ台のＰＥのうち、出力を担当するＰＥの数をＮとする（１≦Ｎ＜ｎｚ）。そして、それらＮ台のＰＥを、「ＰＥ＿ｏ（１）〜ＰＥ＿ｏ（Ｎ）」とも表記する。
【０３４３】
なお、図１２に示すように、ＰＥ＿ｏ（１）は、出力領域中でＺ方向において最も原点に近いセルが割り当てられるＰＥであるものとする。逆に、ＰＥ＿ｏ（Ｎ）は、出力領域中でＺ方向において最も原点から遠いセルが割り当てられるＰＥであるものとする。
【０３４４】
例Ｅ３のようにＰＥ＿ｏ（１）＝ＰＥ（１）である場合、ホスト端末１５０は、ＰＥ＿ｏ（Ｎ）とＺ軸の正の方向に隣接するＰＥを、出力を担当するＰＥの集合に加える。こうして加えられたＰＥが、例Ｅ３では、「ＰＥ＿ｏ（Ｎ＋１）」と示されている。
【０３４５】
例Ｅ４のようにＰＥ＿ｏ（Ｎ）＝ＰＥ（ｎｚ）である場合、ホスト端末１５０は、ＰＥ＿ｏ（１）とＺ軸の負の方向に隣接するＰＥを、出力を担当するＰＥの集合に加える。この場合、今までのＰＥ＿ｏ（ｋ）が、新たなＰＥ＿ｏ（ｋ＋１）である（１≦ｋ≦Ｎ）。また、出力を担当するＰＥの集合に新たに加えられたＰＥが、新たなＰＥ＿ｏ（１）である。
【０３４６】
例Ｅ５のように、ＰＥ＿ｏ（１）≠ＰＥ（１）かつＰＥ＿ｏ（Ｎ）≠ＰＥ（ｎｚ）の場合もあり得る。この場合、ホスト端末１５０は、ＰＥ＿ｏ（Ｎ）とＺ軸の正の方向に隣接するＰＥを、出力を担当するＰＥの集合に加えてもよいし、あるいは、ＰＥ＿ｏ（１）とＺ軸の負の方向に隣接するＰＥを、出力を担当するＰＥの集合に加えてもよい。よりバランスの良い割り当てのためには、ホスト端末１５０は、出力を担当するＰＥの集合に加えるＰＥを、以下の２つの範囲Ｒ１とＲ２に基づいて決定することが好ましい。
【０３４７】
・ＰＥ＿ｏ（１）〜ＰＥ＿ｏ（Ｎ）に暫定的に割り当てられているセルのＺ方向の範囲Ｒ１。
・出力領域Ａ６のＺ方向の範囲Ｒ２。
【０３４８】
より具体的には、ホスト端末１５０は、ＰＥ＿ｏ（１）〜ＰＥ＿ｏ（Ｎ）に暫定的に割り当てられているセルの中心点のＺ座標（以下「Ｚｏｃ」と表記する）を算出する。また、ホスト端末１５０は、出力領域Ａ６の中心点のＺ座標（以下「Ｚｃ」と表記する）を算出する。座標ＺｏｃとＺｃは、セルを単位として表される格子座標である。
【０３４９】
そして、例Ｅ５のようにＺｏｃ＞Ｚｃの場合は、ホスト端末１５０は、ＰＥ＿ｏ（Ｎ）とＺ軸の正の方向に隣接するＰＥを、出力を担当するＰＥの集合に加える。こうして加えられたＰＥが、例Ｅ５では、「ＰＥ＿ｏ（Ｎ＋１）」と示されている。
【０３５０】
逆にＺｏｃ≦Ｚｃの場合は、ホスト端末１５０は、ＰＥ＿ｏ（１）とＺ軸の負の方向に隣接するＰＥを、出力を担当するＰＥの集合に加える。この場合、今までのＰＥ＿ｏ（ｋ）が、新たなＰＥ＿ｏ（ｋ＋１）である（１≦ｋ≦Ｎ）。また、出力を担当するＰＥの集合に新たに加えられたＰＥが、新たなＰＥ＿ｏ（１）である。
【０３５１】
以上、図１２を参照して説明した処理は、具体的には図１３のフローチャートにしたがって行われる。
【０３５２】
ステップＳ３０１でホスト端末１５０は、以下の２つが等しいか否かを判断する。
・ホスト端末１５０が着目している行において出力を担当するＮ台のＰＥ（すなわちＰＥ＿ｏ（１）〜ＰＥ＿ｏ（Ｎ））のうち、原点に最も近い、最近端のＰＥ（すなわちＰＥ＿ｏ（１））。
・ホスト端末１５０が着目している行内の全部でｎｚ台のＰＥのうち、最近端のＰＥ（例えば、ＰＥ（１）〜ＰＥ（ｎｚ）の行にホスト端末１５０が着目している場合は、ＰＥ（１））。
【０３５３】
両者が等しい場合（例えば、図１２の例Ｅ３のような場合）、ホスト端末１５０は次にステップＳ３０２を実行する。逆に、両者が異なるＰＥ同士である場合は、ホスト端末１５０は次にステップＳ３０３を実行する。
【０３５４】
ステップＳ３０２でホスト端末１５０は、ホスト端末１５０が着目している行において出力を担当するＮ台のＰＥのうちの最遠端のＰＥ（つまりＰＥ＿ｏ（Ｎ））にＺ軸の正の方向に隣接するＰＥを、出力を担当するＰＥの集合に追加する。こうして追加されるＰＥが、図１２の例Ｅ３やＥ５では「ＰＥ＿ｏ（Ｎ＋１）」と示されている。ステップＳ３０２の実行が完了すると、図１３の処理も完了する。
【０３５５】
ステップＳ３０３でホスト端末１５０は、以下の２つが等しいか否かを判断する。
・ホスト端末１５０が着目している行において出力を担当するＮ台のＰＥ（すなわちＰＥ＿ｏ（１）〜ＰＥ＿ｏ（Ｎ））のうち、原点から最も遠い、最遠端のＰＥ（すなわちＰＥ＿ｏ（Ｎ））。
・ホスト端末１５０が着目している行内の全部でｎｚ台のＰＥのうち、最遠端のＰＥ（例えば、ＰＥ（１）〜ＰＥ（ｎｚ）の行にホスト端末１５０が着目している場合は、ＰＥ（ｎｚ））。
【０３５６】
両者が等しい場合（例えば、図１２の例Ｅ４のような場合）、ホスト端末１５０は次にステップＳ３０４を実行する。逆に、両者が異なるＰＥ同士である場合は、ホスト端末１５０は次にステップＳ３０５を実行する。
【０３５７】
ステップＳ３０４でホスト端末１５０は、ホスト端末１５０が着目している行において出力を担当するＮ台のＰＥのうちの最近端のＰＥ（つまりＰＥ＿ｏ（１））にＺ軸の負の方向に隣接するＰＥを、出力を担当するＰＥの集合に追加する。図１２の例Ｅ４に示すとおり、今までのＰＥ＿ｏ（ｋ）が、新たなＰＥ＿ｏ（ｋ＋１）である（１≦ｋ≦Ｎ）。また、出力を担当するＰＥの集合に新たに加えられたＰＥが、新たなＰＥ＿ｏ（１）である。ステップＳ３０４の実行が完了すると、図１３の処理も完了する。
【０３５８】
ステップＳ３０５でホスト端末１５０は、出力領域の中心点の座標（Ｘｏｃ，Ｙｏｃ，Ｚｏｃ）を算出する。ここで、出力領域の最近端の格子座標を（Ｘｏｓ，Ｙｏｓ，Ｚｏｓ）とし、出力領域の最遠端の格子座標を（Ｘｏｅ，Ｙｏｅ，Ｚｏｅ）とする。ステップＳ３０５でホスト端末１５０は、具体的には、以下の式（２３）〜（２５）にしたがって出力領域の中心点の座標（Ｘｏｃ，Ｙｏｃ，Ｚｏｃ）を算出する。
Xoc=(Xos+Xoe)/2    (23)
Yoc=(Yos+Yoe)/2    (24)
Zoc=(Zos+Zoe)/2    (25)
【０３５９】
次に、ステップＳ３０６でホスト端末１５０は、ホスト端末１５０が着目している行において出力を担当するＮ台のＰＥ（すなわちＰＥ＿ｏ（１）〜ＰＥ＿ｏ（Ｎ））が担当する全セルの中心点の座標（Ｘｃ，Ｙｃ，Ｚｃ）を算出する。なお、ある正のｈが存在して、１≦ｋ≦Ｎなる各ｋについてＰＥ（ｈ＋ｋ）＝ＰＥ＿ｏ（ｋ）だとすると、式（１９）や式（２０）で用いた表記を使って、座標（Ｘｃ，Ｙｃ，Ｚｃ）は式（２６）〜（２８）のように表される。
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)
【０３６０】
次に、ステップＳ３０７でホスト端末１５０は、ＺｏｃがＺｃより大きいか否かを判断する。Ｚｏｃ＞Ｚｃの場合（例えば、図１２の例Ｅ５のような場合）、ホスト端末１５０は次にステップＳ３０２を実行する。逆に、Ｚｏｃ≦Ｚｃの場合、ホスト端末１５０は次にステップＳ３０４を実行する。
【０３６１】
なお、図１３の処理はＺ軸方向での割り当ての調整に関する処理である。よって、ステップＳ３０５とＳ３０６では、Ｘ座標とＹ座標の算出は省略されてもよい。
【０３６２】
例えば、図５のステップＳ１０４での初期割り当てが図８のようであり、かつ、ステップＳ１１１でホスト端末１５０がＰＥ（１）〜ＰＥ（２５）のうちＰＥ（１）〜ＰＥ（５）の行に着目したとする。この場合、以下のとおりである。
【０３６３】
・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
【０３６４】
したがって、ステップＳ３０１、Ｓ３０３、Ｓ３０５、Ｓ３０６、Ｓ３０７、Ｓ３０２が、この順に実行され、出力を担当するＰＥの集合にはＰＥ（３）が追加される。
【０３６５】
続いて、図１４〜１８を参照して、図５のステップＳ１１２についてさらに詳しく説明する。図１４は、ホスト端末１５０が、ステップＳ１１１で着目した行のｎｚ台のＰＥの中での割り当てを変更する再割り当て処理の概要を説明する図である。理解を容易にするために、図１４には、以下のような具体的な場合における再割り当て処理が例示されている。
【０３６６】
・解析対象領域のＺ方向の範囲（より詳しくは、格子座標で表される範囲）は、０≦Ｚ≦３６である。
・出力領域Ａ７のＺ方向の範囲（より詳しくは、格子座標で表される範囲）は、９≦Ｚ≦１８である。
・ｎｚ＝６である。
・ＰＥ（１）〜ＰＥ（６）の行がステップＳ１１１で着目された。
・現在の暫定的な割り当てによれば、ＰＥ（１）〜ＰＥ（６）のいずれにも、Ｚ方向に６個のセルが割り当てられている。
・よって、Ｎ＝２かつＰＥ＿ｏ（１）＝ＰＥ（２）かつＰＥ＿ｏ（２）＝ＰＥ（３）である。
【０３６７】
以上のような場合において、図５のステップＳ１１１（より詳細には図１３の処理）が実行されると、ＰＥ（４）が、出力を担当するＰＥの集合に新たに追加される。なぜなら、以下のとおりＺｏｃ＞Ｚｃなので、ステップＳ３０２が実行されるからである。
【０３６８】
・Zoc=(9+18)/2=13.5
・Zc=(6+18)/2=12
【０３６９】
図１４のステップＳ４０１は、以上のようにしてＰＥ（４）が、出力を担当するＰＥの集合に、ＰＥ＿ｏ（３)として新たに追加された段階を示す。
【０３７０】
次に、ステップＳ４０２でホスト端末１５０は、出力領域Ａ７のＺ方向の範囲を、出力を担当する（Ｎ＋１）台のＰＥに均等に割り当てる。図１４の例では、出力領域Ａ７のＺ方向には９個のセルが含まれ、（Ｎ＋１）＝３である。よって、ホスト端末１５０は、ＰＥ＿ｏ（１）〜ＰＥ＿ｏ（３）の各々に、Ｚ方向に３（＝９／３）個ずつのセルを暫定的に割り当てる。なお、出力領域Ａ７のＺ方向のセルの個数が（Ｎ＋１）で割り切れない場合は、ホスト端末１５０は適宜の端数処理を行う。
【０３７１】
また、ステップＳ４０２では、出力領域Ａ７に属さないセルの割り当ては変更されない。例えば、６≦Ｚ≦９の範囲に属するセルは、ＰＥ＿ｏ（１）（すなわちＰＥ（２））に暫定的に割り当てられたままである。同様に、１８≦Ｚ≦２４の範囲に属するセルは、ＰＥ＿ｏ（３）（すなわちＰＥ（４））に暫定的に割り当てられたままである。
【０３７２】
次に、ステップＳ４０３でホスト端末１５０は、以下の２つのセルの集合間の境界Ｂ１を調整する。
【０３７３】
・出力を担当するＰＥの集合に、新たに追加したＰＥ（つまりＰＥ＿ｏ（３））に割り当てられるセルの集合。
・当該新たに追加したＰＥから見て、原点から離れる方向にあって、かつ、出力を担当しないＰＥ（つまりＰＥ（５）とＰＥ（６））に割り当てられるセルの集合。
【０３７４】
図１４の例では、ステップＳ４０３が実行される直前の境界Ｂ１のＺ座標は、２４である。ステップＳ４０３でホスト端末１５０は、具体的には、Ｚ軸の負の方向に境界Ｂ１をずらしながら、以下の２つの条件がともに満たされるような境界Ｂ１の位置を探す。
【０３７５】
１つ目の条件は、「ＰＥ＿ｏ（３）（すなわちＰＥ（４））の合計処理時間Ｔ（４）が、第１の閾値未満である」という条件である。
【０３７６】
また、ＰＥ＿ｏ（３）から見て原点から遠い方にあって、出力を担当しない全ＰＥ（すなわちＰＥ（５）とＰＥ（６））に、原点から見て出力領域Ａ７より遠くにある出力領域Ａ７外のセルを、ホスト端末１５０が均等に割り当てるものとする。２つ目の条件は、「こうして均等にセルが割り当てられたそれらのＰＥの合計処理時間の平均値が、第２の閾値未満である」という条件である。
【０３７７】
以下、第１の閾値を「Ｕ１」と表記し、第２の閾値を「Ｕ２」と表記する。閾値Ｕ１とＵ２は互いに等しくてもよく、異なっていてもよい。
【０３７８】
例えば、解析に使われるｎ台のＰＥについてステップＳ１０７で見積もられた合計処理時間の平均値と、適宜の定数との積が、閾値Ｕ１として使われてもよい。閾値Ｕ２についても同様である。また、上記の「適宜の定数」は、１より大きな値だが、あまり大きすぎない値である。例えば、１．１〜１．３程度の値が上記の「適宜の定数」として使われてもよい。
【０３７９】
図１４の例では、ステップＳ４０２の段階における境界Ｂ１のＺ座標（より詳しくは格子座標）は２４である。よって、ホスト端末１５０は、境界Ｂ１のＺ座標を１ずつ減らしながら、２つの条件がともに満たされるか否かをチェックする。そして、２つの条件が同時に満たされるような境界Ｂ１の位置が見つかったら、ホスト端末１５０は境界Ｂ１を固定する。
【０３８０】
２つの条件が同時には満たされない場合、ホスト端末１５０は、ステップＳ４０４の調整を行う。具体的には、ホスト端末１５０は、２つ目の条件が満たされる中で最も原点に近いＺ座標に境界Ｂ１を固定する。そして、ホスト端末１５０は、１つ目の条件が満たされるように、以下の２つのセルの集合間の境界Ｂ２を調整する。
【０３８１】
・ＰＥ＿ｏ（３）に割り当てられるセルの集合。
・出力を担当するＰＥのうち、今回新たに追加されたＰＥ＿ｏ（３）に隣接するＰＥ（つまりＰＥ＿ｏ（２））に割り当てられるセルの集合。
【０３８２】
なお、ステップＳ４０４における調整は、具体的には、境界Ｂ２をＺ軸の正の方向に１セルずつ移動させることによる調整である。図１４の例では、ステップＳ４０４の調整が行われる直前の境界Ｂ２のＺ座標は、１５である。
【０３８３】
その後、ホスト端末１５０はステップＳ４０５で、ステップＳ４０３〜Ｓ４０４と類似の調整を、出力領域Ａ７の最近端のセルを担当するＰＥ＿ｏ（１）に関して行う。ステップＳ４０５の調整は、ステップＳ４０３〜Ｓ４０４の調整と対称的な調整である。
【０３８４】
換言すれば、ステップＳ４０３のように境界Ｂ１をＺ軸の負の方向に移動する調整の代わりに、ステップＳ４０５では境界をＺ軸の正の方向に移動する調整が行われる。また、ステップＳ４０４のように境界Ｂ２をＺ軸の正の方向に移動する調整の代わりに、ステップＳ４０５では境界をＺ軸の負の方向に移動する調整が行われる。
【０３８５】
図１４には、ＰＥ＿ｏ（１）（つまりＰＥ（２））に割り当てられるセルの集合と、ＰＥ（１）に割り当てられるセルの集合との境界Ｂ３を、Ｚ軸の正の方向に移動する調整（つまりステップＳ４０３と類似の調整）が図示されている。上記の２つの条件が同時には満たされない場合にステップＳ４０４が行われるのと同様に、以下の２つの条件が同時には満たされない場合に、ステップＳ４０５では、ステップＳ４０４と対称的な不図示の調整が行われる。
【０３８６】
・ＰＥ＿ｏ（１）（すなわちＰＥ（２））の合計処理時間Ｔ（２）が、閾値Ｕ１未満である。
・ＰＥ＿ｏ（１）から見て原点に近い方にあって、出力を担当しない全ＰＥに、原点から見て出力領域Ａ７より近くにある出力領域Ａ７外のセルを均等に割り当てた場合、均等にセルが割り当てられた上記全ＰＥの合計処理時間の平均値が、閾値Ｕ２未満である。
【０３８７】
最後に、ステップＳ４０６でホスト端末１５０は、出力領域Ａ７のＺ方向の範囲うち、ＰＥ＿ｏ（１）にもＰＥ＿ｏ（Ｎ＋１）にも割り当てられていない残りの範囲のセルを、ＰＥ＿ｏ（２）〜ＰＥ＿ｏ（Ｎ）に均等に割り当てる。図１４の例ではＮ＝２なので、残りの範囲のセルはすべてＰＥ＿ｏ（２）（つまりＰＥ（３））に割り当てられる。
【０３８８】
つまり、図１４の再割り当てによれば、以下のように暫定的な割り当てが変化する。以下の変化は、ＰＥ間での合計処理時間の均等性を高めるような変化である。
【０３８９】
・出力を担当しないＰＥ（１）に割り当てられるセルの範囲は、０≦Ｚ≦６から０≦Ｚ≦７に広がる。
・出力を担当するＰＥ（２）に割り当てられるセルの範囲は、６≦Ｚ≦１２から７≦Ｚ≦１２に縮まる。
・同様に、出力を担当するＰＥ（３）に割り当てられるセルの範囲は、１２≦Ｚ≦１８から１２≦Ｚ≦１６に縮まる。
・新たに出力を担当することに決められたＰＥ（４）に割り当てらるセルの範囲は、１８≦Ｚ≦２４から１６≦Ｚ≦２２へと変更される。
・出力を担当しないＰＥ（５）に割り当てられるセルの範囲は、２４≦Ｚ≦３０から２２≦Ｚ≦２９へと変更される（つまり範囲が広がる）。
・出力を担当しないＰＥ（６）に割り当てられるセルの範囲は、３０≦Ｚ≦３６から２９≦Ｚ≦３６に広がる。
【０３９０】
続いて、図１４を参照して説明した以上の処理について、図１５〜１８のフローチャートを参照してより詳しく説明する。図５のステップＳ１１１に相当する図１３の処理において、出力を担当するＰＥの集合への新たなＰＥの追加が、ステップＳ３０２で行われた場合は、図１５〜１６のフローチャートにしたがってステップＳ１１２の再割り当てが行われる。逆に、出力を担当するＰＥの集合への新たなＰＥの追加が、ステップＳ３０４で行われた場合は、図１７〜１８のフローチャートにしたがってステップＳ１１２の再割り当てが行われる。
【０３９１】
図１５〜１６のフローチャートと、図１７〜１８のフローチャートは、「Ｚ軸の正の方向か負の方向か」ということに関して対称的である。なお、ステップＳ１１２に関して説明したように、ホスト端末１５０は、ｎ（＝ｎｙ×ｎｚ）台のＰＥのうち、ある１行のｎｚ台のＰＥに着目して、それらｎｚ台のＰＥの中での再割り当てを行う。そして、ｎｙ＞１の場合には、ホスト端末１５０は、残りの行の割り当ても同様に変更する。図１５〜１８に関する以下の説明では、便宜上、ホスト端末１５０がＰＥ（１）〜ＰＥ（ｎｚ）の行に着目したものと仮定している。
【０３９２】
さて、図１５のステップＳ５０１でホスト端末１５０は、出力領域のＺ方向の範囲（例えば、図８の例では５≦Ｚ≦８、図１４の例では９≦Ｚ≦１８）を、ＰＥ＿ｏ（１）〜ＰＥ＿ｏ（Ｎ＋１）に均等に割り当てる。ステップＳ５０１は図１４のステップＳ４０２に相当する。ステップＳ４０２に関して説明したとおり、ステップＳ５０１では、出力領域に属さないセルの割り当ては変更されない。
【０３９３】
なお、出力領域のＺ方向に沿ったセルの個数が（Ｎ＋１）で割り切れない場合は、ホスト端末１５０は適宜の端数処理を行う。以下、特に明示はしないが、他のステップ（例えばステップＳ５０４、Ｓ５１４、Ｓ５１６、Ｓ５２５など）でも、場合によっては何らかの端数処理が行われる。
【０３９４】
次に、ステップＳ５０２でホスト端末１５０は、出力を担当するＰＥの集合に図１３のステップＳ３０２で追加したＰＥ＿ｏ（Ｎ＋１）に関する判断を行う。具体的には、ホスト端末１５０は、ＰＥ＿ｏ（Ｎ＋１）がＰＥ（ｎｚ）であるか否かを判断する。
【０３９５】
ＰＥ＿ｏ（Ｎ＋１）がＰＥ（ｎｚ）でない場合、ＰＥ＿ｏ（Ｎ＋１）に割り当てるセルのＺ方向の範囲に関して、Ｚ座標の上限を調整する余地があり得る。例えば、図１４では、ＰＥ＿ｏ（Ｎ＋１）（すなわちＰＥ＿ｏ（３））は、ＰＥ（ｎｚ）（すなわちＰＥ（６））ではない。よって、図１４では、ＰＥ＿ｏ（３）に割り当てられるセルのＺ方向の範囲に関して、Ｚ座標の上限（つまり境界Ｂ１のＺ座標）を調整する余地があり得る。よって、ＰＥ＿ｏ（Ｎ＋１）がＰＥ（ｎｚ）でない場合、ホスト端末１５０は次にステップＳ５０３を実行する。
【０３９６】
逆に、ＰＥ＿ｏ（Ｎ＋１）がＰＥ（ｎｚ）である場合、ＰＥ＿ｏ（Ｎ＋１）に割り当てるセルのＺ方向の範囲に関して、Ｚ座標の上限を調整する余地はない。よって、この場合、ホスト端末１５０は、ＰＥ＿ｏ（Ｎ＋１）に割り当てるセルの範囲に関して、Ｚ座標の下限を調整するか否かを決めるために、次にステップＳ５１１を実行する。
【０３９７】
さて、ステップＳ５０３〜Ｓ５０８のループは、図１４のステップＳ４０３に対応する。また、ステップＳ５０９とステップＳ５１０〜Ｓ５１２のループは、図１４のステップＳ４０４に対応する。
【０３９８】
なお、以下では説明の便宜上、ＰＥ間のトポロジのＺ方向において、ＰＥ＿ｏ（１）よりも原点に近いＰＥ（例えば図１４におけるＰＥ（１）など）を、「出力を担当しない、近端側（near side）のＰＥ」と言う。逆に、ＰＥ間のトポロジのＺ方向において、ＰＥ＿ｏ（Ｎ＋１）よりも原点から遠いＰＥ（例えば図１４におけるＰＥ（５）とＰＥ（６）など）を、「出力を担当しない、遠端側（far side）のＰＥ」と言う。
【０３９９】
また、Ｚ方向において出力領域よりも原点に近い位置にあるセル（例えば図１４において、セルの最遠端のＺ座標が９以下であるようなセル）を、「出力領域外にある近端側のセル」と言う。逆に、Ｚ方向において出力領域よりも原点から遠い位置にあるセル（例えば図１４において、セルの最近端のＺ座標が１８以上であるようなセル）を、「出力領域外にある遠端側のセル」と言う。
【０４００】
具体的には、ステップＳ５０３でホスト端末１５０は、ＰＥ＿ｏ（Ｎ＋１）に割り当てられるセルの集合と、出力を担当しない遠端側のＰＥに割り当てられるセルの集合との境界のＺ座標を、１だけ減らす。ステップＳ５０３は、図１４のステップＳ４０３で境界Ｂ１を左の方向に１セル分だけ移動することに対応する。
【０４０１】
次に、ステップＳ５０４でホスト端末１５０は、出力を担当しない遠端側の全ＰＥに、出力領域外にある遠端側の全セルを均等に割り当てる。つまり、Ｚ方向において、ステップＳ５０３で更新された境界のＺ座標から、解析対象領域のＺ座標の上限までの範囲に含まれるセルを、ホスト端末１５０は、出力を担当しない遠端側の全ＰＥに均等に割り当てる。なお、ステップＳ５０４が実行される場合、出力を担当しない遠端側のＰＥの個数は１以上である（なぜなら、ＰＥ＿ｏ（Ｎ＋１）≠ＰＥ（ｎｚ）だということがステップＳ５０２で既に確認されているため）。
【０４０２】
次に、ステップＳ５０５でホスト端末１５０は、ステップＳ５０４での暫定的な割り当てに基づいて、出力を担当しない遠端側のＰＥの合計処理時間（以下「Ｔ２」とする）を算出する。
【０４０３】
ところで、上記のとおり出力を担当しない遠端側のＰＥの個数は１以上である。ホスト端末１５０は、そのうちの任意の１台のＰＥについて合計処理時間を算出し、算出結果を合計処理時間Ｔ２として用いてもよい。あるいは、ホスト端末１５０は、出力を担当しない遠端側の全ＰＥについてそれぞれ合計処理時間を算出し、算出した合計処理時間の平均値を合計処理時間Ｔ２として用いてもよい。
【０４０４】
上記のとおり、ステップＳ５０４の割り当ては、セルの数に関して均等な割り当てである。よって、Ｚ方向のセルの個数についての端数の影響や、セルの数以外の要因による影響がわずかならば、ホスト端末１５０は、出力を担当しない遠端側の任意の１台のＰＥの合計処理時間を、合計処理時間Ｔ２として用いてもよい。
【０４０５】
逆に、出力を担当しない遠端側のＰＥ間での、以下のような種々の影響による合計処理時間のばらつきを考慮に入れるために、ホスト端末１５０は、出力を担当しない遠端側の全ＰＥの合計処理時間の平均値を、合計処理時間Ｔ２として用いてもよい。
【０４０６】
・Ｚ方向のセルの個数についての端数の影響。
・波源もしくは回路素子が存在するセルがあるか否かによる影響。
・媒質間の境界もしくは吸収境界に接するセルがあるか否かによる影響。
【０４０７】
なお、ステップＳ５０５でホスト端末１５０が個々のＰＥについて合計処理時間を算出する具体的な方法は、図５のステップＳ１０７で制御装置１２０が各ＰＥの処理時間を見積もる方法と同様である。また、後述のステップＳ５０７、Ｓ５１１、Ｓ５１７、Ｓ５１９、Ｓ５２３などにおいても、ホスト端末１５０は、ステップＳ１０７と同様の方法で合計処理時間を算出する。
【０４０８】
さて次に、ステップＳ５０６でホスト端末１５０は、合計処理時間Ｔ２を、図１４のステップＳ４０３に関して説明した閾値Ｕ２と比較する。
【０４０９】
Ｔ２＜Ｕ２ならば、ステップＳ４０３に関して説明した２つ目の条件が満たされる。よって、Ｔ２＜Ｕ２の場合、「１つ目の条件も満たされるか否か」をさらにチェックするために、ホスト端末１５０は次にステップＳ５０７を実行する。逆に、Ｔ２≧Ｕ２ならば、ホスト端末１５０は次にステップＳ５０９を実行する。
【０４１０】
ステップＳ５０７でホスト端末１５０は、ＰＥ＿ｏ（Ｎ＋１）の合計処理時間（以下「Ｔ１」とする）を算出する。ステップＳ５０７での合計処理時間Ｔ１の算出は、ステップＳ５０１での割り当てと、ステップＳ５０３で移動した境界とに基づく。つまり、合計処理時間Ｔ１は、ＰＥ＿ｏ（Ｎ＋１）に割り当てられるセルの範囲の変更に基づいて算出される。
【０４１１】
次に、ステップＳ５０８でホスト端末１５０は、合計処理時間Ｔ１を、図１４のステップＳ４０３に関して説明した閾値Ｕ１と比較する。
【０４１２】
Ｔ１＜Ｕ１ならば、ステップＳ４０３に関して説明した１つ目の条件も満たされる。よって、Ｔ１＜Ｕ１の場合、図１４のステップＳ４０４のような調整は省略される。具体的には、Ｔ１＜Ｕ１の場合、ホスト端末１５０は次にステップＳ５１３を実行する。
【０４１３】
逆に、Ｔ１≧Ｕ１ならば、ホスト端末１５０は再度ステップＳ５０３を実行する。つまり、場合によっては、ステップＳ５０３〜Ｓ５０８の一連の処理が２回以上繰り返し実行される。そして、そのような繰り返しにより、ＰＥ＿ｏ（Ｎ＋１）に割り当てられるセルの集合と、出力を担当しない遠端側のＰＥに割り当てられるセルの集合との境界のＺ座標が、徐々に減らされてゆく。
【０４１４】
ここで、境界のＺ座標を減らすことは、すなわち、ＰＥ＿ｏ（Ｎ＋１）に割り当てるセルの個数を減らし、代わりに、出力を担当しない遠端側のＰＥに割り当てるセルの個数を増やすことである。このような境界の移動は、ＰＥ＿ｏ（Ｎ＋１）の合計処理時間を閾値Ｕ１未満に抑えるために行われる。
【０４１５】
しかし、場合によっては、ＰＥ＿ｏ（Ｎ＋１）の合計処理時間が閾値Ｕ１未満に減るよりも前に、出力を担当しない遠端側のＰＥの合計処理時間Ｔ２が閾値Ｕ２以上になってしまう可能性がある。つまり、出力を担当しない遠端側のＰＥにホスト端末１５０があまりに多くのセルを割り当てすぎたために、合計処理時間Ｔ２が長くなり過ぎる場合があり得る。この場合、ステップＳ５０６でＴ２≧Ｕ２と判断される。つまり、図１４に関して説明した「２つの条件が同時には満たされない場合」とは、具体的には、ステップＳ５０６でＴ２≧Ｕ２と判断される場合である。
【０４１６】
図１４のステップＳ４０４に関して説明したとおり、２つの条件が同時には満たされない場合、ホスト端末１５０は、以下のように動作する。
【０４１７】
・ＰＥ＿ｏ（Ｎ＋１）に割り当てられるセルの集合の遠端側の境界を、２つ目の条件が満たされる中で最も原点に近いＺ座標に固定する。
・１つ目の条件が満たされるように、ＰＥ＿ｏ（Ｎ＋１）に割り当てられるセルの集合の近端側の境界を調整する。
【０４１８】
図１４のステップＳ４０４での調整は、図１５のステップＳ５０９〜Ｓ５１２に相当する。
【０４１９】
具体的には、まず、ステップＳ５０９でホスト端末１５０は、直近のステップＳ５０３で減らしたＺ座標を１つだけ戻す。つまり、ホスト端末１５０は、ＰＥ＿ｏ（Ｎ＋１）に割り当てられるセルの集合と、出力を担当しない遠端側のＰＥに割り当てられるセルの集合との境界のＺ座標を、１つだけ増やす。例えば図１４に関して例示したようなやり方によって、閾値Ｕ２が適切に定められている限り、ステップＳ５０９の実行により２つ目の条件が再度満たされるようになる。
【０４２０】
また、ステップＳ５０９の結果として、ＰＥ＿ｏ（Ｎ＋１）に割り当てられるセルの集合と、出力を担当しない遠端側のＰＥに割り当てられるセルの集合との境界が固定される。なおここでの「固定」とは、図１５〜１６の再割り当て処理の中での「固定」に過ぎず、図１５〜１６の処理による再割り当て自体がまだ暫定的なものであることに注意されたい。
【０４２１】
次に、ステップＳ５１０でホスト端末１５０は、ＰＥ＿ｏ（Ｎ＋１）に割り当てられるセルの集合と、ＰＥ＿ｏ（Ｎ）に割り当てられるセルの集合との境界のＺ座標を、１だけ増やす。例えば、図１４のステップＳ４０４での境界Ｂ２の移動は、ステップＳ５１０に相当する。
【０４２２】
次に、ステップＳ５１１でホスト端末１５０は、ＰＥ＿ｏ（Ｎ＋１）の合計処理時間Ｔ１を算出する。ステップＳ５１１では、ステップＳ５０９で固定された遠端側の境界と、ステップＳ５１０で変更された近端側の境界に基づいて（つまり、ＰＥ＿ｏ（Ｎ＋１）に割り当てられるセルの範囲の変更に基づいて）、合計処理時間Ｔ１が算出される。
【０４２３】
そして、ステップＳ５１２でホスト端末１５０は、合計処理時間Ｔ１を閾値Ｕ１と比較する。
【０４２４】
Ｔ１＜Ｕ１ならば、ステップＳ４０３に関して説明した１つ目の条件も満たされる。よって、Ｔ１＜Ｕ１の場合、図１４のステップＳ４０５のような調整が適用可能か否かをチェックするために、ホスト端末１５０は次にステップＳ５１３を実行する。
【０４２５】
逆に、Ｔ１≧Ｕ１ならば、ホスト端末１５０は再度ステップＳ５１０を実行する。つまり、場合によっては、ステップＳ５１０〜Ｓ５１２の一連の処理が２回以上繰り返し実行される。そして、そのような繰り返しにより、ＰＥ＿ｏ（Ｎ＋１）に割り当てられるセルの個数が徐々に減らされてゆく。例えば図１４に関して例示したようなやり方によって閾値Ｕ１が適切に定められている限り、セルの個数の減少に応じて、いずれはステップＳ５１２でＴ１＜Ｕ１と判断される。
【０４２６】
また、ステップＳ５０２に関して述べたように、ＰＥ＿ｏ（Ｎ＋１）がＰＥ（ｎｚ）である場合にも、ステップＳ５１１が実行され、続いてステップＳ５１２が実行される。この場合、合計処理時間Ｔ１が閾値Ｕ１未満ならば、ＰＥ＿ｏ（Ｎ＋１）に割り当てるセルの個数を調整する必要がない。よって、Ｔ１＜Ｕ１ならば、ホスト端末１５０は次にステップＳ５１３を実行する。逆に、Ｔ１≧Ｕ１ならば、ステップＳ５１０の実行により、ＰＥ＿ｏ（Ｎ＋１）に割り当てるセルの個数が減らされる。
【０４２７】
さて、ステップＳ５１３でホスト端末１５０は、ＰＥ＿ｏ（１）がＰＥ（１）であるか否かを判断する。ＰＥ＿ｏ（１）がＰＥ（１）である場合、ホスト端末１５０は次にステップＳ５１４を実行する。逆に、ＰＥ＿ｏ（１）がＰＥ（１）でない場合、図１４のステップＳ４０５のような調整が適用可能なので、ホスト端末１５０は次に図１６のステップＳ５１５を実行する。
【０４２８】
ステップＳ５１４でホスト端末１５０は、出力領域の残りの部分をＰＥ＿ｏ（１）〜ＰＥ＿ｏ（Ｎ）に均等に割り当てる。ここで、「出力領域の残りの部分」とは、出力領域のＺ方向の最近端から、ステップＳ５１４が実行される時点においてＰＥ＿ｏ（Ｎ＋１）に割り当てられているセルの集合のＺ方向の最近端までの範囲である。
【０４２９】
なお、ステップＳ５１４が実行される場合、ＰＥ＿ｏ（１）はＰＥ（１）である。よって、出力領域外の近端側にセルが１つ以上存在する場合、当該１つ以上のセルはＰＥ＿ｏ（１）に割り当てられている。この場合、ステップＳ５１４の実行の結果として、ＰＥ＿ｏ（１）には、出力領域外にある近端側の上記１つ以上のセルと、ステップＳ５１４での均等な割り当てによる出力領域内の１つ以上のセルが割り当てられることになる。
【０４３０】
ステップＳ５１４での割り当てが完了すると、図１５〜１６の再割り当て処理も完了する。
【０４３１】
さて、図１６のステップＳ５１５〜Ｓ５２４は図１４のステップＳ４０５に対応し、ステップＳ５２５はステップＳ４０６に対応する。また、ステップＳ５１５〜Ｓ５２４は、ステップＳ５０３〜Ｓ５１２と対称な処理である。よって、以下ではステップＳ５１５〜Ｓ５２４の意味についての詳細な説明は省略する。
【０４３２】
ステップＳ５１５でホスト端末１５０は、ＰＥ＿ｏ（１）に割り当てられるセルの集合と、出力を担当しない近端側のＰＥに割り当てられるセルの集合との境界のＺ座標を、１だけ増やす。次に、ステップＳ５１６でホスト端末１５０は、出力を担当しない近端側の全ＰＥに、出力領域外にある近端側の全セルを均等に割り当てる。
【０４３３】
そして、ステップＳ５１７でホスト端末１５０は、ステップＳ５１６での割り当てに基づいて、出力を担当しない近端側のＰＥの合計処理時間（以下「Ｔ４」とする）を算出する。ホスト端末１５０は、出力を担当しない近端側の任意の１台のＰＥの合計処理時間を合計処理時間Ｔ４として用いてもよいし、出力を担当しない近端側の全ＰＥの合計処理時間の平均値を合計処理時間Ｔ４として用いてもよい。
【０４３４】
続いて、ステップＳ５１８でホスト端末１５０は、合計処理時間Ｔ４と閾値Ｕ２を比較する。Ｔ４＜Ｕ２ならば、ホスト端末１５０は、次にステップＳ５１９を実行する。逆に、Ｔ４≧Ｕ２ならば、ホスト端末１５０は次にステップＳ５２１を実行する。
【０４３５】
ステップＳ５１９でホスト端末１５０は、ステップＳ５０１での割り当てと、ステップＳ５１５で移動した境界とに基づいて、ＰＥ＿ｏ（１）の合計処理時間（以下「Ｔ３」とする）を算出する。そして、ステップＳ５２０でホスト端末１５０は、合計処理時間Ｔ３と閾値Ｕ１を比較する。Ｔ３＜Ｕ１ならば、ホスト端末１５０は次にステップＳ５２５を実行する。逆に、Ｔ３≧Ｕ１ならば、ホスト端末１５０は再度ステップＳ５１５を実行する。
【０４３６】
さて、ステップＳ５２１でホスト端末１５０は、直近のステップＳ５１５で増やしたＺ座標を１つだけ戻す。つまり、ホスト端末１５０は、ＰＥ＿ｏ（１）に割り当てられるセルの集合と、出力を担当しない近端側のＰＥに割り当てられるセルの集合との境界のＺ座標を、１だけ減らす。
【０４３７】
次に、ステップＳ５２２でホスト端末１５０は、ＰＥ＿ｏ（１）に割り当てられるセルの集合と、ＰＥ＿ｏ（２）に割り当てられるセルの集合との境界のＺ座標を、１だけ減らす。そして、ステップＳ５２３でホスト端末１５０は、ステップＳ５２１で固定された近端側の境界と、ステップＳ５２２で変更された遠端側の境界に基づいて、ＰＥ＿ｏ（１）の合計処理時間Ｔ３を算出する。
【０４３８】
次に、ステップＳ５２４でホスト端末１５０は、合計処理時間Ｔ３を閾値Ｕ１と比較する。Ｔ３＜Ｕ１ならば、ホスト端末１５０は次にステップＳ５２５を実行する。逆に、Ｔ３≧Ｕ１ならば、ホスト端末１５０は再度ステップＳ５２２を実行する。
【０４３９】
ステップＳ５２５でホスト端末１５０は、出力領域の残りの部分をＰＥ＿ｏ（２）〜ＰＥ＿ｏ（Ｎ）に均等に割り当てる。ここで、「出力領域の残りの部分」とは、ＰＥ＿ｏ（１）に割り当てられているセルの最遠端から、ＰＥ＿ｏ（Ｎ＋１）に割り当てられているセルの最近端までの範囲である。ステップＳ５２５での割り当てが完了すると、図１５〜１６の再割り当て処理も完了する。
【０４４０】
続いて、図１７〜１８のフローチャートについて説明する。上記のように、図１３の処理において、出力を担当するＰＥの集合への新たなＰＥの追加が、ステップＳ３０４で行われた場合は、図１７〜１８のフローチャートにしたがって図５のステップＳ１１２の再割り当てが行われる。また、図１７〜１８のフローチャートは、「Ｚ軸の正の方向か負の方向か」ということに関して、図１５〜１６のフローチャートと対称的である。よって、図１７〜１８のフローチャートについては簡単に説明する。
ステップＳ６０１はステップＳ５０１と同様である。
【０４４１】
次に、ステップＳ６０２でホスト端末１５０は、ＰＥ＿ｏ（１）がＰＥ（１）であるか否かを判断する。ＰＥ＿ｏ（１）がＰＥ（１）の場合、ホスト端末１５０は次にステップＳ６１１を実行する。ＰＥ＿ｏ（１）がＰＥ（１）ではない場合、ホスト端末１５０は次にステップＳ６０３を実行する。ステップＳ６０３〜Ｓ６１２は、ステップＳ５１５〜Ｓ５２４と同様である。
【０４４２】
ステップＳ６０８またはＳ６１２でＴ３＜Ｕ１と判断した場合、ホスト端末１５０は、次にステップＳ６１３を実行する。具体的には、ステップＳ６１３でホスト端末１５０は、ＰＥ＿ｏ（Ｎ＋１）がＰＥ（ｎｚ）であるか否かを判断する。
【０４４３】
ＰＥ＿ｏ（Ｎ＋１）がＰＥ（ｎｚ）である場合、ホスト端末１５０は、次にステップＳ６１４を実行する。逆に、ＰＥ＿ｏ（Ｎ＋１）がＰＥ（ｎｚ）ではない場合、ホスト端末１５０は、次に図１８のステップＳ６１５を実行する。
【０４４４】
ステップＳ６１４でホスト端末１５０は、出力領域の残りの部分をＰＥ＿ｏ（２）〜ＰＥ＿ｏ（Ｎ＋１）に均等に割り当てる。ここで、「出力領域の残りの部分」とは、ステップＳ６１４が実行される時点においてＰＥ＿ｏ（１）に割り当てられているセルの集合のＺ方向の最遠端から、出力領域のＺ方向の最遠端までの範囲である。ステップＳ６１４での割り当てが完了すると、図１７〜１８の再割り当て処理も完了する。
【０４４５】
さて、ステップＳ６１５〜Ｓ６２４は、ステップＳ５０３〜Ｓ５１２と同様である。ステップＳ６２０またはＳ６２４でＴ１＜Ｕ１と判断した場合、ホスト端末１５０は、次にステップＳ６２５を実行する。ステップＳ６２５はステップＳ５２５と同様である。ステップＳ６２５での割り当てが完了すると、図１７〜１８の再割り当て処理も完了する。
【０４４６】
さて、図１９は、第２実施形態による最終的な割り当ての例を示す図である。図１９は、具体的には、ステップＳ１０４で図８のような初期割り当てが行われた場合の、最終的な割り当ての例を示す。図１９における解析対象領域Ａ１、出力領域Ａ２、および物体領域Ａ３は、図８と同様である。また、図１９は、Ｚ軸方向の割り当ての変更のみが行われる場合（つまりＹ軸方向での割り当ての変更は行われない場合）の例である。０≦ｊ≦４なる各ｊについて、以下のことが成り立つ。
【０４４７】
図８では、ＰＥ（５ｊ＋１）に、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ４ｊ≦Ｙ≦４ｊ＋４かつ０≦Ｚ≦４を満たすような、１６×ＸＮ個のセルが割り当てられている。一方、図１９では、ＰＥ（５ｊ＋１）に、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ４ｊ≦Ｙ≦４ｊ＋４かつ０≦Ｚ≦５を満たすような、２０×ＸＮ個のセルが割り当てられている。
【０４４８】
図８では、ＰＥ（５ｊ＋２）に、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ４ｊ≦Ｙ≦４ｊ＋４かつ４≦Ｚ≦８を満たすような、１６×ＸＮ個のセルが割り当てられている。一方、図１９では、ＰＥ（５ｊ＋２）に、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ４ｊ≦Ｙ≦４ｊ＋４かつ５≦Ｚ≦７を満たすような、８×ＸＮ個のセルが割り当てられている。
【０４４９】
図８では、ＰＥ（５ｊ＋３）に、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ４ｊ≦Ｙ≦４ｊ＋４かつ８≦Ｚ≦１２を満たすような、１６×ＸＮ個のセルが割り当てられている。一方、図１９では、ＰＥ（５ｊ＋３）に、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ４ｊ≦Ｙ≦４ｊ＋４かつ７≦Ｚ≦１０を満たすような、１２×ＸＮ個のセルが割り当てられている。
【０４５０】
図８では、ＰＥ（５ｊ＋４）に、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ４ｊ≦Ｙ≦４ｊ＋４かつ１２≦Ｚ≦１６を満たすような、１６×ＸＮ個のセルが割り当てられている。一方、図１９では、ＰＥ（５ｊ＋４）に、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ４ｊ≦Ｙ≦４ｊ＋４かつ１０≦Ｚ≦１５を満たすような、２０×ＸＮ個のセルが割り当てられている。
【０４５１】
図８では、ＰＥ（５ｊ＋５）に、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ４ｊ≦Ｙ≦４ｊ＋４かつ１６≦Ｚ≦２０を満たすような、１６×ＸＮ個のセルが割り当てられている。一方、図１９では、ＰＥ（５ｊ＋５）に、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ４ｊ≦Ｙ≦４ｊ＋４かつ１５≦Ｚ≦２０を満たすような、２０×ＸＮ個のセルが割り当てられている。
【０４５２】
以上のとおり、図１９の最終的な割り当てによれば、出力領域Ａ２に含まれるセルが割り当てられたＰＥには、８×ＸＮ〜１２×ＸＮ個という相対的に少ない数のセルのみが割り当てられる。一方、出力領域Ａ２に含まれるセルが割り当てられていないＰＥには、２０×ＸＮ個という相対的に多い数のセルが割り当てられる。その結果、全体としてはＰＥ間で合計処理時間の均一性が高まり、無駄な待ち時間が減る。よって、解析全体も高速化する。
【０４５３】
さて、図２０は、第２実施形態によって解析時間が短縮される効果を示す図である。図２０では、図８の初期割り当てが最終的に採用される場合の例Ｅ６と、図１９の割り当てが採用される場合の例Ｅ７が比較されている。図２と同様に図２０においても、黒く塗った部分は出力処理を示し、斜線パターンの部分は待ち時間を示す。また、図８と１９にはＰＥ（１）〜ＰＥ（２５）へのセルの割り当てが示されているが、図２０では紙幅の都合上、ＰＥ（１）〜ＰＥ（５）についてのみ、合計処理時間の内訳が示されている。
【０４５４】
例Ｅ７において、１ステップ時間に関する解析ごとにかかる時間はＬ１秒である。他方、例Ｅ６において、１ステップ時間に関する解析ごとにかかる時間は（Ｌ１＋Ｌ２）秒である。つまり、第２実施形態によれば、１ステップ時間あたりＬ２秒の時間が短縮される。
【０４５５】
以下、例Ｅ６とＥ７についてより詳しく説明する。なお、簡単化のため、図２０には、式（９）のＣａｌ（ｈ，ｇ）がセルの位置によらずほぼ一定の場合が例示されている。また、説明の便宜上、図８と１９に関して述べたＸ方向のセルの個数ＸＮが１０個であるものとする。
【０４５６】
図８の割り当てでは、ＰＥ（１）〜ＰＥ（５）のいずれにも、１６０（＝１０×４×４）個のセルが割り当てられている。よって、例Ｅ６では、ＰＥ（１）〜ＰＥ（５）はほぼ同じ時間で電界の計算を終える。
【０４５７】
また、例Ｅ６ではＰＥ（２）は１２０（＝１０×４×３）個のセルのデータの出力を担当するが、ＰＥ（１）とＰＥ（３）〜ＰＥ（５）は出力を担当しない。ここで、出力間隔Ｉｎｔｖ（式（２１）を参照）がユーザにより指定されているものとする。また、出力処理は時間的に分散されるものとする。具体的には、１ステップ時間についての処理あたり、ＰＥ（２）は１２０／Ｉｎｔｖ個のセルのデータを出力するものとする。例Ｅ６では、ＰＥ（２）は、電界の計算後、１２０／Ｉｎｔｖ個のセルの電界のデータを出力し、磁界の計算後、１２０／Ｉｎｔｖ個のセルの磁界のデータを出力するものとする。
【０４５８】
ＰＥ（２）が１２０／Ｉｎｔｖ個のセルの電界のデータを出力している間、ＰＥ（１）とＰＥ（３）〜ＰＥ（５）は何もせず、ただＰＥ（２）が出力処理を終えるのを待っている。そして、ＰＥ（２）が１２０／Ｉｎｔｖ個のセルの電界のデータを出力し終えると、電界のデータを送受信する処理を各ＰＥが行う。
【０４５９】
ここで、図４のトポロジＴ２では１台のＰＥには最大で４台の隣接ＰＥがある。ＰＥは、４台の隣接ＰＥと並列に通信することができるように構成されていてもよい。この場合、ＰＥがデータの送受信を行うのにかかる時間は、隣接ＰＥとのデータの送受信にかかる時間のうちの最大値である。
【０４６０】
図８によれば、ＰＥ（１）〜ＰＥ（５）の各々は、Ｙ方向の隣接ＰＥには、４０（＝１０×４）個のセルのデータを送信し、Ｚ方向の隣接ＰＥには、４０（＝１０×４）個のセルのデータを送信する。受信に関しても同様である。よって、ＰＥ（１）〜ＰＥ（５）のいずれにおいても、電界のデータの送受信にかかる時間は、４０個のセルのデータを送受信するのにかかる時間である。
【０４６１】
また、データ送受信の完了後、ＰＥ（１）〜ＰＥ（５）の各々は、割り当てられた１６０個のセルそれぞれについて磁界を計算する。例Ｅ６では、ＰＥ（１）〜ＰＥ（５）はほぼ同じ時間で磁界の計算を終える。
【０４６２】
その後、ＰＥ（２）は、１２０／Ｉｎｔｖ個のセルの磁界のデータを出力するが、ＰＥ（１）とＰＥ（３）〜ＰＥ（５）は、その出力処理の間、何もしない。そして、ＰＥ（２）が１２０／Ｉｎｔｖ個のセルの磁界のデータを出力し終えると、磁界のデータを送受信する処理を各ＰＥが行う。磁界のデータを送受信するのにかかる時間も、電界のデータを送受信するのにかかる時間と同様である。
【０４６３】
したがって、例Ｅ６では、１ステップ時間についての解析あたり、ＰＥ（２）が２４０／Ｉｎｔｖ（＝１２０／Ｉｎｔｖ＋１２０／Ｉｎｔｖ）個のセルのデータを出力するのにかかる時間だけ、他の４台のＰＥに無駄な待ち時間が生じている。他方、例Ｅ７は、合計処理時間の均等性が高くなるように、図１９のような割り当てが最終的に決められた場合の例である。例Ｅ７では待ち時間が少ないので、解析全体にかかる時間も短い。
【０４６４】
具体的には、図１９の割り当てでは、ＰＥ（１）とＰＥ（４）とＰＥ（５）の各々には、出力領域に属さない２００（＝１０×４×５）個のセルが割り当てられている。また、ＰＥ（１）とＰＥ（４）とＰＥ（５）の各々は、Ｙ方向の隣接ＰＥに５０（＝１０×５）個のセルのデータを送信し、Ｙ方向の隣接ＰＥから５０個のセルのデータを受信する。そして、ＰＥ（１）とＰＥ（４）とＰＥ（５）の各々は、Ｚ方向の隣接ＰＥに４０（＝１０×４）個のセルのデータを送信し、Ｚ方向の隣接ＰＥから４０個のセルのデータを受信する。
【０４６５】
よって、例Ｅ７では、ＰＥ（１）とＰＥ（４）とＰＥ（５）の各々が電界の計算をするのにかかる時間は、２００個のセルについて電界を計算するのにかかる時間である。また、ＰＥ（１）とＰＥ（４）とＰＥ（５）の各々が電界のデータの送受信を行うのにかかる時間は、５０個のセルのデータを送受信するのにかかる時間である。なぜなら、ｍａｘ（５０，４０）＝５０だからである。
【０４６６】
同様に、例Ｅ７では、ＰＥ（１）とＰＥ（４）とＰＥ（５）の各々が磁界の計算をするのにかかる時間は、２００個のセルについて磁界を計算するのにかかる時間である。また、ＰＥ（１）とＰＥ（４）とＰＥ（５）の各々が磁界のデータの送受信を行うのにかかる時間は、５０個のセルのデータを送受信するのにかかる時間である。
【０４６７】
他方、図１９の割り当てでは、ＰＥ（２）には、出力領域に属する８０（＝１０×４×２）個のセルが割り当てられている。また、ＰＥ（２）は、Ｙ方向の隣接ＰＥに２０（＝１０×２）個のセルのデータを送信し、Ｙ方向の隣接ＰＥから２０個のセルのデータを受信する。そして、ＰＥ（２）は、Ｚ方向の隣接ＰＥに４０（＝１０×４）個のセルのデータを送信し、Ｚ方向の隣接ＰＥから４０個のセルのデータを受信する。
【０４６８】
よって、例Ｅ７では、ＰＥ（２）が電界を計算するのにかかる時間は、８０個のセルについて電界を計算するのにかかる時間である。また、ＰＥ（２）が電界のデータの送受信を行うのにかかる時間は、４０個のセルのデータを送受信するのにかかる時間である。
【０４６９】
同様に、例Ｅ７では、ＰＥ（２）が磁界を計算するのにかかる時間は、８０個のセルについて磁界を計算するのにかかる時間である。また、ＰＥ（２）が磁界のデータの送受信を行うのにかかる時間は、４０個のセルのデータを送受信するのにかかる時間である。
【０４７０】
また、例Ｅ７でＰＥ（２）は、電界を計算した後、８０／Ｉｎｔｖ個のセルの電界のデータを出力する。同様に、ＰＥ（２）は、磁界を計算した後、８０／Ｉｎｔｖ個のセルの磁界のデータを出力する。
【０４７１】
さて、図１９の割り当てでは、ＰＥ（３）には、出力領域に属する４０（＝１０×４×１）個のセルと、出力領域に属さない８０（＝１０×４×２）個のセルが割り当てられている。また、ＰＥ（３）は、Ｙ方向の隣接ＰＥに３０（＝１０×３）個のセルのデータを送信し、Ｙ方向の隣接ＰＥから３０個のセルのデータを受信する。そして、ＰＥ（３）は、Ｚ方向の隣接ＰＥに４０（＝１０×４）個のセルのデータを送信し、Ｚ方向の隣接ＰＥから４０個のセルのデータを受信する。
【０４７２】
よって、例Ｅ７では、ＰＥ（３）が電界を計算するのにかかる時間は、１２０（＝４０＋８０）個のセルについて電界を計算するのにかかる時間である。また、ＰＥ（３）が電界のデータの送受信を行うのにかかる時間は、４０個のセルのデータを送受信するのにかかる時間である。
【０４７３】
同様に、例Ｅ７では、ＰＥ（３）が磁界を計算するのにかかる時間は、１２０個のセルについて磁界を計算するのにかかる時間である。また、ＰＥ（３）が磁界のデータの送受信を行うのにかかる時間は、４０個のセルのデータを送受信するのにかかる時間である。
【０４７４】
また、例Ｅ７でＰＥ（３）は、電界を計算した後、４０／Ｉｎｔｖ個のセルの電界のデータを出力する。同様に、ＰＥ（３）は、磁界を計算した後、４０／Ｉｎｔｖ個のセルの磁界のデータを出力する。
【０４７５】
例Ｅ７では、２００個のセルについて電界を計算するのにかかる時間は、８０個のセルについて電界を計算するのにかかる時間と、８０／Ｉｎｔｖ個のセルの電界のデータを出力するのにかかる時間の和よりも少し長い。また、例Ｅ７では、２００個のセルについて電界を計算するのにかかる時間は、１２０個のセルについて電界を計算するのにかかる時間と、４０／Ｉｎｔｖ個のセルの電界のデータを出力するのにかかる時間の和よりも少し長い。よって、例Ｅ７では、ＰＥ（２）とＰＥ（３）は、いずれも、出力処理を終えた後、ＰＥ（１）とＰＥ（４）とＰＥ（５）が電界の計算を終了するのを待つ。しかし、この待ち時間はそれほど長くない。磁界の計算と磁界のデータの出力に関しても同様である。
【０４７６】
また、ＰＥ（１）とＰＥ（４）とＰＥ（５）の各々がデータの送受信を行うのにかかる時間は、５０個のセルのデータを送受信するのにかかる時間である。しかし、ＰＥ（２）とＰＥ（３）の各々がデータの送受信を行うのにかかる時間は、４０個のセルのデータを送受信するのにかかる時間である。よって、ＰＥ（２）とＰＥ（３）は、いずれも、データの送受信を終えた後、ＰＥ（１）とＰＥ（４）とＰＥ（５）がデータの送受信を終えるのを待つ。しかし、この待ち時間はわずかである。
【０４７７】
よって、４台のＰＥが比較的長い時間遊んでいる例Ｅ６と比べると、２台のＰＥが短時間だけ遊んでいる例Ｅ７の方が、ＰＥ（１）〜ＰＥ（５）のリソースが効率よく利用されている。その結果、例Ｅ６では１ステップ時間あたりの解析が（Ｌ１＋Ｌ２）秒かかるのに対し、例Ｅ７では１ステップ時間あたりの解析がＬ１秒で終わる。
【０４７８】
続いて、図２１〜２３を参照して第３実施形態について説明する。なお、第２実施形態との共通点については、適宜説明を省略する。既に述べたとおり、第３実施形態は、図１のステップＳ２で「第２の台数」が動的に変更される場合に相当する。つまり、第３実施形態では、使用可能なＰＥが余っている場合に好適である。
【０４７９】
図２１は、第３実施形態のシステムの動作シーケンス図である。図２１を図５と比較すれば分かるように、第３実施形態では、第２実施形態におけるステップＳ１１１の処理がステップＳ７０１の処理に置き換えられる。また、第３実施形態では、第２実施形態におけるステップＳ１１２の処理がステップＳ７０２の処理に置き換えられる。
【０４８０】
また、第２実施形態では、解析に使うＰＥの台数ｎがステップＳ１０４で決められ、固定される。しかし、第３実施形態では、解析に使うＰＥの台数ｎは、ステップＳ１０４では暫定的に決められるに過ぎず、後にステップＳ７０１で台数ｎが増やされることがある。
【０４８１】
しかし、その他の点（図２１中のその他のステップ、および、図６〜７中のステップ）では、第３実施形態は第２実施形態と同様である。以下、第２実施形態との違いについて説明する。
【０４８２】
ステップＳ７０１でホスト端末１５０は、解析に使用するＰＥの台数ｎを増やす。
上記のとおり、第２実施形態のステップＳ１１１では、ホスト端末１５０が、ｎ台のＰＥのうち、出力領域を担当するＰＥを含むような、ある１行のＰＥに着目する。同様に、ステップＳ７０１でも、ある１行のＰＥが着目される。
【０４８３】
具体的には、ホスト端末１５０は、着目した行のｎｚ台のＰＥの間での合計処理時間の偏りに基づいて、ＰＥの列の数をｎｚから（ｎｚ＋Ｍ）に増やす。つまり、ステップＳ７０１でホスト端末１５０は、解析に使うＰＥの台数をｎ（＝ｎｙ×ｎｚ）からｎｙ×（ｎｚ＋Ｍ）に増やす。ホスト端末１５０は、ステップＳ７０１において、例えば後述の図２２のフローチャートにしたがって、解析に使用するＰＥを増やしてもよい。
【０４８４】
すると、ステップＳ７０２でホスト端末１５０は、ｎｙ×（ｎｚ＋Ｍ）台のＰＥへのセルの再割り当てを実行する。より具体的には、ホスト端末１５０は、各行内で（ｎｚ＋Ｍ）台のＰＥのうちの（Ｎ＋Ｍ）台のＰＥが出力処理を担当するように、ＰＥへのセルの割り当てをステップＳ７０２で変更する。つまり、ホスト端末１５０は、ある１行に関して割り当てを変更し、変更後の割り当てを他の行にも適用する。そして、ステップＳ７０２での再割り当ての後、ホスト端末１５０は再度ステップＳ１０５を実行する。
【０４８５】
第３実施形態においても第２実施形態と同様に、図１のステップＳ２における基準が満たされるという条件下で、適切な割り当てが見い出される。なぜなら、ステップＳ１０８で合計処理時間のばらつきが許容範囲内であることが確認されてから、ステップＳ１０９で最終的に割り当てが決定されるからである。したがって、第３実施形態によっても、解析の高速化という効果が得られる。
【０４８６】
さて、図２２は、解析に使用するＰＥの数を増やす処理のフローチャートである。
ステップＳ８０１でホスト端末１５０は、着目している行のｎｚ台のＰＥのうち、出力を担当しないＰＥの合計処理時間Ｔ（ｈ）の基準値Ｔｒｅｆを算出する。ホスト端末１５０は、ステップＳ１０８で制御装置１２０が基準値Ｔｒｅｆを算出するのと同様にして、基準値Ｔｒｅｆを算出する。
【０４８７】
つまり、ホスト端末１５０は、出力を担当しない任意の１台のＰＥの合計処理時間を基準値Ｔｒｅｆとして用いてもよいし、出力を担当しないＰＥにおける合計処理時間Ｔ（ｈ）の統計量を、基準値Ｔｒｅｆとして用いてもよい。統計量は、具体的には例えば最小値であってもよい。
【０４８８】
次に、ステップＳ８０２でホスト端末１５０は、インデックス変数ｑを１に初期化する。
【０４８９】
次に、ステップＳ８０３でホスト端末１５０は、ＰＥ＿ｏ（ｑ）（すなわち、現在の暫定的な割り当てにおいて出力を担当するｑ台目のＰＥ）の合計処理時間を算出する。以下では説明の便宜上、ＰＥ＿ｏ（ｑ）の合計処理時間を「Ｔｏ（ｑ）」と表記する。ステップＳ８０３での合計処理時間Ｔｏ（ｑ）の算出方法は、制御装置１２０がステップＳ１０７で合計処理時間を算出する方法と同様である。
【０４９０】
さらに、ステップＳ８０４でホスト端末１５０は、ＰＥ＿ｏ（ｑ）の合計処理時間Ｔｏ（ｑ）と基準値Ｔｒｅｆとの差を算出する。以下では説明の便宜上、算出された差を「Ｔ＿ｏｕｔ（ｑ）」と表記する。
【０４９１】
続いて、ステップＳ８０５でホスト端末１５０は、差Ｔ＿ｏｕｔ（ｑ）と閾値（便宜上、「Ｔｂ」と表記する）を比較する。閾値Ｔｂは、基準値Ｔｒｅｆに応じた値であってもよい。例えば、閾値Ｔｂは、基準値Ｔｒｅｆに比較的小さな正の定数（例えば０．１）を掛けて得られる値であってもよい。なお、ここでの「０．１」という値は、単なる例示のための値である。
【０４９２】
Ｔ＿ｏｕｔ（ｑ）＜Ｔｂの場合、ホスト端末１５０は、「出力を担当しない他のＰＥと比べてＰＥ＿ｏ（ｑ）に過剰に負荷がかかるわけではない」と判断する。よって、Ｔ＿ｏｕｔ（ｑ）＜Ｔｂの場合、ホスト端末１５０は、次にステップＳ８０６を実行する。
【０４９３】
逆に、Ｔ＿ｏｕｔ（ｑ）≧Ｔｂの場合、ホスト端末１５０は、「現在の暫定的な割り当てによれば、出力を担当しない他のＰＥと比べてＰＥ＿ｏ（ｑ）に過剰に負荷がかかってしまう」と判断する。つまり、ホスト端末１５０は、「現在の暫定的な割り当てによってＰＥ＿ｏ（ｑ）に割り当てられているセルを、ＰＥ＿ｏ（ｑ）と、さらに１台以上のＰＥとに分散化することが適切である」と判断する。よって、Ｔ＿ｏｕｔ（ｑ）≧Ｔｂの場合、「分散化のために新たに何台のＰＥを追加するか」を決めるため、ホスト端末１５０は次にステップＳ８０７を実行する。
【０４９４】
以下では説明の便宜上、現在の暫定的な割り当てによってＰＥ＿ｏ（ｑ）に割り当てられているセルを割り当て直す対象のＰＥの台数を「ｍ（ｑ）」と表記する。
【０４９５】
ステップＳ８０６でホスト端末１５０は、ｍ（ｑ）を１に設定する。逆に、ステップＳ８０７でホスト端末１５０は、式（２９）のようにｍ（ｑ）を設定する。
m(q)=int(T_out(q)/Tb)    (29)
【０４９６】
なお、式（２９）における関数ｉｎｔ（ｒ）は、引数ｒに最も近い整数を返す関数でもよいし、切り上げ関数でもよいし、切り捨て関数でもよい。ステップＳ８０６またはＳ８０７でのｍ（ｑ）の設定後、ホスト端末１５０は、ステップＳ８０８において、「インデックス変数ｑと、１行のｎｚ台のＰＥのうち現在の暫定的な割り当てにおいて出力を担当するＰＥの台数Ｎとが等しいか否か」を判断する。
【０４９７】
もし、ｑ≠Ｎであれば（具体的にはｑ＜Ｎであれば）、ホスト端末１５０は次にステップＳ８０９を実行する。逆に、ｑ＝Ｎであれば、ホスト端末１５０は次にステップＳ８１０を実行する。
【０４９８】
ステップＳ８０９でホスト端末１５０は、インデックス変数ｑを１だけインクリメントする。そして、ホスト端末１５０は再度ステップＳ８０３を実行する。
【０４９９】
一方、ステップＳ８１０でホスト端末１５０は、式（３０）にしたがって、１行あたりに増やすＰＥの台数Ｍを算出する。
M = max(1, m(1)+m(2)+…+m(N)-N)    (30)
【０５００】
ところで、実際に１行あたりＭ台のＰＥを解析用に追加することが可能であるか否かは、使用可能な残りのＰＥの台数（より正確には、ＰＥ間のネットワークトポロジ中のどの位置に、それら使用可能なＰＥが残っているか）による。よって、ステップＳ８１０の次に、ステップＳ８１１で、ホスト端末１５０は、使用可能なＰＥが十分に残っているか否かを判断する。
【０５０１】
例えば、ＰＥ同士が図４のトポロジＴ２のように２次元状に接続されており、ｎｙ＝３かつｎｚ＝４かつＭ＝２だとする。この場合、ホスト端末１５０は、「列の数を４から６（＝４＋２）に増やすことが可能か否か」を判断する。つまり、ホスト端末１５０は、「３行×６列の範囲の１８台のＰＥが、使用可能な状態で残っているか否か」を判断する。ステップＳ８１１の判断は、ステップＳ１０３での制御装置１２０からの通知に基づく。
【０５０２】
列の数をｎｚから（ｎｚ＋Ｍ）に増やすことが可能である場合（つまり、ｎｙ行×（ｎｚ＋Ｍ）列の範囲のｎｙ×（ｎｚ＋Ｍ）台のＰＥが使用可能な状態である場合）、使用可能なＰＥが十分に残っている。よって、この場合、ステップＳ８１０で計算した値Ｍを減らす必要はないので、図２２の処理も終了する。
【０５０３】
逆に、使用可能なＰＥの台数がｎｙ×（ｎｚ＋Ｍ）台に満たない場合、または、使用可能なＰＥが、ｎｙ行×（ｎｚ＋Ｍ）列の範囲に連続していない場合には、ホスト端末１５０は「使用可能なＰＥが十分には残っていない」と判断する。そして、ホスト端末１５０は、「使用可能なＰＥが十分には残っていない」と判断した場合、ステップＳ８１２で、使用可能な残りのＰＥに応じて、Ｍの値を減らす。
【０５０４】
例えば、ＰＥ同士が図４のトポロジＴ２のように２次元状に接続されており、ｎｙ＝３かつｎｚ＝４だとする。また、ホスト端末１５０がステップＳ８１０でＭの値を２と算出したものとする。そして、ステップＳ１０３の通知によれば、３行×（４＋１）列の範囲に連続した１５台のＰＥが使用可能であるものとする。しかし、３行×（４＋２）列の範囲に渡って使用可能なＰＥが残っている部分は、トポロジＴ２内にはないものとする。この場合、ホスト端末１５０は、ステップＳ８１１でＭの値を１に減らす。ステップＳ８１１でのＭの値の変更が終了すると、図２２の処理も終了する。
【０５０５】
以上のようにして、図２１のステップＳ７０１でホスト端末１５０は、解析に使用するＰＥの台数を、ｎ（＝ｎｙ×ｎｚ）台からｎｙ×（ｎｚ＋Ｍ）台へと増やすことに決める。
【０５０６】
なお、ステップＳ８１２の実行の結果、Ｍの値が０となる場合もあり得る。この場合は、図２１のステップＳ７０２では、第２実施形態と同様の処理が行われる。つまり、Ｍ＝０の場合、ホスト端末１５０は、解析に使うＰＥの総数は増やさずに、出力を担当するＰＥの数を増やす。
【０５０７】
以下では、Ｍ＞０の場合のステップＳ７０２の詳細について説明する。
現在の暫定的な割り当てによれば、各行において、Ｚ方向の原点に近い方から順に、以下のような合計ｎｚ台のＰＥが含まれるものとする。
【０５０８】
・出力を担当しないｕ１台のＰＥ（０≦ｕ１≦ｎｚ−Ｎ）。
・出力を担当するＮ台のＰＥ。
・出力を担当しないｕ２台のＰＥ（０≦ｕ２≦ｎｚ−Ｎ、かつ、ｕ１＋ｕ２＝ｎｚ−Ｎ）
【０５０９】
例えば、ＰＥ（１）〜ＰＥ（ｎｚ）の行では、ＰＥ（１）〜ＰＥ（ｕ１）は出力を担当せず、ＰＥ（ｕ１＋１）〜ＰＥ（ｕ１＋Ｎ）が出力を担当し、ＰＥ（ｕ１＋Ｎ＋１）〜ＰＥ（ｎｚ）は出力を担当しない。
【０５１０】
ホスト端末１５０は、図２１のステップＳ７０２において、具体的には、出力を担当しないｕ１台のＰＥと、出力を担当する（Ｎ＋Ｍ）台のＰＥと、出力を担当しないｕ２台のＰＥが各行に含まれるように、再割り当てを行う。第３実施形態でＭ＞０の場合、ホスト端末１５０は、以下のように変形される図１５〜１６のフローチャートにしたがって、または、以下のように変形される図１７〜１８のフローチャートにしたがって、着目している行について再割り当てを行う。
【０５１１】
具体的には、図１５〜１６の再割り当て処理は、第３実施形態では以下のように変形される。なお、説明の便宜上、変形された図１５〜１６の処理は、ＰＥ（１）〜ＰＥ（ｎｚ＋Ｍ）の行に関して実行されるものとする。
【０５１２】
・ステップＳ５０１では、出力領域のＺ方向の範囲がＰＥ＿ｏ（１）〜ＰＥ＿ｏ（Ｎ＋Ｍ）に均等に割り当てられる。また、出力領域外の近端側のセルの中で相対的に出力領域に近い方に位置する少なくとも一部のセルが、ＰＥ＿ｏ（１）に割り当てられる。同様に、出力領域外の遠端側のセルの中で相対的に出力領域に近い方に位置する少なくとも一部のセルが、ＰＥ＿ｏ（Ｎ＋Ｍ）に割り当てられる。なお、上記の「少なくとも一部のセル」の数（具体的には、Ｚ方向におけるセルの数）は、ホスト端末１５０が任意に決めてよい。
・ステップＳ５０２では、ＰＥ＿ｏ（Ｎ＋Ｍ）とＰＥ（ｎｚ＋Ｍ）が等しいか否かが判断される。
・ステップＳ５０３〜Ｓ５０９とＳ５１１でのＰＥ＿ｏ（Ｎ＋１）に関する処理は、ＰＥ＿ｏ（Ｎ＋Ｍ）に関する処理に置き換えられる。
・ステップＳ５１０でのＰＥ＿ｏ（Ｎ＋１）とＰＥ＿ｏ（Ｎ）に関する処理は、ＰＥ＿ｏ（Ｎ＋Ｍ）とＰＥ＿ｏ（Ｎ＋Ｍ−１）に関する処理に置き換えられる。
・ステップＳ５１４では、出力領域の残りの部分がＰＥ＿ｏ（１）〜ＰＥ＿ｏ（Ｎ＋Ｍ−１）に均等に割り当てられる。
・ステップＳ５２５では、出力領域の残りの部分がＰＥ＿ｏ（２）〜ＰＥ＿ｏ（Ｎ＋Ｍ−１）に均等に割り当てられる。
【０５１３】
また、図１７〜１８の再割り当て処理は、第３実施形態では以下のように変形される。なお、説明の便宜上、変形された図１７〜１８の処理は、ＰＥ（１）〜ＰＥ（ｎｚ＋Ｍ）の行に関して実行されるものとする。
【０５１４】
・ステップＳ６０１では、出力領域のＺ方向の範囲がＰＥ＿ｏ（１）〜ＰＥ＿ｏ（Ｎ＋Ｍ）に均等に割り当てられる。また、出力領域外の近端側のセルの中で相対的に出力領域に近い方に位置する少なくとも一部のセルが、ＰＥ＿ｏ（１）に割り当てられる。同様に、出力領域外の遠端側のセルの中で相対的に出力領域に近い方に位置する少なくとも一部のセルが、ＰＥ＿ｏ（Ｎ＋Ｍ）に割り当てられる。なお、上記の「少なくとも一部のセル」の数（具体的には、Ｚ方向におけるセルの数）は、ホスト端末１５０が任意に決めてよい。
・ステップＳ６１３では、ＰＥ＿ｏ（Ｎ＋Ｍ）とＰＥ（ｎｚ＋Ｍ）が等しいか否かが判断される。そして両者が等しい場合、ステップＳ６１４では、出力領域の残りの部分がＰＥ＿ｏ（２）〜ＰＥ＿ｏ（Ｎ＋Ｍ）に均等に割り当てられる。
・ステップＳ６１５〜Ｓ６２１とＳ６２３でのＰＥ＿ｏ（Ｎ＋１）に関する処理は、ＰＥ＿ｏ（Ｎ＋Ｍ）に関する処理に置き換えられる。
・ステップＳ６２２でのＰＥ＿ｏ（Ｎ＋１）とＰＥ＿ｏ（Ｎ）に関する処理は、ＰＥ＿ｏ（Ｎ＋Ｍ）とＰＥ＿ｏ（Ｎ＋Ｍ−１）に関する処理に置き換えられる。
・ステップＳ６２５では、出力領域の残りの部分がＰＥ＿ｏ（２）〜ＰＥ＿ｏ（Ｎ＋Ｍ−１）に均等に割り当てられる。
【０５１５】
なお、ホスト端末１５０は、「変形された図１５〜１６のフローチャートと、変形された図１７〜１８のフローチャートのどちらにしたがって再割り当てを行うか」ということを、以下のようにして決めてもよい。
【０５１６】
ステップＳ７０２の再割り当てを実行する直前の、現在の暫定的な割り当てにおけるＰＥ＿ｏ（１）が、Ｚ方向において最も原点に近いＰＥである第１の場合（例えばＰＥ＿ｏ（１）がＰＥ（１）である場合）があり得る。この場合、ホスト端末１５０は、変形された図１５〜１６のフローチャートにしたがってステップＳ７０２で再割り当てを行う。
【０５１７】
また、現在の暫定的な割り当てにおけるＰＥ＿ｏ（Ｎ）が、Ｚ方向において最も原点から遠いＰＥである場合（例えばＰＥ＿ｏ（Ｎ）がＰＥ（ｎｚ）である場合）があり得る。この場合、ホスト端末１５０は、変形された図１７〜１８のフローチャートにしたがってステップＳ７０２で再割り当てを行う。
【０５１８】
そして、上記２つの場合のいずれでもない場合、ホスト端末１５０は、以下の２つのＺ座標の比較に基づいて、変形された図１５〜１６のフローチャートと変形された図１７〜１８のフローチャートのいずれかを選んでもよい。
【０５１９】
・現在の暫定的な割り当てのもとでＰＥ＿ｏ（１）〜ＰＥ＿ｏ（Ｎ）に割り当てられる全セルの中心点のＺ座標Ｚｃ。
・出力領域の中心点のＺ座標Ｚｏｃ。
【０５２０】
例えば、Ｚｏｃ＞Ｚｃならば、ホスト端末１５０は、変形された図１５〜１６のフローチャートにしたがってステップＳ７０２で再割り当てを行う。逆に、Ｚｏｃ≦Ｚｃならば、ホスト端末１５０は、変形された図１７〜１８のフローチャートにしたがってステップＳ７０２で再割り当てを行う。
【０５２１】
いずれにせよ、ホスト端末１５０は、第２実施形態と類似の方法によって境界を調整することで、ステップＳ７０２において、ある行での再割り当てを行う。そして、ホスト端末１５０は、その再割り当ての結果を、他の行にも適用する。その後、ホスト端末１５０は再度ステップＳ１０５の通知を行う。
【０５２２】
さて、図２３は、第３実施形態による最終的な割り当ての例を示す図である。図２３は、具体的には、ステップＳ１０４で図８のような初期割り当てが行われた場合の、最終的な割り当ての例を示す。図２３における解析対象領域Ａ１、出力領域Ａ２、および物体領域Ａ３は、図８と同様である。また、図２３は、Ｚ軸方向の割り当ての変更のみが行われる場合（つまりＹ軸方向での割り当ての変更は行われない場合）の例である。
【０５２３】
なお、図８と図２３の双方において、「ＰＥ（６）」等の表記がなされている。しかし、図２３では「（６）」等の番号はリナンバリングされているので、図８のＰＥ（６）と図２３のＰＥ（６）は同じではない。
【０５２４】
例えば、図４のトポロジＴ２において、解析に使用するＰＥの範囲がＺ軸の正の方向に広げられたとする。この場合、図２３のＰＥ（１）、ＰＥ（７）、ＰＥ（１３）、ＰＥ（１９）、ＰＥ（２５）が、それぞれ、図８のＰＥ（１）、ＰＥ（６）、ＰＥ（１１）、ＰＥ（１６）、ＰＥ（２１）に相当する。また、この場合、図２３のＰＥ（５）、ＰＥ（１１）、ＰＥ（１７）、ＰＥ（２３）、ＰＥ（２９）が、それぞれ、図８のＰＥ（５）、ＰＥ（１０）、ＰＥ（１５）、ＰＥ（２０）、ＰＥ（２５）に相当する。
【０５２５】
逆に、図４のトポロジＴ２において、解析に使用するＰＥの範囲がＺ軸の負の方向に広げられる場合もあり得る。この場合は、図２３のＰＥ（６）、ＰＥ（１２）、ＰＥ（１８）、ＰＥ（２４）、ＰＥ（３０）が、それぞれ、図８のＰＥ（５）、ＰＥ（１０）、ＰＥ（１５）、ＰＥ（２０）、ＰＥ（２５）に相当する。また、この場合、図２３のＰＥ（２）、ＰＥ（８）、ＰＥ（１４）、ＰＥ（２０）、ＰＥ（２６）が、それぞれ、図８のＰＥ（１）、ＰＥ（６）、ＰＥ（１１）、ＰＥ（１６）、ＰＥ（２１）に相当する。
【０５２６】
解析に使用するＰＥの範囲が、Ｚ軸の正の方向と負の方向のどちらに広げられたにせよ、０≦ｊ≦４なる各ｊについて、以下のことが成り立つ。
【０５２７】
図８では、格子座標（Ｘ，Ｙ，Ｚ）が０≦Ｘ≦ＸＮかつ４ｊ≦Ｙ≦４ｊ＋４かつ０≦Ｚ≦２０を満たすような、８０×ＸＮ個のセルが、５台のＰＥ（すなわちＰＥ（５ｊ＋１）〜ＰＥ（５ｊ＋５））に均等に割り当てられている。一方、図２３では、これら８０×ＸＮ個のセルが、６台のＰＥ（すなわちＰＥ（６ｊ＋１）〜ＰＥ（６ｊ＋６））に割り当てられている。
【０５２８】
具体的には、図２３において、ＰＥ（６ｊ＋１）には、０≦Ｚ≦４を満たす範囲の、１６×ＸＮ個のセルが割り当てられており、ＰＥ（６ｊ＋２）には、４≦Ｚ≦６を満たす範囲の、８×ＸＮ個のセルが割り当てられている。また、ＰＥ（６ｊ＋３）には、６≦Ｚ≦８を満たす範囲の、８×ＸＮ個のセルが割り当てられており、ＰＥ（６ｊ＋４）には、８≦Ｚ≦１２を満たす範囲の、１６×ＸＮ個のセルが割り当てられている。そして、ＰＥ（６ｊ＋５）には、１２≦Ｚ≦１６を満たす範囲の、１６×ＸＮ個のセルが割り当てられており、ＰＥ（６ｊ＋６）には、１６≦Ｚ≦２０を満たす範囲の、１６×ＸＮ個のセルが割り当てられている。
【０５２９】
以上のとおり、出力領域Ａ２に含まれるセルが割り当てられたＰＥには、８×ＸＮ個という相対的に少ない数のセルのみが割り当てられる。一方、出力領域Ａ２に含まれるセルが割り当てられていないＰＥには、１６×ＸＮ個という相対的に多い数のセルが割り当てられる。その結果、全体としてはＰＥ間で合計処理時間の均一性が高まり、無駄な待ち時間が減る。よって、解析全体も高速化する。
【０５３０】
ところで、本発明は上記の第１〜第３実施形態に限られるものではない。上記の説明においてもいくつかの変形について説明したが、上記第１〜第３実施形態は、さらに例えば下記の観点から様々に変形することもできる。上記および下記の種々の変形は、相互に矛盾しない限り、任意に組み合わせることが可能である。
【０５３１】
合計処理時間を見積もる方法は、並列ＦＤＴＤ法による解析がどのようにプログラムされるかに応じて様々であってよい。また、合計処理時間の均等性に関する基準も、実施形態に応じて様々であってよい。
【０５３２】
上記実施形態において、例えば以下のようないくつかのステップでは、２つの数値同士が比較される。
【０５３３】
・図５と図２１におけるステップＳ１０８。
・図１３のステップＳ３０７。
・図１５〜１６の再割り当て処理におけるステップＳ５０６、Ｓ５０８、Ｓ５１２、Ｓ５１８、Ｓ５２０、Ｓ５２４。
・図１７〜１８の再割り当て処理におけるステップＳ６０６、Ｓ６０８、Ｓ６１２、Ｓ６１８、Ｓ６２０、Ｓ６２４。
【０５３４】
これらのステップにおける２つの数値同士の比較は、実施形態により「第１の数値が、第２の数値を超えるか否か」を判断する処理であってもよいし、「第１の数値が、第２の数値以上か否か」を判断する処理であってもよい。
【０５３５】
また、図３〜４に例示したシステム構成は一例である。他の構成のシステムに上記実施形態が適用されてもよい。ネットワーク構成によっては、ホスト端末１５０が２つ以上のネットワークインタフェイスを有していてもよいし、制御装置１２０が１つのネットワークインタフェイスだけを有していてもよい。実施形態によっては、ある１台の特定のＰＥが、解析のためのＰＥとして動作するだけでなく、ホスト端末１５０および／または制御装置１２０として動作してもよい。
【０５３６】
また、第２〜第３実施形態に関して、ある行のＰＥについての割り当ての変更を、他の行にも同様に適用する処理を説明した。しかし、ＰＥ間の接続のトポロジによっては、行ごとに独立に割り当ての変更が行われてもよい。
【０５３７】
また、解析対象領域を、１次元の複数のセルに分割するか、２次元の複数のセルに分割するか、あるいは３次元の複数のセルに分割するかは、実施形態に応じて適宜決められてよい。ＰＥ間の接続トポロジも実施形態に応じて様々であってよい。
【０５３８】
第２〜第３実施形態に関しては、Ｚ方向での調整による再割り当てについて説明した。実施形態によっては、Ｚ方向での調整による再割り当ての繰り返しの前または後に、ホスト端末１５０が、Ｙ方向での調整による再割り当てを行ってもよい。例えば、図８のような初期割り当てに関して、ホスト端末１５０は、ＰＥ（１７）に割り当てるセルの集合とＰＥ（２２）に割り当てるセルの集合との境界のＹ座標を減らしてもよい。このようなＹ方向での境界の移動は、図１５〜１６と類似の処理がＹ方向に関して行われる場合の、ステップＳ５０３の処理に相当する。
【０５３９】
同様に、ホスト端末１５０は、Ｘ方向での調整による再割り当てを行ってもよい。図１５〜１８のフローチャートに適宜の変更を加えることで、図１５〜１８のフローチャートは、Ｙ方向での調整による再割り当てにも適用することが可能であり、Ｘ方向での調整による再割り当てにも適用することが可能である。以上説明したように、再割り当ては、ある１つの座標軸の方向に沿った調整だけを含んでいてもよいし、２つまたは３つの座標軸のそれぞれに沿った調整を含んでいてもよい。
【０５４０】
また、図１５〜１８のフローチャートには、ＰＥへのセルの割り当ての境界を、１つの座標軸（具体的にはＺ軸）に沿って、１セルずつ調整するための具体的手順が例示されている。しかし、境界を動かすことによる調整の手順は、図１５〜１８のフローチャートに例示した手順に限られない。例えば、複数セルずつ境界が移動されてもよい。
【０５４１】
また、「図１５〜１６の手順と図１７〜１８の手順のどちらが適用されるか」を決めるためのポリシも、第２〜第３実施形態のようなポリシには限定されない。例えば、常に図１５〜１６の手順が適用される実施形態や、常に図１７〜１８の手順が適用される実施形態なども可能である。
【０５４２】
最後に、上記の種々の実施形態に関して、さらに下記の付記を開示する。
（付記１）
コンピュータが、
第１の台数の演算装置のうち、時間領域での解析単位ごとに同期する２台以上の演算装置によって実行される解析の対象として指定された空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もり、
前記解析に使われる各演算装置が前記複数のセルの中から当該演算装置に割り当てられる１つ以上のセルの各々の前記位置に応じた前記処理を実行するのにかかる時間を含む合計処理時間についての、前記演算装置間での均等性に関して決められた基準が満たされるという条件下で、前記第１の台数の演算装置の一部または全部である第２の台数の演算装置に、前記複数のセルを割り当てる
ことを特徴とする割り当て方法。
（付記２）
前記解析の結果を出力する対象として前記解析対象領域内で指定される出力領域に含まれるセルの前記位置依存の処理負荷を見積もる際、前記コンピュータは、データを出力する出力処理に起因する出力負荷を、前記位置依存の処理負荷に含める
ことを特徴とする付記１に記載の割り当て方法。
（付記３）
前記コンピュータは、前記出力領域に含まれる１つ以上のセルを含む第１の個数のセルを、前記第２の台数の演算装置のうちの第１の演算装置に割り当てるとともに、前記第１の個数より多い第２の個数の、前記出力領域には含まれないセルのみを、前記第２の台数の演算装置のうちの第２の演算装置に割り当てることにより、前記基準が満たされるようにする
ことを特徴とする付記２に記載の割り当て方法。
（付記４）
前記第２の台数を決定し、
決定した前記第２の台数の演算装置に、前記複数のセルを暫定的に割り当て、
暫定的な割り当てのもとでは前記第２の台数の演算装置間で前記基準が満たされない場合には、前記位置依存の処理負荷が前記複数のセルの中で相対的に重い特定のグループに属するセルを割り当てる演算装置の台数である第３の台数を増やし、
増やした前記第３の台数に応じて、前記第２の台数の演算装置に前記複数のセルを暫定的に割り当て直す
ことを含むことを特徴とする付記１から３のいずれか１項に記載の割り当て方法。
（付記５）
前記特定のグループに属する前記セルの少なくとも一部が暫定的に割り当てられた第１の演算装置と、前記第１の台数の演算装置間のネットワークトポロジにおいて隣接しており、かつ、前記特定のグループに属するどのセルも暫定的に割り当てられていない第２の演算装置に、前記特定のグループに属する前記セルの少なくとも一部を割り当てることにより、前記コンピュータは前記第３の台数を増やす
ことを特徴とする付記４に記載の割り当て方法。
（付記６）
前記コンピュータは、前記特定のグループに属する１つ以上のセルを含む第１の個数のセルを、前記第２の台数の演算装置のうちの第１の演算装置に割り当てるとともに、前記第１の個数より多い第２の個数の、前記特定のグループには含まれないセルのみを、前記第２の台数の演算装置のうちの第２の演算装置に割り当てることにより、前記基準が満たされるようにする
ことを特徴とする付記４または５に記載の割り当て方法。
（付記７）
前記基準は、決定された前記第２の台数の演算装置の間で、前記合計処理時間同士の比、差、または前記比と前記差の双方が、決められた許容範囲内に収まる、という基準である
ことを特徴とする付記４から６のいずれか１項に記載の割り当て方法。
（付記８）
前記第２の台数を暫定的に決め、
暫定的に決めた前記第２の台数の演算装置に、前記複数のセルを暫定的に割り当て、
暫定的な割り当てのもとでは前記第２の台数の演算装置間で前記基準が満たされない場合には、前記第２の台数を増やし、
増やした前記第２の台数の演算装置に、前記複数のセルを暫定的に割り当て直す
ことを含むことを特徴とする付記１から３のいずれか１項に記載の割り当て方法。
（付記９）
前記コンピュータは、増やした前記第２の台数の演算装置に前記複数のセルを暫定的に割り当て直す際に、前記位置依存の処理負荷が前記複数のセルの中で相対的に重い特定のグループに属するセルが暫定的に割り当てられる演算装置の台数を増やす
ことを特徴とする付記８に記載の割り当て方法。
（付記１０）
前記コンピュータは、前記特定のグループに属する１つ以上のセルを含む第１の個数のセルを、増やした前記第２の台数の演算装置のうちの第１の演算装置に割り当てるとともに、前記第１の個数より多い第２の個数の、前記特定のグループには含まれないセルのみを、増やした前記第２の台数の演算装置のうちの第２の演算装置に割り当てることにより、前記基準が満たされるようにする
ことを特徴とする付記９に記載の割り当て方法。
（付記１１）
前記基準は、暫定的に決められた前記第２の台数の演算装置の間で、前記合計処理時間同士の比、差、または前記比と前記差の双方が、決められた許容範囲内に収まる、という基準である
ことを特徴とする付記８から１０のいずれか１項に記載の割り当て方法。
（付記１２）
前記複数のセルのうち、位置に固有の１つ以上の入力パラメタが指定されるセルの前記位置依存の処理負荷を見積もる際、前記コンピュータは、前記１つ以上の入力パラメタを読み込む読み込み処理に起因する読み込み負荷を、前記位置依存の処理負荷に含める
ことを特徴とする付記１から１１のいずれか１項に記載の割り当て方法。
（付記１３）
前記１つ以上の入力パラメタは、前記解析対象領域内に位置する波源を定義するパラメタと、前記解析対象領域内に位置する回路素子の特性を定義するパラメタの、少なくとも一方を含む
ことを特徴とする付記１２に記載の割り当て方法。
（付記１４）
前記コンピュータは、２つの異なる媒質の境界に接するセルの前記位置依存の処理負荷を、１つの媒質の内部に位置するセルの前記位置依存の処理負荷よりも大きく見積もる
ことを特徴とする付記１から１３のいずれか１項に記載の割り当て方法。
（付記１５）
前記解析は、並列ＦＤＴＤ（finite-difference time-domain）法による解析であることを特徴とする付記１から１４のいずれか１項に記載の割り当て方法。
（付記１６）
前記コンピュータは、吸収境界に接するセルの前記位置依存の処理負荷を、前記吸収境界に接しないセルの前記位置依存の処理負荷よりも大きく見積もる
ことを特徴とする付記１５に記載の割り当て方法。
（付記１７）
前記合計処理時間は、他の１台以上の演算装置との間でデータを送受信するのにかかる時間を含む
ことを特徴とする付記１から１６のいずれか１項に記載の割り当て方法。
（付記１８）
コンピュータに、
第１の台数の演算装置のうち、時間領域での解析単位ごとに同期する２台以上の演算装置によって実行される解析の対象として指定された空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もり、
前記解析に使われる各演算装置が前記複数のセルの中から当該演算装置に割り当てられる１つ以上のセルの各々の前記位置に応じた前記処理を実行するのにかかる時間を含む合計処理時間についての、前記演算装置間での均等性に関して決められた基準が満たされるという条件下で、前記第１の台数の演算装置の一部または全部である第２の台数の演算装置に、前記複数のセルを割り当てる
ことを含む処理を実行させるための割り当てプログラム。
（付記１９）
第１の台数の演算装置のうち、時間領域での解析単位ごとに同期する２台以上の演算装置によって実行される解析の対象として指定された空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もる見積もり手段と、
前記解析に使われる各演算装置が前記複数のセルの中から当該演算装置に割り当てられる１つ以上のセルの各々の前記位置に応じた前記処理を実行するのにかかる時間を含む合計処理時間についての、前記演算装置間での均等性に関して決められた基準が満たされるという条件下で、前記第１の台数の演算装置の一部または全部である第２の台数の演算装置に、前記複数のセルを割り当てる割り当て手段
を備える情報処理装置。
（付記２０）
各々が、少なくとも１台の他の演算装置と直接的または間接的に接続された、第１の台数の演算装置と、
前記第１の台数の演算装置の各々とネットワークを介して接続された情報処理装置であって、
前記第１の台数の演算装置のうち、時間領域での解析単位ごとに同期する２台以上の演算装置によって実行される解析の対象として指定された空間的な解析対象領域を分割した複数のセルの各々について、当該セルの位置に応じた処理によって生じる位置依存の処理負荷を見積もる見積もり手段と、
前記解析に使われる各演算装置が前記複数のセルの中から当該演算装置に割り当てられる１つ以上のセルの各々の前記位置に応じた前記処理を実行するのにかかる時間を含む合計処理時間についての、前記演算装置間での均等性に関して決められた基準が満たされるという条件下で、前記第１の台数の演算装置の一部または全部である第２の台数の演算装置に、前記複数のセルを割り当てる割り当て手段とを備える情報処理装置と、
を備える解析システム。
【符号の説明】
【０５４３】
１００  システム
１１０  シミュレータ
１２０  制御装置
１２１、１５１  ＣＰＵ
１２２、１４１−１〜１４１−Ｐ、１５２  メモリ
１２３、１５３、１７０  ＨＤＤ
１２４、１２５、１５４  ネットワークインタフェイス
１２６、１５５  バス
１３０  スイッチ
１４０−１〜１４０−Ｐ  ＰＥ
１５０  ホスト端末
１６０、１６１  ユーザ端末
１８０、１８１  ネットワーク
１９０  情報処理装置
１９１  見積もり部
１９２  割り当て部
２００  スケジュール表
２０１〜２１４  コマンドセット
２２１〜２３２、２４１〜２５０、２６１〜２６４  コマンド
Ａ１  解析対象領域
Ａ２、Ａ４〜Ａ７  出力領域
Ａ３  物体領域
Ｂ１〜Ｂ３  境界
Ｅ１〜Ｅ７  例
Ｒ１、Ｒ２  範囲
Ｔ１、Ｔ２  トポロジ
【図１】
2014211699.tif 000009
【図２】
2014211699.tif 000010
【図３】
2014211699.tif 000011
【図４】
2014211699.tif 000012
【図５】
2014211699.tif 000013
【図６】
2014211699.tif 000014
【図７】
2014211699.tif 000015
【図８】
2014211699.tif 000016
【図９】
2014211699.tif 000017
【図１０】
2014211699.tif 000018
【図１１】
2014211699.tif 000019
【図１３】
2014211699.tif 000020
【図１５】
2014211699.tif 000021
【図１６】
2014211699.tif 000022
【図１７】
2014211699.tif 000023
【図１８】
2014211699.tif 000024
【図１９】
2014211699.tif 000025
【図２０】
2014211699.tif 000026
【図２１】
2014211699.tif 000027
【図２２】
2014211699.tif 000028
【図２３】
2014211699.tif 000029
【図１２】
2014211699.tif 000030
【図１４】
2014211699.tif 000031