IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ダッソー システムズの特許一覧

特許7071810並列に動作する演算リソースの集合を用いて3Dシーンをシミュレートするための方法、プログラム、及びシステム
<>
  • 特許-並列に動作する演算リソースの集合を用いて3Dシーンをシミュレートするための方法、プログラム、及びシステム 図1
  • 特許-並列に動作する演算リソースの集合を用いて3Dシーンをシミュレートするための方法、プログラム、及びシステム 図2
  • 特許-並列に動作する演算リソースの集合を用いて3Dシーンをシミュレートするための方法、プログラム、及びシステム 図3
  • 特許-並列に動作する演算リソースの集合を用いて3Dシーンをシミュレートするための方法、プログラム、及びシステム 図4
  • 特許-並列に動作する演算リソースの集合を用いて3Dシーンをシミュレートするための方法、プログラム、及びシステム 図5
  • 特許-並列に動作する演算リソースの集合を用いて3Dシーンをシミュレートするための方法、プログラム、及びシステム 図6
  • 特許-並列に動作する演算リソースの集合を用いて3Dシーンをシミュレートするための方法、プログラム、及びシステム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-11
(45)【発行日】2022-05-19
(54)【発明の名称】並列に動作する演算リソースの集合を用いて3Dシーンをシミュレートするための方法、プログラム、及びシステム
(51)【国際特許分類】
   G06F 9/50 20060101AFI20220512BHJP
   G06F 9/48 20060101ALI20220512BHJP
   G06T 15/00 20110101ALI20220512BHJP
