(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-05
(45)【発行日】2025-03-13
(54)【発明の名称】マルチプロセッサモデラおよびシミュレータ
(51)【国際特許分類】
G06F 9/50 20060101AFI20250306BHJP
G06F 17/13 20060101ALI20250306BHJP
【FI】
G06F9/50 150Z
G06F17/13
(21)【出願番号】P 2021565819
(86)(22)【出願日】2020-05-06
(86)【国際出願番号】 US2020031722
(87)【国際公開番号】W WO2020227441
(87)【国際公開日】2020-11-12
【審査請求日】2023-05-01
(32)【優先日】2019-05-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521480721
【氏名又は名称】グドラ,プラディープ
(74)【代理人】
【識別番号】100088904
【氏名又は名称】庄司 隆
(74)【代理人】
【識別番号】100124453
【氏名又は名称】資延 由利子
(74)【代理人】
【識別番号】100135208
【氏名又は名称】大杉 卓也
(74)【代理人】
【識別番号】100183656
【氏名又は名称】庄司 晃
(74)【代理人】
【識別番号】100224786
【氏名又は名称】大島 卓之
(74)【代理人】
【識別番号】100225015
【氏名又は名称】中島 彩夏
(74)【代理人】
【識別番号】100231647
【氏名又は名称】千種 美也子
(74)【代理人】
【識別番号】110000338
【氏名又は名称】弁理士法人 HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】グドラ,プラディープ
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2000-330977(JP,A)
【文献】特開平07-114518(JP,A)
【文献】特開2000-339297(JP,A)
【文献】米国特許出願公開第2015/0286785(US,A1)
【文献】SARKAR, Abhijit et al.,Domain Decomposition of Stochastic PDEs and its Parallel Implementation,20th International Symposium on High-Performance Computing in an Advanced Collaborative Environment (HPCS'06),米国,IEEE,2006年05月17日,pages:1-5
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/00-17/18
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
コンピュータのプログラム実行環境における対応履行のためにコンピュータに実装された方法であって、
インターフェースにおいて、工学的問題を表す、問題領域の幾何学的記述、偏微分方程式および複数の境界条件を受け取るステップと;
離散化器を用いて、前記問題領域における前記偏微分方程式および前記複数の境界条件を、少なくとも1つの代数方程式に変換するステップと;
分割器を用いて、前記少なくとも1つの代数方程式を解についての複数のローカルベクトルへと分解するステップと;
スケジューラを用いて、各ローカルベクトルを、解くための複数のプロセッサの一つに割り当てるステップと、ここで、該プロセッサは、各ローカルベクトルに、該ローカルベクトルを更新するために必要とされるカレントデータが利用可能かどうかに基づき優先順位を与え、及び、各ローカルベクトルは、与えられた優先順位の順に該プロセッサによって更新される;
誤差制御器を用いて、各ローカルベクトルを解くことに付随する解の誤差を推定するステップと、ここで、該誤差制御器が、他の複数のローカルベクトルから独立した各ローカルベクトルの少なくとも1つの離散化パラメータを、前記解の誤差を閾値未満に保つよう適合させる;及び
前記インターフェースを用いて、前記偏微分方程式および前記複数の境界条件に対する解を出力するステップと、
を含み、
各プロセッサが、前記複数のローカルベクトルを解くことに付随する前記解の誤差を追跡する間に、他の複数のプロセッサからのデータまたは遠隔のメモリロケーションからのデータを待機することなく、その割り当てられた複数のローカルベクトルを解く、方法。
【請求項2】
前記偏微分方程式および前記複数の境界条件を少なくとも1つの代数方程式に変換するステップが、空間離散化および時間離散化のうちの少なくとも一方を含む、請求項1に記載の方法。
【請求項3】
変換するステップが、有限要素法(FEM)、有限差分法(FDM)、有限体積法(FVM)、粒子法(PM)およびメッシュレス法(MM)からなる群から選択される空間離散化を含む、請求項2に記載の方法。
【請求項4】
変換するステップが、陽的オイラー法、陰的オイラー法、ニューマーク法、ルンゲ‐クッタ法、およびマルチステップ法からなる群から選択される時間離散化を含む、請求項2に記載の方法。
【請求項5】
前記少なくとも1つの離散化パラメータが、時間離散化、空間離散化またはその両方に関連するものである、請求項
1に記載の方法。
【請求項6】
前記スケジューラが、前記複数のプロセッサ間の時間変化または発展の差を低減するように、前記複数のプロセッサの間で実行時に複数のローカルベクトルを再割り当てする、請求項1に記載の方法。
【請求項7】
カレントデータを有する割り当てられた複数のローカルベクトルが、データを待機する割り当てられた複数のローカルベクトルよりも優先される、請求項1に記載の方法。
【請求項8】
1つ又は複数の該プロセッサは、履歴値に基づく、カレントデータのローカル近似を使い、該ローカルベクトルを更新する、請求項1に記載の方法。
【請求項9】
1つまたは複数の該プロセッサが、前記ローカルベクトルを、カレントデータ、非カレントのローカルコピーデータ、または前記カレントデータの前記ローカル近似のいずれかで更新する、請求項8に記載の方法。
【請求項10】
前記誤差制御器は、カレントデータ、非カレントのローカルコピーデータ、または前記カレントデータの前記ローカル近似のいずれかで、ローカルベクトルを更新することによって、前記ローカルベクトルを更新することに関連する前記解の誤差を推定する、請求項9に記載の方法。
【請求項11】
前記遠隔のメモリは、分散メモリアーキテクチャ、共有メモリアーキテクチャ、及び階層メモリアーキテクチャの少なくとも一つである、請求項1に記載の方法。
【請求項12】
コンピュータのプログラム実行環境における対応履行のためのシステムであって、
コンピュータ実行可能な複数の命令、およびメモリに格納されたデータを有する前記メモリと;
複数のプロセッサであって、各プロセッサが前記メモリおよびその他の複数のプロセッサと通信状態にあり、各プロセッサが複数の計算タスクのキューを有する前記複数のプロセッサと;
工学的問題を表す、問題領域の幾何学的記述、偏微分方程式および複数の境界条件を受け取り、前記偏微分方程式および前記複数の境界条件に対する解を出力するよう構成されたインターフェースと;
前記問題領域における前記偏微分方程式を、少なくとも1つの代数方程式に変換するための離散化器と;
前記少なくとも1つの代数方程式を、解についての複数のローカルベクトルへと分解するための分割器と;
各ローカルベクトルを、解くための複数のプロセッサの一つに割り当てるスケジューラと、ここで、該プロセッサは、各ローカルベクトルに、該ローカルベクトルを更新するために必要とされるカレントデータが利用可能かどうかに基づき優先順位を与えように構成され、及び、各ローカルベクトルは、与えられた優先順位の順に該プロセッサによって更新される;
該ローカルベクトルを更新することに付随する解の誤差を推定するように構成された誤差制御器と、ここで、該誤差制御器が、他の複数のローカルベクトルから独立した各ローカルベクトルの少なくとも1つの離散化パラメータを、前記解の誤差を閾値未満に保つよう適合させる;及び
複数のプロセッサ、メモリ、及び誤差制御器間の断続的な複数の通信のためのバスと、
を含み、
各プロセッサが、前記解の誤差を追跡する間に、他の複数のプロセッサからのデータまたは遠隔のメモリロケーションからのデータを待機することなく、その割り当てられたローカルベクトルを、解く、システム。
【請求項13】
前記メモリが、分散メモリアーキテクチャ、共有メモリアーキテクチャおよび階層メモリアーキテクチャのうちの少なくとも1つである、請求項12に記載のシステム。
【請求項14】
前記離散化器が、空間離散化および時間離散化のうちの少なくとも一方を使用して、前記偏微分方程式を少なくとも1つの代数方程式に変換する、請求項12に記載のシステム。
【請求項15】
前記離散化器が、有限要素法(FEM)、有限差分法(FDM)、有限体積法(FVM)、粒子法(PM)およびメッシュレス法(MM)からなる群から選択される空間離散化を利用する、請求項14に記載のシステム。
【請求項16】
前記離散化器が、陽的オイラー法、陰的オイラー法、ニューマーク法、ルンゲ‐クッタ法、およびマルチステップ法からなる群から選択される時間離散化を利用する、請求項14に記載のシステム。
【請求項17】
前記少なくとも1つの離散化パラメータが、時間離散化、空間離散化またはその両方に関連するものである、請求項12に記載のシステム。
【請求項18】
前記スケジューラが、前記複数のプロセッサ間の時間変化または発展の差を低減するように、前記複数のプロセッサの間で実行時に複数のローカルベクトルを再割り当てする、請求項12に記載のシステム。
【請求項19】
カレントデータを有する割り当てられた複数のローカルベクトルが、データを待機する割り当てられた複数のローカルベクトルよりも優先される、請求項12に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2019年5月6日に出願された同時係属中の米国仮出願第62/843,780号の利益を主張する。その開示全体が、あたかもその全体が本明細書に記載されているかのように、参照により組み込まれる。
【0002】
本開示は、工学的問題(engineering problems)を解くための装置および方法に関し、より詳細には、工学的問題を表す微分方程式をコンピュータを用いて解くための装置および方法に関する。当該工学的問題は、製造における問題のみならず、物理学に基づくシミュレーション、ならびに、拡張現実、仮想現実、ゲーミングおよび軟組織モデリング(Soft Tissue modeling)等における、視覚化に関わる問題をも含む。
【背景技術】
【0003】
工学的問題は通常、偏微分方程式(partial differential equations:PDEs)を使用してモデリングされる。当該偏微分方程式は、しばしばコンピュータを使用して解かれる。
図1に示すように、PDEsは、いくつかのステップを含む計算モデリングのフレームワークを使用して、コンピュータ上において解かれる。
【0004】
これらのステップは、空間離散化(space-discretization)を用いて、双曲型PDEsまたは放物型PDEsを一組の常微分方程式(ordinary differential equations:ODEs)に還元することを含む。次に、ODEsは時間離散化(time-discretization)されて、一組の代数方程式が得られる。そして、当該一組の代数方程式は、線型代数の原理を用いて解かれる。しばしば、これらのステップは、所望の数値解が得られるまで、反復的に繰り返される。
【0005】
定常状態の挙動を記述する楕円型PDEsは、空間離散化のみにより、代数方程式に還元され得る。得られる代数方程式は、直接法(direct technique)または反復法(iterative technique)を介して、線型代数の原理を用いて解かれる。
【0006】
PDEsの空間離散化のための一般的な選択には、有限要素法(Finite Element Method:FEM)、有限差分法(Finite Difference Method:FDM)、有限体積法(Finite Volume Method:FVM)、粒子法(Particle Method:PM)、およびメッシュレス法(Meshless Method:MM)等が含まれる。時間離散化(または時間積分)のための周知の方法には、いくつか例を挙げると、陽的オイラー法(explicit Euler’s method)および陰的オイラー法(implicit Euler’s method)、ニューマーク法(Newmark method)、ルンゲ‐クッタ法(Runga-Kutta method)、ならびにマルチステップ法(multistep method)が含まれる。代数方程式を解くための線型代数に基づく直接法には、ガウスの消去法(Gauss elimination)、LU分解(LU decomposition)等が含まれる。代数方程式を解くために広く使用されている反復法には、マルチグリッド法(multigrid method)、不動点反復法(fixed point iterative method)、共役勾配法(conjugate gradient method)等が含まれる。
【0007】
これらの方法は、いくつかの問題をうまく解くために広く使用されてきた。しかしながら、これらの手法は、分散コンピューティング環境における使用、または今日のマルチプロセッサチップ上の使用には、うまくスケーリングしない。なぜなら、これらの方法は従来、シリアル命令を生み出し、実行用の単一のプロセッサコンピュータ上にプログラムされるよう、設計されていたからである。
【0008】
シリアル実装アルゴリズム(serial implementation algorithm)の並列化、特に時間ステップ更新中または反復中における解法の並列化に対して、多くの労力が費やされてきた。しかしながら、各時間ステップまたは反復の終わりにおける同期要件(synchronization requirement)は、かなりの通信コストを招く。その結果、分散メモリアーキテクチャ(distributed memory architecture)では、達成される最大高速化(maximum speedup)は、プロセッサ間のデータ交換に利用可能な通信帯域幅によって決定される。階層メモリアーキテクチャ(hierarchical memory architecture)または共有メモリアーキテクチャ(shared memory architecture)では、遠隔のメモリロケーションにアクセスするために利用可能な帯域幅が、達成される最大高速化を決定するだろう。したがって、従来技術における手法は、大規模なコンピューティングリソースだけでなく、新世代のマルチプロセッサアーキテクチャを十分に活用することができない。ハードウェア製造業者が性能を向上させるためにコンピューティングコアの数を増加させるにつれて、アーキテクチャにおけるこれらの発展からの利益を工学的問題を解くために活用することはますます困難となるだろう。
【0009】
したがって、既存の方法の欠点を回避する、解法の改善が必要とされている。
【発明の概要】
【0010】
この概要は、以下の「発明を実施するための形態」の項目においてさらに説明される一連の概念を、簡略化された形態で導入するために提供されるものである。この概要は、特許請求される主題の重要な特徴または本質的な特徴を特定することを意図したものではないし、また、特許請求される主題の範囲を決定するときの補助として使用されることを意図したものでもない。
【0011】
本明細書に記載の複数の実施形態は、工学的問題を解くときに通常出くわす微分方程式のための分散ソルバに関する。本発明の複数の実施形態は、数十年前に設計された計算方法のシリアルな性質の最後の遺物を排除し、科学的計算が通信の制約によってもはや制限されないことを保証し、そして、分散コンピューティング環境における全ての大きさのより高速なシミュレーションを可能にするものである。
【0012】
一態様では、本発明の複数の実施形態は、複数の工学的問題を解くためにコンピュータに実装された方法に関する。当該方法は、インターフェースにおいて、工学的問題を表す、問題領域(problem domain)の幾何学的記述(幾何学的描写:geometric description)、偏微分方程式および複数の境界条件を受け取るステップを含む。前記問題領域における前記偏微分方程式および前記複数の境界条件は、離散化器(discretizer)を用いて、少なくとも一つの代数方程式に変換される。前記少なくとも1つの代数方程式は、分割器(partitioner)を用いて、解についての複数のローカルベクトル(local vector)へと分解される。各ローカルベクトルは、スケジューラを用いて、解くためのプロセッサに割り当てられる。誤差制御器は、各ローカルベクトルにおける誤差を特定の値未満に保つか、またはより速い収束のために前記誤差を最小化する。前記偏微分方程式および前記複数の境界条件に対する解は、インターフェースを用いて通知される。
【0013】
この態様では、各プロセッサは、前記ローカルベクトルを解くことに付随する(関連する)前記解の誤差を追跡する間に、他の複数のプロセッサからのデータまたは遠隔のメモリロケーション(記憶場所)からのデータを待機することなく、その割り当てられた複数のローカルベクトルを解く。
【0014】
いくつかの実施形態では、前記偏微分方程式および前記複数の境界条件を少なくとも1つの代数方程式に変換するステップは、空間離散化および時間離散化のうちの少なくとも一方を含む。いくつかの実施形態では、変換するステップは、有限要素法(FEM)、有限差分法(FDM)、有限体積法(FVM)、粒子法(PM)およびメッシュレス法(MM)からなる群から選択される空間離散化を含む。いくつかの実施形態では、変換するステップは、陽的オイラー法、陰的オイラー法、ニューマーク法、ルンゲ‐クッタ法、およびマルチステップ法からなる群から選択される時間離散化を含む。
【0015】
いくつかの実施形態では、時間領域解析(time domain analysis)のための前記誤差制御器は、他の複数のローカルベクトルから独立した各ローカルベクトルの少なくとも1つの離散化パラメータを、前記解の誤差を特定の値未満に保つよう適合させる。いくつかの実施形態では、前記少なくとも1つの離散化パラメータは、時間離散化、空間離散化またはその両方に関連するものである。
【0016】
いくつかの実施形態では、複数のプロセッサ間の時間変化または発展(evolution)の差を低減するように、前記スケジューラによって、前記複数のプロセッサ間で実行時にローカルベクトルが再割り当てされる。
【0017】
いくつかの実施形態では、カレントデータを有する割り当てられた複数のローカルベクトルは、データを待機する割り当てられた複数のローカルベクトルよりも優先される。
【0018】
別の態様では、本発明の複数の実施形態は、複数の工学的問題を解くためのシステムに関する。当該システムは、メモリと、複数のプロセッサと、インターフェースと、離散化器と、分割器と、スケジューラと、バスと、を含む。前記メモリは、コンピュータ実行可能な複数の命令、および前記メモリに格納されたデータを有する。前記複数のプロセッサの各々は、前記メモリおよびその他の複数のプロセッサと通信状態にあり、複数の計算タスクについてのキューを有する。前記インターフェースは、工学的問題を表す、問題領域の幾何学的記述、偏微分方程式および複数の境界条件を受け取り、前記偏微分方程式および前記複数の境界条件に対する解を出力するよう構成されている。前記離散化器は、前記問題領域における前記偏微分方程式を、少なくとも1つの代数方程式に変換する。前記分割器は、前記少なくとも1つの代数方程式を、解についての複数のローカルベクトルに変換する。前記スケジューラは、各ローカルベクトルを、解くためのプロセッサに割り当てる。前記バスは、複数のプロセッサ、およびメモリ間の断続的な複数の通信のためにある。
【0019】
この態様では、各プロセッサは、前記ローカルベクトルを解くことに付随する前記解の誤差を追跡する間に、他の複数のプロセッサからのデータまたは遠隔のメモリロケーションからのデータを待機することなく、その割り当てられたローカルベクトルを解く。
【0020】
ある実施形態では、前記メモリは、分散メモリアーキテクチャ、共有メモリアーキテクチャおよび階層メモリアーキテクチャのうちの少なくとも1つである。
【0021】
いくつかの実施形態では、前記離散化器は、空間離散化および時間離散化のうちの少なくとも一方を使用して、前記偏微分方程式を少なくとも1つの代数方程式に変換する。いくつかの実施形態では、前記離散化器は、有限要素法(FEM)、有限差分法(FDM)、有限体積法(FVM)、粒子法(PM)およびメッシュレス法(MM)からなる群から選択される空間離散化を利用する。いくつかの実施形態では、前記離散化器は、陽的オイラー法、陰的オイラー法、ニューマーク法、ルンゲ‐クッタ法、およびマルチステップ法からなる群から選択される時間離散化を利用する。
【0022】
いくつかの実施形態では、時間領域解析のための前記誤差制御器は、他の複数のローカルベクトルから独立した各ローカルベクトルの少なくとも1つの離散化パラメータを、前記解の誤差を特定の値未満に保つよう適合させる。いくつかの実施形態では、前記少なくとも1つの離散化パラメータは、時間離散化、空間離散化またはその両方に関連するものである。
【0023】
いくつかの実施形態では、前記スケジューラは、前記複数のプロセッサ間の時間変化または発展の差を低減するように、前記複数のプロセッサの間で実行時に複数のローカルベクトルを再割り当てする。
【0024】
いくつかの実施形態では、カレントデータを有する割り当てられた複数のローカルベクトルは、データを待機する割り当てられた複数のローカルベクトルよりも優先される。
【図面の簡単な説明】
【0025】
添付の図面は、一定の縮尺で描かれることを意図していない。図面において、さまざまな図に示される同一またはほぼ同一の構成要素の各々は、同様の数字によって表され得る。明確さのため、全ての構成要素が全ての図面においてラベル付けされ得るわけではない。添付の図面を参照しつつ、さまざまな実施形態が例として説明されるだろう:
【
図1】従来技術における計算モデリングのフレームワークを示す。
【
図3】本発明による工学的問題を解くための方法のフローチャートである。
【
図4】
図3からステップ312~ステップ316について展開したフローチャートである。
【発明を実施するための形態】
【0026】
予備的事項として、本発明が広範な有用性および応用を有することは、当業者によって容易に理解されるだろう。理解されるはずであるように、任意の実施形態は、開示される特徴のうちの任意の1つまたは開示される特徴の任意の組み合わせを含み得る。さらに、例えば適合、変形、修正、および同等の構成等の多くの実施形態が、本明細書において説明される複数の実施形態によって暗黙のうちに開示され、本発明の範囲内に入っている。
【0027】
したがって、1つ以上の実施形態に関して、本発明が本明細書において詳細に説明されているものの、本開示は本発明の例証または例示であって、単に、本発明の十分かつ可能な開示を提供する目的のためになされるものである、ということを理解されたい。1つ以上の実施形態の本明細書における詳細な開示は、本発明に与えられる特許権保護の範囲を限定することを意図していないし、かつそう解釈されるべきでもない。その範囲は、特許請求の範囲およびその等価物によって定義されるべきである。請求項自身に明示的に現れないが本明細書に見出される限定を任意の請求項に読み込むことによって、本発明に与えられる特許権保護の範囲が定義される、ということは意図されていない。
【0028】
したがって、例えば、本明細書において説明されるさまざまなプロセスまたは方法のステップの任意の配列および/または時間的順序は、例示であって、限定的なものではない。したがって、さまざまなプロセスまたは方法のステップは、ある配列または時間的順序にあるものとして示され、説明され得るけれども、任意のかかるプロセスまたは方法の当該ステップは、別段の指示のない限り、任意の特定の配列または順序において実行されることに限定されるものではないことを理解されたい。実際、かかるプロセスまたは方法におけるステップは一般に、さまざまな異なる配列および順序において実行され得るが、それらは依然として本発明の範囲内にある。
【0029】
加えて、本明細書における各用語の文脈上の使用に基づき当業者がかかる用語の意味を理解するであろう当該意味を、本明細書において使用されるかかる用語が指している、ということへの注意が重要である。(用語の文脈上の使用に基づいて当業者が理解するような)本明細書において使用されるかかる用語の意味が、かかる用語の任意の特定の辞書的定義とは何らかの点で異なる場合に、当業者によって理解されるような用語の意味が優先されるべきである、ということが意図されている。
【0030】
米国特許法第112条第6段落の適用性に関しては、「~ための手段(means for)」または「~ためのステップ(step for)」という明示的な表現が請求項の要素において実際に使用されるのではない限り、いかなるかかる請求項の要素もこの法定規定にしたがって読まれることは意図されていない。この法定規定は、このような請求項の要素の解釈に適用されることが意図されている。
【0031】
さらに、本明細書において使用されるように、「a」および「an」は、それぞれ一般に「少なくとも1つ」を意味するが、しかし、文脈上の使用が別段の指示をしない限り、複数を除外するものではない、ということに留意することが重要である。したがって、「リンゴを有するピクニックバスケット」とは、「少なくとも1つのリンゴを有するピクニックバスケット」および「複数のリンゴを有するピクニックバスケット」を示す。対照的に、「単一のリンゴを有するピクニックバスケット」は「1つのリンゴのみを有するピクニックバスケット」を示す。
【0032】
「または」が項目のリストを結びつけるために本明細書において使用されるとき、「または」は「少なくとも1つの項目」を意味するが、しかし、リストのうちの複数の項目を除外するものではない。したがって、「チーズまたはクラッカーを有するピクニックバスケット」とは、「クラッカーを有しない、チーズを有するピクニックバスケット」、「チーズを有しない、クラッカーを有するピクニックバスケット」、そして「チーズおよびクラッカーの両方を有するピクニックバスケット」を指す。最後に、「および」が項目のリストを結びつけるために本明細書において使用されるとき、「および」は「リストの項目の全て」を意味する。したがって、「チーズおよびクラッカーを有するピクニックバスケット」とは、「チーズを有するピクニックバスケット」(当該ピクニックバスケットはさらにクラッカーを有する)と、「クラッカーを有するピクニックバスケット」(当該ピクニックバスケットはさらにチーズを有する)と、を指す。
【0033】
さて図面を参照すると、複数の図を通じて、同様の数字が同様の構成要素を表している。本発明の1つ以上の実施形態が次に説明される。1つ以上の実施形態の以下の説明は、本質的に単なる例示にすぎず、本発明、その応用(適用)または使用を限定することを決して意図するものではない。
【0034】
本発明の実施形態は、以下で述べるように、独立した更新、誤差制御および負荷分散アルゴリズム(load distribution algorithm )の組み合わせを使用して、同期要件を完全に除去しかつ通信限界シミュレーション(communication bound simulations)を驚異的並列(embarrassingly parallel)シミュレーションに変換する分散キューイングストラテジを採用するため、分散コンピューティング環境またはマルチプロセッサチップにおいて、特に良く機能する。すなわち、従来技術におけるソルバ(上述)と比較して、本発明の実施形態は、分散プロセッサ間の同期を必要とせず、また時間領域解析における因果律条件(causality condition)の満足、すなわち、例えば時間t+dtについての計算を開始する前に、時間tにおける隣り合うサブ領域(サブドメイン)に関する全ての計算が完了することを求めること、も必要としない。
【0035】
図2は、本発明の分散キューイングストラテジを実装するソルバ200の一実施形態のブロック図である。ソルバ200は、インターフェース204と、離散化器(ディスクリタイザ:discretizer)208と、分割器(パーティショナ:partitioner)212と、スケジューラ216と、複数のプロセッサ220(n)と、誤差制御器(エラーコントローラ)224と、メモリ228と、これらのコンポーネントを相互接続してそれらが通信し合うことを可能にするシステムバス232と、を含む。
【0036】
これらの描かれた要素の各々が、いくらか抽象化されたものである、ということを当業者は認識するだろう。これらの要素のうちの任意のものまたは全てのものは、既製のハードウェア上で実行されるソフトウェアにおいて、(特定用途向け集積回路等の)カスタムハードウェアとして、またはそれらの組合せとして、実装され得る。さらに、同一のハードウェアコンポーネントは、複数の要素を実装し得る。例えば、離散化器208および分割器212は、同一の汎用中央処理ユニット上で実行されるソフトウェア処理として実装され得る、「プロセッサ」220(n)は、ローカル集積回路上または遠隔のクラウドコンピューティングプラットフォーム内において実行される物理プロセッサまたは仮想プロセッサであり得る、等々。同様に、ある実施形態が、スケジューラまたは誤差制御器等の単一の要素を特徴とし、複数のプロセッサおよび他の要素を提供する一方、他の実施形態では、「単一の」スケジューラが、各スケジューラがプロセッサまたは他の要素に関連付けられた、複数のスケジューラを十分に含み得る。
【0037】
インターフェース204は、ソルバ200との通信を可能にする。例えば、ユーザは、キーボード、音声認識、または微分方程式のイメージをキャプチャしてデコードするイメージャのようなインターフェース204を使用して、工学的問題を表す、境界条件を有する1つ以上の偏微分方程式、および問題領域の幾何学的記述を、ソルバ200に提供し得る。他の実施形態では、インターフェース204は、例えばソフトウェアまたはグラフィカルユーザインターフェースを通じて、プログラムによる通信(プログラマティックな通信:programmatic communication)を可能にし得、それは、問題領域の3次元モデル、微分方程式、および境界条件を、ソルバ200に直接的または間接的に提示することを可能にする。
【0038】
ソルバ200が境界条件を有する1つ以上の偏微分方程式および問題領域の3次元モデルをインターフェース204において受け取ったあと、離散化器208は、離散化手法を適用して、偏微分方程式を代数方程式系に変換する。これは、例えば、空間離散化を使用して偏微分方程式を常微分方程式に変換し、次に、常微分方程式を時間離散化して解についての代数方程式系を得る、という形式をとり得る。あるいは、楕円型偏微分方程式系がインターフェース204に提示され得、時間離散化の必要性を除去し得る;常微分方程式系がインターフェース204に提示され得、空間離散化の必要性を除去し得る;代数方程式系がインターフェース204に直接提示され得、離散化器208の必要性を全く除去し得る、等々。
【0039】
解についての代数方程式系は、系に関連するグローバルベクトル(global vector)を複数のローカルベクトルの集合に分解する分割器212に与えられる。各ローカルベクトルの集合はサブ領域に関連する。ローカルベクトルの集合のうちのいくつかは、異なる物理または異なる長さスケール等を表す、同じサブ領域に関連付けられ得ることに留意されたい。
【0040】
スケジューラ216は、各ローカルベクトルを、解くためのプロセッサ220(n)に割り当てる。各プロセッサは、計算タスクについてのそれ自身のキューを有する(図示せず)。いくつかの実施形態では、プロセッサ220(n)は、割り当てられたローカルベクトルの更新を終了した後、スケジューラ216にそのインデックスを返し、次に、スケジューラは、ローカルベクトルを別のプロセッサ220(n)に再割り当てする。これは、後述するように、スケジューラ216にインデックスを返した同じプロセッサ220(n)であってもよいし、または同じプロセッサ220(n)でなくてもよい。いくつかの実施形態では、この再割り当ては、リソース制約を考慮するか、または、サブ領域間もしくは解くプロセスにおいて導入される誤差間の一様な時間変化もしくは発展(evolution)を達成するために、行われ得る。
【0041】
このアプローチは、プロセッサコンピューティングサイクルのほぼ十分な活用を達成する利点を有する。プロセッサが、他のプロセッサからのデータ、または遠隔のメモリロケーションからのデータを待たないからである。これは、例えばプロセッサ間の通信帯域幅が一様でないクラウドコンピューティング環境、および、メモリにアクセスするためのメモリ帯域幅が一様でないマルチプロセッサチップ等の、異種的(ヘテロジニアス:heterogenous)コンピューティング環境においてだけでなく、高レイテンシ計算(high latency computation)、すなわち、全てのプロセッサが一貫した方法でデータを受信することに遅延を経験している場合においてさえ、依然として当てはまる。
【0042】
計算論的には、各ローカルベクトルの更新には、同一のプロセッサ220(n)に割り当てられてもよいし、または同一のプロセッサ220(n)に割り当てられなくてもよい、他のローカルベクトルからの情報が必要とされる。プロセッサ220(n)上のリストからのインデックスは、ある基準に基づいて選択され、インデックスに関連するローカルベクトルが、更新のために調べられる。ローカルベクトルの更新に必要な全てのカレントデータが利用可能である場合、更新ステップにより高い優先順位が与えられるか、当該更新ステップが実行されるか、またはその両方が行われる。ローカルベクトルの更新に必要なカレントデータの全てまたは一部が利用可能でない場合、選択されたインデックスは待機リストキューにプッシュされる。リストから別のインデックスが選択され、プロセスが繰り返される。リストが空のとき、当該待機リストキューからのローカルベクトルは、必要なデータのカレントコピーを有しないにもかかわらず、更新される。
【0043】
要するに、ローカルベクトルは、更新のための全てのカレントデータが利用可能である他のローカルベクトルがプロセッサ上にないとき、カレントデータを待たずに更新される。全体として、プロセッサが他のプロセッサからのデータを待機する間にアイドル状態になることはなく、他のプロセッサからのデータを待機するローカルベクトルよりも、全てのカレントデータが利用可能であるローカルベクトルを評価することがより優先される。
【0044】
しかしながら、この独立した更新アプローチは、通信コストを計算誤差に効果的に変換する。追加的な計算誤差は、楕円型偏微分方程式を解く間における収束前の反復回数の増加をもたらし得る一方、これは時間領域解析における数値的不安定性をもたらす可能性がある。したがって、本発明の実施形態は、ローカル誤差推定値(local error estimate)に基づく誤差制御ストラテジを採用する。特に、ローカル状態ベクトルの各更新の間、離散化のさまざまなパラメータ(例えば、メッシュサイズ、時間ステップの長さ等)は、推定誤差を所望の閾値未満に保つか、または最小化できるように、誤差制御器224によって調整され得、その結果、精度を維持するか、または解の収束を改善する。
【0045】
誤差制御器224による離散化の調整は、単一ステッププロセスであり得、そこでローカルベクトルが更新されるときに離散化パラメータが適合(適応)される(adapted)。これは、ローカルベクトルの独立した更新を可能にし、カレントデータにおける遅延から生じる追加の誤差を、時間領域解析についてのより多くの算術演算またはフロップスに変換することに重要な役割を演じる。その結果、独立した時間ステップが各ローカルベクトルのために使用されることを可能にし、したがって当然ながら、時間領域解析中の独立した更新を可能にする、非同期時間ステッピング方法(asynchronous time stepping method)は、時間領域離散化のための一般的な選択である。本発明は、ネットワークまたはメモリレイテンシの高コストを回避するために、カレントデータの代わりにデータのローカルコピーを使用するので、履歴値を使用するカレントデータのより良い近似は、遅延のコストを低減するのに役立つだろう。しかしながら、誤差制御器224によって調整される離散化パラメータのうちのいくつかは、メッシュベースのシミュレーション(mesh-based simulation)におけるメッシュ要素サイズ適合(mesh element size adaptation)等の2ステッププロセスであり得る。空間離散化による誤差推定値に基づいて、ローカルベクトルのうちのいくつかは、精緻化(細分:refinement)または非精緻化(不細分:de-refinement)のためにステージされる(staged)。数回の各更新の後に、全てのローカルベクトルまたは関連するサブ領域のメッシュ精緻化/非精緻化が実行される。かかる調整は、ローカルプロセッサ間のコーディネーションを必要とし得る。また、かかる調整は、待機することなく、または最小限の遅延を引き起こすことなく、容易に実行され得る。
【0046】
調整に利用可能な特定のパラメータは、微分方程式および使用される離散化手法に依存するだろう。例えば、楕円型偏微分方程式を解くとき、空間離散化のみが適合され得る。同様に、双曲型偏微分方程式または放物型偏微分方程式を解くとき、有限差分法を使用する場合には時間ステップの適合は許されない。有限要素法および有限体積法では、空間離散化が最初に行われ、したがって、メッシュサイズの適合は許されない。空間領域および時間領域の両方が同時に離散化されるときにのみ、時間ステップおよびメッシュサイズの両方を変更することが許される。メッシュレス法を含むより最近の部類の離散化手法では、時間離散化、節点密度(nodal density)、およびその他の解エンリッチメントパラメータ(解富化パラメータ:solution enrichment parameter)のうちの1つ以上が変更され得る。
【0047】
いくつかの実施形態では、異なるプロセッサ間の異なるローカルベクトルの独立した発展によって導入される計算誤差は、計算リソースを再割り当てすることにより軽減され得る。例えば、ローカルベクトルのうちのいくつかがゆっくりと発展している場合、すなわち、例えばより大きな計算要件ゆえに、時間ステップまたは反復ごとに消費されるプロセッサ時間が大きい場合、隣り合うローカルベクトルの発展は遅くなり、最終的にはシステム(系)全体が遅くなるだろう。これに応答して、スケジューラ216は、プロセッサ間のローカルベクトルの発展における非一様性に起因する誤差を低減し、シミュレーションの継続時間を最小化することを助けるために、プロセッサ220(n)間で追加の計算リソースをそれらのベクトルに割り当てるか、またはローカルベクトルを再割り当てし得る。分散メモリアーキテクチャ228、共有メモリアーキテクチャ228、または両者の組み合わせである階層メモリアーキテクチャ228であり得る、ソルバを実装するアーキテクチャに応じて、負荷分散アルゴリズムの具体的な実装は異なるものであり得る。
【0048】
図3は、本発明による工学的問題を解くための方法のフローチャートを提示している。プロセスは、工学的問題を表す、問題領域の3次元モデル、偏微分方程式および境界条件を、インターフェースにおいて受け取ることから始まる(ステップ300)。偏微分方程式および境界条件を有する当該3次元モデルが、離散化器を使用して、少なくとも1つの代数方程式に変換される(ステップ304)。次に、少なくとも1つの代数方程式は、分割器を使用して、解についての複数のローカルベクトルに分解される(ステップ308)。各ローカルベクトルは、スケジューラを使用して、解くためのプロセッサに割り当てられる(ステップ312)。
【0049】
各プロセッサは、他の割り当てられたプロセッサから独立して、他のプロセッサからのデータを待たずに、その割り当てられたローカルベクトルを解く。一方、誤差制御器は、各ローカルベクトルに付随する誤差をモニターし、誤差を最小化するか、または所望のレベル内に維持するために、適切な手段をとる(ステップ316)。いくつかの実施形態では、誤差制御器は、誤差を制限するために、(離散化の単一のステップ調整を介して)他のローカルベクトルとは無関係に、離散化パラメータ(例えば、時間離散化)を調整することとなる。いくつかの実施形態では、スケジューラは、実行時にローカルベクトルを再割り当てして、誤差を制限することとなる。いったん解くことが完了すると、それはインターフェースを使用して通知される(ステップ320)。
【0050】
図4は、本発明によりローカルベクトルを割り当てて解く処理について展開したフローチャートを提示する。上述したように、代数方程式が複数のローカルベクトルに分解された後(ステップ308)、当該複数のローカルベクトルは解くための複数のプロセッサの間で割り当てられる(ステップ312)。各プロセッサ(p)は、複数のローカルベクトルを割り当てられ(ステップ400)、リスト(Qp)、待機キュー(Wp)、および先入れ先出し方式によりメッセージを格納するメッセージキュー(Mp)を保持する。各プロセッサに割り当てられた当該複数のローカルベクトルのインデックスは、Qpにリストされ、一方、他のプロセッサからのデータを待機する当該複数のローカルベクトルのインデックスの順序付きリストを格納するWpおよびMpは、両方とも空のキューとして初期化される(ステップ404)。一般的に言えば、Wpでは、最小の発展を有するローカルベクトルが、その発展において先行するローカルベクトルよりも、更新のために優先される。
【0051】
実行は、各プロセッサがそのQpのインデックスをチェックすることから始まる(ステップ408)。Qpが空でない場合、インデックスjは、特定のプロセッサpに割り当てられた全てのローカルベクトル間の発展の分離(乖離)が最小限であるようにQpから選択され(ステップ420)、カレントデータ、すなわち、関連するローカルベクトル(すなわち、x[j])を更新するために必要なデータの最新のコピーが利用可能であるかどうかを調べるためにチェックされる(ステップ424)。カレントデータが利用可能でない場合、より発展の小さなローカルベクトルがより発展の大きなローカルベクトルよりもキュー内において高い位置にあるように、インデックスjがWpに挿入され(ステップ428)、プロセスが繰り返され、Qpのインデックスをチェックすることによって再び開始する(ステップ408)。
【0052】
カレントデータが利用可能である場合、ローカルベクトルx[j]が更新され、更新されたデータを必要とする全てのローカルベクトルに対して当該更新が伝えられ、更新されたデータを受信したローカルベクトルのうちのいずれかがWp内にある場合、それらはQpに戻される(ステップ432)。ローカルベクトルx[j]からの更新されたデータを必要とするローカルベクトルのうちのいずれかが別のプロセッサに割り当てられている場合、更新された情報は通信バッファ(図示せず)に送られる。通信バッファから、いったん宛先のプロセッサに送るのに十分なデータが利用可能になると、ノンブロッキング通信が遠隔のプロセッサに送られ、データは遠隔のプロセッサ(図示せず)上におけるメッセージキューにプッシュされる。
【0053】
終了基準(ステップ436)が満たされない場合、インデックスjはQpに戻ってリストされる(ステップ440)。例えばローカルベクトルx[j]が所望のレベルまで発展し、それ以上の更新を必要としないために、ローカルベクトルx[j]が終了基準(ステップ436)を満たす場合、シミュレーションの残りのためにローカルベクトルx[j]は省略される。
【0054】
終了基準(ステップ436)が満たされているかどうかにかかわらず、Qpが空であるかどうかをチェックすること(ステップ408)によってプロセスが再び開始する前に、負荷分散アルゴリズムは任意選択的に、特定の基準を満たしたときに呼び出され得(ステップ444)、メッセージキューは任意選択的にチェックされ得る(ステップ448)。負荷分散アルゴリズム(ステップ444)は実質的に、プロセッサ間のローカルベクトルの発展が一様になるように、プロセッサ間においてローカルベクトルを再割り当てする。一実施形態では、負荷分散アルゴリズムは、ある頻度で、最も発展の大きなローカルベクトルのホストであるプロセッサに、最も発展の小さなローカルベクトルを移動させることを含む。
【0055】
同様に、メッセージキューをチェックするための基準が満たされた場合、Mpからの全てのメッセージがポップされ、それらの宛先に送信される(ステップ448)。これらのメッセージからデータを受信したローカルベクトルのうちのいずれかがWpにおいて待機している場合、それらが更新準備のできた状態にあるかどうかを確認するために、それらはQpに転送される(ステップ448)。
【0056】
実行中、Qpが空であることが判明したときはいつでも(ステップ408)、Wpが、それが空であるかどうかを調べるために、チェックされる(ステップ412)。Wpが空でない場合、Wpからのトップインデックスがポップされ、関連するローカルベクトルが更新され、当該更新が伝えられ、当該更新を受け取るであろうローカルベクトルのうちのいずれかがそのプロセッサのWp内にある場合、それらはそれらのプロセッサのQpに移動される(ステップ416)。再び、Qpが空であるかどうかをチェックする(ステップ408)ために制御が移動し、プロセスが繰り返される。
【0057】
Qpが空であり、かつ追加のデータを待機するローカルベクトルがもはや存在しない場合、すなわちWpが空である場合(ステップ412)、プロセッサは任意のタスクの実行を停止し、シミュレーションの終了を待機する(ステップ414)。シミュレーションは、全てのプロセッサが実行を停止し、シミュレーション結果が転送されたとき、終了する。
図4の実施形態は、分散メモリアーキテクチャにおける実装の一例であり、当業者によって認識されるように、唯一の実装でも最も効率的な実装でもあり得ない。実際の実施形態は、新しいおよび高度な並列プログラミング概念、(ハードウェア製造業者によって提供されるものを含む)新しいソフトウェアライブラリ等を活用しつつ、種々のアーキテクチャ間の種々の適用に対して劇的に変化し得る。
【0058】
前述の図面および説明のさまざまな特徴、要素、方法またはプロセスは、本明細書において説明される実装(実施)を実現するために、相互交換可能または組み合わせ可能であることを理解されたい。本出願の態様は説明された実装以外のものによって実施され得る。当該説明された実装は限定ではなく例示の目的において提示されている。本出願の態様は、以下の特許請求の範囲によってのみ限定される。
【0059】
以上の情報に基づき、当業者であれば、本発明が広範な有用性および応用(適用)を有し得ることを容易に理解するだろう。本明細書に具体的に記載されたもの以外の本発明の多くの実施形態および適合、ならびに、多くの変形、修正および同等の構成は、本発明の実質または範囲から逸脱することなく、本発明およびその前述の説明から明らかであるか、または本発明およびその前述の説明によって合理的に示唆されるだろう。
【0060】
したがって、1つ以上の好ましい実施形態に関して、本発明が本明細書において詳細に説明されてきたが、本開示は、本発明の例証および例示にすぎず、単に本発明の十分かつ可能な開示を提供するためにのみなされたものであることを理解されたい。前述の開示は、本発明を限定するように解釈されるべきではなく、またはそうでなければ、任意のかかる他の実施形態、適合、変形、修正、または同等の構成を排除するように解釈されるべきではない;本発明は、本明細書に添付の特許請求の範囲、およびその等価物によってのみ限定されるものである。