(57)【要約】      （修正有）【課題】３Ｄシーンをシミュレートする場合に、最適な数のソルバ間での適正なロードバランシング、それらの最適な能力での動作、及びリアルタイム応答を損なう可能性の高いオーバーヘッドの回避を達成する。【解決手段】並列に動作する演算リソースの集合のうちの１つの演算リソースによるリアルタイム演算制約を満たすサイズを有するように、シミュレーションする３Ｄシーンを複数のゾーンに分割する。前記複数のゾーンのそれぞれを演算リソースに割り当て、各演算リソースの負荷の推定値を算出し、１つ又は複数の演算リソースが過大負荷であるか過小負荷であるかを判定し、各ゾーンについて、当該ゾーンが割り当てられた演算リソースの負荷に対する当該ゾーンの寄与度を算出し、前記算出したゾーンの寄与度に基づき、組み合わせ最適化アルゴリズムを用いて、過大負荷又は過小負荷の演算リソースの１つ又は複数のゾーンを別の演算リソースに再割り当てる。【選択図】図６
2018092607.tif 000002
【特許請求の範囲】
【請求項１】
３Ｄシーンをシミュレートするための、コンピュータによって実施される方法であって、当該シミュレーションは並列に動作する演算リソースの集合を用いて実行され、
３Ｄシーンを複数のゾーンに分割するステップ（１００）であって、各ゾーン（Ａj）が、前記集合のうちの１つの演算リソース（Ｓi）によるリアルタイム演算制約を満たすサイズを有する、分割するステップと、
前記複数のゾーンのそれぞれを演算リソースに割り当てるステップ（１１０）と、
各演算リソース（Ｓi）の負荷（λi）の推定値を算出（１２０）し、１つ又は複数の演算リソースが過大負荷であるか過小負荷であるかを判定するステップ（１３０）と、
各ゾーン（Ａj）について、当該ゾーンが割り当てられた演算リソースの負荷に対する当該ゾーンの寄与度（£Ａj）を算出するステップと、
過大負荷又は過小負荷の演算リソースの１つ又は複数のゾーンを別の演算リソースに再割り当てすることであって、前記算出したゾーンの寄与度に基づき、組み合わせ最適化アルゴリズムを用いて行われる、再割り当てするステップと
を含む方法。
【請求項２】
前記１つ又は複数のゾーンを別の演算リソースに再割り当てするステップは、
演算リソースの数が最小であること、
別の演算リソースに再割り当てされるゾーンの数が最小であること、及び
前記１つ又は複数のゾーンが、前記再割り当てされた１つ又は複数のゾーンの近傍のゾーンについて既に演算を実行済みである別の演算リソースに再割り当てされること
のうち１つ又は複数の基準に従って実行される
ことを特徴とする請求項１に記載のコンピュータによって実施される方法。
【請求項３】
前記１つ又は複数のゾーンを別の演算リソースに再割り当てすることは、各演算リソースに結果として生じる負荷（λi’）が
【数１】
2018092607.tif 000010
を満たすか検証することで実行され、ここで、λminは演算リソースの最小負荷であり、λmaxは演算リソースの最大負荷である
ことを特徴とする請求項１又は２に記載のコンピュータによって実施される方法。
【請求項４】
前記各演算リソースの負荷（λi）の推定値は、関係式
【数２】
2018092607.tif 000011
を用いて算出され、
ここで、λi（％）は、推定負荷λiの割合であり、Ｔmaxは、前記シミュレーションの時間ステップを算出するのに演算リソースに割り当てられた最大時間であり、Ｔiは、前記シミュレーションの時間ステップを算出するのに演算リソースが用いた経過時間である
ことを特徴とする請求項１〜３のいずれか一項に記載のコンピュータによって実施される方法。
【請求項５】
ゾーンの寄与度（£Ａj）は、式
【数３】
2018092607.tif 000012
を用いて算出され、ここで、μiは、］０；１］の範囲に属する値を有する重み係数である
ことを特徴とする請求項１〜４のいずれか一項に記載のコンピュータによって実施される方法。
【請求項６】
前記重み係数μiは、
ゾーンのサーフェス又はボリューム、
ゾーンの動的オブジェクトの数、及び
負荷λiの演算リソースの解析モデル
のうちから選択した１つ又は複数のものから推定される
ことを特徴とする請求項５に記載のコンピュータによって実施される方法。
【請求項７】
前記複数のゾーンのうち１つ又は複数のゾーンは２Ｄゾーンであり、２Ｄゾーンは前記３Ｄシーンにおける２Ｄサーフェスである
ことを特徴とする請求項１〜６のいずれか一項に記載のコンピュータによって実施される方法。
【請求項８】
前記複数のゾーンのうち１つ又は複数のゾーンは３Ｄゾーンであり、３Ｄゾーンは３Ｄシーンの３Ｄボリュームである
ことを特徴とする請求項１〜７のいずれか一項に記載のコンピュータによって実施される方法。
【請求項９】
負荷（λi）の推定値を算出する前記ステップ、及び１つ又は複数の演算リソースが過大負荷であるか過小負荷であるかを判定する前記ステップは、シミュレーションのＰ個の時間ステップ毎に実行され、ここでＰは自然数である
ことを特徴とする請求項１〜８のいずれか一項に記載のコンピュータによって実施される方法。
【請求項１０】
ゾーンの寄与度（£Ａj）は１つ又は複数の演算リソースが過大負荷であるか過小負荷であるかが判定された後に算出される
ことを特徴とする請求項９に記載のコンピュータによって実施される方法。
【請求項１１】
全ての演算リソースは同一である
ことを特徴とする請求項１〜１０のいずれか一項に記載のコンピュータによって実施される方法。
【請求項１２】
過大負荷又は過小負荷である演算リソースの１つ又は複数のゾーンを別の演算リソースに再割り当てすることは、さらに
再割り当てされるべきゾーンを有する演算リソースによって、再割り当てされるべきゾーン内に位置する３Ｄシーンのオブジェクトを識別することと、
再割り当てされるべきゾーンを受けとる前記演算リソースによって、前記識別したオブジェクトをインスタンス化することと、
再割り当てされるべきゾーンを有する前記演算リソースによって、前記識別したオブジェクトを抑制することと、
前記ゾーンを受け取る前記演算リソースに前記ゾーンを再割り当てすること
を含むことを特徴とする請求項１〜１１のいずれか一項に記載のコンピュータによって実施される方法。
【請求項１３】
請求項１〜１２のいずれか一項に記載の方法を実行するための指示を含むコンピュータプログラム。
【請求項１４】
請求項１３に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記憶媒体。
【請求項１５】
請求項１３に記載のコンピュータプログラムを記録したメモリに接続されたプロセッサを備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラム及びシステムの分野に関し、より具体的には、並列に動作する演算リソースの集合を用いて３Ｄシーンをシミュレートするための方法、システム、及びプログラムに関する。
【背景技術】
【０００２】
３Ｄシミュレーションは、過去３０年間にわたり、設計段階のシステムが実際にどのような挙動をみせるかを検証するエンジニアから、理論的概念を調査又は実証する科学者、ビデオゲームをプレイしたり３Ｄアニメーションフィルムを楽しんだりする一般市民にいたるまで、多種多様な観客やユーザの間で大きな成功を収めている。３Ｄシミュレーションは、過去３０年間にわたり大きく進化しており、依然として勢いを増している。これは、より複雑でより現実的な挙動（マルチボディ剛体ダイナミクス、ヒューマンシミュレーション、クロスシミュレーション、粒子シミュレーションなど）、より大きな集団、より多岐にわたるオブジェクト、及び、より大きなスケールを求める観客のニーズに応えるものである。
【０００３】
より具体的にはビデオゲーム業界で始められた３Ｄシミュレーションは、大規模な仮想世界で対話操作を行う膨大な数のユーザをサポートする特定の技術を開発することによって、リアルタイム要件を満たす必要がある。リアルタイムの応答は、接続されたユーザの数に関係なく、またアプリケーションにおける解決と描画のための演算コストに関係なく、接続されたユーザにいつでも提供する必要がある。
【０００４】
マッシブリー・マルチユーザ・オンライン・アプリケーション（Ｍａｓｓｉｖｅｌｙ  Ｍｕｌｔｉ−ｕｓｅｒ  Ｏｎ  ｌｉｎｅ  ａｐｐｌｉｃａｔｉｏｎｓ：ＭＭＯ）では、多数のユーザが同時に、実世界現象シミュレータや没入型アプリケーションなど、アプリケーションを使用できる。同様に、マッシブリー・マルチユーザ・オンライン・ゲーム（Ｍａｓｓｉｖｅｌｙ  Ｍｕｌｔｉ−ｕｓｅｒ  Ｏｎ  ｌｉｎｅ  Ｇａｍｅｓ：ＭＭＯＧ）では、多数のゲーマーが同時にビデオゲームをプレイできる。ＭＭＯ及びＭＭＯＧは、ユーザ又はゲーマーがアプリケーション又はビデオゲームに接続できるようにするため、例えばインターネットなどのコンピュータネットワークに特に依存している。本明細書を通して、「アプリケーション」及び「ビデオゲーム」の語は同義語として理解され、ＭＭＯ及びＭＭＯＧの語は区別なく使用され得る。
【０００５】
ＭＭＯは、ユーザ又はゲームプレイヤーに、より現実的な経験を提供するために、可能な限りリアルタイムで可能な限り緻密に描画されることが求められる複雑で大きな仮想環境を必要とする。ＭＭＯは、３Ｄシーンを表現し操作するために特別に設計されており、エンドユーザのコンピュータ上で、典型的には、対話型のシーケンシャルなリアルタイム３Ｄシーンの生成を必要とするアプリケーションで使用される。ユーザが３Ｄシーンに対して対話操作を行うと、コンピュータは、ユーザが参加している連続的で進行中の現実感をユーザに伝えるのに十分な速さで３Ｄ表現を再描画する。シーンは、３Ｄシーンに対して対話操作を行うときにユーザが操れる、数多くの別々のオブジェクトで構成されている。したがって、ＭＭＯは、空間的に複雑で非常に緻密な仮想環境にリアルタイムで参加する多数のユーザを管理するために、一般的に、大量のデータ、高速なデータ転送、及び高いデータ複雑性を要する。
【０００６】
ＭＭＯは、典型的には、コンピュータモデル内で、現実世界の現象をシミュレートするのに使用される。例えば、マルチボディ剛体ダイナミクス、ヒューマンシミュレーション、クロスシミュレーション、粒子シミュレーションなどである。プロセスのシミュレーションや使用している製品のシミュレーションを行うために、シミュレーションには、製造プロセスや製品で用いられる材料の物理的特性（強度、弾力性など）のような、現実世界の現象を記述する正確なデータとアルゴリズムが必要である。３Ｄ  ＣＡＤ／ＣＡＭ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ（コンピュータ支援設計）、Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｍａｎｕｆａｃｔｕｒｉｎｇ（コンピュータ支援製造））のツールは、製品又は構成部品の３Ｄ表現の作成を可能にする。ＭＭＯは３Ｄ体験とも呼ばれ、それはすなわち、エンジニアがオブジェクトの挙動を研究するための仮想環境であり、シミュレートする環境は、典型的には工業的環境である。
【０００７】
永続的に変化する作業負荷に動的に適応し、リアルタイム性を維持するために、ＭＭＯは、ＭＭＯＧ同様、スケーラブルでなければならない。スケーラビリティは、特に、アプリケーションを同時に使用できるユーザの数、シミュレーションを演算するのに必要な演算リソースの数、アプリケーションによって許容される、３Ｄシーンのオブジェクト間で同時に行われる対話操作の数などを含む。
【０００８】
ＭＭＯＧの場合、含まれるすべての動的オブジェクトの位置及びグラフィック属性同様、ユーザ数も大きく変化し得る。それにもかかわらず、ゲームが開始される前に、周囲の風景が一度だけ設定され、動的オブジェクトのタイプとサポートされている挙動クラスがあらかじめ定義される。言い換えれば、ＭＭＯＧの３Ｄシーンは、演算リソースのニーズを強く制限するいくつかの所定の特性を含み、それによりスケーラビリティを改善する。それにより演算リソースのニーズを予測することが可能になる。
【０００９】
逆に、高度なＭＭＯの場合、３Ｄシーンの風景や集団タイプは、特にアプリケーションの実行中に、発展し豊かになる。実際、ＭＭＯは、オブジェクトの挙動が動的であり、かつ、予め定義された動作クラスを排除するような、現実世界の現象をシミュレートすることを目的としている。したがって、ＭＭＯの３Ｄ風景は、ＭＭＯＧのような所定の特性を使用することができない。
【００１０】
したがって、３Ｄ体験にＭＭＯＧと同じ種類のリアルタイム性及び大規模性に関する制約がある場合でも、はるかに洗練され、現実的で、正確な物理的挙動のための特定の厳格な要件があり、そのため、演算能力が要求される。
【００１１】
１つのソルバでは解決すべきすべての演算にリアルタイムで対処できないため、並列化技術が必要である。簡潔に言えば、３Ｄ体験は、いわゆるパーツやゾーンに分割され、これらがそれぞれ３Ｄシーンの特定の空間領域を扱う。オブジェクトの集団は発展し、そうした変化の中、対話操作の量も同様に増加するため、このようなパーツの演算コストは時間の経過と共に変化する。そのため、これらのパーツすべてをソルバに動的に分配して、リアルタイム応答を可能にするためのＣＰＵリソースを最適に使用する必要がある。このニーズは、一般に、動的ロードバランシングと呼ばれる。
【００１２】
ＭＭＯＧで使用されているもののような、リアルタイム性に関して適用可能な技術を考えると、それらは３Ｄ体験の目的には適していない。ＭＭＯＧのロードバランシングは、シーンの現象を自由に変える。つまり、ユーザにとって不自然に見えないように、ユーザを別の部分に移すことができ、オブジェクトを高負荷の部分から除去することができ、また高負荷の部分では、対話操作を無効化することができる。したがって、ゲームにおける物理特性はハードウェアの制限に合わせ改造され、現実感がさらに失われる。３Ｄ体験では、物理特性は一定の現実感のために満たすべき決定的な制約であるため、調整パラメータとして用いることはできない。
【００１３】
ロードバランシングの問題は、有限要素法などの領域でも対処されており、広範にわたる効率的なソリューションが提案されている。しかし、リアルタイム性は関心の範囲外であるため、これらの調整策はすべて、演算時間パフォーマンスに明確に関連するパラメータの調整ではなく、使用される解決アルゴリズムに依存するアドホック調整や、モデル（例えば、メッシュ）のジオメトリ特性や、研究された使用事例に固有の一時的な数値特性（例えば、非線形性）に基づいている。
【００１４】
こうした状況において、最適な数のソルバ間での適正なロードバランシング、それらの最適な能力での動作、及び３Ｄシーンのシミュレーションのリアルタイム応答を損なう可能性の高いオーバーヘッドの回避を達成する、改善された方法、コンピュータプログラム、及びシステムが依然として必要とされている。
【発明の概要】
【００１５】
したがって、３Ｄシーンをシミュレートするための、コンピュータによって実施される方法であって、当該シミュレーションが、並列に動作する演算リソースの集合を用いて実行されるような方法が提供される。本方法は以下を含む。
・３Ｄシーンを複数のゾーンに分割することであって、各ゾーンが、前記集合のうちの１つの演算リソースによるリアルタイム演算制約を満たすサイズを有するような、分割すること。
・前記複数のゾーンのそれぞれを演算リソースに割り当てること。
・各演算リソースの負荷の推定値を算出し、１つ又は複数の演算リソースが過大負荷であるか過小負荷であるかを判定すること。
・各ゾーンについて、当該ゾーンが割り当てられた演算リソースの負荷に対する当該ゾーンの寄与度を算出すること。
・過大負荷又は過小負荷の演算リソースの１つ又は複数のゾーンを別の演算リソースに再割り当てすることであって、前記算出したゾーンの寄与度に基づき、組み合わせ最適化アルゴリズムを用いて行われる、再割り当てすること。
【００１６】
本方法は、以下のうち１つ又は複数を含んでいてもよい。
・前記１つ又は複数のゾーンを別の演算リソースに再割り当てすることは、以下の基準のうち１つ又は複数に従って実行される：演算リソースの数が最小であること、別の演算リソースに再割り当てされるゾーンの数が最小であること、前記１つ又は複数のゾーンが、前記再割り当てされた１つ又は複数のゾーンの近傍のゾーンについて既に演算を実行済みである別の演算リソースに再割り当てされること。
【００１７】
・前記１つ又は複数のゾーンを別の演算リソースに再割り当てすることは、各演算リソースに結果として生じる負荷（λi’）が
【数１】
2018092607.tif 000003
を満たすか検証することで実行され、ここで、λminは演算リソースの最小負荷であり、λmaxは演算リソースの最大負荷である。
【００１８】
・前記各演算リソースの負荷（λi）の推定値は、関係式
【数２】
2018092607.tif 000004
を用いて算出され、
ここで、λi（％）は、推定負荷λiの割合であり、Ｔmaxは、前記シミュレーションの時間ステップを算出するのに演算リソースに割り当てられた最大時間であり、Ｔiは、前記シミュレーションの時間ステップを算出するのに演算リソースが用いた経過時間である。
・ゾーンの寄与度（£Ａj）は、式
【数３】
2018092607.tif 000005
を用いて算出され、ここで、μiは、］０；１］の範囲に属する値を有する重み係数である。
【００１９】
・前記重み係数μiは、ゾーンのサーフェス又はボリューム、ゾーンの動的オブジェクトの数、及び負荷λiの演算リソースの解析モデルのうちから選択した１つ又は複数のものから推定される。
【００２０】
・前記複数のゾーンのうち１つ又は複数のゾーンは２Ｄゾーンであり、２Ｄゾーンは前記３Ｄシーンにおける２Ｄサーフェスである。
【００２１】
・前記複数のゾーンのうち１つ又は複数のゾーンは３Ｄゾーンであり、３Ｄゾーンは３Ｄシーンの３Ｄボリュームである。
【００２２】
・負荷（λi）の推定値を算出する前記ステップ、及び１つ又は複数の演算リソースが過大負荷であるか過小負荷であるかを判定する前記ステップは、シミュレーションのＰ個の時間ステップ毎に実行され、ここでＰは自然数である。
【００２３】
・ゾーンの寄与度（£Ａj）は１つ又は複数の演算リソースが過大負荷であるか過小負荷であるかが判定された後に算出される。
【００２４】
・全ての演算リソースは同一である。
【００２５】
・過大負荷又は過小負荷である演算リソースの１つ又は複数のゾーンを別の演算リソースに再割り当てすることは、さらに、再割り当てされるべきゾーンを有する演算リソースによって、再割り当てされるべきゾーン内に位置する３Ｄシーンのオブジェクトを識別することと、再割り当てされるべきゾーンを受けとる前記演算リソースによって、前記識別したオブジェクトをインスタンス化することと、再割り当てされるべきゾーンを有する前記演算リソースによって、前記識別したオブジェクトを抑制することと、前記ゾーンを受け取る前記演算リソースに前記ゾーンを再割り当てすることを含む。
【００２６】
さらには、前記方法を実行するための命令を含むコンピュータプログラムが提供される。
【００２７】
さらには、前記コンピュータプログラムを記録したコンピュータ読み取り可能記憶媒体が提供される。
【００２８】
さらには、前記コンピュータプログラムを記録したメモリに接続されたプロセッサを備えるシステムが提供される。
【図面の簡単な説明】
【００２９】
【図１】本方法の一例のフローチャートを示す。
【図２】本方法の一例を示す。
【図３】本方法の一例を示す。
【図４】本方法の一例を示す。
【図５】本方法の一例を示す。
【図６】本方法の一例を示す。
【図７】本システムの一例を示す。
【発明を実施するための形態】
【００３０】
図１のフローチャートを参照して、３Ｄシーンをシミュレートするための、コンピュータによって実施される方法を提案する。シミュレーションは、並列に動作する演算リソースの集合を用いて実行される。本方法は、シミュレートされた３Ｄシーンを複数のゾーンに分割することを含む。分割は、Ａjで表される各ゾーンが、演算リソースの集合のうち、Ｓiで表される１つの演算リソースによるリアルタイム演算の制約を満たすように実行される。本方法はまた、前記複数のゾーンのそれぞれを演算リソースに割り当てることを含む。そして、当該演算リソースは、前記ゾーンに関連する演算の実行を担当する。本方法はさらに、各演算リソースの、λiで表される負荷の推定値を算出することを含む。本方法は、次いで、１つ又は複数の演算リソースが過大負荷であるか過小負荷であるかを判定することを含む。過大負荷とは、シミュレーションの時間ステップ中に実行される演算量が演算リソースの能力を超えていることを意味する。過小負荷とは、シミュレーションの時間ステップ中に実行される演算量が、演算リソースの能力を大きく下回ることを意味する。本方法はまた、ゾーンごとに、当該ゾーンが割り当てられる演算リソースの負荷に対する、当該ゾーンの、£Ａjで表される寄与度を算出することを含む。本方法はさらに、過大負荷又は過小負荷の演算リソースの１つ又は複数のゾーンを、他の演算リソースに再割り当てすることを含む。過大負荷又は過小負荷であると判定された演算リソースは、出発演算リソースとも呼ばれる。１つ又は複数のゾーンが再割り当てされる先の演算リソースは、受取演算リソースとも呼ばれる。再割り当ては、組み合わせ最適化アルゴリズムを用いて算出したゾーンの寄与度に基づく。
【００３１】
このような方法は、最適な数のソルバ間での適正なロードバランシング、それらの最適な能力での動作、及び３Ｄシーンのシミュレーションのリアルタイム応答を損なう可能性の高いオーバーヘッドの回避を達成する。特に、マルチサーバーアーキテクチャにおけるソルバとともに使用すると、実行中の３Ｄシーンを、ソース物理アーキテクチャからより大きなターゲットアーキテクチャにスムーズに移行できるため、本方法では３Ｄシーンを無制限に拡張することが可能である。この方法は簡単に実施でき効率的に実行できる一方で、ソルバ間の演算負荷について妥当なバランスをとることが可能である。適正なバランスは、ゾーンが割り当てられた演算リソースの負荷に対する各ゾーンの寄与度を推定して得た知識を、組み合わせ最適化アルゴリズムの利用と組み合わせて、１つ又は複数のゾーンの再割り当てについての最適解を最適な時間フレームで見つけることによって達成される。
【００３２】
本方法は、コンピュータにより実施される。すなわち、本方法のステップ（あるいは略全てのステップ）が少なくとも１つのコンピュータ、又は類似の任意のシステムによって実行される。よって本方法のステップは、コンピュータにより、完全に自動的に、あるいは半自動的に実行される可能性がある。例えば、本方法の少なくともいくつかのステップは、ユーザとコンピュータの対話を通じて始動されてもよい。求められるユーザとコンピュータの対話レベルは、想定される自動性のレベルに応じたものであって、ユーザの要望を実装する必要性との間でバランスをとるものとしてもよい。例えば、このレベルは、ユーザが設定し、かつ／あるいは、予め定義されていてもよい。
【００３３】
例えば、３Ｄシーンを分割するステップは、ユーザによって、例えば、専用のツールを用いて実行される可能性がある。別の例では、１つ又は複数のゾーンの別の演算リソースへの再割り当ては、ユーザによる制約に従って実行されてもよく、例えば、ユーザは、所与のリソースについて、過大負荷又は過小負荷のままにするべきであると判定できる。さらなる例では、シミュレートすべき３Ｄシーンを提供するステップは、分割ステップに先行してもよく、ユーザによる選択に応じて実行されてもよい。ユーザは、キーボード、マウス、スタイラスなどの触覚装置を介して選択を実行してもよい。例えば、ツーボタン式のマウスでは、シーンのリストからシーンを選択するのに左ボタンを用いることができる。本システムはまた、デフォルトでシーンを特定してもよい。すなわち、ユーザの選択なしに特定することができる。
【００３４】
本方法のコンピュータによる実施の典型的な例は、この目的に適したシステムを用いて本方法を実行することである。当該システムは、本方法を実行するための命令を含むコンピュータプログラムを記録したメモリに接続されたプロセッサを備える。メモリは、データベースを記憶していてもよい。メモリは、そのような記憶に適した任意のハードウェアであり、場合により、物理的に区別可能ないくつかの部分（例えば、プログラム用に１つ、場合によりデータベース用に１つ）を含む。このようなシステムは、最適な数のソルバ間での適正なロードバランシング、それらの最適な能力での動作、及び３Ｄシーンのシミュレーションのリアルタイム応答を損なう可能性の高いオーバーヘッドの回避を達成する。本システムはさらに、３Ｄシーン及び３Ｄシーン内のオブジェクトを表示するのに適したグラフィカル・ユーザ・インターフェース（ＧＵＩ）を備えていてもよい。ＧＵＩは、メモリ及びプロセッサに接続された表示装置に表示される。
【００３５】
「データベース」とは、検索及び取得用に最適化されたデータ（すなわち情報）の任意の集合を意味する。データベースは、メモリに格納されると、コンピュータによる迅速な検索及び取得を可能にする。データベースは、実際、様々なデータ処理動作と連動して、データの記憶、取得、修正、及び削除を容易にするよう構造化されている。データベースは、それぞれ１つ又は複数のフィールドからなるレコードに分割可能な１つのファイルあるいはファイルのセットからなっていてもよい。フィールドは、データ記憶の基本単位である。ユーザは、主としてクエリによってデータを取得してもよい。ユーザは、使用されているデータベース管理システムのルールに従って、キーワードとソートコマンドを用いて、多数のレコードにおけるフィールドを、迅速に、検索、再配置、グループ化、及び選択し、特定の集積データに関するレポートを取得又は作成することができる。
【００３６】
本方法の場合、データベースは、３Ｄシーンと、３Ｄシーンの１つ又は複数のオブジェクトと、複数のゾーンに関連する情報とを含む。１つ又は複数のオブジェクトはデータベースに記憶されており、シーンとは独立して記憶されていてもよい。データベースはさらに、本システムによって実行される命令を含むコンピュータプログラムを含んでいてもよい。命令は、本方法のステップの実行に適合している。
【００３７】
本方法は、一般に、３Ｄシーンにおけるモデル化オブジェクトを操作する。モデル化オブジェクトは、例えばデータベースに格納されたデータによって定義される任意のオブジェクトである。さらには、「モデル化オブジェクト」という用語は、データそのものも指す。システムの種類に応じて、異なる種類のデータによってモデル化オブジェクトが定義されてもよい。実際、システムは、ＣＡＤシステム、ＣＡＥシステム、ＣＡＭシステム、ＰＤＭシステム、及び／又はＰＬＭシステムのうちの任意の組み合わせであってもよい。それら異なるシステムにおいて、モデル化オブジェクトは、対応するデータによって定義される。したがって、ＣＡＤオブジェクト、ＰＬＭオブジェクト、ＰＤＭオブジェクト、ＣＡＥオブジェクトＣＡＭオブジェクト、ＣＡＤデータ、ＰＬＭデータ、ＰＤＭデータ、ＣＡＭデータ、ＣＡＥデータについて言及することがある。しかしながら、これらのシステムは互いに排他的ではなく、モデル化オブジェクトは、これらのシステムの任意の組み合わせに対応するデータによって定義することができる。本システムはまた、３Ｄシーン及び／又は３Ｄモデル化オブジェクトがシミュレートされているＭＭＯ又はＭＭＯＧシステムであってもよい。
【００３８】
ＣＡＤシステムは、少なくとも、ＣＡＴＩＡのようなモデル化オブジェクトのグラフィック表現に基づくモデル化オブジェクトの設計に適した任意のシステムをも意味する。この場合、モデル化オブジェクトを定義するデータは、モデル化オブジェクトを表現可能にするデータを含む。ＣＡＤシステムは、例えば、辺や線を用い、また、場合により面や曲面を用いて、ＣＡＤモデル化オブジェクトの表現を提供してもよい。線、辺、あるいは面は、例えば、非一様有理Ｂスプライン（ＮＵＲＢＳ）など、様々な様式で表現されてもよい。具体的には、ＣＡＤファイルは仕様を含み、その仕様に基づきジオメトリが生成可能であり、よって表現が生成可能となる。モデル化オブジェクトの仕様は１つ又は複数のＣＡＤファイルに格納されていてもよい。ＣＡＤシステムでモデル化オブジェクトを表現するファイルの典型的なサイズは、一部分あたり１メガバイトの範囲である。また、モデル化オブジェクトは、典型的には、数千の部分の集合体であってもよい。
【００３９】
本発明の文脈において、モデル化オブジェクトは、典型的には、３Ｄモデル化オブジェクト、例えば、一つの部品や部品の集合体などの製品、あるいは製品の集合体を表現するものであってもよい。「３Ｄモデル化オブジェクト」は、３Ｄ表現が可能なデータによってモデル化される任意のオブジェクトを意味する。３Ｄ表現は、その部品をすべての角度から見ることを可能にする。たとえば、３Ｄで表現された３Ｄモデル化オブジェクトは、その軸のうちの任意の軸、あるいは、その表現が表示された画面中の任意の軸を中心に、処理して回転させることが可能である。これは、特に、３Ｄモデル化されていない２Ｄアイコンについては除外される。３Ｄ表現の表示は、設計を容易にする（すなわち、設計者が作業を達成するスピードを統計的に速める）。製品の設計は製造工程の一部であるから、これによって当該産業における製造工程が迅速化する。
【００４０】
シミュレートした３Ｄシーン、及び３Ｄシーンにおける３Ｄモデル化オブジェクトは、ＣＡＤソフトウェア・ソリューションやＣＡＤシステム等を用いた仮想的設計の完了後に実世界において製造される、（例えば、機械）部品や、部品の集合などの製品のジオメトリを表現してもよい。ＣＡＤソフトウェア・ソリューションは、航空宇宙、建築、建設、消費財、ハイテク機器、産業機器、輸送、海洋、及び／又は海洋石油／ガス生産、又は交通を含む、限定されることのない様々な産業分野において製品の設計を可能にする。本方法において想定される３Ｄモデル化オブジェクトは、このように、地上車両の部品（例えば、自動車及び軽トラック機器、レーシングカー、オートバイ、トラック及びモーター機器、トラック、バス、電車を含む）、航空車両の部品（例えば、航空機体機器、航空宇宙機器、推進機器、防衛製品、航空路線機器、宇宙機器を含む）、海軍車両の部品（例えば、海軍用機器、商業用船舶、オフショア機器、ヨット及び作業船、船舶用機器を含む）、一般的な機械部品（例えば、工業用製造機械、大型移動機械又は機器、設置機器、産業機器製品、加工金属製品、タイヤ製造製品を含む）、電気機械部品又は電子部品（例えば、家電、セキュリティ及び／又は制御及び／又は計装製品、コンピューティング及び通信機器、半導体、医療装置及び設備を含む）、消費者製品（例えば、家具、家庭用及び庭用製品、レジャー用品、ファッション用品、耐久消費財小売用品、織物類小売用品を含む）、及び／又は包装（例えば、食品及び飲料及びたばこ、美容及びパーソナルケア、家庭用製品包装を含む）などのように、任意の機械的部品であり得る工業製品を表してもよい。
【００４１】
ＣＡＤシステムは、履歴ベースのものであってもよい。この場合、モデル化オブジェクトは、さらに、ジオメトリ的特徴の履歴を含むデータによって定義される。モデル化オブジェクトは、標準的なモデリング機能（例えば押し出し、回転、切断、及び／又は丸め）及び／又は標準的な面モデリング機能（例えば、スイープ、ブレンド、ロフト、塗りつぶし、変形、及び／又は平滑化）を用いて、人間（例えば設計者／ユーザ）によって設計されてもよい。このようなモデル化機能をサポートするＣＡＤシステムの多くは、履歴ベースのシステムである。これは、設計機能の作成履歴が、典型的には、入力及び出力リンクを介して上記ジオメトリ機能を互いに連結する非循環データフローで保存されることを意味する。履歴に基づくモデル化のパラダイムは、８０年代初頭からよく知られている。モデル化オブジェクトは、２つの永続的なデータ表現によって表される。すなわち、履歴とＢ−ｒｅｐ（すなわち境界表現）である。Ｂ−ｒｅｐは、履歴に定義された演算の結果である。モデル化オブジェクトが表現されるときにコンピュータのスクリーン上に表示される部品の形状は、Ｂ−ｒｅｐ（例えばそのテッセレーション）である。その部品の履歴とは、設計意図である。基本的に、履歴とは、モデル化オブジェクトに対して行われた操作に関する情報を収集したものである。複雑な部品の表示を容易にするため、Ｂ−ｒｅｐを履歴とともに保存してもよい。設計意図に従って部品の設計変更ができるように、履歴をＢ−ｒｅｐとともに保存してもよい。
【００４２】
ＰＬＭシステムは、物理的な、製造された製品（又は製造される予定の製品）を表すモデル化オブジェクトの管理に適した任意のシステムを指す。ＰＬＭシステムでは、モデル化オブジェクトは、このように、物理的な物体の製造に適したデータによって定義される。これらは、典型的には、寸法の値及び／又は公差の値であってもよい。物体を正しく製造するために、実際、このような値を用いるのが望ましい。
【００４３】
ＣＡＭソリューションとは、製品の製造データを管理するのに適した、ハードウェアのソフトウェアである、あらゆるソリューションをも指す。製造データは、一般に、製造する製品、製造工程、及び必要なリソースに関するデータを含む。ＣＡＭソリューションは、製品の製造工程全体を計画し最適化するのに用いられる。例えば、実現可能性、製造工程の期間、又は製造工程における特定のステップで使用され得るリソース、例えば特定のロボットの数に関する情報をＣＡＭユーザに提供することができる。これにより、管理や必要な投資についての決定を可能にする。ＣＡＭは、ＣＡＤ工程、及び、場合によりＣＡＥ工程に続く工程である。このようなＣＡＭソリューションは、ダッソー・システムズにより、ＤＥＬＭＩＡ（登録商標）として提供されている。
【００４４】
ＣＡＥソリューションとは、モデル化オブジェクトの物理的挙動の分析に適した、ハードウェアのソフトウェアである、あらゆるソリューションをも指す。よく知られており広く用いられているＣＡＥ技術は有限要素法（Ｆｉｎｉｔｅ  Ｅｌｅｍｅｎｔ  Ｍｅｔｈｏｄ：ＦＥＭ）であり、これは、典型的には、モデル化オブジェクトを、物理的挙動を方程式によって計算しシミュレーションできる要素に分割することを含む。このようなＣＡＥソリューションは、ダッソー・システムズにより、ＳＩＭＵＬＩＡ（登録商標）として提供されている。成長するＣＡＥ技術のもう１つは、ＣＡＤジオメトリデータを使用せずに異なる物理分野の複数の要素で構成される複雑なシステムのモデリングと解析を行うことを含む。ＣＡＥソリューションはシミュレーションを可能にし、それにより、製造する製品の最適化、改善及び検証を可能にする。このようなＣＡＥソリューションは、ダッソー・システムズにより、ＤＹＭＯＬＡ（登録商標）として提供されている。
【００４５】
ＰＤＭはＰｒｏｄｕｃｔ  Ｄａｔａ  Ｍａｎａｇｅｍｅｎｔ（生産データ管理）の略である。ＰＤＭソリューションとは、特定の製品に関するすべての種類のデータを管理するのに適した、ハードウェアのソフトウェアである、あらゆるソリューションを指す。ＰＤＭソリューションは、製品のライフサイクルにかかわるすべての関係者によって使用されてもよい。これには、主として技術者のほか、プロジェクトマネージャー、財務担当者、営業担当者、及びバイヤーも含まれる。ＰＤＭソリューションは、一般に、製品指向のデータベースに基づく。これにより、関係者が製品に関する一貫したデータを共有することが可能になり、これにより、関係者が異なるデータを用いるのを防止する。このようなＰＤＭソリューションは、ダッソー・システムズにより、ＥＮＯＶＩＡ（登録商標）として提供されている。
【００４６】
図７は、本システムの一例を示すものであって、当該システムは、クライアントコンピュータシステム、例えばユーザのワークステーションである。本システムはサーバであってもよく、例えばサーバはデータベースを備える。ステップのうち１つ又は複数が、本方法の残りのステップを実行するサーバに接続されたクライアントコンピュータによって実行されてもよい。クライアント及びコンピュータは、例えばインターネット、ＷＡＮ、ＬＡＮなどのコンピュータネットワークを通じて接続されていてもよい。
【００４７】
図７の例のクライアントコンピュータは、内部通信バス１０００に接続された中央演算処理装置（ＣＰＵ）１０１０、及び同じくバスに接続されたランダムアクセスメモリ（ＲＡＭ）１０７０とを備える。クライアントコンピュータは、さらに、バスに接続されたビデオランダムアクセスメモリ１１００と関連付けられたグラフィックス処理装置（ＧＰＵ）１１１０を備える。ビデオＲＡＭ１１００は、当該技術分野において、フレームバッファとしても知られる。大容量記憶装置コントローラ１０２０は、ハードドライブ１０３０などの大容量記憶装置へのアクセスを管理する。コンピュータプログラムの命令及びデータを具体的に実現するのに適した大容量メモリ装置は、例として、ＥＰＲＯＭ、ＥＥＰＲＯＭ及びフラッシュメモリ装置のような半導体メモリ装置、内蔵ハードディスクやリムーバブルディスクなどの磁気ディスク、光磁気ディスク、及びＣＤ−ＲＯＭディスク１０４０を含む、全ての形式の不揮発性メモリを含む。前述のいずれも、特別に設計されたＡＳＩＣ（特定用途向け集積回路）によって補完されてもよいし、組み入れられてもよい。ネットワークアダプタ１０５０は、ネットワーク１０６０へのアクセスを管理する。クライアントコンピュータはまた、カーソル制御装置、キーボードなどの触覚装置１０９０を含んでいてもよい。カーソル制御装置は、ユーザがディスプレイ１０８０上の任意の所望の位置にカーソルを選択的に位置させることを可能にするために、クライアントコンピュータ内で使用される。さらに、カーソル制御デバイスは、ユーザが様々なコマンドを選択し、制御信号を入力することを可能にする。カーソル制御装置は、システムに制御信号を入力するための多数の信号生成装置を含む。典型的には、カーソル制御装置はマウスであってもよく、マウスのボタンは信号を生成するために使用される。あるいは、又は追加的に、クライアントコンピュータシステムは、感知パッド及び／又は感知スクリーンを備えてもよい。
【００４８】
コンピュータプログラムは、コンピュータによって実行可能な命令を含んでいてもよく、命令は、上記システムに方法を実行させるための手段を含む。プログラムは、システムのメモリを含む任意のデータ記憶媒体に記録可能であってもよい。プログラムは、例えば、デジタル電子回路、又はコンピュータハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせで実装されてもよい。プログラムは、例えばプログラマブルプロセッサによる実行のための機械読み取り可能な記憶装置に具体的に実現された製品のような装置として実装されてもよい。方法ステップは、プログラム可能なプロセッサが命令のプログラムを実行し、入力データを操作して出力を生成することによって方法の機能を実行することによって実行されてもよい。したがって、プロセッサは、データ記憶システム、少なくとも１つの入力デバイス、及び少なくとも１つの出力デバイスからデータ及び命令を受信し、また、それらにデータ及び命令を送信するようにプログラム可能であってもよく、またそのように接続されていてもよい。アプリケーションプログラムは、高水準の手続き型又はオブジェクト指向のプログラミング言語で、又は必要に応じてアセンブリ言語又は機械語で実装されていてもよい。いずれの場合も、言語はコンパイラ型言語又はインタープリタ型言語であってもよい。プログラムは、フルインストールプログラム又は更新プログラムであってもよい。いずれの場合も、プログラムをシステムに適用すると、本方法を実行するための指示が得られる。
【００４９】
「３Ｄシーンをシミュレートする」とは、モデルを実行する処理を指す。モデルは、実世界システムの経時的動作を模倣する。例えば、３Ｄシーンは３Ｄモデル化オブジェクトを含み、各３Ｄモデル化オブジェクトは、３Ｄシーンによってモデル化されたシステムの一部を再生する（モデル化するとも言える）。３Ｄモデル化オブジェクトは、例えばＣＡＤソフトウェア・ソリューション又はＣＡＤシステムを用いたその仮想設計の完了後、及び、例えばＭＭＯアプリケーションを用いたそのシミュレーションの完了後に、現実世界で製造される製品のジオメトリを表してもよい。
【００５０】
本方法は、３Ｄシーンを作成した後に、３Ｄシーンをシミュレートすることを含む可能性のある製造工程に含まれていてもよい。次いでシミュレートした３Ｄシーンが生成される。すなわち、モデル化したシステムに対応する物理的製品が製造される。いずれの場合も、本方法でシミュレートした３Ｄシーンは、製造物を表すことができる。本方法は、３Ｄシーンのシミュレーションを改善するため、本方法はまた、製品の製造を改善し、したがって製造工程の生産性を高める。
【００５１】
ここで、図１を参照すると、ステップ１００において、３Ｄシーンが複数のゾーンに分割される。ステップ１００は、シミュレーションを実行する前に行われる。Ａjで表される各ゾーンは、並列で動作する演算リソースの集合のうちの、Ｓiで表される１つの演算リソースによるリアルタイム演算制約を満たすサイズを有する。３Ｄシーンは、ステップ１００が実行される前に提供されること、例えば、３Ｄシーンを、本方法を実行するシステムが利用できることが分かる。
【００５２】
ゾーンはアトミックパーツとも呼ばれ、ステップ１００はアトミックパーティショニングと呼ばれることがある。ステップ１００の目的は、３Ｄシーン全体をアトミックパーツに分解することである。各アトミックパーツは、どのような状況でもリアルタイムにソルバ上で動作できる。「リアルタイム」という語は、厳格な時間制約内での応答を保証することを意味する。これは定量的には、演算リソース上でそのようなゾーンをシミュレートすることが、それが動作している演算リソースの１００％を超えないようにすることを意味する。言い換えれば、３Ｄシーンのシミュレーションの時間ステップにおいてゾーンをシミュレートするための演算量は、演算リソースの能力を超えない。すなわち、演算リソースは、どのような状況でも、いつでもゾーンをシミュレートするのに十分なリソースを有している。
【００５３】
ソルバは、３Ｄシーンをシミュレートするコンピュータプログラムによって実行可能なコードである。ソルバの集合は完全な３Ｄシーンをシミュレートする。各ソルバは、マルチコアＣＰＵ上の解決スレッドから、マルチＣＰＵコンピュータ上のプロセスや、サーバＣＰＵ上のサーバプロセスにおよぶ、専用の演算リソース上で動作するものとするが、これらに限られるものではない。したがって、「ソルバ」と「演算リソース」は、負荷とパフォーマンスの面で、厳密に同等である。したがって、「演算リソース」という表現は、「ソルバ」という用語の同義語である。
【００５４】
実際には、複数の演算リソースは同一である。つまり、所与のゾーンをシミュレートする時間は、並列で動作している演算リソースの集合における各演算リソースで同じである。別の演算リソースへのゾーンの再割り当ての際に演算リソースの能力を考慮する必要がないので、本発明による適正なロードバランシングを容易にする。これはまた、同一の演算リソースを追加することによる物理的拡張を容易にする。なお、上記とは異なり演算リソースが異なる能力を有する場合、正規化した共通能力と、各演算リソースに関連付けられた適切な重み係数の集合に依拠することが可能である。
【００５５】
このリアルタイム要件に適合するゾーンを決定するのに、異なる解決策が考えられる。たとえば、基本的な経験的な解決策は、各ゾーンのジオメトリ（すなわち、そのサイズ）を手動で調整し、次に各ゾーンをソルバ上で個別にシミュレートし、ＣＰＵが常に１００％未満であることを確認する、試行の反復プロセスからなる。このような個別の状況については、可能な限り多くのオブジェクトを用い、可能な限り多くの対話操作を行って、あり得る限りで最も重要な状況を考えて、越えてはいけない能力の上限を設定する必要がある。別の解決策は、２０１２年１２月２１日付で出願され、２０１４年６月２５日付で公開番号ＥＰ２７４５８９２（Ａ１）として公開された出願ＥＰ１２３０６６５４．０に記載の３Ｄシーンの分割方法を用いることにある。なお、リアルタイム要件を満たすゾーンを作成することができるのであれば、３Ｄシーンを分割するための他の適切な方法を用いることができる。
【００５６】
３ＤシーンのＮ個のゾーンを決定すると、３ＤシーンがＮ個の演算リソース上で実行されるとき、常にリアルタイム要件を満たすことが可能になる。しかし、ゾーンは最も深刻な状況に耐えるように設計されており、このような深刻な状況は発生しにくいため、たいていの場合、Ｎ個の演算リソースで十分である。
【００５７】
３Ｄシーンは、オブジェクト間の空間的関係が記述される空間である。シーンは、少なくとも２つのオブジェクトから構成され、オブジェクトは、モデル化オブジェクト又は３Ｄモデル化オブジェクトであり得るが、これらに限定されない。３Ｄモデル化オブジェクトは、３Ｄ空間内のオブジェクトの記述である。３Ｄシーンは物理的領域のモデルであり、数学的には、３次元空間内のすべての点を座標で記述するジオメトリによって表現される。３Ｄシーンは、典型的には、現実におけるオブジェクト間の相互作用をシミュレートした現実世界である。現実的な相互作用という表現は、シミュレートされた相互作用が、例えば、力／労力（重力、磁力、接触）や、情報の流れやイベントを制御する制御法則など、現実世界の物理法則の相互作用を反映することを意味する。１つ又は複数のオブジェクトは、３Ｄシーンにおいて発展し、シミュレートした現実世界の法則に従う。例えば、２つのオブジェクトは、互いに交差することはできない。３Ｄシーンは、特定のシナリオ用に変更可能なレイアウトを含む。シナリオは、３Ｄシーン内の１つ又は複数のオブジェクトの、少なくとも予測可能な相互作用を記述する。したがって、シナリオは、３Ｄシーンがアクティビティのコンテキストで使用されている、又は使用されることが想定される、１つの方法を記載する。それぞれのシナリオは、レイアウト上でシミュレートされる。なお、シナリオはユーザによって定義されてもよい。
【００５８】
３Ｄシーンのゾーンは、３Ｄシーンのオブジェクトが配置され得る２Ｄ平面であってもよい。したがって、ゾーンは、面積であるサイズを有する２Ｄゾーンである。例えば、シーンのレイアウトをゾーンに分割することができる。この場合、２Ｄゾーン上のオブジェクトはゾーンに属する。すなわち、ゾーンのシミュレーションには、ゾーンのオブジェクトのシミュレーションが含まれる。ゾーンは、３Ｄシーンのボリュームとすることができる。３ＤシーンはＮ個の３Ｄボリュームに分割される。この場合、ボリューム内にあるオブジェクトはボリュームに属する。好ましくは、ボリュームは、オブジェクトがボリュームと相互作用しないように決定される。相互作用する場合には、オブジェクトがどのボリュームに属しているかは任意に決定される。
【００５９】
好ましくは、ゾーンは、３Ｄシーンの分割を容易なように、規則的なジオメトリを有する。例えば、３Ｄゾーンは立方体であってもよい。このように、ゾーンは、ボリュームであるサイズを有する３Ｄゾーンである。分割された３Ｄシーンは、２Ｄゾーンと３Ｄゾーンとの組み合わせから構成されてもよい。３Ｄシーンには境界があり、無限ではない。したがって、ゾーンの数Ｎは有限数である。
【００６０】
図３は、３Ｄシーンのゾーンへのアトミックパーティショニングの例を示す。ここでは、「３Ｄ体験」（「３Ｄシーン」という表現の同義語）はＮ個の２Ｄゾーンに分割され、各ゾーンはＮ個の演算リソースの１つに関連付けられる。各演算リソースへの負荷は、当該演算リソースがサポートできる最大演算負荷の１００％以下である。
【００６１】
負荷という用語は、演算リソースが実行する演算の作業量の尺度を意味する。負荷の尺度は、タスクの実行に利用可能な時間を考慮した、タスクの実行に費やされる時間とすることができる。
【００６２】
ここで、ステップ１１０〜１９０が実行される。これらのステップは、アトミックロードバランシングと呼ばれることがあり、これは、ソルバ上でシミュレーションを実行しているときに生じ、各シミュレーション時間ステップ後にソルバへの負荷が監視され、負荷を調整するため、アトミックパーツがソルバ間で時折、再分配される。ステップ１００がシミュレーションの構築時間に属する一方、ステップ１１０〜１９０はシミュレーションの実行時間に属する。図２は、構築時間（又はアトミックパーティショニング）と実行時間（又はアトミックロードバランシング）との関係を示している。構築時間が実行されると、実行時間がトリガされる。
【００６３】
各ゾーンは、ステップ１１０で演算リソースに割り当てられる。好ましくは、１つのゾーンが１つの演算リソースに割り当てられる。これは、当該技術分野で知られているように実行され、構築時間及び／又は実行時間を実行するコンピュータプログラムであるシミュレータによって管理される。ステップ１１０の結果、各アトミックパーツがソルバに分配される。
【００６４】
そして、ステップ１２０〜１９０が実行される。これらのステップの目的の１つは、利用可能なＮ個の演算リソース（分割によって得られたゾーンによって決定される）から、３Ｄシーンを実行するのに十分な適切な数Ｍ個の演算リソースを選択することである。
【００６５】
これらのＭ個のソルバＳiは、適正な負荷割り当てで動作しなければならない。すなわち、それらの負荷λiは１００％に近く、かつ１００％未満でなければならない。Ｎ−Ｍ個のソルバＳiは非アクティブであり、負荷λjは０％に等しい。しかし、突発的な負荷変動を吸収するために安全範囲を設定することができ、適正なバランスの実用的な条件は、式（１）のように表すことができる。
【数４】
2018092607.tif 000006
ここで、λminは演算リソースがサポートしなければならない最小負荷であり、λmaxは演算リソースがサポートしなければならない最大負荷である。
【００６６】
ステップ１２０〜１９０は、以下の２つの機能を提供することを目的とする。１つ目は、ソルバの負荷を定期的に監視し、適正なバランス（１）の条件を満たさなくなっているかどうかをチェックすることによって、バランスの悪い状況を検出することである。２つ目は、バランスの悪い状況が検出された場合、ソルバ間のゾーン分配を調整することで、ソルバの負荷が関係（１）の条件を満たす適正なバランスに戻るようにすることである。
【００６７】
ステップ１２０〜１３０は、バランスの悪い状況の検出を行うことを目的とする。
【００６８】
ステップ１２０において、各演算リソース（Ｓi）の負荷（λi）の推定値が算出される。演算リソース、つまりソルバに対する負荷を直接測定することはできないため、推定値のみ算出できる。演算リソースの負荷λiの推定値は、シミュレーションの時間ステップを算出するのに演算リソースＳiによって費やされた経過時間Ｔiから算出することができる。
【００６９】
Ｔiの算出は、以下のように行うことができる。演算リソースＳiのソフトウェアコードが、解決サイクルを開始する直前にＣＰＵシステム関数を呼び出して開始タイムスタンプを取得し、それが終了するときにＣＰＵシステムを再度呼び出して終了タイムスタンプを取得する。経過時間Ｔiは、これら２つのタイムスタンプの差である。
【００７０】
各演算リソースはそれ自体の演算リソース上で実行されるため、解決サイクルが１つのショットで割り込みなしで算出されると仮定すると、経過時間Ｔiは演算リソースＳiの負荷λiに比例すると考えることができる。
【００７１】
演算リソースＳiがシミュレーションステップ内で演算を行うための最長時間Ｔmaxは、固定することができる。つまり、最長時間Ｔmaxを超えると、演算リソースＳiはリアルタイム要件を満たさない。
【００７２】
最長時間Ｔmaxの選択は、主に、シミュレートされるモデル、より一般的にはシミュレーションを必要とするアプリケーションのタイプに依存する。例えば、ＭＭＯＧのビデオゲームの場合、流動的なアニメーションでは、シーンを１／５０秒ごとにリフレッシュする必要がある。したがって、各演算リソースは、その演算結果を１／５０秒未満で返す必要がある。別の例としてＭＭＯアプリケーションでシミュレートされるマルチボディ剛体ダイナミクスの場合、この最長時間Ｔmaxは、ビデオゲームの場合よりも小さく、オブジェクトの慣性特性、及び、指示された、結果の数値精度に依存する。
【００７３】
したがって、シミュレーションの所与の時間ステップについての、百分率でλi（％）と表される演算リソースの負荷λiの推定値は、Ｔmaxが演算リソースＳiの負荷能力の１００％に対応するという規則により、演算リソースの経過時間Ｔiから、関係式（２）によって導ける。
【数５】
2018092607.tif 000007
【００７４】
説明のため、図４はシミュレーションのタイムラインの例を示している。本例では、３つのシミュレーション時間ステップが示されており、それぞれ時点４００で開始している。第１及び第３のシミュレーション時間ステップについては、ソルバはＴmaxが経過する前に演算を終了し、第２のシミュレーション時間ステップは、Ｔmaxが経過した時点で演算を終了する。演算の終了は、線４１０によって表されている。
【００７５】
興味深いことに、Ｔmaxと、次のシミュレーション時間ステップとの間の期間により、シミュレータは、１つ又は複数のゾーンを再割り当てするための時間が得られる。この期間は、シミュレータがシミュレーションの結果を収集し、シミュレーションの結果を描画するのにも用いられる。したがって、Ｔmaxは、さらに、シミュレータを確実に正しく機能させるために選択されてもよい。
【００７６】
次いで、ステップ１３０で、１つ又は複数の演算リソースが過大負荷であるか過小負荷であるかを判定する。この判定は、各演算リソースについて、ステップ１２０で算出した負荷λiの推定値に従って実行される。
【００７７】
したがって、λmax≦λiの場合、演算リソースＳiは、リアルタイムでのその能力の限界に近づいており、その負荷の一部を別のソルバに転送する必要がある。すなわち、当該演算リソースは、過大負荷であるとみなされる。そして、λi＜λminのとき、演算リソースＳiは十分使用されておらず、おそらく、そのコンテンツを１つ又は複数の他のアクティブなソルバに転送することによって非アクティブにすることができる。当該演算リソースは、過小負荷状態である。この状況は深刻な状況ではなく、おそらく、シミュレーションのリアルタイムパフォーマンスを危険にさらすことなく、そのまま続けることができる。
【００７８】
過大負荷又は過小負荷と判定された演算リソースがない場合、ステップ１２０が繰り返される。ステップ１２０及び１３０の繰り返しは、シミュレーションのＰ番目の時間ステップごとに実行することができる。ここでＰは自然数である。Ｐの値に関しては、主にシミュレーションのタイプに依存する。たとえば、マルチボディ剛体ダイナミクスでは、経験的に、Ｐをおおよそ８に設定すると、古典的なシナリオでは良好な結果が得られる。したがって、シミュレーションにマルチボディ剛体ダイナミクスが関係するとき、Ｐは好ましくは６〜８の範囲（境界を含む）に属する。より一般的には、Ｐの良好な値を選択することは、モデル化された現象の帯域幅（例えば、衝突精度、最大速度、オブジェクトの出現率など）に関係する。特定のシーン特性の時間微分と負荷時間微分との数値的関係を与える古典的な識別方法によりＰを決定することも可能である。
【００７９】
シミュレーションの時間ステップごとにステップ１２０及び１３０を繰り返すことにより、利用可能なＮ個のソルバのうち適切な数Ｍ個のソルバが最適であることが保証される。しかし、これらのステップ１２０及び１３０をシミュレーションの各時間ステップで実行することは、シミュレーションを実行するコンピュータシステムのＣＰＵ及びメモリの使用という観点でコストがかかる。これらステップ１２０及び１３０の実行回数を減らすとこのコストが減少するが、それは、数Ｍがもはや適切でない状況につながる可能性があり、シミュレーションの質が損なわれる。
【００８０】
１つ又は複数の演算リソースが過大負荷又は過小負荷と判定された場合、ステップ１２０及び１３０の繰り返しは一時的に停止され、再割り当てが算出され実行されると再開する。
【００８１】
ステップ１４０で、各ゾーンＡjについて、ゾーンが割り当てられる演算リソースの負荷に対するゾーンの寄与度£Ａjを算出する。ゾーンＡjの寄与度£Ａjは、ゾーンが割り当てられる演算リソースの負荷に対するゾーンの個々の寄与度を評価するものである。
【００８２】
Ｑ個のゾーンＡjを実行するソルバＳiの現在の負荷λiは、Ｑ個のゾーンの個々の寄与度の合計である。以下のように、ゾーンＡjの個々の寄与度£Ａjの間の関係（３）が仮定され、重み係数μjが与えられる。
【数６】
2018092607.tif 000008
£Ａjは、このように、Ａjとμjの積である。重み係数は範囲］０；１］に属する値を有する。
【００８３】
重み係数μjは、多くの方法で推定できる。演算リソースＳiによって管理される２Ｄゾーンのサーフェスに比例し得る。演算リソースＳiによって管理される３Ｄゾーンのボリュームに比例し得る。演算リソースによって管理されるゾーン内の動的オブジェクトの集団に比例し得る。動的オブジェクトとは、３Ｄシーン内を移動できる可能性のあるオブジェクトである。したがって、動的オブジェクトは、３Ｄシーン内で動くことがなく別のオブジェクトによって横切られることのない静的オブジェクトと対照をなす。したがって、３Ｄシーンは、静的オブジェクトのレイアウトと、当該レイアウト内で移動／発展する動的オブジェクトの集合とを含むものと考えることができる。重み係数は、ソルバの性能の解析モデルに基づいていても、算出したシミュレーションモデルの定量的な特性に基づいていてもよい。
【００８４】
したがって、演算リソースの各ゾーンの重み係数は、演算リソースに割り当てられた他のゾーンのうち、当該ゾーンの優位性を表す。したがって、ある演算リソースに割り当てられたゾーンの重み係数μjの合計は１に等しい。
【００８５】
図５は、ステップ１４０の一例を示す図である。ゾーンＡ１、Ａ２、Ａ３がソルバＳ1に分配され、ゾーンＡ４とＡ５がソルバＳ2に分配されている。両ソルバＳ1及びＳ2に対して１つのシミュレーション時間ステップを実行した後、ソルバに対する負荷が監視されている。すなわち、ステップ１２０及び１３０が実行されている。ソルバＳiの少なくとも１つが過大負荷又は過小負荷であると判定されると、ステップＳ１４０が実行される。つまり、図５の右側に示すように、ソルバＳ1の負荷λ1に対するゾーンＡ１、Ａ２、及びＡ３の寄与度、及びソルバＳ2の負荷λ2に対するゾーンＡ４及びＡ５の寄与度が算出される。
【００８６】
図５の例では、ソルバＳ1及びＳ2は、オブジェクト５１０及び５２０のシミュレーションを担当する。オブジェクト５１０はゾーンＡ2上に、オブジェクト５２０はゾーンＡ4上にある。したがって、ゾーンＡ2及びＡ4は、他のゾーンの重み係数よりも大きな重み係数（それぞれμ2及びμ4）を有する。
【００８７】
ステップ１５０において、演算リソースの現在の負荷λi及びそれらの上で動作しているゾーンの現在の負荷£Ａjの推定値を有しており、ロードバランシングは、１つ又は複数のゾーンＡjをソルバから別のソルバに移動することからなる。過大負荷又は過小負荷の演算リソースの１つ又は複数のゾーンの、別の演算リソースへの再割り当ては、組み合わせ最適化アルゴリズムを用いて、算出したゾーンの寄与度をもとに実行される。組み合わせ最適化は、現在の負荷λiの推定値と現在の負荷£Ａjを考慮して得られる再割り当てのすべての組み合わせのうち、最適な再割り当てを見つけることを目指す。すなわち、アルゴリズムは、ゾーンの寄与度£Ａj及びゾーンの負荷λiの推定値に従って、可能なゾーンのすべての組み合わせを算出する。Ｎ個の演算リソースの間でＮ個のゾーンを分配する方法、言い換えれば、Ｎ個のゾーンのそれぞれについてＮ個の演算リソースのうちの１つを選択する方法は、Ｎ！通りある。
【００８８】
組み合わせの中で最良の解が何であるかを決定し、かつ算出する組み合わせの数を制限するために、アルゴリズムは到達すべき目標を表す１つ又は複数の基準として捉えることができる。１つ又は複数の基準に従って最良の解を決定するのに、目的関数を使用することができる。以下の基準のうち、少なくとも１つの基準が選択される。
・シミュレーションを能動的に並列に算出する演算リソースの数が最小である。これにより、負荷の低い演算リソースの数を制限できる。
・別の演算リソースに再割り当てされるゾーンの数が最小である。これにより、シミュレーションを実行するシステムのＣＰＵ／メモリの使用を制限することが可能であり、また、再割り当てに関与するゾーンが少なくなるため、シミュレータにおいてロードバランシングの管理が容易になる。
・１つ又は複数のゾーンが、再割り当てされた１つ又は複数のゾーンの隣にある１つ又は複数のゾーンの演算を既に実行している別の演算リソースに再割り当てされる。これは、多くのオブジェクトがゾーンから別のゾーンへと変位する３Ｄシーンのシミュレーションに役立つ。シミュレーションが、より簡単に管理できる。
【００８９】
好ましくは、別の演算リソースへの１つ又は複数のゾーンの再割り当ては、各演算リソースの、結果として生じる負荷（λi’）が関係式（１）を満たすか検証して実行する。
【数７】
2018092607.tif 000009
【００９０】
Ｎ＝１０までは、短期間で３３２８３００個のすべての組み合わせに対して広範に３つの目的を評価したうえで、１つの最良の解を選択することが可能である。ただし、もっとスケーラビリティの高い手法を使用することも可能である。例えば、蟻コロニー最適化のような組み合わせ最適化アルゴリズムを用いて、最適解を妥当な時間フレーム内で見つけることができる。なお、他の任意の適切な組み合わせ最適化アルゴリズムを用いることができる。
【００９１】
以下では、組み合わせの集合のうち、ある再割り当ての組合せが選択済みである。ここで、再割り当てはステップ１６０〜１９０で実行される。
【００９２】
ステップ１６０において、再割り当てされるゾーンを管理する演算リソースは、再割り当てされるゾーン内に位置する３Ｄシーンのオブジェクトを識別する。この演算リソースは出発演算リソースとも呼ばれ、再割り当てされたゾーンは出発ゾーンとも呼ばれる。
【００９３】
次にステップ１７０において、出発ゾーンを受け取る演算リソースが、ステップ１６０で識別したオブジェクトをインスタンス化する。出発ゾーンを受け取る演算リソースは、宛先演算リソースとも呼ばれる。出発ゾーンと宛先ゾーンの２つのインスタンスが算出されるが、出発演算リソースのインスタンスのみがシミュレーションで実行されている。
【００９４】
次に、ステップ１８０において、出発演算リソースは、識別したオブジェクトのインスタンスを抑制する。
【００９５】
そして、ステップ１９０で、宛先ゾーンがゾーンを受け取る。すなわち、ゾーンが再割り当てされるとともにオブジェクトのインスタンスがシミュレーションで動作する。
【００９６】
ステップ１２０〜１９０は、シミュレーションが実行される間、繰り返すことができる。
【００９７】
シミュレーションの描画及び／又は表示は、シミュレーションを実行するシステム上で実行されてもよい。あるいは、シミュレーションの描画及び／又は表示は、別のシステム、例えば、シミュレーションを実行するサーバに接続されたクライアントコンピュータ上で実行されてもよい。
【図１】
2018092607.tif 000013
【図２】
2018092607.tif 000014
【図３】
2018092607.tif 000015
【図４】
2018092607.tif 000016
【図５】
2018092607.tif 000017
【図６】
2018092607.tif 000018
【図７】
2018092607.tif 000019
【外国語明細書】
2018092607.tif 000020
2018092607.tif 000021
2018092607.tif 000022
2018092607.tif 000023
2018092607.tif 000024
2018092607.tif 000025
2018092607.tif 000026
2018092607.tif 000027
2018092607.tif 000028
2018092607.tif 000029
2018092607.tif 000030
2018092607.tif 000031
2018092607.tif 000032
2018092607.tif 000033
2018092607.tif 000034
2018092607.tif 000035
2018092607.tif 000036
2018092607.tif 000037
2018092607.tif 000038
2018092607.tif 000039
2018092607.tif 000040
2018092607.tif 000041
2018092607.tif 000042
2018092607.tif 000043
2018092607.tif 000044
2018092607.tif 000045
2018092607.tif 000046
2018092607.tif 000047
【図１】
2018092607.tif 000048
【図２】
2018092607.tif 000049
【図３】
2018092607.tif 000050
【図４】
2018092607.tif 000051
【図５】
2018092607.tif 000052
【図６】
2018092607.tif 000053
【図７】
2018092607.tif 000054