【FI】
G06F9/50 150D
G06F9/48 300F
G06F9/50 150E
G06T15/00 501
【請求項の数】 15
【外国語出願】
(21)【出願番号】P 2017190751
(22)【出願日】2017-09-29
(65)【公開番号】P2018092607
(43)【公開日】2018-06-14
【審査請求日】2020-08-31
(31)【優先権主張番号】16306291.2
(32)【優先日】2016-09-30
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】500102435
【氏名又は名称】ダッソー システムズ
【氏名又は名称原語表記】DASSAULT SYSTEMES
(74)【代理人】
【識別番号】110000752
【氏名又は名称】特許業務法人朝日特許事務所
(72)【発明者】
【氏名】マリカ ブルケナフェド
(72)【発明者】
【氏名】フィリップ・ロバート・フェリックス ベルマンズ
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2003-346178(JP,A)
【文献】特開2003-271985(JP,A)
【文献】特表2007-512613(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 9/48
G06T 15/00
(57)【特許請求の範囲】
【請求項1】
3Dシーンをシミュレートするための、コンピュータによって実施される方法であって、当該シミュレーションは並列に動作するソルバの集合を用いて実行され、
3Dシーンを複数のゾーンに分割するステップ(100)であって、各ゾーン(Aj)が、前記集合のうちの1つのソルバ(Si)によるリアルタイム演算制約を満たすサイズを有する、分割するステップと、
前記複数のゾーンのそれぞれをソルバに割り当てるステップ(110)と、
ソルバ(Si)の負荷(λi)の推定値を算出(120)し、1つ又は複数のソルバが過大負荷であるか過小負荷であるかを判定するステップ(130)と、
各ゾーン(Aj)について、当該ゾーンが割り当てられたソルバの負荷に対する当該ゾーンの寄与度(£Aj)を算出するステップであって、前記寄与度(£Aj)が重み係数とソルバが前記ゾーンのために使用される比との積であるステップと、
過大負荷又は過小負荷のソルバの1つ又は複数のゾーンを別のソルバに再割り当てするステップであって、前記算出したゾーンの寄与度に基づき、組み合わせ最適化アルゴリズムを用いて行われる、再割り当てするステップと
を含む方法。
【請求項2】
前記1つ又は複数のゾーンを別のソルバに再割り当てするステップは、
能動的にシミュレーションを演算するソルバの数が最小であること、
別のソルバに再割り当てされるゾーンの数が最小であること、及び
前記1つ又は複数のゾーンが、前記再割り当てされた1つ又は複数のゾーンの近傍のゾーンについて既に演算を実行済みである別のソルバに再割り当てされること
のうち1つ又は複数の基準に従って実行される
ことを特徴とする請求項1に記載のコンピュータによって実施される方法。
【請求項3】
前記1つ又は複数のゾーンを別のソルバに再割り当てすることは、各ソルバに結果として生じる負荷(λi’)が
【数1】

を満たすか検証することで実行され、ここで、λminは当該ソルバがサポートしなければならない最小負荷であり、λmaxは当該ソルバがサポートしなければならない最大負荷であり、前記最小負荷および前記最大負荷は当該ソルバの定数であ
ことを特徴とする請求項1又は2に記載のコンピュータによって実施される方法。
【請求項4】
前記各ソルバの負荷(λi)の推定値は、関係式
【数2】

を用いて算出され、
ここで、λi(%)は、推定負荷λiの割合であり、Tmaxは、前記シミュレーションの時間ステップを算出するのにソルバに割り当てられた定数である最大時間であり、Tiは、前記シミュレーションの時間ステップを算出するのにソルバが用いた経過時間である
ことを特徴とする請求項1~3のいずれか一項に記載のコンピュータによって実施される方法。
【請求項5】
ゾーンの寄与度(£Aj)は、式
【数3】

を用いて算出され、ここで、μiは、]0;1]の範囲に属する値を有する重み係数である
ことを特徴とする請求項1~4のいずれか一項に記載のコンピュータによって実施される方法。
【請求項6】
前記重み係数μiは、
ゾーンのサーフェス又はボリューム、
ゾーンの動的オブジェクトの数、及び
負荷λiのソルバの解析モデル
のうちから選択した1つ又は複数のものから推定される
ことを特徴とする請求項5に記載のコンピュータによって実施される方法。
【請求項7】
前記複数のゾーンのうち1つ又は複数のゾーンは2Dゾーンであり、2Dゾーンは前記3Dシーンにおける2Dサーフェスである
ことを特徴とする請求項1~6のいずれか一項に記載のコンピュータによって実施される方法。
【請求項8】
前記複数のゾーンのうち1つ又は複数のゾーンは3Dゾーンであり、3Dゾーンは3Dシーンの3Dボリュームである
ことを特徴とする請求項1~7のいずれか一項に記載のコンピュータによって実施される方法。
【請求項9】
負荷(λi)の推定値を算出する前記ステップ、及び1つ又は複数のソルバが過大負荷であるか過小負荷であるかを判定する前記ステップは、シミュレーションのP個の時間ステップ毎に実行され、ここでPは自然数である
ことを特徴とする請求項1~8のいずれか一項に記載のコンピュータによって実施される方法。
【請求項10】
ゾーンの寄与度(£Aj)は1つ又は複数のソルバが過大負荷であるか過小負荷であるかが判定された後に算出される
ことを特徴とする請求項9に記載のコンピュータによって実施される方法。
【請求項11】
全てのソルバの演算能力が同一である
ことを特徴とする請求項1~10のいずれか一項に記載のコンピュータによって実施される方法。
【請求項12】
過大負荷又は過小負荷であるソルバの1つ又は複数のゾーンを別のソルバに再割り当てするステップは、さらに
再割り当てされるべきゾーンを有するソルバによって、再割り当てされるべきゾーン内に位置する3Dシーンのオブジェクトを識別するステップと、
再割り当てされるべきゾーンを受けとる前記ソルバによって、前記識別したオブジェクトをインスタンス化するステップと、
再割り当てされるべきゾーンを有する前記ソルバによって、前記識別したオブジェクトのインスタンス除去するステップと、
前記ゾーンを受け取る前記ソルバに前記ゾーンを再割り当てするステップ
を含むことを特徴とする請求項1~11のいずれか一項に記載のコンピュータによって実施される方法。
【請求項13】
請求項1~12のいずれか一項に記載の方法を実行するための指示を含むコンピュータプログラム。
【請求項14】
請求項13に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記憶媒体。
【請求項15】
請求項13に記載のコンピュータプログラムを記録したメモリに接続されたプロセッサを備えるシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータプログラム及びシステムの分野に関し、より具体的には、並列に動作する演算リソースの集合を用いて3Dシーンをシミュレートするための方法、システム、及びプログラムに関する。
【背景技術】
【0002】
3Dシミュレーションは、過去30年間にわたり、設計段階のシステムが実際にどのような挙動をみせるかを検証するエンジニアから、理論的概念を調査又は実証する科学者、ビデオゲームをプレイしたり3Dアニメーションフィルムを楽しんだりする一般市民にいたるまで、多種多様な観客やユーザの間で大きな成功を収めている。3Dシミュレーションは、過去30年間にわたり大きく進化しており、依然として勢いを増している。これは、より複雑でより現実的な挙動(マルチボディ剛体ダイナミクス、ヒューマンシミュレーション、クロスシミュレーション、粒子シミュレーションなど)、より大きな集団、より多岐にわたるオブジェクト、及び、より大きなスケールを求める観客のニーズに応えるものである。
【0003】
より具体的にはビデオゲーム業界で始められた3Dシミュレーションは、大規模な仮想世界で対話操作を行う膨大な数のユーザをサポートする特定の技術を開発することによって、リアルタイム要件を満たす必要がある。リアルタイムの応答は、接続されたユーザの数に関係なく、またアプリケーションにおける解決と描画のための演算コストに関係なく、接続されたユーザにいつでも提供する必要がある。
【0004】
マッシブリー・マルチユーザ・オンライン・アプリケーション(Massively Multi-user On line applications:MMO)では、多数のユーザが同時に、実世界現象シミュレータや没入型アプリケーションなど、アプリケーションを使用できる。同様に、マッシブリー・マルチユーザ・オンライン・ゲーム(Massively Multi-user On line Games:MMOG)では、多数のゲーマーが同時にビデオゲームをプレイできる。MMO及びMMOGは、ユーザ又はゲーマーがアプリケーション又はビデオゲームに接続できるようにするため、例えばインターネットなどのコンピュータネットワークに特に依存している。本明細書を通して、「アプリケーション」及び「ビデオゲーム」の語は同義語として理解され、MMO及びMMOGの語は区別なく使用され得る。
【0005】
MMOは、ユーザ又はゲームプレイヤーに、より現実的な経験を提供するために、可能な限りリアルタイムで可能な限り緻密に描画されることが求められる複雑で大きな仮想環境を必要とする。MMOは、3Dシーンを表現し操作するために特別に設計されており、エンドユーザのコンピュータ上で、典型的には、対話型のシーケンシャルなリアルタイム3Dシーンの生成を必要とするアプリケーションで使用される。ユーザが3Dシーンに対して対話操作を行うと、コンピュータは、ユーザが参加している連続的で進行中の現実感をユーザに伝えるのに十分な速さで3D表現を再描画する。シーンは、3Dシーンに対して対話操作を行うときにユーザが操れる、数多くの別々のオブジェクトで構成されている。したがって、MMOは、空間的に複雑で非常に緻密な仮想環境にリアルタイムで参加する多数のユーザを管理するために、一般的に、大量のデータ、高速なデータ転送、及び高いデータ複雑性を要する。
【0006】
MMOは、典型的には、コンピュータモデル内で、現実世界の現象をシミュレートするのに使用される。例えば、マルチボディ剛体ダイナミクス、ヒューマンシミュレーション、クロスシミュレーション、粒子シミュレーションなどである。プロセスのシミュレーションや使用している製品のシミュレーションを行うために、シミュレーションには、製造プロセスや製品で用いられる材料の物理的特性(強度、弾力性など)のような、現実世界の現象を記述する正確なデータとアルゴリズムが必要である。3D CAD/CAM(Computer Aided Design(コンピュータ支援設計)、Computer Aided Manufacturing(コンピュータ支援製造))のツールは、製品又は構成部品の3D表現の作成を可能にする。MMOは3D体験とも呼ばれ、それはすなわち、エンジニアがオブジェクトの挙動を研究するための仮想環境であり、シミュレートする環境は、典型的には工業的環境である。
【0007】
永続的に変化する作業負荷に動的に適応し、リアルタイム性を維持するために、MMOは、MMOG同様、スケーラブルでなければならない。スケーラビリティは、特に、アプリケーションを同時に使用できるユーザの数、シミュレーションを演算するのに必要な演算リソースの数、アプリケーションによって許容される、3Dシーンのオブジェクト間で同時に行われる対話操作の数などを含む。
【0008】
MMOGの場合、含まれるすべての動的オブジェクトの位置及びグラフィック属性同様、ユーザ数も大きく変化し得る。それにもかかわらず、ゲームが開始される前に、周囲の風景が一度だけ設定され、動的オブジェクトのタイプとサポートされている挙動クラスがあらかじめ定義される。言い換えれば、MMOGの3Dシーンは、演算リソースのニーズを強く制限するいくつかの所定の特性を含み、それによりスケーラビリティを改善する。それにより演算リソースのニーズを予測することが可能になる。
【0009】
逆に、高度なMMOの場合、3Dシーンの風景や集団タイプは、特にアプリケーションの実行中に、発展し豊かになる。実際、MMOは、オブジェクトの挙動が動的であり、かつ、予め定義された動作クラスを排除するような、現実世界の現象をシミュレートすることを目的としている。したがって、MMOの3D風景は、MMOGのような所定の特性を使用することができない。
【0010】
したがって、3D体験にMMOGと同じ種類のリアルタイム性及び大規模性に関する制約がある場合でも、はるかに洗練され、現実的で、正確な物理的挙動のための特定の厳格な要件があり、そのため、演算能力が要求される。
【0011】
1つのソルバでは解決すべきすべての演算にリアルタイムで対処できないため、並列化技術が必要である。簡潔に言えば、3D体験は、いわゆるパーツやゾーンに分割され、これらがそれぞれ3Dシーンの特定の空間領域を扱う。オブジェクトの集団は発展し、そうした変化の中、対話操作の量も同様に増加するため、このようなパーツの演算コストは時間の経過と共に変化する。そのため、これらのパーツすべてをソルバに動的に分配して、リアルタイム応答を可能にするためのCPUリソースを最適に使用する必要がある。このニーズは、一般に、動的ロードバランシングと呼ばれる。
【0012】
MMOGで使用されているもののような、リアルタイム性に関して適用可能な技術を考えると、それらは3D体験の目的には適していない。MMOGのロードバランシングは、シーンの現象を自由に変える。つまり、ユーザにとって不自然に見えないように、ユーザを別の部分に移すことができ、オブジェクトを高負荷の部分から除去することができ、また高負荷の部分では、対話操作を無効化することができる。したがって、ゲームにおける物理特性はハードウェアの制限に合わせ改造され、現実感がさらに失われる。3D体験では、物理特性は一定の現実感のために満たすべき決定的な制約であるため、調整パラメータとして用いることはできない。
【0013】
ロードバランシングの問題は、有限要素法などの領域でも対処されており、広範にわたる効率的なソリューションが提案されている。しかし、リアルタイム性は関心の範囲外であるため、これらの調整策はすべて、演算時間パフォーマンスに明確に関連するパラメータの調整ではなく、使用される解決アルゴリズムに依存するアドホック調整や、モデル(例えば、メッシュ)のジオメトリ特性や、研究された使用事例に固有の一時的な数値特性(例えば、非線形性)に基づいている。
【0014】
こうした状況において、最適な数のソルバ間での適正なロードバランシング、それらの最適な能力での動作、及び3Dシーンのシミュレーションのリアルタイム応答を損なう可能性の高いオーバーヘッドの回避を達成する、改善された方法、コンピュータプログラム、及びシステムが依然として必要とされている。
【発明の概要】
【0015】
したがって、3Dシーンをシミュレートするための、コンピュータによって実施される方法であって、当該シミュレーションが、並列に動作する演算リソースの集合を用いて実行されるような方法が提供される。本方法は以下を含む。
・3Dシーンを複数のゾーンに分割することであって、各ゾーンが、前記集合のうちの1つの演算リソースによるリアルタイム演算制約を満たすサイズを有するような、分割すること。
・前記複数のゾーンのそれぞれを演算リソースに割り当てること。
・各演算リソースの負荷の推定値を算出し、1つ又は複数の演算リソースが過大負荷であるか過小負荷であるかを判定すること。
・各ゾーンについて、当該ゾーンが割り当てられた演算リソースの負荷に対する当該ゾーンの寄与度を算出すること。
・過大負荷又は過小負荷の演算リソースの1つ又は複数のゾーンを別の演算リソースに再割り当てすることであって、前記算出したゾーンの寄与度に基づき、組み合わせ最適化アルゴリズムを用いて行われる、再割り当てすること。
【0016】
本方法は、以下のうち1つ又は複数を含んでいてもよい。
・前記1つ又は複数のゾーンを別の演算リソースに再割り当てすることは、以下の基準のうち1つ又は複数に従って実行される:演算リソースの数が最小であること、別の演算リソースに再割り当てされるゾーンの数が最小であること、前記1つ又は複数のゾーンが、前記再割り当てされた1つ又は複数のゾーンの近傍のゾーンについて既に演算を実行済みである別の演算リソースに再割り当てされること。
【0017】
・前記1つ又は複数のゾーンを別の演算リソースに再割り当てすることは、各演算リソースに結果として生じる負荷(λi’)が
【数1】
を満たすか検証することで実行され、ここで、λminは演算リソースの最小負荷であり、λmaxは演算リソースの最大負荷である。
【0018】
・前記各演算リソースの負荷(λi)の推定値は、関係式
【数2】

