(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022053500
(43)【公開日】2022-04-05
(54)【発明の名称】計算シミュレーションのための動的リソース割振り
(51)【国際特許分類】
G06F 9/50 20060101AFI20220329BHJP
G16Z 99/00 20190101ALI20220329BHJP
【FI】
G06F9/50 150C
G16Z99/00
【審査請求】未請求
【請求項の数】42
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021145454
(22)【出願日】2021-09-07
(31)【優先権主張番号】17/030,991
(32)【優先日】2020-09-24
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】521060822
【氏名又は名称】オンスケール,インコーポレイテッド
(74)【代理人】
【識別番号】100092783
【弁理士】
【氏名又は名称】小林 浩
(74)【代理人】
【識別番号】100120134
【弁理士】
【氏名又は名称】大森 規雄
(74)【代理人】
【識別番号】100141025
【弁理士】
【氏名又は名称】阿久津 勝久
(72)【発明者】
【氏名】イアン キャンベル
(72)【発明者】
【氏名】ライアン ディーステルホルスト
(72)【発明者】
【氏名】ジョシュア オスター-モーリス
(72)【発明者】
【氏名】デイビッド エム.フレッド
(72)【発明者】
【氏名】スコット マクレナン
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049DD02
(57)【要約】
【課題】計算シミュレーション中の自動化されたリソース割振りのためのシステムおよび方法を提供する。
【解決手段】例示的な1つの方法は、一組のシミュレーション入力を分析して、シミュレーションを実行する第1の一組の計算リソースを決定すること、および第1の一組の計算リソースを用いてシミュレーションを開始することを含む。この方法はさらに、シミュレーションの少なくとも1つの属性を動的に分析して、シミュレーションを実行する第2の一組の計算リソースを決定すること、および第2の一組の計算リソースを用いてシミュレーションを実行することを含む。第2の一組の計算リソースは、第1の一組の計算リソースとは異なる数、容量またはタイプの計算処理ユニットまたはメモリを含む。
【選択図】
図2
【特許請求の範囲】
【請求項1】
計算シミュレーション中の自動化されたリソース割振りのためのコンピュータ実施方法であって、
シミュレーションを実行する第1の一組の計算リソースを決定するために、一組のシミュレーション入力を分析することと、
前記第1の一組の計算リソースを用いて前記シミュレーションを開始することと、
前記シミュレーションを実行する第2の一組の計算リソースを決定するために、前記シミュレーションの少なくとも1つの属性を動的に分析することであって、前記第2の一組の計算リソースが、前記第1の一組の計算リソースとは異なる、数、容量またはタイプの計算処理ユニットまたはメモリを含む、前記シミュレーションの少なくとも1つの属性を動的に分析することと、
前記第2の一組の計算リソースを用いて前記シミュレーションを実行することとを含む、コンピュータ実施方法。
【請求項2】
前記シミュレーションの前記少なくとも1つの属性を動的に分析することがさらに、前記第1の一組の計算リソースに含まれる計算処理ユニットまたはメモリよりも多くの計算処理ユニットまたはメモリを、前記シミュレーションが必要としていることを判定する、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記一組のシミュレーション入力が、幾何形状表現、材料特性、境界条件、荷重条件、メッシュパラメータ、ソルバーオプション、シミュレーション出力要求、または時間パラメータのうちの少なくとも1つを含む、請求項1または2に記載のコンピュータ実施方法。
【請求項4】
前記シミュレーションの前記少なくとも1つの属性が、シミュレーション要件、シミュレーション実行特性、または計算能力指標を含む、請求項1~3のいずれか一項に記載のコンピュータ実施方法。
【請求項5】
前記計算能力指標が、計算能力の使用レベル、メモリバンド幅、ネットワークバンド幅、またはネットワーク待ち時間のうちの少なくとも1つを含む、請求項4に記載のコンピュータ実施方法。
【請求項6】
複数のシミュレーションのそれぞれのために、それぞれのシミュレーション入力が分析される、請求項1~5のいずれか一項に記載のコンピュータ実施方法。
【請求項7】
前記第2の一組の計算リソースを用いて前記シミュレーションを実行することが、前記第2の一組の計算リソースを用いて前記シミュレーションを自動的に再び開始することを含む、請求項1~6のいずれか一項に記載のコンピュータ実施方法。
【請求項8】
前記第2の一組の計算リソースを用いて前記シミュレーションを実行することが、前記第2の一組の計算リソースを用いて前記シミュレーションを自動的に継続することを含む、請求項1~6のいずれか一項に記載のコンピュータ実施方法。
【請求項9】
前記シミュレーション中にメッシュを適応的に細分化することをさらに含み、前記メッシュの前記適応的細分化が、メッシュ要素のメッシュ密度および/または順序を変更することを含む、請求項1~8のいずれか一項に記載のコンピュータ実施方法。
【請求項10】
シミュレーションメトリックのターゲット値を達成する間に、前記シミュレーションを実行するための前記第1の一組の計算リソースを決定するために、前記一組のシミュレーション入力が分析される、請求項1~9のいずれか一項に記載のコンピュータ実施方法。
【請求項11】
シミュレーションメトリックのターゲット値を達成する間に、前記シミュレーションを実行するための前記第2の一組の計算リソースを決定するために、前記シミュレーションの前記少なくとも1つの属性が動的に分析される、請求項1~9のいずれか一項に記載のコンピュータ実施方法。
【請求項12】
前記シミュレーションメトリックが、コア時間コスト、メモリ要件、シミュレーションランタイム、ハードウェア構成の効率、またはエネルギーコストである、請求項10または11に記載のコンピュータ実施方法。
【請求項13】
前記シミュレーションメトリックの前記ターゲット値が前記シミュレーションメトリックの最適値である、請求項12に記載のコンピュータ実施方法。
【請求項14】
前記第1の一組の計算リソースおよび前記第2の一組の計算リソースがそれぞれ、複数の仮想機械、またはハードウェア構成のうちの少なくとも一方を含む、請求項1~13のいずれか一項に記載のコンピュータ実施方法。
【請求項15】
前記シミュレーションの状態を、前記第1の一組の計算リソースから前記第2の一組の計算リソースへ転送することをさらに含む、請求項1~14のいずれか一項に記載のコンピュータ実施方法。
【請求項16】
前記シミュレーションの前記状態が、メッシュ情報、制約および荷重条件、導出された量、因数分解された行列、プライマリソリューションおよびセカンダリフィールド変数、ヒストリ変数、または記憶された結果のうちの少なくとも1つを含む、請求項15に記載のコンピュータ実施方法。
【請求項17】
前記シミュレーションを実行する前記第2の一組の計算リソースを決定するために、前記シミュレーションの前記少なくとも1つの属性が定期的に分析される、請求項1~16のいずれか一項に記載のコンピュータ実施方法。
【請求項18】
前記シミュレーションが一組の方程式によって表された、請求項1~17のいずれか一項に記載のコンピュータ実施方法。
【請求項19】
前記一組の方程式が偏微分方程式(PDE)を表す、請求項18に記載のコンピュータ実施方法。
【請求項20】
前記シミュレーションを実行する第2の一組の計算リソースを決定するために、前記シミュレーションの少なくとも1つの属性を動的に分析することが、前記シミュレーションの前記少なくとも1つの属性をしきい値と比較することを含む、請求項1~19のいずれか一項に記載のコンピュータ実施方法。
【請求項21】
前記第1の一組の計算リソースおよび前記第2の一組の計算リソースが計算クラスタの部分である、請求項1~20のいずれか一項に記載のコンピュータ実施方法。
【請求項22】
計算シミュレーション中の自動化されたリソース割振りのためのシステムであって、
計算クラスタと、
前記計算クラスタに動作可能に結合されたリソースアロケータとを備え、
前記リソースアロケータが、プロセッサおよび前記プロセッサに動作可能に結合されたメモリを備え、前記メモリ上にコンピュータ実行可能命令が記憶されており、前記コンピュータ実行可能命令が、前記プロセッサによって実行されたときに、前記プロセッサに、
前記シミュレーションを実行する第2の一組の計算リソースを決定するために、一組のシミュレーション入力を分析することであって、前記第1の一組の計算リソースが、前記シミュレーションを開始するように構成されている、一組のシミュレーション入力を分析することと、
前記計算クラスタ内の前記シミュレーションを実行する第2の一組の計算リソースを決定するために、前記シミュレーションの少なくとも1つの属性を動的に分析することとを実行させ、
前記第2の一組の計算リソースが、前記第1の一組の計算リソースとは異なる、数、容量またはタイプの計算処理ユニットまたはメモリを含み、前記第2の一組の計算リソースが、前記シミュレーションを実行するように構成されている、システム。
【請求項23】
前記シミュレーションの前記少なくとも1つの属性を動的に分析することがさらに、前記第1の一組の計算リソースに含まれる計算処理ユニットまたはメモリよりも多くの計算処理ユニットまたはメモリを前記シミュレーションが必要としていることを判定する、請求項22に記載のシステム。
【請求項24】
前記一組のシミュレーション入力が、幾何形状表現、材料特性、境界条件、荷重条件、メッシュパラメータ、ソルバーオプション、シミュレーション出力要求、または時間パラメータのうちの少なくとも1つを含む、請求項22または23に記載のシステム。
【請求項25】
前記シミュレーションの前記少なくとも1つの属性が、シミュレーション要件、シミュレーション実行特性または計算能力指標を含む、請求項22~24のいずれか一項に記載のシステム。
【請求項26】
前記計算能力指標が、計算能力の使用レベル、メモリバンド幅、ネットワークバンド幅、またはネットワーク待ち時間のうちの少なくとも1つを含む、請求項25に記載のシステム。
【請求項27】
複数のシミュレーションのそれぞれのために、それぞれのシミュレーション入力が分析される、請求項22~26のいずれか一項に記載のシステム。
【請求項28】
前記第2の一組の計算リソースを用いて前記シミュレーションを実行することが、前記第2の一組の計算リソースを用いて前記シミュレーションを自動的に再び開始することを含む、請求項22~27のいずれか一項に記載のシステム。
【請求項29】
前記第2の一組の計算リソースを用いて前記シミュレーションを実行することが、前記第2の一組の計算リソースを用いて前記シミュレーションを自動的に継続することを含む、請求項22~27のいずれか一項に記載のシステム。
【請求項30】
前記メモリ上にさらなるコンピュータ実行可能命令が記憶されており、前記さらなるコンピュータ実行可能命令が、前記プロセッサによって実行されたときに、前記プロセッサに、前記シミュレーション中にメッシュを適応的に細分化することを実行させ、前記メッシュの前記適応的細分化が、メッシュ要素のメッシュ密度および/または順序を変更することを含む、請求項22~29のいずれか一項に記載のシステム。
【請求項31】
前記シミュレーションを実行し、その間にシミュレーションメトリックのターゲット値を達成する前記第1の一組の計算リソースを決定するために、前記一組のシミュレーション入力が分析される、請求項22~30のいずれか一項に記載のシステム。
【請求項32】
前記シミュレーションを実行し、その間にシミュレーションメトリックのターゲット値を達成する前記第2の一組の計算リソースを決定するために、前記シミュレーションの前記少なくとも1つの属性が動的に分析される、請求項22~30のいずれか一項に記載のシステム。
【請求項33】
前記シミュレーションメトリックが、コア時間コスト、メモリ要件、シミュレーションランタイム、ハードウェア構成の効率、またはエネルギーコストである、請求項31または32に記載のシステム。
【請求項34】
前記シミュレーションメトリックの前記ターゲット値が前記シミュレーションメトリックの最適値である、請求項33に記載のシステム。
【請求項35】
前記第1の一組の計算リソースおよび前記第2の一組の計算リソースがそれぞれ、複数の仮想機械、またはハードウェア構成のうちの少なくとも一方を含む、請求項22~34のいずれか一項に記載のシステム。
【請求項36】
前記メモリ上にさらなるコンピュータ実行可能命令が記憶されており、前記さらなるコンピュータ実行可能命令が、前記プロセッサによって実行されたときに、前記プロセッサに、前記シミュレーションの状態を、前記第1の一組の計算リソースから前記第2の一組の計算リソースへ転送することを実行させる、請求項22~35のいずれか一項に記載のシステム。
【請求項37】
前記シミュレーションの前記状態が、メッシュ情報、制約および荷重条件、導出された量、因数分解された行列、プライマリソリューションおよびセカンダリフィールド変数、ヒストリ変数、または記憶された結果のうちの少なくとも1つを含む、請求項36に記載のシステム。
【請求項38】
前記シミュレーションを実行する前記第2の一組の計算リソースを決定するために、前記シミュレーションの前記少なくとも1つの属性が定期的に分析される、請求項22~37のいずれか一項に記載のシステム。
【請求項39】
前記シミュレーションが一組の方程式によって表された、請求項22~38のいずれか一項に記載のシステム。
【請求項40】
前記一組の方程式が偏微分方程式(PDE)を表す、請求項39に記載のシステム。
【請求項41】
前記シミュレーションを実行する第2の一組の計算リソースを決定するために、前記シミュレーションの少なくとも1つの属性を動的に分析することが、前記シミュレーションの前記少なくとも1つの属性をしきい値と比較することを含む、請求項22~40のいずれか一項に記載のシステム。
【請求項42】
前記第1の一組の計算リソースおよび前記第2の一組の計算リソースが、前記計算クラスタの部分である、請求項22~41のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、2020年9月24日に出願された「DYNAMIC RESOURCE ALLOCATION FOR COMPUTATIONAL SIMULATION」という名称の米国特許出願第17/030,991号明細書の恩典を主張するものである。この米国特許出願の開示は、その全体が参照によって本明細書に明白に組み込まれている。
【背景技術】
【0002】
コンピュータ支援エンジニアリング(computer-aided engineering)(CAE)は、物理的物体(physical object)の表現を、計算方法(computational method)を使用してシミュレートするプラクティスである。この計算方法は、限定はされないが、有限要素法(finite element method)(FEM)および有限差分法(finite difference method)(FDM)を含む。FEMおよび/またはFDMを使用してシミュレーションを実行するためには、ドメインが、メッシュと呼ばれる有限個の要素に離散化されて(discretized)いなければならない。FEMおよびFDMは、微分方程式(例えば偏微分方程式(partial differential equation)(PDE))を、数値的に解くことができる連立方程式に変換する技法である。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願第16/856,222号明細書
【特許文献2】米国特許出願公開第2021/0133378号明細書
【発明の概要】
【課題を解決するための手段】
【0004】
本明細書には、計算シミュレーション(computational simulation)中の自動化されたリソース割振り(resource allocation)のための例示的なコンピュータ実施方法(computer-implemented method)が記載されている。この方法は、一組のシミュレーション入力を分析して、シミュレーションを実行する第1の一組の計算リソース(computing resource)を決定すること、および第1の一組の計算リソースを用いてシミュレーションを開始することを含む。この方法はさらに、シミュレーションの少なくとも1つの属性を動的に分析して、シミュレーションを実行する第2の一組の計算リソースを決定すること、および第2の一組の計算リソースを用いてシミュレーションを実行することを含む。第2の一組の計算リソースは、第1の一組の計算リソースとは異なる数、容量またはタイプの計算処理ユニットまたはメモリを含む。
【0005】
それに加えて、いくつかの実施態様では、シミュレーションの少なくとも1つの属性を動的に分析するステップがさらに、第1の一組の計算リソースに含まれる計算処理ユニットまたはメモリよりも多くの計算処理ユニットまたはメモリをシミュレーションが必要としていると判定する。
【0006】
その代わりにまたはそれに加えて、一組のシミュレーション入力は、幾何形状表現(geometry representation)、材料特性、境界条件、荷重条件(loading condition)、メッシュパラメータ、ソルバーオプション(solver option)、シミュレーション出力要求、または時間パラメータのうちの少なくとも1つを含む。
【0007】
その代わりにまたはそれに加えて、シミュレーションの少なくとも1つの属性は、シミュレーション要件、シミュレーション実行特性または計算能力指標(compute capacity indicator)である。計算能力指標は、計算能力の使用レベル、メモリバンド幅、ネットワークバンド幅、またはネットワーク待ち時間のうちの少なくとも1つを含む。
【0008】
任意選択で、いくつかの実施態様では、複数のシミュレーションのうちのそれぞれのシミュレーションの対応するそれぞれのシミュレーション入力が分析される。
【0009】
いくつかの実施態様では、第2の一組の計算リソースを用いてシミュレーションを実行するステップが、第2の一組の計算リソースを用いてシミュレーションを自動的に再び開始することを含む。その代わりに、第2の一組の計算リソースを用いてシミュレーションを実行するステップは、第2の一組の計算リソースを用いてシミュレーションを自動的に継続することを含む。
【0010】
その代わりにまたはそれに加えて、いくつかの実施態様では、この方法が、任意選択で、シミュレーション中にメッシュを適応的に細分化することを含む。メッシュの適応的細分化は、メッシュ要素のメッシュ密度および/または順序を変更することを含む。
【0011】
その代わりにまたはそれに加えて、いくつかの実施態様では、シミュレーションを実行し、その間にシミュレーションメトリック(simulation metric)のターゲット値を達成する第1の一組の計算リソースを決定するために、一組のシミュレーション入力が分析される。その代わりにまたはそれに加えて、いくつかの実施態様では、シミュレーションを実行し、その間にシミュレーションメトリックのターゲット値を達成する第2の一組の計算リソースを決定するために、シミュレーションの少なくとも1つの属性が動的に分析される。このシミュレーションメトリックは、コア時間コスト、メモリ要件、シミュレーションランタイム、ハードウェア構成の効率、またはエネルギーコストである。それに加えて、シミュレーションメトリックのターゲット値はシミュレーションメトリックの最適値である。
【0012】
その代わりにまたはそれに加えて、第1の一組の計算リソースおよび第2の一組の計算リソースはそれぞれ、複数の仮想機械、またはハードウェア構成のうちの少なくとも一方を含む。
【0013】
その代わりにまたはそれに加えて、いくつかの実施態様では、この方法が、任意選択で、シミュレーションの状態を、第1の一組の計算リソースから第2の一組の計算リソースへ転送することを含む。このシミュレーションの状態は、メッシュ情報、制約および荷重条件、導出された量(derived quantity)、因数分解された行列(factorized matrix)、プライマリソリューションおよびセカンダリフィールド変数(primary solution and secondary field variables)、ヒストリ変数(history variable)、または記憶された結果のうちの少なくとも1つを含む。
【0014】
その代わりにまたはそれに加えて、いくつかの実施態様では、シミュレーションを実行する第2の一組の計算リソースを決定するために、シミュレーションの少なくとも1つの属性が定期的に分析される。
【0015】
その代わりにまたはそれに加えて、このシミュレーションは一組の方程式によって表されている。任意選択で、この一組の方程式は偏微分方程式(PDE)を表す。
【0016】
その代わりにまたはそれに加えて、いくつかの実施態様では、この動的分析が、任意選択で、シミュレーションの少なくとも1つの属性をしきい値と比較することを含む。
【0017】
その代わりにまたはそれに加えて、いくつかの実施態様では、第1の一組の計算リソースおよび第2の一組の計算リソースが計算クラスタ(computing cluster)の部分である。
【0018】
本明細書には、計算シミュレーション中の自動化されたリソース割振りのための例示的なシステムが記載されている。このシステムは、計算クラスタと、この計算クラスタに動作可能に結合されたリソースアロケータ(resource allocator)とを含む。リソースアロケータは、プロセッサおよびこのプロセッサに動作可能に結合されたメモリを含み、メモリ上にはコンピュータ実行可能命令が記憶されている。リソースアロケータは、一組のシミュレーション入力を分析して、計算クラスタ内のシミュレーションを実行する第1の一組の計算リソースを決定するように構成されている。第1の一組の計算リソースは、シミュレーションを開始するように構成されている。それに加えて、リソースアロケータは、シミュレーションの少なくとも1つの属性を動的に分析して、計算クラスタ内のシミュレーションを実行する第2の一組の計算リソースを決定するように構成されている。第2の一組の計算リソースは、シミュレーションを実行するように構成されている。第2の一組の計算リソースは、第1の一組の計算リソースとは異なる数、容量またはタイプの計算処理ユニットまたはメモリを含む。
【0019】
それに加えて、いくつかの実施態様では、シミュレーションの少なくとも1つの属性を動的に分析するステップがさらに、第1の一組の計算リソースに含まれる計算処理ユニットまたはメモリよりも多くの計算処理ユニットまたはメモリをシミュレーションが必要としていると判定する。
【0020】
その代わりにまたはそれに加えて、一組のシミュレーション入力は、幾何形状表現、材料特性、境界条件、荷重条件、メッシュパラメータ、ソルバーオプション、シミュレーション出力要求、または時間パラメータのうちの少なくとも1つを含む。
【0021】
その代わりにまたはそれに加えて、シミュレーションの少なくとも1つの属性は、シミュレーション要件、シミュレーション実行特性または計算能力指標である。計算能力指標は、計算能力の使用レベル、メモリバンド幅、ネットワークバンド幅、またはネットワーク待ち時間のうちの少なくとも1つを含む。
【0022】
任意選択で、いくつかの実施態様では、複数のシミュレーションのうちのそれぞれのシミュレーションの対応するそれぞれのシミュレーション入力が分析される。
【0023】
いくつかの実施態様では、第2の一組の計算リソースを用いてシミュレーションを実行するステップが、第2の一組の計算リソースを用いてシミュレーションを自動的に再び開始することを含む。その代わりに、第2の一組の計算リソースを用いてシミュレーションを実行するステップは、第2の一組の計算リソースを用いてシミュレーションを自動的に継続することを含む。
【0024】
その代わりにまたはそれに加えて、いくつかの実施態様では、リソースアロケータが、任意選択で、シミュレーション中にメッシュを適応的に細分化するように構成されている。メッシュの適応的細分化は、メッシュ要素のメッシュ密度および/または順序を変更することを含む。
【0025】
その代わりにまたはそれに加えて、いくつかの実施態様では、シミュレーションを実行し、その間にシミュレーションメトリックのターゲット値を達成する第1の一組の計算リソースを決定するために、一組のシミュレーション入力が分析される。その代わりにまたはそれに加えて、いくつかの実施態様では、シミュレーションを実行し、その間にシミュレーションメトリックのターゲット値を達成する第2の一組の計算リソースを決定するために、シミュレーションの少なくとも1つの属性が動的に分析される。このシミュレーションメトリックは、コア時間コスト、メモリ要件、シミュレーションランタイム、ハードウェア構成の効率、またはエネルギーコストである。それに加えて、シミュレーションメトリックのターゲット値はシミュレーションメトリックの最適値である。
【0026】
その代わりにまたはそれに加えて、第1の一組の計算リソースおよび第2の一組の計算リソースはそれぞれ、複数の仮想機械、またはハードウェア構成のうちの少なくとも一方を含む。
【0027】
その代わりにまたはそれに加えて、いくつかの実施態様では、リソースアロケータが、任意選択で、シミュレーションの状態を、第1の一組の計算リソースから第2の一組の計算リソースへ転送するように構成されている。このシミュレーションの状態は、メッシュ情報、制約および荷重条件、導出された量、因数分解された行列、プライマリソリューションおよびセカンダリフィールド変数、ヒストリ変数、または記憶された結果のうちの少なくとも1つを含む。
【0028】
その代わりにまたはそれに加えて、いくつかの実施態様では、シミュレーションを実行する第2の一組の計算リソースを決定するために、シミュレーションの少なくとも1つの属性が定期的に分析される。
【0029】
その代わりにまたはそれに加えて、このシミュレーションは一組の方程式によって表されている。任意選択で、この一組の方程式は偏微分方程式(PDE)を表す。
【0030】
その代わりにまたはそれに加えて、いくつかの実施態様では、この動的分析が、任意選択で、シミュレーションの少なくとも1つの属性をしきい値と比較することを含む。
【0031】
その代わりにまたはそれに加えて、いくつかの実施態様では、第1の一組の計算リソースおよび第2の一組の計算リソースが計算クラスタの部分である。
【0032】
上述の主題は、コンピュータ制御の装置、コンピュータプロセス、計算システム、または製品、例えばコンピュータ可読記憶媒体としても実施することができることを理解すべきである。
【0033】
以下の図面および詳細な説明を検討した当業者には、他のシステム、方法、特徴および/または利点が明らかであり、または明らかになることがある。このような追加のシステム、方法、特徴および/または利点は全て、本明細書の説明に含まれていること、および添付の特許請求項によって保護されていることが意図されている。
【0034】
図面中の構成要素は、互いに対して一様な倍率で描かれているわけではない。複数の図の全体を通じて、同じ参照符号は対応する部分を表している。
【図面の簡単な説明】
【0035】
【
図1】本明細書に記載された一実施態様による、例示的な計算環境のブロック図である。
【
図2】本明細書に記載された一実施態様による、計算シミュレーションのための自動化されたリソース割振りの例示的な操作を示す流れ図である。
【
図3】本明細書に記載された一実施態様による、コンテナ化(containerization)を示す図である。
【
図4】本明細書に記載された一実施態様による、それぞれの反復時間ステップ(iterative time step)における、シミュレーションの動的分析の例示的な操作を示す流れ図である。
【
図5A】均一な構造化された格子(uniform structured grid)によって領域1、2および3がメッシュ化された(meshed)例示的なシミュレーションモデルを示す図である。
【
図5B】異なるメッシュ密度を有する構造化格子によって領域1、2および3がメッシュ化された例示的なシミュレーションモデルを示す図である。
【
図5C】
図5Bのシミュレーションモデルを解くためのコンテナ化を示す図である。
【発明を実施するための形態】
【0036】
特段の定義がなされていない限り、本明細書で使用されている技術用語および科学用語は全て、当業者によって一般的に理解される意味と同じ意味を有する。本明細書に記載された方法および材料と類似の方法および材料、または本明細書に記載された方法および材料と等価の方法および材料を、本開示の実施または試験に使用することができる。本明細書および添付の特許請求項で使用されているとき、文脈からそうでないことが明らかである場合を除き、単数形の「1つの」、「その」は複数の指示物を含む。本明細書で使用されているとき、用語「備える」およびその変形語は、用語「含む」およびその変形語の同義語として使用されており、それらの用語は、開いた非限定的な用語である。本明細書で使用されている用語「任意選択の」または「任意選択で」は、続いて記述された特徴、事象または状況が起こってもよく、または起こらなくてもよいこと、ならびにその記述が、前記特徴、事象または状況が起こる事例および前記特徴、事象または状況が起こらない事例を含むことを意味する。本明細書では、範囲が、「およそ」1つの特定の値からとして、および/または「およそ」別の特定の値までとして、表現されていることがある。このような範囲が表示されているとき、一態様は、その1つの特定の値から、および/またはその別の特定の値までの範囲を含む。同様に、先行語「約」の使用によって値が近似値として表現されているとき、その特定の値は別の態様を形成することが理解される。それぞれの範囲の終点は、もう一方の終点に関連して有意であるだけでなく、もう一方の終点とは独立して有意であることも理解される。
【0037】
本明細書には、計算シミュレーション(本明細書では「数値シミュレーション」または「シミュレーション」とも言う)中の自動化されたリソース割振りのためのシステムおよび方法が記載されている。本明細書に記載されているとおり、それらのシステムおよび方法は、並列の計算リソースを使用して物理的物体または物理現象の仮想モデルの解を計算するときに、シミュレーションのロバストネスおよび効率を向上させる。従来の技法を使用して、シミュレーションに必要な一組の計算リソース、特に、最適なおよび/または最小の一組の計算リソースを演繹的に決定することは困難である。言い換えると、シミュレーションに必要な計算リソースを正確に決定するのに、シミュレーションについての演繹的な知識だけでは不十分なことがある。シミュレーションが開始された後、シミュレーション中に、開始時には知られていない追加の情報が集められる。例えば、従来の技法を使用して、ユーザは、シミュレーションのために「X」ギガバイト(GB)のメモリが必要であると推定することができる。そのシミュレーションは、使用可能な「X」GBのメモリを用いて開始されるが、開始時には知られていないまたは知ることのできない因子により、完了に至るために実際には、「X」GBよりも多くのメモリが必要となる。このことにより、シミュレーションが終わる前にシミュレーションは失敗する。その代わりに、そのシミュレーションが、実際には、「X」GBよりも少ないメモリを必要とすることもあり、このことは計算リソースを不必要に拘束する。従来の技法は、このようなシミュレーション状態を自動的に検出すること、およびこのようなシミュレーション状態に自動的に応答することをしない。
【0038】
本明細書に記載されたシステムおよび方法は、上記の課題を、例えばリソース割振りを自動化することによって解決する。例えば、本明細書に記載されたシステムおよび方法は、不適切なリソース割振りによるシミュレーションの失敗を回避することによってロバストネスを向上させる。シミュレーションがランしている間に動的分析を実行することにより、計算リソース決定が、シミュレーションについての帰納的知識を使用して更新される。その結果、本明細書に記載されたシステムおよび方法は、シミュレーションの失敗が起こる前にそれを防ぐことができる(すなわち、本明細書に記載されたシステムおよび方法は予防的(proactive)であり、検出された失敗に対して単純に反応するものではない)。本明細書に記載されたシステムおよび方法はさらに、計算リソースの過剰割振り(over-allocation)を補正することによって効率を向上させる。本明細書に記載されたシステムおよび方法はさらに、シミュレーション中の必要なリソースの変化を考慮する。これらの能力は、手動でリソース必要量を決定し、リソースを再割り振りし、シミュレーションを再び開始することに対する改良を表す。
【0039】
シミュレーション方法は、限定はされないが、FEMおよびFDMを含む。例えば、有限要素分析(finite element analysis)(FEA)の概念は概して、当技術分野で十分に理解されており、仮想モデルを複数のノードに離散化することを含み、それぞれのノードは、空間的情報を含み、さらに、そのノードに関する計算対象である物理的現象を表現する微分方程式(例えば偏微分方程式(PDE))による周囲のノードへの接続を含む。これらのノード、およびこれらのノードを記述する微分方程式は、仮想モデルを表す行列を形成し、この行列は、所与の時刻もしくはフレクエンシ(frequency)(または時間範囲もしくは一組のフレクエンシ)において解を計算するために、その全体または一部が、1つの処理ユニットまたは一群の処理ユニットに伝送される。
【0040】
任意選択で、融通性のあるクラウド計算システム(例えば
図1に示された計算環境)では、単一のシミュレーションまたはいくつかの別個のシミュレーションを最適に解くために、計算リソースの最適量(例えば計算コアの数、メモリの容量、ハードウェアのタイプなど)を動的に決定および選択することができる。クラウド計算環境では、最適化するために、単一のシミュレーションまたは一組のシミュレーションに割り当てる計算リソースの最適量を、異なる基準(criterion)、例えば
コア時間コストを最小化すること、
総シミュレーション時間を最小化すること、
所与のハードウェア構成に対する充填効率(packing efficiency)を最大化すること、および/または
使用されるエネルギーを最小化すること
に基づいて選択することができる。
【0041】
後述するように、クラウド計算環境でのシミュレーションに使用するリソースの動的変更は、単一のコンテナに割り振られるリソース(コア、RAMなど)を増やすこともしくは減らすこと、または異なるサイズの新たなコンテナを開始し、シミュレーション状態を元のコンテナから新たなコンテナにマップすることを含むことができ、シミュレーションは、この新たなコンテナを用いて継続されるか、または再び開始される。
【0042】
次に
図1を参照すると、例示的な計算環境が示されている。
図1に示された計算環境を使用して、本明細書に記載された計算シミュレーションのための動的リソース割振りの方法を実行することができる。この環境は、シミュレーション装置110、リソースアロケータ120、発信装置(originating device)140およびオブザーバ(observer)150を含む。
図1に示された環境は一例として示されているだけであることを理解すべきである。本開示は、
図1に示された構成要素よりも多数のもしくは少数の構成要素を有し、かつ/または
図1に示された配置とは異なる配置の構成要素を有する計算環境を使用して、本明細書に記載された計算シミュレーションのための動的リソース割振りの方法を実行することができることを予期する。本明細書に記載された論理操作は、計算環境の例として示されているだけである
図1に示された装置のうちの1つまたは複数の装置によって実行することができることを理解すべきである。
【0043】
シミュレーション装置110、リソースアロケータ120、発信装置140およびオブザーバ150は、1つまたは複数のネットワーク130に動作可能に結合されている。本開示は、ネットワーク130が適当な任意の通信ネットワークであることを予期する。ネットワーク130は、1つまたは複数の点で互いに類似したネットワークとすることができる。その代わりにまたはそれに加えて、ネットワーク130は、1つまたは複数の点で互いに異なるネットワークとすることができる。ネットワーク130は、ローカルエリアネットワーク(LAN)、無線ローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、仮想私設ネットワーク(VPN)などを含むことができ、これには、上記のネットワークの部分または組合せが含まれる。それに加えて、シミュレーション装置110、リソースアロケータ120、発信装置140およびオブザーバ150はそれぞれ、1つまたは複数の通信リンクを通して1つまたは複数のネットワーク130に結合されている。本開示は、この通信リンクが適当な任意の通信リンクであることを予期する。例えば、データ交換を容易にする任意の媒体によって通信リンクを実装することができ、この通信リンクは、限定はされないが、有線、無線および光リンクを含む。例示的な通信リンクは、限定はされないが、LAN、WAN、MAN、イーサネット、インターネットまたは他の任意の有線もしくは無線リンク、例えばWiFi、WiMax、3G、4Gもしくは5Gを含む。
【0044】
シミュレーション装置110は、計算クラスタ、例えば複数のノード115(例えばノード115A、115Bおよび115C)からなる計算クラスタとすることができる。本明細書で使用されているとき、計算クラスタは、ネットワークを横切ってアクセス可能な相互接続された複数の計算リソースであって、通常のパーソナルコンピュータに見られるリソースよりも多くのリソース(例えば計算パワー、データ記憶装置など)を有する複数の計算リソースである。いくつかの実施態様では、計算クラスタがクラウドベースの計算クラスタである。クラウドベースの計算は、通信ネットワーク(例えばインターネット)または他のデータ伝送媒体を通してユーザ(例えば発信装置140)にリンクされた遠隔リソース(例えば処理ユニット、記憶装置、データベース、ソフトウェアなど)によってタスクが実行されるオンデマンド計算環境である。クラウドベースの計算は当技術分野でよく知られており、したがって本明細書でさらに詳細に説明することはしない。他の実施態様では、計算クラスタが局所計算クラスタ(例えばLANを介してリンクされた計算資産(computing asset))であり、この計算クラスタでは、通信ネットワーク(例えばLAN)または他のデータ伝送媒体を通してリソースがユーザ(例えば発信装置140)にリンクされる。それぞれのノード115は、
図6に示された計算装置600などの1つまたは複数の計算装置からなるものとすることができる。
図1のノード115の数(すなわち3)は例示だけを目的に提示されたものであることを理解すべきである。シミュレーション装置110がサポートすることができるノード115の数に限界はない。シミュレーション装置110は、計算シミュレーション(例えばFEM、FDMまたは他の計算シミュレーション技法)を実行するように構成されたものとすることができる。クラウドベースの計算クラスタを使用してシミュレーションをランさせる例示的なシステムおよび方法が、OnScale,Inc.によって2020年4月23日に出願された「SYSTEMS AND METHODS FOR RUNNING A SIMULATION」という名称の米国特許出願第16/856,222号明細書に記載されている。
【0045】
リソースアロケータ120は、
図6に示された計算装置600などの計算装置とすることができる。リソースアロケータ120は、アプリケーション122を実行するように構成されたものとすることができる。アプリケーション122は、
図2に関して説明される計算シミュレーションのための自動化されたリソース割振り操作のうちの1つまたは複数の操作を実行するための命令を含むものとすることができる。例えば、リソースアロケータ120は、シミュレーションに関連した情報(例えば、限定はされないが、シミュレーション入力、シミュレーション属性、および/もしくは本明細書に記載された計算能力指標を含む情報)を受け取り、かつ/またはそのような情報にアクセスし、シミュレーションに関連したそのような情報を分析し、かつ/あるいはそのような分析に基づいて計算リソースを割り振るように構成されたものとすることができる。シミュレーションに関連したこのような情報は、監視装置またはプロセスから受け取ることができる。任意選択で、リソースアロケータ120は、シミュレーションに関連した情報(例えば、限定はされないが、シミュレーション入力、シミュレーション属性、および/または本明細書に記載された計算能力指標を含む情報)を監視するように構成されたものとすることができる。リソースアロケータ120は、ネットワークインタフェース124を通してネットワーク130と通信することができる。任意選択で、ネットワークインタフェース124は、データを暗号化し、その後にそのようなデータをネットワーク130を介して伝送することができる。本開示は、任意のタイプの暗号化を使用することができることを予期する。
【0046】
発信装置140は、
図6に示された計算装置600などの計算装置とすることができる。発信装置140は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップ、タブレットなどのユーザに関連した計算装置とすることができる。発信装置140は、アプリケーション142を実行するように構成されたものとすることができる。アプリケーション142は、エンジニアリングアプリケーション(例えばCADアプリケーション)、またはモデリング、モデリングデータ、シミュレーションおよび/もしくはシミュレーションデータを含む他の任意のタイプのアプリケーションとすることができる。発信装置140は、シミュレーション装置110によって計算シミュレーションが実行されることを要求することができる。発信装置140は、ネットワークインタフェース144を通してネットワーク130と通信することができる。任意選択で、ネットワークインタフェース144は、データを暗号化し、その後にそのようなデータをネットワーク130を介して伝送することができる。本開示は、任意のタイプの暗号化を使用することができることを予期する。
【0047】
オブザーバ150は、
図6に示された計算装置600などの計算装置とすることができる。観察装置150は、アプリケーション152を実行するように構成されたものとすることができる。アプリケーション152は、
図2に関して説明される計算シミュレーションのための自動化されたリソース割振り操作のうちの1つまたは複数の操作を実行するための命令を含むものとすることができる。例えば、オブザーバ150は、プロセス監視アプリケーションを実行するように構成されたものとすることができる。言い換えると、オブザーバ150は、シミュレーションに関連した情報(例えば、限定はされないが、シミュレーション属性および/または本明細書に記載された計算能力指標を含む情報)を監視するように構成されたものとすることができる。オブザーバ150は、ネットワークインタフェース154を通してネットワーク130と通信することができる。任意選択で、ネットワークインタフェース154は、データを暗号化し、その後にそのようなデータをネットワーク130を介して伝送することができる。このことは、限定はされないが、監視された情報をリソースアロケータ120に伝送することを含み、リソースアロケータ120は、監視された情報を分析するように構成されたものとすることができる。本開示は、任意のタイプの暗号化を使用することができることを予期する。
【0048】
次に
図2を参照すると、計算シミュレーションのための自動化されたリソース割振りの例示的な操作を示す流れ図が示されている。
図2に示された例示的な操作は、
図1に示された計算環境で実行することができる。例えば、いくつかの実施態様では、
図1に示されたリソースアロケータ120および/またはシミュレーション装置110によってこれらの例示的な操作を実行することができる。任意選択で、いくつかの実施態様では、
図1に示されたリソースアロケータ120、オブザーバ150および/またはシミュレーション装置110によってこれらの例示的な操作を実行することができる。後述するように、
図2に示された操作のうちの1つまたは複数の操作を自動的に、例えばユーザ入力および/または介入なしで実行することができる。例えば、シミュレーションが始まる(例えば
図2のステップ204)と、動的分析が実行され(例えば
図2のステップ206)、この動的分析の結果に応じて計算リソースが調整される(例えば
図2のステップ208)。言い換えると、計算リソースを調整するのにユーザ入力または介入は必要ない。任意選択で、いくつかの実施態様では、
図2に示された操作の全てを自動的に、例えばユーザ入力および/または介入なしで実行することができる。
【0049】
ステップ202で、一組のシミュレーション入力を分析して、シミュレーションを実行する第1の一組の計算リソースを決定する。ステップ202の分析は、シミュレーションについての演繹的な知識に基づく。本明細書に記載されているとおり、このシミュレーションは、物理的物体の表現であるシミュレーションモデルに対する数値解を提供する。このシミュレーションモデルは2次元(2D)モデルまたは3次元(3D)モデルである。例えば、このシミュレーションモデルを使用して、物理的物体のさまざまな機械的、熱的、熱機械的、電気機械的、流体フロー的動態および/または磁気機械的態様をシミュレートすることができる。本明細書に記載されているとおり、計算クラスタである
図1に示されたシミュレーション装置110を使用して、このシミュレーションを実行することができる。それに加えて、このシミュレーションは、一組の要素方程式(element equation)によって表現される。それらの要素方程式をPDEなどの微分方程式とすることができる。FEMおよびFDMなどの計算シミュレーション技法を使用して、一組の微分方程式に対する数値解を得ることができる。本明細書で使用されるとき、一組のシミュレーション入力は1つまたは複数のシミュレーション入力を含む。シミュレーション入力は、限定はされないが、幾何形状表現(例えばCADファイル、画像ファイル)、材料特性(例えば密度、熱容量、ヤング率)、境界条件(例えば流体速度、流体通路の固体壁、圧力、押しのけ量)、荷重条件(例えば力、圧力、熱流束、温度)、メッシュパラメータ(例えばメッシュセルサイズ、メッシュセル要素タイプ)、ソルバーオプション(例えば定常状態、過渡状態)、出力要求、および/または時間パラメータを含むことができる。上に示したシミュレーション入力(およびその例)は例に過ぎないことを理解すべきである。本開示は、ステップ202で分析されるシミュレーション入力が、シミュレーションをランさせるために必要な、および/またはシミュレーションをランさせるために望まれる情報、データなどを含むことができることを予期する。
【0050】
任意選択で、いくつかの実施態様では、ステップ202で、複数のシミュレーションのうちのそれぞれのシミュレーションの対応するそれぞれのシミュレーション入力を分析する。これらの実施態様では、それぞれのシミュレーションが、対応するそれぞれの一組の要素方程式によって表現された対応するそれぞれのシミュレーションモデルに対する数値解を提供する。例えば、任意選択で、(例えば物理的特性、解法および/または時間ステップサイズによって)シミュレーションモデルを、異なる一組の要素方程式によってそれぞれが表現された多数の窓に分割することができる。これらの実施態様では、ステップ202での分析を使用して、シミュレーションの数値解に到達するために対応するそれぞれのシミュレーションを解くための対応するそれぞれの一組の計算リソースを決定することができる。
【0051】
上述のとおり、
図1に示されたリソースアロケータ120によって実行することができるステップ202は、シミュレーション入力を分析して、シミュレーションを実行するのに必要な一組の計算リソース(例えば、コアの数、RAMの容量など)を決定する。
図1に示されたリソースアロケータ120は、シミュレーション入力を受け取るように、および/またはシミュレーション入力にアクセスするように構成されたものとすることができることを理解すべきである。任意選択で、シミュレーションを実行し、その間にシミュレーションメトリックのターゲット値を達成する一組の計算リソースを決定するために、一組のシミュレーション入力が分析される。任意選択で、このターゲット値が、シミュレーションメトリックの最適値である。言い換えると、いくつかの実施態様では、リソースアロケータ120が、シミュレーションを最適化するのに必要な一組の計算リソース、例えば、シミュレーションに対して使用されるコスト、時間および/またはリソースのうちの1つまたは複数を最小化するのに必要な一組の計算リソースを決定することができる。他の実施態様では、このターゲット値が、シミュレーションメトリックの所望値(すなわち最適ではないが望まれている値)である。例えば、ユーザは、所望のコスト限界および/または所望のランタイム要件を提供することができる。本開示は、シミュレーションメトリックが、限定はされないが、コア時間コスト、シミュレーションランタイム、ハードウェア構成の効率、またはエネルギーコストを含むことができることを予期する。これらはシミュレーションメトリックの例に過ぎないことを理解すべきである。本開示は、他のシミュレーションメトリックのターゲット値を達成するのに必要な一組の計算リソースを決定することを予期する。任意選択で、いくつかの実施態様では、目的が、複数組の要素方程式をほぼ同じ時間で解くこと(例えば、複数のシミュレーションに対して同じまたは同様のシミュレーションランタイムを達成すること)である。本明細書に記載されているとおり、シミュレーションは計算クラスタによって実行され、シミュレーションを実行する計算リソースを、シミュレーションメトリックを達成するように割り当てること、および/または調整することができる。この調整は動的に実行することができ、例えば、後述するように、シミュレーション中に動的に実行することができる。言い換えると、シミュレーションメトリックを達成するために、計算クラスタから割り当てる処理ユニットの数および/またはメモリを増大または低減させることができる。
【0052】
本開示は、必要な計算リソースを既知の1つまたは複数のシミュレーション入力に基づいて推定するモデルを使用して、
図2のステップ202の分析を実行することができることを予期する。このようなモデルは、限定はされないが、機械学習モデル、経験的モデルおよび分析的モデルを含む。シミュレーションの計算コストを推定するために機械学習を使用してシミュレーションを分析する例示的な方法が、2020年11月6日にOnScale,Inc.によって出願された「METHODS AND SYSTEMS FOR THE ESTIMATION OF THE COMPUTATIONAL COST OF SIMULATION」という名称の米国特許出願公開第2021/0133378号明細書に記載されている。米国特許出願公開第2021/0133378号明細書に記載されている機械学習ベースの方法は、
図2のステップ202の分析を実行するための技法の例として示しただけであることを理解すべきである。本開示は、一組のシミュレーション入力を分析して、シミュレーションを実行するのに必要な一組の計算リソースを決定するためにその他の技法を使用することを予期する。例えば、アルゴリズムが所与の計算問題を解くのに必要なリソース(例えばコア、メモリ、時間など)を、経験的、半経験的または分析的モデルを使用して推定することができる。本開示は、当技術分野で知られている経験的、半経験的または分析的モデルを使用してリソースを推定することを予期する。非限定的な例として、このモデルを最良適合回帰モデル(best fit regression model)とすることができる。回帰モデルは線形または非線形モデルとすることができる。例示的な1つの回帰モデルは、シミュレーション入力、例えばメッシュサイズ(例えばセルおよび/または頂点(vertex)の数)ならびに幾何形状パラメータ(例えば表面積対体積比)に基づいて、計算コストを推定することができる。この例示的回帰モデルが依拠するこれらのシミュレーション入力は例として示しただけであることを理解すべきである。
【0053】
一組の計算リソースは、限定はされないが、複数のコア、ある容量のメモリ(例えばRAM)、複数の仮想機械、および/またはハードウェア構成を含むことができる。例えば、第1の一組の計算リソースを、
図3に示されたコンテナA 302の計算リソースとすることができる。コンテナA 302は、シミュレーションモデルを解くのに必要な所与の数の計算処理ユニットおよび所与の容量のメモリを含む。本開示は、
図1に示された計算クラスタからの計算リソースを使用してコンテナA 302を生成することができることを予期する。任意選択で、第1の一組の計算リソースは、シミュレーションに対する数値解に到達するために一組の要素方程式を解き、その間にシミュレーションメトリック(例えばコスト、ランタイム、エネルギーなど)のターゲット値を達成する最適な一組の計算リソースである。
【0054】
再び
図2を参照すると、ステップ204で、第1の一組の計算リソースを用いてシミュレーションモデルを開始する。例えば、第1の一組の計算リソースを、
図3に示されたコンテナA 302の計算リソースとすることができる。本明細書に記載されているとおり、このシミュレーションは、
図1に示されたシミュレーション装置110などの計算クラスタによって実行される。いくつかの実施態様では、ステップ204でのシミュレーションの実行が自動的に、例えばユーザ入力および/または介入なしで、ステップ202の完了に応答して開始される。その代わりに、他の実施態様では、ステップ204でのシミュレーションの実行が手動で、例えばステップ202完了後のユーザ入力および/または介入によって開始される。
【0055】
再び
図2を参照すると、ステップ206で、シミュレーションの少なくとも1つの属性を動的に分析して、シミュレーションを実行する第2の一組の計算リソースを決定する。ステップ206の分析は、シミュレーションについての帰納的な知識を使用することができる。それに加えて、本明細書に記載されているとおり、ステップ206の動的分析は、この自動化されたプロセスを、反応的なものではなく予防的なものにする。言い換えると、ステップ206の目的は、シミュレーションがランしている間にシミュレーション属性を動的に分析し、シミュレーションを実行する一組の計算リソースを予防的に決定することである。この一組の計算リソースは、現在シミュレーションをランさせている一組の計算リソースよりも多いことまたは少ないことがある。したがって、ステップ206の動的分析を使用して調整を実施することができる。最終的に、シミュレーションが、ステップ202で決定されたコンピュータリソースよりも多数のまたは少数のコンピュータリソースを必要とすることがあることを理解すべきである。例えば、シミュレーションは、予想したよりも計算負荷が大きいことまたは小さいことがある。シミュレーションがランするまでこれが分からないことがある。例えば、ステップ206での動的分析は、ランしているシミュレーションの属性を考慮し、それに対してステップ202での分析はシミュレーション入力を考慮する。いくつかの実施態様では、ステップ206で、シミュレーションの単一の属性が分析される。その代わりに、他の実施態様では、ステップ206で、シミュレーションの多数の属性が分析される。本明細書で使用されるとき、動的分析は、シミュレーションの実行中に実行される。例えば、ステップ206の動的分析は、第1の一組の計算リソースを用いたシミュレーションの実行中に、すなわちシミュレーションがランしている間に実行することができる。ステップ206でのシミュレーションの属性の動的分析は自動的に、例えばユーザ入力および/または介入なしで、シミュレーションがランしている間に実行することができる。
【0056】
上述のとおり、ステップ206の動的分析は、
図1に示されたリソースアロケータ120によって実行することができる。
図1に示されたリソースアロケータ120を、シミュレーションの少なくとも1つの属性を受け取り、それにアクセスし、かつ/またはそれを監視するように構成することもできることを理解すべきである。それに加えて、本明細書で使用されるとき、シミュレーションの属性は、限定はされないが、シミュレーション要件(例えばメモリの容量)、シミュレーション実行特性(例えばメモリまたはプロセッサの使用量)、および計算能力指標を含むことができる。計算能力指標は、限定はされないが、プロセッサ能力の使用レベル、メモリバンド幅、ネットワークバンド幅、および/またはネットワーク待ち時間のレベルを含むことができ、任意選択で、計算能力指標は、予想されるサービス品質に関係していてもよい。メモリバンド幅はメモリの容量とは異なることを理解すべきである。例えば、メモリバンド幅は、メモリからデータが読み出される速度、またはメモリにデータが書き込まれる速度である。メモリの容量は、シミュレーションに必要なメモリのサイズ(例えばバイトで示されたサイズ)である。本開示は、
図1に示された計算環境を使用してシミュレーションの1つまたは複数の属性を監視することを予期する。例えば、本開示は、計算能力指標などのシミュレーションの属性を、例えばプロセス監視アプリケーションをランさせることによって監視するように、
図1に示されたリソースアロケータ120および/またはオブザーバ150を構成することができることを予期する。プロセス監視アプリケーションは当技術分野で知られており、したがって本明細書においてさらに詳細に説明することはしない。その代わりに、オペレーティングシステム関数呼出しなどによってシミュレーションプログラム内で測定することによって、使用レベルなどの計算能力指標を監視することもできる。
【0057】
それに加えて、いくつかの実施態様では、ステップ206の動的分析が、必要な計算リソースと使用可能な計算リソースとの間の差を決定することを含む。これは例えば、必要な計算リソースを表すことがあるシミュレーションの属性(例えば監視下のシミュレーション要件、シミュレーション実行特性または計算能力指標)と、使用可能な計算リソースを表すことがある第1の一組の計算リソースとの間の差を決定することによって実施することができる。必要な計算リソースが、使用可能な計算リソースよりも多いかまたは少ない場合には、それに応じて計算リソース(例えば第1の一組の計算リソース)を修正することができる。例えば、複数のコア、ある容量のメモリ(例えばRAM)、複数の仮想機械、および/またはハードウェア構成を、シミュレーションを実行する第2の一組の計算リソースとして決定することができる。任意選択で、複数のコア、ある容量のメモリ(例えばRAM)、複数の仮想機械、および/またはハードウェア構成を割り当てること、または第1の一組の計算リソースから除去することができる。言い換えると、例えば要求を満たすため、および/または存在する条件に応じるために、少なくとも1つのシミュレーション属性の動的分析に応答して、計算リソースの変更(例えば増大、低減)を実行することができる。その代わりにまたはそれに加えて、ステップ206の動的分析は、任意選択で、シミュレーションの属性をしきい値と比較することを含む。これが、必要な計算リソースと使用可能な計算リソースとの間の差の決定を含まないことがあることを理解すべきである。シミュレーションの属性がしきい値よりも大きいかまたは小さい場合には、それに応じて計算リソース(例えば第1の一組の計算リソース)を修正することができる。リソースの修正は自動的に、例えばユーザ入力および/または介入なしで実行することができる。上に示されたシミュレーションの属性(およびその例)は例に過ぎないことを理解すべきである。本開示は、ステップ206で分析されるシミュレーションの属性が、ラン中のシミュレーションに関連した任意の情報、データなどを含むことができることを予期する。
【0058】
第2の一組の計算リソースは第1の一組の計算リソースとは異なる。第2の一組の計算リソースは、第1の一組の計算リソースとは異なる数のコア、異なる容量のメモリ(例えばRAM)、異なる数の仮想機械、および/または異なるハードウェア構成を含むことができる。例えば、いくつかの実施態様では、第2の一組の計算リソースが、第1の一組の計算リソースとは異なる数、容量またはタイプの計算処理ユニットおよびメモリを含む。第1の一組の計算リソースと第2の一組の計算リソースは、特定のコア、メモリ、仮想機械などを共通して有することがあることを理解すべきである。いくつかの実施態様では、第2の一組の計算リソースが第1の一組の計算リソースよりも大きい(例えばより大きな計算パワーおよび/またはより大きなメモリを有する)。例えば、いくつかの実施態様では、動的分析がさらに、現在シミュレーションを実行している一組の計算リソース(例えばステップ202で決定された第1の一組の計算リソース)に含まれている計算リソースよりも多くの計算リソース(例えばコンピュータ処理ユニットおよびメモリ)をシミュレーションが必要としていると判定する。このシナリオでは、現在の一組の計算リソースが不十分である。すなわち現在の一組の計算リソースはシミュレーションを完了することができない。介入がなければシミュレーションは失敗する。したがって、この失敗が起こる前にそれを回避するために、追加の計算リソース(例えばステップ206で決定された第2の一組の計算リソース)を使用して、シミュレーションを実行することができる。他の実施態様では、第2の一組の計算リソースが第1の一組の計算リソースよりも小さい(例えばより小さな計算パワーおよび/またはより小さなメモリを有する)。例えば、いくつかの実施態様では、動的分析がさらに、現在シミュレーションを実行している一組の計算リソース(例えばステップ202で決定された第1の一組の計算リソース)に含まれている計算リソースよりも少数の計算リソースをシミュレーションが必要としていると判定する。このシナリオでは、現在の一組の計算リソースが十分である。すなわち現在の一組の計算リソースはシミュレーションを完了することができる。しかしながら、現在の一組のリソースは、(例えばリソースが多すぎる、計算パワーおよび/またはメモリが大きすぎる、速度が速すぎるなど)望まれているものよりも高価であることがある。したがって、より少数の計算リソース(例えばステップ206で決定される第2の一組の計算リソース)を使用して、シミュレーションを実行することができる。
【0059】
任意選択で、シミュレーションの属性の動的分析は、シミュレーションを実行し、その間にシミュレーションメトリックのターゲット値を達成する一組の計算リソースを決定する。上述のとおり、任意選択で、このターゲット値は、シミュレーションメトリックの最適値である。その代わりに、任意選択で、このターゲット値は、シミュレーションメトリックの所望値である。本開示は、シミュレーションメトリックが、限定はされないが、コア時間コスト、シミュレーションランタイム、ハードウェア構成の効率、またはエネルギーコストを含むことができることを予期する。これらはシミュレーションメトリックの例に過ぎないことを理解すべきである。
【0060】
例示的な分析方法は、ステップ202に関して上に記載されている。分析方法は、限定はされないが、機械学習モデル、経験的モデルおよび分析的モデルを含む。本開示は、ステップ206で、同じ分析方法および/または異なる分析方法を使用することができることを予期する。任意選択で、ステップ206で、分析方法は、シミュレーションの現在および過去の属性(例えばシミュレーションについての帰納的な知識)を含むことができ、これらの属性は、ステップ202で分析されたシミュレーション入力(例えばシミュレーションについての演繹的な知識)に加えて含めることができる。言い換えると、任意選択で、ステップ206の分析は、シミュレーションをランさせることによって得られたデータを考慮することができる。上述のとおり、シミュレーションをランさせることによって得られたシミュレーションの現在および過去の属性は、一組の計算リソースを決定する際に役立つ可能性がある追加のデータを提供し得る。このような追加情報は、シミュレーションの開始前には知られていない。任意選択で、第2の一組の計算リソースを決定するために、シミュレーションの属性が定期的に分析される。例えば、シミュレーションの属性の動的分析を、時間反復(time iteration)間に実行することができる。このようなプロセスは例えば
図4の流れ図に示されている。その代わりに、シミュレーションの属性の動的分析を、フレクエンシドメインでまたは準静的過程(quasi-static process)で実行することもできる。
【0061】
第2の一組の計算リソースを、
図3に示されたコンテナB 304の計算リソースとすることができる。コンテナB 304は、シミュレーションモデルを解くのに必要な所与の数の計算処理ユニットおよび所与の容量のメモリを含む。本開示は、
図1に示された計算クラスタからの計算リソースを使用してコンテナB 304を生成することができることを予期する。任意選択で、第2の一組の計算リソースは、シミュレーションに対する数値解に到達するために一組の要素方程式を解き、その間にシミュレーションメトリック(例えばコスト、ランタイム、エネルギーなど)のターゲット値を達成する最適な一組の計算リソースである。
【0062】
図3を再び参照すると、2つの異なるコンテナ、すなわちコンテナA 302およびコンテナB 304が示されている。コンテナA 302は、本明細書に記載された第1の一組の計算リソース、例えばステップ204でシミュレーションを実行する一組の計算リソースとすることができる。コンテナA 302はシミュレーションの現在の状態を表している。コンテナB 304は、本明細書に記載された第2の一組の計算リソース、例えばステップ208でシミュレーションを実行する一組の計算リソースとすることができる。コンテナB 304はシミュレーションの将来の状態を表している。
図3の参照符号306によって示されているように、新たなコンテナ(例えばコンテナB 304)を生成することができる。このコンテナは、本明細書に記載された第2の一組の計算リソースを含むことができる。第2の一組の計算リソースは第1の一組の計算リソースとは異なる。いくつかの実施態様では、コンテナAが、コンテナBとは異なる数、容量またはタイプの計算処理ユニットおよびメモリを含む。コンテナA 302においてシミュレーションデータをプログラムメモリから永続性メモリに移動またはコピーすることによって、シミュレーション状態を、第1の一組の計算リソース(例えばコンテナA 302)から第2の一組の計算リソース(例えばコンテナB 304)に転送することができる。シミュレーションデータの永続性メモリ表現をコンテナB 304に接続すること、またはコンテナB 304によって解析することができる。例えば、
図3に示されているように、コンテナA 302およびコンテナB 304はファイルシステムにアクセスすることができる。このファイルシステムは、コンテナA 302の内容を、コンテナB 304に転送することができるようになるまで一時的に記憶するために使用される。ファイルシステムは、コンテナA 302からコンテナB 304にシミュレーションデータを移動または転送する手段の例として示しただけであることを理解すべきである。シミュレーション状態は、限定はされないが、メッシュ情報、制約および荷重条件、導出された量、因数分解された行列、プライマリソリューションおよびセカンダリフィールド変数、ヒストリ変数ならびに記憶された結果を含むことができる。
【0063】
再び
図2を参照すると、ステップ208で、第2の一組の計算リソースを用いてシミュレーションを実行する。例えば、第2の一組の計算リソースを、
図3に示されたコンテナB 304の計算リソースとすることができる。本明細書に記載されているとおり、このシミュレーションは、
図1に示されたシミュレーション装置110などの計算クラスタによって実行される。いくつかの実施態様では、このシミュレーションが、第2の一組の計算リソースを使用して再び開始される。言い換えると、このシミュレーションは、第2の一組の計算リソースを使用して始めから再び開始される。その代わりに、他の実施態様では、このシミュレーションの実行が、第2の一組の計算リソースを使用して継続される。言い換えると、このシミュレーションは、第1の一組の計算リソースがシミュレーションを停止したところを始点にして、例えば次の時間反復またはフレクエンシで継続される。いずれにせよ、第1の一組の計算リソースを用いたシミュレーションを終了し、第2の一組の計算リソースを用いたシミュレーションを実行することができる。ステップ208でのシミュレーションの実行は自動的に、例えばユーザ入力および/または介入なしで、ステップ206の完了に応答して行われる。
【0064】
任意選択で、いくつかの実施態様では、シミュレーションの実行中にメッシュが適応的に細分化される。本明細書に記載されているとおり、シミュレーションモデルのドメインは、メッシュと呼ばれる有限個の要素(または点、セル)に離散化されている。メッシュの適応的細分化は、メッシュ密度またはメッシュ要素の順序を変更することを含む。その代わりにまたはそれに加えて、メッシュの適応的細分化は、メッシュ密度とメッシュ要素の順序の両方を変更することを含む。適応的メッシュ細分化法は当技術分野で知られており、限定はされないが、h法(h-adaptivity)、p法およびhp法を含む。メッシュの適応的細分化の結果として、ドメインサイズ、自由度(DoF)、または制約条件のうちの少なくとも1つが変更されることを理解すべきである。その結果、
図2に関して説明した計算シミュレーションのための動的リソース割振りが有利になることがある。
【0065】
図5Aは、均一な構造化格子によってシミュレーションモデルの領域1、2および3がメッシュ化された例を示している。本開示は、
図5Aのシミュレーションモデルを、
図1に示されたシミュレーション装置110などの1つまたは複数のシミュレーション装置を使用して実行することができることを予期する。例えば、均一な構造化格子は、必要なメモリおよび計算時間を低減させるために、標準セルサイズおよび形状(ボクセルとして知られている)を使用して、要素の効率的な索引付けを可能にする。しかしながら、この手法には、正確さを向上させるためのメッシュの空間的細分化が複雑になり、かつ/またはそれ自体が計算的に高価であることがある数値技術が必要になるという限界がある。したがって、いくつかの実施態様では、領域1、2および3に対して異なるメッシュ密度を使用することが望ましいことがある。これが例えば
図5Bに示されており、
図5Bでは、シミュレーションモデルが構成部分に分解されており、それぞれの領域1、2および3に対して異なるメッシュ細分化された構造化格子メッシュが適用されている。シミュレーションの目的上、領域境界に関する情報を結合することができることを理解すべきである。
図5Bに示された領域1、2および3に対するシミュレーションを実行するために、本明細書に記載された技法を使用して異なるコンテナを生成することができる。これが
図5Cに示されており、
図5Cでは、領域1、2および3に対するシミュレーションがそれぞれコンピュータ1、2および3に割り当てられており、コンピュータ1、2および3はそれぞれ異なる計算リソースからなる。数値解に到達するために対応するそれぞれのシミュレーションモデルを解き、その間にシミュレーションメトリック(例えばコア時間コスト、シミュレーションランタイム、ハードウェア構成の効率、またはエネルギーコスト)を達成する一組の計算リソースを決定するために、この分析に基づいて対応するそれぞれのコンテナを生成し、割り当てることができる。
図5A~5Cに示されているようにシミュレーションモデルドメインを空間的に離散化することは例として示しただけであることを理解すべきである。本開示は、物理的特性、解法タイプ、時間ステップなどによってシミュレーションモデルドメインを離散化することを予期する。
【0066】
さまざまな図に関して本明細書に記載された論理操作は、(1)計算装置(例えば
図6に記載された計算装置)上でランしている一連のコンピュータ実施アクト(computer implemented act)もしくはプログラムモジュール(すなわちソフトウェア)として、(2)計算装置内の相互接続された機械式論理回路もしくは回路モジュール(すなわちハードウェア)として、および/または(3)計算装置のソフトウェアとハードウェアの組合せとして実施することができることを理解すべきである。したがって、本明細書で議論されている論理操作は、ハードウェアとソフトウェアの特定の組合せに限定されない。この実施態様は、計算装置の性能および他の要件に依存する選択の問題である。これに応じて、本明細書に記載された論理操作は、演算、構造装置、アクトまたはモジュールなどとさまざまに呼ばれる。それらの演算、構造装置、アクトおよびモジュールは、ソフトウェア、ファームウェア、専用ディジタル論理およびこれらの任意の組合せで実装することができる。図に示され、本明細書に記載された操作よりも多数の操作または少数の操作を実行することができることも理解すべきである。これらの操作は、本明細書に記載された順序とは異なる順序で実行することもできる。
【0067】
図6を参照すると、本明細書に記載された方法を実施することができる例示的な計算装置600が示されている。例示的な計算装置600は、本明細書に記載された方法を実施することができる適当な計算環境の一例に過ぎないことを理解すべきである。任意選択で、計算装置600は、限定はされないが、パーソナルコンピュータ、サーバ、ハンドヘルドもしくはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークパーソナルコンピュータ(PC)、ミニコンピュータ、メインフレームコンピュータ、埋込み型システム(embedded system)および/または分散計算環境、ならびに上記の複数のシステムまたは装置を含む、よく知られた計算システムとすることができる。分散計算環境は、通信ネットワークまたは他のデータ伝送媒体に接続された遠隔計算装置がさまざまなタスクを実行することを可能にする。分散計算環境では、プログラムモジュール、アプリケーションおよび他のデータを、局所コンピュータ記憶媒体および/または遠隔コンピュータ記憶媒体に記憶することができる。
【0068】
その最も基本的な構成では、計算装置600が通常、少なくとも1つの処理ユニット606(時に計算処理ユニットとも呼ぶ)およびシステムメモリ604を含む。計算装置の正確な構成およびタイプに応じて、システムメモリ604は、揮発性メモリ(例えばランダムアクセスメモリ(RAM))、不揮発性メモリ(例えばリードオンリーメモリ(ROM)、フラッシュメモリなど)、または揮発性メモリと不揮発性メモリのある組合せとすることができる。この最も基本的な構成が、
図6に破線602によって示されている。処理ユニット606は、計算装置600の動作に必要な算術および論理演算を実行する標準プログラム可能プロセッサとすることができる。計算装置600はさらに、計算装置600のさまざまな構成要素間で情報を伝達するためのバスまたは他の通信機構を含むことができる。
【0069】
計算装置600は、追加の特徴/機能を有することができる。例えば、計算装置600は、限定はされないが磁気または光ディスクまたはテープを含む、取り外し可能記憶装置608および取り外し不能記憶装置610などの追加の記憶装置を含むことができる。計算装置600はさらに、計算装置600が他の装置と通信することを可能とするネットワーク接続616を含むことができる。計算装置600はさらに、キーボード、マウス、タッチスクリーンなどの入力装置614を有することができる。ディスプレイ、スピーカ、プリンタなどの出力装置612を含めることもできる。計算装置600の構成要素間のデータの伝達を容易にするために、これらの追加の装置をバスに接続することができる。これらの装置は全て当技術分野でよく知られており、それらの装置を本明細書で詳細に論じる必要はない。
【0070】
処理ユニット606は、有形の(tangible)コンピュータ可読媒体内にコード化されたプログラムコードを実行するように構成されたものとすることができる。有形のコンピュータ可読媒体は、計算装置600(すなわち機械)を特定の様式で動作させるデータを提供することができる任意の媒体を指す。さまざまなコンピュータ可読媒体を利用して、実行する命令を処理ユニット606に提供することができる。例示的な有形のコンピュータ可読媒体は、限定はされないが、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報を記憶するために任意の方法または任意の技術で実施された揮発性媒体、不揮発性媒体、取り外し可能媒体および取り外し不能媒体を含むことができる。システムメモリ604、取り外し可能記憶装置608および取り外し不能記憶装置610は全て、有形のコンピュータ記憶媒体の例である。例示的な有形のコンピュータ可読記録媒体は、限定はされないが、集積回路(例えばフィールドプログラマブルゲートアレイまたは特定用途向けIC)、ハードディスク、光ディスク、光磁気ディスク、フロッピーディスク、磁気テープ、ホログラフィック記憶媒体、固体状態デバイス、RAM、ROM、電気的に消去可能なプログラマブルリードオンリーメモリ(EEPROM)、フラッシュメモリまたは他のメモリ技術、CD-ROM、ディジタルバーサタイルディスク(DVD)または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置を含む。
【0071】
例示的な一実施態様では、処理ユニット606が、システムメモリ604に記憶されたプログラムコードを実行することができる。例えば、バスは、システムメモリ604にデータを運ぶことができ、処理ユニット606はシステムメモリ604から命令を受け取り、それらの命令を実行する。任意選択で、システムメモリ604が受け取ったデータを、処理ユニット606による実行の前または後に、取り外し可能記憶装置608上または取り外し不能記憶装置610上に記憶することができる。
【0072】
本明細書に記載されたさまざまな技法は、ハードウェアもしくはソフトウェアに関連して、または、適切な場合には、ハードウェアとソフトウェアの組合せに関連して実施することができることを理解すべきである。したがって、本開示の主題の方法および装置、またはそれらの方法および装置のある種の態様もしくは部分は、フロッピーディスケット、CD-ROM、ハードドライブまたは他の任意の機械可読記憶媒体などの有形の媒体内に実施されたプログラムコード(すなわち命令)の形態をとることができ、そのプログラムコードが計算装置などの機械にロードされ、計算装置などの機械によって実行されたとき、その機械は、本開示の主題を実施するための装置となる。プログラム可能コンピュータ上でプログラムコードが実行される場合、計算装置は一般に、プロセッサ、プロセッサが読み取ることができる(揮発性および不揮発性メモリならびに/または記憶要素を含む)記憶媒体、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。1つまたは複数のプログラムは、本開示の主題に関連して説明したプロセスを、例えばアプリケーションプログラミングインタフェース(API)、再使用可能制御機構(reusable control)などを使用することによって実施または利用することができる。このようなプログラムは、高水準手続き型言語またはオブジェクト指向プログラミング言語で、コンピュータシステムと通信するように実装することができる。しかしながら、所望の場合には、このプログラムを、アセンブリ言語または機械言語で実施することもできる。いずれにしても、この言語は、コンパイル型(compiled)または解釈型言語(interpreted language)とすることができ、この言語を、ハードウェア実施態様と組み合わせることができる。
【0073】
本開示の主題を、構造特徴および/または方法論的アクトに特有の言い回しで説明したが、添付の特許請求項に定義された主題は、必ずしも上述の特定の特徴またはアクトだけに限定されないことを理解すべきである。むしろ、上述の特定の特徴およびアクトは、特許請求項を実施する例示的な形態として開示されている。
【符号の説明】
【0074】
110 シミュレーション装置
115A ノード
115B ノード
115C ノード
120 リソースアロケータ
122 アプリケーション
124 ネットワークインタフェース
130 ネットワーク
140 発信装置
142 アプリケーション
144 ネットワークインタフェース
150 オブザーバ
152 アプリケーション
154 ネットワークインタフェース
600 計算装置
602 計算装置の最も基本的な構成
604 システムメモリ
606 処理ユニット
608 取り外し可能記憶装置
610 取り外し不能記憶装置
612 出力装置
614 入力装置
615 ネットワーク接続
【外国語明細書】