を用いて算出され、
ここで、λi(%)は、推定負荷λiの割合であり、Tmaxは、前記シミュレーションの時間ステップを算出するのに演算リソースに割り当てられた最大時間であり、Tiは、前記シミュレーションの時間ステップを算出するのに演算リソースが用いた経過時間である。
・ゾーンの寄与度(£Aj)は、式
【数3】

を用いて算出され、ここで、μiは、]0;1]の範囲に属する値を有する重み係数であ
る。
【0019】
・前記重み係数μiは、ゾーンのサーフェス又はボリューム、ゾーンの動的オブジェクトの数、及び負荷λiの演算リソースの解析モデルのうちから選択した1つ又は複数のものから推定される。
【0020】
・前記複数のゾーンのうち1つ又は複数のゾーンは2Dゾーンであり、2Dゾーンは前記3Dシーンにおける2Dサーフェスである。
【0021】
・前記複数のゾーンのうち1つ又は複数のゾーンは3Dゾーンであり、3Dゾーンは3Dシーンの3Dボリュームである。
【0022】
・負荷(λi)の推定値を算出する前記ステップ、及び1つ又は複数の演算リソースが過大負荷であるか過小負荷であるかを判定する前記ステップは、シミュレーションのP個の時間ステップ毎に実行され、ここでPは自然数である。
【0023】
・ゾーンの寄与度(£Aj)は1つ又は複数の演算リソースが過大負荷であるか過小負荷であるかが判定された後に算出される。
【0024】
・全ての演算リソースは同一である。
【0025】
・過大負荷又は過小負荷である演算リソースの1つ又は複数のゾーンを別の演算リソースに再割り当てすることは、さらに、再割り当てされるべきゾーンを有する演算リソースによって、再割り当てされるべきゾーン内に位置する3Dシーンのオブジェクトを識別することと、再割り当てされるべきゾーンを受けとる前記演算リソースによって、前記識別したオブジェクトをインスタンス化することと、再割り当てされるべきゾーンを有する前記演算リソースによって、前記識別したオブジェクトを抑制することと、前記ゾーンを受け取る前記演算リソースに前記ゾーンを再割り当てすることを含む。
【0026】
さらには、前記方法を実行するための命令を含むコンピュータプログラムが提供される。
【0027】
さらには、前記コンピュータプログラムを記録したコンピュータ読み取り可能記憶媒体が提供される。
【0028】
さらには、前記コンピュータプログラムを記録したメモリに接続されたプロセッサを備えるシステムが提供される。
【図面の簡単な説明】
【0029】
図1】本方法の一例のフローチャートを示す。
図2】本方法の一例を示す。
図3】本方法の一例を示す。
図4】本方法の一例を示す。
図5】本方法の一例を示す。
図6】本方法の一例を示す。
図7】本システムの一例を示す。
【発明を実施するための形態】
【0030】
図1のフローチャートを参照して、3Dシーンをシミュレートするための、コンピュータによって実施される方法を提案する。シミュレーションは、並列に動作する演算リソースの集合を用いて実行される。本方法は、シミュレートされた3Dシーンを複数のゾーンに分割することを含む。分割は、Ajで表される各ゾーンが、演算リソースの集合のうち、Siで表される1つの演算リソースによるリアルタイム演算の制約を満たすように実行される。本方法はまた、前記複数のゾーンのそれぞれを演算リソースに割り当てることを含む。そして、当該演算リソースは、前記ゾーンに関連する演算の実行を担当する。本方法はさらに、各演算リソースの、λiで表される負荷の推定値を算出することを含む。本方法は、次いで、1つ又は複数の演算リソースが過大負荷であるか過小負荷であるかを判定することを含む。過大負荷とは、シミュレーションの時間ステップ中に実行される演算量が演算リソースの能力を超えていることを意味する。過小負荷とは、シミュレーションの時間ステップ中に実行される演算量が、演算リソースの能力を大きく下回ることを意味する。本方法はまた、ゾーンごとに、当該ゾーンが割り当てられる演算リソースの負荷に対する、当該ゾーンの、£Ajで表される寄与度を算出することを含む。本方法はさらに、過大負荷又は過小負荷の演算リソースの1つ又は複数のゾーンを、他の演算リソースに再割り当てすることを含む。過大負荷又は過小負荷であると判定された演算リソースは、出発演算リソースとも呼ばれる。1つ又は複数のゾーンが再割り当てされる先の演算リソースは、受取演算リソースとも呼ばれる。再割り当ては、組み合わせ最適化アルゴリズムを用いて算出したゾーンの寄与度に基づく。
【0031】
このような方法は、最適な数のソルバ間での適正なロードバランシング、それらの最適な能力での動作、及び3Dシーンのシミュレーションのリアルタイム応答を損なう可能性の高いオーバーヘッドの回避を達成する。特に、マルチサーバーアーキテクチャにおけるソルバとともに使用すると、実行中の3Dシーンを、ソース物理アーキテクチャからより大きなターゲットアーキテクチャにスムーズに移行できるため、本方法では3Dシーンを無制限に拡張することが可能である。この方法は簡単に実施でき効率的に実行できる一方で、ソルバ間の演算負荷について妥当なバランスをとることが可能である。適正なバランスは、ゾーンが割り当てられた演算リソースの負荷に対する各ゾーンの寄与度を推定して得た知識を、組み合わせ最適化アルゴリズムの利用と組み合わせて、1つ又は複数のゾーンの再割り当てについての最適解を最適な時間フレームで見つけることによって達成される。
【0032】
本方法は、コンピュータにより実施される。すなわち、本方法のステップ(あるいは略全てのステップ)が少なくとも1つのコンピュータ、又は類似の任意のシステムによって実行される。よって本方法のステップは、コンピュータにより、完全に自動的に、あるいは半自動的に実行される可能性がある。例えば、本方法の少なくともいくつかのステップは、ユーザとコンピュータの対話を通じて始動されてもよい。求められるユーザとコンピュータの対話レベルは、想定される自動性のレベルに応じたものであって、ユーザの要望を実装する必要性との間でバランスをとるものとしてもよい。例えば、このレベルは、ユーザが設定し、かつ/あるいは、予め定義されていてもよい。
【0033】
例えば、3Dシーンを分割するステップは、ユーザによって、例えば、専用のツールを用いて実行される可能性がある。別の例では、1つ又は複数のゾーンの別の演算リソースへの再割り当ては、ユーザによる制約に従って実行されてもよく、例えば、ユーザは、所与のリソースについて、過大負荷又は過小負荷のままにするべきであると判定できる。さらなる例では、シミュレートすべき3Dシーンを提供するステップは、分割ステップに先行してもよく、ユーザによる選択に応じて実行されてもよい。ユーザは、キーボード、マウス、スタイラスなどの触覚装置を介して選択を実行してもよい。例えば、ツーボタン式のマウスでは、シーンのリストからシーンを選択するのに左ボタンを用いることができる。本システムはまた、デフォルトでシーンを特定してもよい。すなわち、ユーザの選択なしに特定することができる。
【0034】
本方法のコンピュータによる実施の典型的な例は、この目的に適したシステムを用いて本方法を実行することである。当該システムは、本方法を実行するための命令を含むコンピュータプログラムを記録したメモリに接続されたプロセッサを備える。メモリは、データベースを記憶していてもよい。メモリは、そのような記憶に適した任意のハードウェアであり、場合により、物理的に区別可能ないくつかの部分(例えば、プログラム用に1つ、場合によりデータベース用に1つ)を含む。このようなシステムは、最適な数のソルバ間での適正なロードバランシング、それらの最適な能力での動作、及び3Dシーンのシミュレーションのリアルタイム応答を損なう可能性の高いオーバーヘッドの回避を達成する。本システムはさらに、3Dシーン及び3Dシーン内のオブジェクトを表示するのに適したグラフィカル・ユーザ・インターフェース(GUI)を備えていてもよい。GUIは、メモリ及びプロセッサに接続された表示装置に表示される。
【0035】
「データベース」とは、検索及び取得用に最適化されたデータ(すなわち情報)の任意の集合を意味する。データベースは、メモリに格納されると、コンピュータによる迅速な検索及び取得を可能にする。データベースは、実際、様々なデータ処理動作と連動して、データの記憶、取得、修正、及び削除を容易にするよう構造化されている。データベースは、それぞれ1つ又は複数のフィールドからなるレコードに分割可能な1つのファイルあるいはファイルのセットからなっていてもよい。フィールドは、データ記憶の基本単位である。ユーザは、主としてクエリによってデータを取得してもよい。ユーザは、使用されているデータベース管理システムのルールに従って、キーワードとソートコマンドを用いて、多数のレコードにおけるフィールドを、迅速に、検索、再配置、グループ化、及び選択し、特定の集積データに関するレポートを取得又は作成することができる。
【0036】
本方法の場合、データベースは、3Dシーンと、3Dシーンの1つ又は複数のオブジェクトと、複数のゾーンに関連する情報とを含む。1つ又は複数のオブジェクトはデータベースに記憶されており、シーンとは独立して記憶されていてもよい。データベースはさらに、本システムによって実行される命令を含むコンピュータプログラムを含んでいてもよい。命令は、本方法のステップの実行に適合している。
【0037】
本方法は、一般に、3Dシーンにおけるモデル化オブジェクトを操作する。モデル化オブジェクトは、例えばデータベースに格納されたデータによって定義される任意のオブジェクトである。さらには、「モデル化オブジェクト」という用語は、データそのものも指す。システムの種類に応じて、異なる種類のデータによってモデル化オブジェクトが定義されてもよい。実際、システムは、CADシステム、CAEシステム、CAMシステム、PDMシステム、及び/又はPLMシステムのうちの任意の組み合わせであってもよい。それら異なるシステムにおいて、モデル化オブジェクトは、対応するデータによって定義される。したがって、CADオブジェクト、PLMオブジェクト、PDMオブジェクト、CAEオブジェクトCAMオブジェクト、CADデータ、PLMデータ、PDMデータ、CAMデータ、CAEデータについて言及することがある。しかしながら、これらのシステムは互いに排他的ではなく、モデル化オブジェクトは、これらのシステムの任意の組み合わせに対応するデータによって定義することができる。本システムはまた、3Dシーン及び/又は3Dモデル化オブジェクトがシミュレートされているMMO又はMMOGシステムであってもよい。
【0038】
CADシステムは、少なくとも、CATIAのようなモデル化オブジェクトのグラフィック表現に基づくモデル化オブジェクトの設計に適した任意のシステムをも意味する。この場合、モデル化オブジェクトを定義するデータは、モデル化オブジェクトを表現可能にするデータを含む。CADシステムは、例えば、辺や線を用い、また、場合により面や曲面を用いて、CADモデル化オブジェクトの表現を提供してもよい。線、辺、あるいは面は、例えば、非一様有理Bスプライン(NURBS)など、様々な様式で表現されてもよい。具体的には、CADファイルは仕様を含み、その仕様に基づきジオメトリが生成可能であり、よって表現が生成可能となる。モデル化オブジェクトの仕様は1つ又は複数のCADファイルに格納されていてもよい。CADシステムでモデル化オブジェクトを表現するファイルの典型的なサイズは、一部分あたり1メガバイトの範囲である。また、モデル化オブジェクトは、典型的には、数千の部分の集合体であってもよい。
【0039】
本発明の文脈において、モデル化オブジェクトは、典型的には、3Dモデル化オブジェクト、例えば、一つの部品や部品の集合体などの製品、あるいは製品の集合体を表現するものであってもよい。「3Dモデル化オブジェクト」は、3D表現が可能なデータによってモデル化される任意のオブジェクトを意味する。3D表現は、その部品をすべての角度から見ることを可能にする。たとえば、3Dで表現された3Dモデル化オブジェクトは、その軸のうちの任意の軸、あるいは、その表現が表示された画面中の任意の軸を中心に、処理して回転させることが可能である。これは、特に、3Dモデル化されていない2Dアイコンについては除外される。3D表現の表示は、設計を容易にする(すなわち、設計者が作業を達成するスピードを統計的に速める)。製品の設計は製造工程の一部であるから、これによって当該産業における製造工程が迅速化する。
【0040】
シミュレートした3Dシーン、及び3Dシーンにおける3Dモデル化オブジェクトは、CADソフトウェア・ソリューションやCADシステム等を用いた仮想的設計の完了後に実世界において製造される、(例えば、機械)部品や、部品の集合などの製品のジオメトリを表現してもよい。CADソフトウェア・ソリューションは、航空宇宙、建築、建設、消費財、ハイテク機器、産業機器、輸送、海洋、及び/又は海洋石油/ガス生産、又は交通を含む、限定されることのない様々な産業分野において製品の設計を可能にする。本方法において想定される3Dモデル化オブジェクトは、このように、地上車両の部品(例えば、自動車及び軽トラック機器、レーシングカー、オートバイ、トラック及びモーター機器、トラック、バス、電車を含む)、航空車両の部品(例えば、航空機体機器、航空宇宙機器、推進機器、防衛製品、航空路線機器、宇宙機器を含む)、海軍車両の部品(例えば、海軍用機器、商業用船舶、オフショア機器、ヨット及び作業船、船舶用機器を含む)、一般的な機械部品(例えば、工業用製造機械、大型移動機械又は機器、設置機器、産業機器製品、加工金属製品、タイヤ製造製品を含む)、電気機械部品又は電子部品(例えば、家電、セキュリティ及び/又は制御及び/又は計装製品、コンピューティング及び通信機器、半導体、医療装置及び設備を含む)、消費者製品(例えば、家具、家庭用及び庭用製品、レジャー用品、ファッション用品、耐久消費財小売用品、織物類小売用品を含む)、及び/又は包装(例えば、食品及び飲料及びたばこ、美容及びパーソナルケア、家庭用製品包装を含む)などのように、任意の機械的部品であり得る工業製品を表してもよい。
【0041】
CADシステムは、履歴ベースのものであってもよい。この場合、モデル化オブジェクトは、さらに、ジオメトリ的特徴の履歴を含むデータによって定義される。モデル化オブジェクトは、標準的なモデリング機能(例えば押し出し、回転、切断、及び/又は丸め)及び/又は標準的な面モデリング機能(例えば、スイープ、ブレンド、ロフト、塗りつぶし、変形、及び/又は平滑化)を用いて、人間(例えば設計者/ユーザ)によって設計されてもよい。このようなモデル化機能をサポートするCADシステムの多くは、履歴ベースのシステムである。これは、設計機能の作成履歴が、典型的には、入力及び出力リンクを介して上記ジオメトリ機能を互いに連結する非循環データフローで保存されることを意味する。履歴に基づくモデル化のパラダイムは、80年代初頭からよく知られている。モデル化オブジェクトは、2つの永続的なデータ表現によって表される。すなわち、履歴とB-rep(すなわち境界表現)である。B-repは、履歴に定義された演算の結果である。モデル化オブジェクトが表現されるときにコンピュータのスクリーン上に表示される部品の形状は、B-rep(例えばそのテッセレーション)である。その部品の履歴とは、設計意図である。基本的に、履歴とは、モデル化オブジェクトに対して行われた操作に関する情報を収集したものである。複雑な部品の表示を容易にするため、B-repを履歴とともに保存してもよい。設計意図に従って部品の設計変更ができるように、履歴をB-repとともに保存してもよい。
【0042】
PLMシステムは、物理的な、製造された製品(又は製造される予定の製品)を表すモデル化オブジェクトの管理に適した任意のシステムを指す。PLMシステムでは、モデル化オブジェクトは、このように、物理的な物体の製造に適したデータによって定義される。これらは、典型的には、寸法の値及び/又は公差の値であってもよい。物体を正しく製造するために、実際、このような値を用いるのが望ましい。
【0043】
CAMソリューションとは、製品の製造データを管理するのに適した、ハードウェアのソフトウェアである、あらゆるソリューションをも指す。製造データは、一般に、製造する製品、製造工程、及び必要なリソースに関するデータを含む。CAMソリューションは、製品の製造工程全体を計画し最適化するのに用いられる。例えば、実現可能性、製造工程の期間、又は製造工程における特定のステップで使用され得るリソース、例えば特定のロボットの数に関する情報をCAMユーザに提供することができる。これにより、管理や必要な投資についての決定を可能にする。CAMは、CAD工程、及び、場合によりCAE工程に続く工程である。このようなCAMソリューションは、ダッソー・システムズにより、DELMIA(登録商標)として提供されている。
【0044】
CAEソリューションとは、モデル化オブジェクトの物理的挙動の分析に適した、ハードウェアのソフトウェアである、あらゆるソリューションをも指す。よく知られており広く用いられているCAE技術は有限要素法(Finite Element Method:FEM)であり、これは、典型的には、モデル化オブジェクトを、物理的挙動を方程式によって計算しシミュレーションできる要素に分割することを含む。このようなCAEソリューションは、ダッソー・システムズにより、SIMULIA(登録商標)として提供されている。成長するCAE技術のもう1つは、CADジオメトリデータを使用せずに異なる物理分野の複数の要素で構成される複雑なシステムのモデリングと解析を行うことを含む。CAEソリューションはシミュレーションを可能にし、それにより、製造する製品の最適化、改善及び検証を可能にする。このようなCAEソリューションは、ダッソー・システムズにより、DYMOLA(登録商標)として提供されている。
【0045】
PDMはProduct Data Management(生産データ管理)の略である。PDMソリューションとは、特定の製品に関するすべての種類のデータを管理するのに適した、ハードウェアのソフトウェアである、あらゆるソリューションを指す。PDMソリューションは、製品のライフサイクルにかかわるすべての関係者によって使用されてもよい。これには、主として技術者のほか、プロジェクトマネージャー、財務担当者、営業担当者、及びバイヤーも含まれる。PDMソリューションは、一般に、製品指向のデータベースに基づく。これにより、関係者が製品に関する一貫したデータを共有することが可能になり、これにより、関係者が異なるデータを用いるのを防止する。このようなPDMソリューションは、ダッソー・システムズにより、ENOVIA(登録商標)として提供されている。
【0046】
図7は、本システムの一例を示すものであって、当該システムは、クライアントコンピュータシステム、例えばユーザのワークステーションである。本システムはサーバであってもよく、例えばサーバはデータベースを備える。ステップのうち1つ又は複数が、本方法の残りのステップを実行するサーバに接続されたクライアントコンピュータによって実行されてもよい。クライアント及びコンピュータは、例えばインターネット、WAN、LANなどのコンピュータネットワークを通じて接続されていてもよい。
【0047】
図7の例のクライアントコンピュータは、内部通信バス1000に接続された中央演算処理装置(CPU)1010、及び同じくバスに接続されたランダムアクセスメモリ(RAM)1070とを備える。クライアントコンピュータは、さらに、バスに接続されたビデオランダムアクセスメモリ1100と関連付けられたグラフィックス処理装置(GPU)1110を備える。ビデオRAM1100は、当該技術分野において、フレームバッファとしても知られる。大容量記憶装置コントローラ1020は、ハードドライブ1030などの大容量記憶装置へのアクセスを管理する。コンピュータプログラムの命令及びデータを具体的に実現するのに適した大容量メモリ装置は、例として、EPROM、EEPROM及びフラッシュメモリ装置のような半導体メモリ装置、内蔵ハードディスクやリムーバブルディスクなどの磁気ディスク、光磁気ディスク、及びCD-ROMディスク1040を含む、全ての形式の不揮発性メモリを含む。前述のいずれも、特別に設計されたASIC(特定用途向け集積回路)によって補完されてもよいし、組み入れられてもよい。ネットワークアダプタ1050は、ネットワーク1060へのアクセスを管理する。クライアントコンピュータはまた、カーソル制御装置、キーボードなどの触覚装置1090を含んでいてもよい。カーソル制御装置は、ユーザがディスプレイ1080上の任意の所望の位置にカーソルを選択的に位置させることを可能にするために、クライアントコンピュータ内で使用される。さらに、カーソル制御デバイスは、ユーザが様々なコマンドを選択し、制御信号を入力することを可能にする。カーソル制御装置は、システムに制御信号を入力するための多数の信号生成装置を含む。典型的には、カーソル制御装置はマウスであってもよく、マウスのボタンは信号を生成するために使用される。あるいは、又は追加的に、クライアントコンピュータシステムは、感知パッド及び/又は感知スクリーンを備えてもよい。
【0048】
コンピュータプログラムは、コンピュータによって実行可能な命令を含んでいてもよく、命令は、上記システムに方法を実行させるための手段を含む。プログラムは、システムのメモリを含む任意のデータ記憶媒体に記録可能であってもよい。プログラムは、例えば、デジタル電子回路、又はコンピュータハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせで実装されてもよい。プログラムは、例えばプログラマブルプロセッサによる実行のための機械読み取り可能な記憶装置に具体的に実現された製品のような装置として実装されてもよい。方法ステップは、プログラム可能なプロセッサが命令のプログラムを実行し、入力データを操作して出力を生成することによって方法の機能を実行することによって実行されてもよい。したがって、プロセッサは、データ記憶システム、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスからデータ及び命令を受信し、また、それらにデータ及び命令を送信するようにプログラム可能であってもよく、またそのように接続されていてもよい。アプリケーションプログラムは、高水準の手続き型又はオブジェクト指向のプログラミング言語で、又は必要に応じてアセンブリ言語又は機械語で実装されていてもよい。いずれの場合も、言語はコンパイラ型言語又はインタープリタ型言語であってもよい。プログラムは、フルインストールプログラム又は更新プログラムであってもよい。いずれの場合も、プログラムをシステムに適用すると、本方法を実行するための指示が得られる。
【0049】
「3Dシーンをシミュレートする」とは、モデルを実行する処理を指す。モデルは、実世界システムの経時的動作を模倣する。例えば、3Dシーンは3Dモデル化オブジェクトを含み、各3Dモデル化オブジェクトは、3Dシーンによってモデル化されたシステムの一部を再生する(モデル化するとも言える)。3Dモデル化オブジェクトは、例えばCADソフトウェア・ソリューション又はCADシステムを用いたその仮想設計の完了後、及び、例えばMMOアプリケーションを用いたそのシミュレーションの完了後に、現実世界で製造される製品のジオメトリを表してもよい。
【0050】
本方法は、3Dシーンを作成した後に、3Dシーンをシミュレートすることを含む可能性のある製造工程に含まれていてもよい。次いでシミュレートした3Dシーンが生成される。すなわち、モデル化したシステムに対応する物理的製品が製造される。いずれの場合も、本方法でシミュレートした3Dシーンは、製造物を表すことができる。本方法は、3Dシーンのシミュレーションを改善するため、本方法はまた、製品の製造を改善し、したがって製造工程の生産性を高める。
【0051】
ここで、図1を参照すると、ステップ100において、3Dシーンが複数のゾーンに分割される。ステップ100は、シミュレーションを実行する前に行われる。Ajで表される各ゾーンは、並列で動作する演算リソースの集合のうちの、Siで表される1つの演算リソースによるリアルタイム演算制約を満たすサイズを有する。3Dシーンは、ステップ100が実行される前に提供されること、例えば、3Dシーンを、本方法を実行するシステムが利用できることが分かる。
【0052】
ゾーンはアトミックパーツとも呼ばれ、ステップ100はアトミックパーティショニングと呼ばれることがある。ステップ100の目的は、3Dシーン全体をアトミックパーツに分解することである。各アトミックパーツは、どのような状況でもリアルタイムにソルバ上で動作できる。「リアルタイム」という語は、厳格な時間制約内での応答を保証することを意味する。これは定量的には、演算リソース上でそのようなゾーンをシミュレートすることが、それが動作している演算リソースの100%を超えないようにすることを意味する。言い換えれば、3Dシーンのシミュレーションの時間ステップにおいてゾーンをシミュレートするための演算量は、演算リソースの能力を超えない。すなわち、演算リソースは、どのような状況でも、いつでもゾーンをシミュレートするのに十分なリソースを有している。
【0053】
ソルバは、3Dシーンをシミュレートするコンピュータプログラムによって実行可能なコードである。ソルバの集合は完全な3Dシーンをシミュレートする。各ソルバは、マルチコアCPU上の解決スレッドから、マルチCPUコンピュータ上のプロセスや、サーバCPU上のサーバプロセスにおよぶ、専用の演算リソース上で動作するものとするが、これらに限られるものではない。したがって、「ソルバ」と「演算リソース」は、負荷とパフォーマンスの面で、厳密に同等である。したがって、「演算リソース」という表現は、「ソルバ」という用語の同義語である。
【0054】
実際には、複数の演算リソースは同一である。つまり、所与のゾーンをシミュレートする時間は、並列で動作している演算リソースの集合における各演算リソースで同じである。別の演算リソースへのゾーンの再割り当ての際に演算リソースの能力を考慮する必要がないので、本発明による適正なロードバランシングを容易にする。これはまた、同一の演算リソースを追加することによる物理的拡張を容易にする。なお、上記とは異なり演算リソースが異なる能力を有する場合、正規化した共通能力と、各演算リソースに関連付けられた適切な重み係数の集合に依拠することが可能である。
【0055】
このリアルタイム要件に適合するゾーンを決定するのに、異なる解決策が考えられる。たとえば、基本的な経験的な解決策は、各ゾーンのジオメトリ(すなわち、そのサイズ)を手動で調整し、次に各ゾーンをソルバ上で個別にシミュレートし、CPUが常に100%未満であることを確認する、試行の反復プロセスからなる。このような個別の状況については、可能な限り多くのオブジェクトを用い、可能な限り多くの対話操作を行って、あり得る限りで最も重要な状況を考えて、越えてはいけない能力の上限を設定する必要がある。別の解決策は、2012年12月21日付で出願され、2014年6月25日付で公開番号EP2745892(A1)として公開された出願EP12306654.0に記載の3Dシーンの分割方法を用いることにある。なお、リアルタイム要件を満たすゾーンを作成することができるのであれば、3Dシーンを分割するための他の適切な方法を用いることができる。
【0056】
3DシーンのN個のゾーンを決定すると、3DシーンがN個の演算リソース上で実行されるとき、常にリアルタイム要件を満たすことが可能になる。しかし、ゾーンは最も深刻な状況に耐えるように設計されており、このような深刻な状況は発生しにくいため、たいていの場合、N個の演算リソースで十分である。
【0057】
3Dシーンは、オブジェクト間の空間的関係が記述される空間である。シーンは、少なくとも2つのオブジェクトから構成され、オブジェクトは、モデル化オブジェクト又は3Dモデル化オブジェクトであり得るが、これらに限定されない。3Dモデル化オブジェクトは、3D空間内のオブジェクトの記述である。3Dシーンは物理的領域のモデルであり、数学的には、3次元空間内のすべての点を座標で記述するジオメトリによって表現される。3Dシーンは、典型的には、現実におけるオブジェクト間の相互作用をシミュレートした現実世界である。現実的な相互作用という表現は、シミュレートされた相互作用が、例えば、力/労力(重力、磁力、接触)や、情報の流れやイベントを制御する制御法則など、現実世界の物理法則の相互作用を反映することを意味する。1つ又は複数のオブジェクトは、3Dシーンにおいて発展し、シミュレートした現実世界の法則に従う。例えば、2つのオブジェクトは、互いに交差することはできない。3Dシーンは、特定のシナリオ用に変更可能なレイアウトを含む。シナリオは、3Dシーン内の1つ又は複数のオブジェクトの、少なくとも予測可能な相互作用を記述する。したがって、シナリオは、3Dシーンがアクティビティのコンテキストで使用されている、又は使用されることが想定される、1つの方法を記載する。それぞれのシナリオは、レイアウト上でシミュレートされる。なお、シナリオはユーザによって定義されてもよい。
【0058】
3Dシーンのゾーンは、3Dシーンのオブジェクトが配置され得る2D平面であってもよい。したがって、ゾーンは、面積であるサイズを有する2Dゾーンである。例えば、シーンのレイアウトをゾーンに分割することができる。この場合、2Dゾーン上のオブジェクトはゾーンに属する。すなわち、ゾーンのシミュレーションには、ゾーンのオブジェクトのシミュレーションが含まれる。ゾーンは、3Dシーンのボリュームとすることができる。3DシーンはN個の3Dボリュームに分割される。この場合、ボリューム内にあるオブジェクトはボリュームに属する。好ましくは、ボリュームは、オブジェクトがボリュームと相互作用しないように決定される。相互作用する場合には、オブジェクトがどのボリュームに属しているかは任意に決定される。
【0059】
好ましくは、ゾーンは、3Dシーンの分割を容易なように、規則的なジオメトリを有する。例えば、3Dゾーンは立方体であってもよい。このように、ゾーンは、ボリュームであるサイズを有する3Dゾーンである。分割された3Dシーンは、2Dゾーンと3Dゾーンとの組み合わせから構成されてもよい。3Dシーンには境界があり、無限ではない。したがって、ゾーンの数Nは有限数である。
【0060】
図3は、3Dシーンのゾーンへのアトミックパーティショニングの例を示す。ここでは、「3D体験」(「3Dシーン」という表現の同義語)はN個の2Dゾーンに分割され、各ゾーンはN個の演算リソースの1つに関連付けられる。各演算リソースへの負荷は、当該演算リソースがサポートできる最大演算負荷の100%以下である。
【0061】
負荷という用語は、演算リソースが実行する演算の作業量の尺度を意味する。負荷の尺度は、タスクの実行に利用可能な時間を考慮した、タスクの実行に費やされる時間とすることができる。
【0062】
ここで、ステップ110~190が実行される。これらのステップは、アトミックロードバランシングと呼ばれることがあり、これは、ソルバ上でシミュレーションを実行しているときに生じ、各シミュレーション時間ステップ後にソルバへの負荷が監視され、負荷を調整するため、アトミックパーツがソルバ間で時折、再分配される。ステップ100がシミュレーションの構築時間に属する一方、ステップ110~190はシミュレーションの実行時間に属する。図2は、構築時間(又はアトミックパーティショニング)と実行時間(又はアトミックロードバランシング)との関係を示している。構築時間が実行されると、実行時間がトリガされる。
【0063】
各ゾーンは、ステップ110で演算リソースに割り当てられる。好ましくは、1つのゾーンが1つの演算リソースに割り当てられる。これは、当該技術分野で知られているように実行され、構築時間及び/又は実行時間を実行するコンピュータプログラムであるシミュレータによって管理される。ステップ110の結果、各アトミックパーツがソルバに分配される。
【0064】
そして、ステップ120~190が実行される。これらのステップの目的の1つは、利用可能なN個の演算リソース(分割によって得られたゾーンによって決定される)から、3Dシーンを実行するのに十分な適切な数M個の演算リソースを選択することである。
【0065】
これらのM個のソルバSiは、適正な負荷割り当てで動作しなければならない。すなわち、それらの負荷λiは100%に近く、かつ100%未満でなければならない。N-M個のソルバSiは非アクティブであり、負荷λjは0%に等しい。しかし、突発的な負荷変動を吸収するために安全範囲を設定することができ、適正なバランスの実用的な条件は、式(1)のように表すことができる。
【数4】
ここで、λminは演算リソースがサポートしなければならない最小負荷であり、λmaxは演算リソースがサポートしなければならない最大負荷である。
【0066】
ステップ120~190は、以下の2つの機能を提供することを目的とする。1つ目は、ソルバの負荷を定期的に監視し、適正なバランス(1)の条件を満たさなくなっているかどうかをチェックすることによって、バランスの悪い状況を検出することである。2つ目は、バランスの悪い状況が検出された場合、ソルバ間のゾーン分配を調整することで、ソルバの負荷が関係(1)の条件を満たす適正なバランスに戻るようにすることである。
【0067】
ステップ120~130は、バランスの悪い状況の検出を行うことを目的とする。
【0068】
ステップ120において、各演算リソース(Si)の負荷(λi)の推定値が算出される。演算リソース、つまりソルバに対する負荷を直接測定することはできないため、推定値のみ算出できる。演算リソースの負荷λiの推定値は、シミュレーションの時間ステップを算出するのに演算リソースSiによって費やされた経過時間Tiから算出することができる。
【0069】
iの算出は、以下のように行うことができる。演算リソースSiのソフトウェアコードが、解決サイクルを開始する直前にCPUシステム関数を呼び出して開始タイムスタンプを取得し、それが終了するときにCPUシステムを再度呼び出して終了タイムスタンプを取得する。経過時間Tiは、これら2つのタイムスタンプの差である。
【0070】
各演算リソースはそれ自体の演算リソース上で実行されるため、解決サイクルが1つのショットで割り込みなしで算出されると仮定すると、経過時間Tiは演算リソースSiの負荷λiに比例すると考えることができる。
【0071】
演算リソースSiがシミュレーションステップ内で演算を行うための最長時間Tmaxは、固定することができる。つまり、最長時間Tmaxを超えると、演算リソースSiはリアルタイム要件を満たさない。
【0072】
最長時間Tmaxの選択は、主に、シミュレートされるモデル、より一般的にはシミュレーションを必要とするアプリケーションのタイプに依存する。例えば、MMOGのビデオゲームの場合、流動的なアニメーションでは、シーンを1/50秒ごとにリフレッシュする必要がある。したがって、各演算リソースは、その演算結果を1/50秒未満で返す必要がある。別の例としてMMOアプリケーションでシミュレートされるマルチボディ剛体ダイナミクスの場合、この最長時間Tmaxは、ビデオゲームの場合よりも小さく、オブジェクトの慣性特性、及び、指示された、結果の数値精度に依存する。
【0073】
したがって、シミュレーションの所与の時間ステップについての、百分率でλi(%)と表される演算リソースの負荷λiの推定値は、Tmaxが演算リソースSiの負荷能力の100%に対応するという規則により、演算リソースの経過時間Tiから、関係式(2)によって導ける。
【数5】
【0074】
説明のため、図4はシミュレーションのタイムラインの例を示している。本例では、3つのシミュレーション時間ステップが示されており、それぞれ時点400で開始している。第1及び第3のシミュレーション時間ステップについては、ソルバはTmaxが経過する前に演算を終了し、第2のシミュレーション時間ステップは、Tmaxが経過した時点で演算を終了する。演算の終了は、線410によって表されている。
【0075】
興味深いことに、Tmaxと、次のシミュレーション時間ステップとの間の期間により、シミュレータは、1つ又は複数のゾーンを再割り当てするための時間が得られる。この期間は、シミュレータがシミュレーションの結果を収集し、シミュレーションの結果を描画するのにも用いられる。したがって、Tmaxは、さらに、シミュレータを確実に正しく機能させるために選択されてもよい。
【0076】
次いで、ステップ130で、1つ又は複数の演算リソースが過大負荷であるか過小負荷であるかを判定する。この判定は、各演算リソースについて、ステップ120で算出した負荷λiの推定値に従って実行される。
【0077】
したがって、λmax≦λiの場合、演算リソースSiは、リアルタイムでのその能力の限界に近づいており、その負荷の一部を別のソルバに転送する必要がある。すなわち、当該演算リソースは、過大負荷であるとみなされる。そして、λi<λminのとき、演算リソースSiは十分使用されておらず、おそらく、そのコンテンツを1つ又は複数の他のアクティブなソルバに転送することによって非アクティブにすることができる。当該演算リソースは、過小負荷状態である。この状況は深刻な状況ではなく、おそらく、シミュレーションのリアルタイムパフォーマンスを危険にさらすことなく、そのまま続けることができる。
【0078】
過大負荷又は過小負荷と判定された演算リソースがない場合、ステップ120が繰り返される。ステップ120及び130の繰り返しは、シミュレーションのP番目の時間ステップごとに実行することができる。ここでPは自然数である。Pの値に関しては、主にシミュレーションのタイプに依存する。たとえば、マルチボディ剛体ダイナミクスでは、経験的に、Pをおおよそ8に設定すると、古典的なシナリオでは良好な結果が得られる。したがって、シミュレーションにマルチボディ剛体ダイナミクスが関係するとき、Pは好ましくは6~8の範囲(境界を含む)に属する。より一般的には、Pの良好な値を選択することは、モデル化された現象の帯域幅(例えば、衝突精度、最大速度、オブジェクトの出現率など)に関係する。特定のシーン特性の時間微分と負荷時間微分との数値的関係を与える古典的な識別方法によりPを決定することも可能である。
【0079】
シミュレーションの時間ステップごとにステップ120及び130を繰り返すことにより、利用可能なN個のソルバのうち適切な数M個のソルバが最適であることが保証される。しかし、これらのステップ120及び130をシミュレーションの各時間ステップで実行することは、シミュレーションを実行するコンピュータシステムのCPU及びメモリの使用という観点でコストがかかる。これらステップ120及び130の実行回数を減らすとこのコストが減少するが、それは、数Mがもはや適切でない状況につながる可能性があり、シミュレーションの質が損なわれる。
【0080】
1つ又は複数の演算リソースが過大負荷又は過小負荷と判定された場合、ステップ120及び130の繰り返しは一時的に停止され、再割り当てが算出され実行されると再開する。
【0081】
ステップ140で、各ゾーンAjについて、ゾーンが割り当てられる演算リソースの負荷に対するゾーンの寄与度£Ajを算出する。ゾーンAjの寄与度£Ajは、ゾーンが割り当てられる演算リソースの負荷に対するゾーンの個々の寄与度を評価するものである。
【0082】
Q個のゾーンAjを実行するソルバSiの現在の負荷λiは、Q個のゾーンの個々の寄与度の合計である。以下のように、ゾーンAjの個々の寄与度£Ajの間の関係(3)が仮定され、重み係数μjが与えられる。
【数6】
£Ajは、このように、Ajとμjの積である。重み係数は範囲]0;1]に属する値を有する。
【0083】
重み係数μjは、多くの方法で推定できる。演算リソースSiによって管理される2Dゾーンのサーフェスに比例し得る。演算リソースSiによって管理される3Dゾーンのボリュームに比例し得る。演算リソースによって管理されるゾーン内の動的オブジェクトの集団に比例し得る。動的オブジェクトとは、3Dシーン内を移動できる可能性のあるオブジェクトである。したがって、動的オブジェクトは、3Dシーン内で動くことがなく別のオブジェクトによって横切られることのない静的オブジェクトと対照をなす。したがって、3Dシーンは、静的オブジェクトのレイアウトと、当該レイアウト内で移動/発展する動的オブジェクトの集合とを含むものと考えることができる。重み係数は、ソルバの性能の解析モデルに基づいていても、算出したシミュレーションモデルの定量的な特性に基づいていてもよい。
【0084】
したがって、演算リソースの各ゾーンの重み係数は、演算リソースに割り当てられた他のゾーンのうち、当該ゾーンの優位性を表す。したがって、ある演算リソースに割り当てられたゾーンの重み係数μjの合計は1に等しい。
【0085】
図5は、ステップ140の一例を示す図である。ゾーンA1、A2、A3がソルバS1に分配され、ゾーンA4とA5がソルバS2に分配されている。両ソルバS1及びS2に対して1つのシミュレーション時間ステップを実行した後、ソルバに対する負荷が監視されている。すなわち、ステップ120及び130が実行されている。ソルバSiの少なくとも1つが過大負荷又は過小負荷であると判定されると、ステップS140が実行される。つまり、図5の右側に示すように、ソルバS1の負荷λ1に対するゾーンA1、A2、及びA3の寄与度、及びソルバS2の負荷λ2に対するゾーンA4及びA5の寄与度が算出される。
【0086】
図5の例では、ソルバS1及びS2は、オブジェクト510及び520のシミュレーションを担当する。オブジェクト510はゾーンA2上に、オブジェクト520はゾーンA4上にある。したがって、ゾーンA2及びA4は、他のゾーンの重み係数よりも大きな重み係数(それぞれμ2及びμ4)を有する。
【0087】
ステップ150において、演算リソースの現在の負荷λi及びそれらの上で動作しているゾーンの現在の負荷£Ajの推定値を有しており、ロードバランシングは、1つ又は複数のゾーンAjをソルバから別のソルバに移動することからなる。過大負荷又は過小負荷の演算リソースの1つ又は複数のゾーンの、別の演算リソースへの再割り当ては、組み合わせ最適化アルゴリズムを用いて、算出したゾーンの寄与度をもとに実行される。組み合わせ最適化は、現在の負荷λiの推定値と現在の負荷£Ajを考慮して得られる再割り当てのすべての組み合わせのうち、最適な再割り当てを見つけることを目指す。すなわち、アルゴリズムは、ゾーンの寄与度£Aj及びゾーンの負荷λiの推定値に従って、可能なゾーンのすべての組み合わせを算出する。N個の演算リソースの間でN個のゾーンを分配する方法、言い換えれば、N個のゾーンのそれぞれについてN個の演算リソースのうちの1つを選択する方法は、N!通りある。
【0088】
組み合わせの中で最良の解が何であるかを決定し、かつ算出する組み合わせの数を制限するために、アルゴリズムは到達すべき目標を表す1つ又は複数の基準として捉えることができる。1つ又は複数の基準に従って最良の解を決定するのに、目的関数を使用することができる。以下の基準のうち、少なくとも1つの基準が選択される。
・シミュレーションを能動的に並列に算出する演算リソースの数が最小である。これにより、負荷の低い演算リソースの数を制限できる。
・別の演算リソースに再割り当てされるゾーンの数が最小である。これにより、シミュレーションを実行するシステムのCPU/メモリの使用を制限することが可能であり、また、再割り当てに関与するゾーンが少なくなるため、シミュレータにおいてロードバランシングの管理が容易になる。
・1つ又は複数のゾーンが、再割り当てされた1つ又は複数のゾーンの隣にある1つ又は複数のゾーンの演算を既に実行している別の演算リソースに再割り当てされる。これは、多くのオブジェクトがゾーンから別のゾーンへと変位する3Dシーンのシミュレーションに役立つ。シミュレーションが、より簡単に管理できる。
【0089】
好ましくは、別の演算リソースへの1つ又は複数のゾーンの再割り当ては、各演算リソースの、結果として生じる負荷(λi’)が関係式(1)を満たすか検証して実行する。
【数7】
【0090】
N=10までは、短期間で3328300個のすべての組み合わせに対して広範に3つの目的を評価したうえで、1つの最良の解を選択することが可能である。ただし、もっとスケーラビリティの高い手法を使用することも可能である。例えば、蟻コロニー最適化のような組み合わせ最適化アルゴリズムを用いて、最適解を妥当な時間フレーム内で見つけることができる。なお、他の任意の適切な組み合わせ最適化アルゴリズムを用いることができる。
【0091】
以下では、組み合わせの集合のうち、ある再割り当ての組合せが選択済みである。ここで、再割り当てはステップ160~190で実行される。
【0092】
ステップ160において、再割り当てされるゾーンを管理する演算リソースは、再割り当てされるゾーン内に位置する3Dシーンのオブジェクトを識別する。この演算リソースは出発演算リソースとも呼ばれ、再割り当てされたゾーンは出発ゾーンとも呼ばれる。
【0093】
次にステップ170において、出発ゾーンを受け取る演算リソースが、ステップ160で識別したオブジェクトをインスタンス化する。出発ゾーンを受け取る演算リソースは、宛先演算リソースとも呼ばれる。出発ゾーンと宛先ゾーンの2つのインスタンスが算出されるが、出発演算リソースのインスタンスのみがシミュレーションで実行されている。
【0094】
次に、ステップ180において、出発演算リソースは、識別したオブジェクトのインスタンスを抑制する。
【0095】
そして、ステップ190で、宛先ゾーンがゾーンを受け取る。すなわち、ゾーンが再割り当てされるとともにオブジェクトのインスタンスがシミュレーションで動作する。
【0096】
ステップ120~190は、シミュレーションが実行される間、繰り返すことができる。
【0097】
シミュレーションの描画及び/又は表示は、シミュレーションを実行するシステム上で実行されてもよい。あるいは、シミュレーションの描画及び/又は表示は、別のシステム、例えば、シミュレーションを実行するサーバに接続されたクライアントコンピュータ上で実行されてもよい。
図1
図2
図3
図4
図5
図6
図7