JP6009075B2 - 粒子流動のシミュレーションシステム及びその方法 - Google Patents

粒子流動のシミュレーションシステム及びその方法 Download PDF

Info

Publication number
JP6009075B2
JP6009075B2 JP2015521951A JP2015521951A JP6009075B2 JP 6009075 B2 JP6009075 B2 JP 6009075B2 JP 2015521951 A JP2015521951 A JP 2015521951A JP 2015521951 A JP2015521951 A JP 2015521951A JP 6009075 B2 JP6009075 B2 JP 6009075B2
Authority
JP
Japan
Prior art keywords
gpu
particle
particles
calculation
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015521951A
Other languages
English (en)
Other versions
JP2015530636A (ja
Inventor
磊 楊
磊 楊
記 斎
記 斎
園 田
園 田
笑菲 高
笑菲 高
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Modern Physics of CAS
Original Assignee
Institute of Modern Physics of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Modern Physics of CAS filed Critical Institute of Modern Physics of CAS
Publication of JP2015530636A publication Critical patent/JP2015530636A/ja
Application granted granted Critical
Publication of JP6009075B2 publication Critical patent/JP6009075B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/56Particle system, point based geometry or rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、粒子流動のシミュレーションの技術分野に関する。具体的には、粒子物質又は固体構造の研究に適用できる、GPUに基づく粒子シミュレーションシステム及びその方法に関する。
粒子システムは、ずっと注目されている研究内容である。例えば、食品制御、化学、土木工事、オイルガス、鉱物採掘、製薬、粉末冶金、エネルギー等の産業分野に多く応用されている。理論的な研究において、如何にして積み上げて最も密着な堆積に達するか、砂の堆がどのような状況で崩れるかを研究して雪崩等の課題への研究が行われている。人々が、関連的な粒子システムを研究するために、大型の実験用粒子システムを設立する必要があり、手間がかかる。そして、粒子システムの一部は、コストが高く、極端な条件下で運行する必要があるため、実験で完成する可能性がない。しかしながら、虚構の実験に基づくシミュレーションシステムには、類似の問題が存在していない。
現在、粒子システム模擬の算出方法は、主にDEM(離散要素法:Discrete Element Method)方法である。DEM方法は、有限要素法、数値流体力学(CFD)に継いで、物質システム問題を分析するためのもう1種の数値算出方法である。DEM方法は、微小的な体系のパラメータ化モデルを構築したことによって、粒子行為の模擬及び分析を行い、粒子、構造、流体、電磁及びその結合等に関するたくさんの綜合的な問題を解決するために、プラットフォームを提供し、科学過程の分析、製品設計の最適化及び研究開発への力強いツールともなっている。現在、DEM方法は、科学研究における適用に加え、科学技術及び工業分野においても熟しつつ、粒子物質の研究、岩土工事及び地質工事などの科学及び応用分野から、工業過程及び工業製品の設計、研究開発の分野まで広げ、たくさんの工業分野において重要な成果を収めた。
DEM方法は、シミュレーション精度が高いが、計算量が大きいとの特徴を有する。現在、DEM方法は、主にCPUを用いて実現される。これらの方法は、CPUの算出能力が不足であることによる算出規模が不足となり、納得できる機器時間内において、非常に小さい空間サイズ及び時間範囲のみしか算出できない。或いは、大規模ひいては超大規模なCPUコンピュータのクラスタを建設する必要とし、建設のコストが高く、そして、電力消費量が大きすぎて、使用及びメンテナンスのコストも非常に高くなっている。また、現在、CPUで実現したDEM方法は、粒子数が少ない或いは低密度粒子の衝突を実現できたとしても、高密度の大量の粒子衝突の模擬を完全に実現することができない。
GPU(Graphics Processing Unit、グラフィックス・プロセッシング・ユニット)で汎用計算を行う技術は、ますます熟に成りつつである。例えば、nVIDIA及びAMDという現在の2つの表示カードメーカーは、いずれもGPU汎用計算をサポートできる。本願の発明人は、上記の課題に鑑みて、GPUに基づく粒子流動のシミュレーションシステム及び方法を提供した。
本発明によれば、高密度の粒子擬似実験シミュレーションを実現し、エネルギー消耗量を低下させると共に算出効率を向上することができるGPUに基づく粒子流動のシミュレーションシステム及びその方法を提供した。
本発明の一局面によれば、GPUに基づく粒子流動のシミュレーション方法を提供した。該GPUに基づく粒子流動のシミュレーション方法は、並列の複数のGPU上で離散要素法(DEM)方法を実行して粒子流動のシミュレーションを行うGPUに基づく粒子流動のシミュレーション方法であって、DEM方法で粒子をモデリングし、作られたDEMモデルを複数の粒子として割り当て、該複数の粒子を複数の計算ノードに割り当て処理を行い、各計算ノードのCPU及びGPUに記憶空間がそれぞれ割り当てされ、CPUにおいてデータの初期化を行い、初期化されたデータをCPUの記憶空間から前記GPUの記憶空間へコピーするステップaと、
上記各計算ノードのGPUは、各粒子の処理を行い、各計算ノードのGPUの各ストリーミングプロセッサは、1つの粒子を処理し、GPUの記憶空間に記憶される粒子の座標及び粒子の速度を更新するステップbと、
ステップbの処理過程において、各計算ノードが制御する粒子を確定し、各計算ノードが制御する粒子の個数をCPUの記憶空間へコピーして、各計算ノードがどれらの粒子を算出するかを均衡負荷の原則に従って動的に確定できるように、GPUの記憶空間における粒子の数に応じて動的分割を行うステップcと、
MPIインターフェースプロトコルによって、上記データが動的分割された粒子を各計算ノード間に遷移させるステップdと、
ステップcで取得した各計算ノードが制御する粒子に応じて、GPUにおいて重畳領域を算出し、データをCPUメモリへコピーしてから、MPIインターフェースプロトコルによってデータのやり取りを行うステップeと、
各計算ノードのGPUにおける各ストリーミングプロセッサは、各粒子の座標に応じて、各粒子が位置するGPUの記憶空間におけるグリッドの番号を算出するステップfと、
各計算ノードのGPUにおける各ストリーミングプロセッサは、各粒子の運動中のストレス及び加速度を処理して算出するステップgと、
各計算ノードのGPUにおける各ストリーミングプロセッサは、各粒子の速度を処理するステップhと、
指定された歩数に達するまでに、ステップbに戻すステップiと、
マスターノード及び計算ノードの記憶空間を釈放するステップjと、を含む。
一実施例においては、ステップb、ステップf、ステップg及びステップhは、GPUにおいて各粒子に対して並列なデータ処理を行う。すなわち、各GPUが粒子に対する処理は、同期的に行われる。
一実施例においては、ステップdにおいて、前記粒子が各ノード間で遷移し、粒子がノード間で伝送遷移する方法を用いて、すなわち、MPIインターフェースで関数を送受信し、粒子の各物理量の送受信を実現し、そして、粒子のノード間における伝送遷移を実現した。
一実施例においては、ステップeにおいて、前記GPUにおいて重畳領域を算出することは、GPUにおいて重畳領域(Overlap領域)を算出することを利用し、GPUの1つのストリーミングプロセッサが1つのグリッドを処理することを含む。三次元の場合において、それぞれのグリッドは、26個のグリッドに隣接し、隣接するグリッドが現在の計算ノード内に位置するか否かを判断し、位置しなければ、overlap領域とし、他のノードから遷移して取得する。
本発明の別の局面によれば、GPUに基づく粒子流動のシミュレーション方法を提供した。該方法は、
粒子の材料、粒子のパラメーター、境界の条件、幾何体の形状、及び粒子の初期分布の領域を確定し、予め定められた粒子の分布領域及び数量に応じて粒子を生成するモデリングステップと、
粒子の総数及び複数の計算ノードにフリーなGPU数に応じて、最適なGPU数を確定し、最適なGPU数及び現在フリーなGPU数に応じて、算出関与のGPUを確定し、算出関与のGPUの状態をビジーに設置するタスク管理ステップと、
算出ステップと、を含み、
該算出ステップは、
各計算ノードの算出関与のGPUを初期化し、算出に必要な粒子の情報を各GPUに発信するステップと、
各GPUが、予め定められた速度を並列に更新し、受信した粒子の情報をソートして各自のソートセルリストを生成するステップと、
各GPUが、現在各自のコースにおける非ゼローのグリッドの番号及びグリッドにおける粒子数を並列に算出し、マスターノードに発信して、マスターノードによって各GPUの最適な粒子数に応じて、グリッドを動的分割し、各GPUが並列に算出するグリッドの数及びグリッドの番号を確定するステップと、
マスターノードが確定した結果に応じて、各GPUが粒子情報を並列に送受信し、各GPUにおいて各自のソートセルリストを生成し直すステップと、
各GPUにおいて現在時刻の衝突リストを生成し、現在時刻の衝突リストと一つ前の時刻の衝突リストと接線相対変位に応じて、各GPUにおいて接線相対変位の位置を並列に調整するステップと、
接触力学モデルによって、各GPUにおいて各粒子のストレス及び加速度を並列に算出するステップと、
現在の算出結果を記憶するステップと、
算出が完成していなければ、各GPUが予め定められた速度及び座標を並列に更新するステップに戻し、そうでなければ、算出ステップを終了させるステップと、を含む。
一実施例において、前記方法は、更に表示ステップを含み、上記表示ステップは、境界の条件を確定し、幾何体の境界を透明な曲面で作るステップと、粒子の位置及び粒子の直径に応じて、粒子を同じ色又は異なる色のペレットで描くステップと、階調画像でスカラ場を表示し、粒子情報を重み付けしてグリッドにマッピングすることによって、ベクトル場を流線描き方法で描くステップとを含む。
一実施例において、全ての粒子の物理情報を外部の記憶装置に格納する。
一実施例において、各GPUは、関連の物理統計量を並列に算出する。
一実施例において、予め定められた粒子の分布領域及び数量によって粒子を生成することは、粒子の数量条件を満たすまでに、比較的に小さい空間内でいくつかの粒子を生成して、これらの粒子を平行移動してコピーを行い、他の空間を充填する。
一実施例において、ソートセルリストは、粒子が位置するグリッドに従って、全ての粒子をソートする。
一実施例において、動的分割方法を採用して、非ゼローのグリッドの番号及びグリッドにおける数粒子数をGPUにおいて並列に算出する。
一実施例において、各GPUにおいて、1つのスレッド(thread)が1つの粒子に対応するとの方式を用いて算出を行う。
一実施例において、接線相対変位を算出することは、一つ前の時刻の接線相対変位を記録し、現在時刻の衝突リストに応じてそれを更新することを含む。
一実施例において、コピー又はポインターやり取り技術を用いて、現在の算出結果をアレイに記憶する。
本発明のもう一つの局面によれば、GPUに基づく粒子流動のシミュレーションシステムを提供した。該GPUに基づく粒子流動のシミュレーションシステムは、
粒子の材料、粒子のパラメーター、境界の条件、幾何体の形状、及び粒子の初期分布の領域を確定し、予め定められた粒子の分布領域及び数量に応じて粒子を生成するように構成されるモデリングモジュールと、
粒子の総数及び複数の計算ノードにフリーなGPU数に応じて、最適なGPU数を確定し、最適なGPU数及び現在フリーなGPU数に応じて、算出関与のGPUを確定し、算出関与のGPUの状態をビジーに設置するように構成されるタスク管理モジュールと、
算出モジュールと、を含み、
該算出モジュールは、
各計算ノードの算出関与のGPUを初期化し、算出に必要な粒子の情報を各GPUに発信し、
各GPUが、予め定められた速度及び座標を並列に更新し、受信した粒子の情報をソートして各自のソートセルリストを生成し、
各GPUが、現在各自のコースにおける非ゼローのグリッドの番号及びグリッドにおける粒子数を並列に算出し、マスターノードに発信して、マスターノードによって各GPUの最適な粒子数に応じて、グリッドを動的分割し、各GPUが並列に算出するグリッドの数及びグリッドの番号を確定し、
マスターノードが確定した結果に応じて、各GPUが粒子情報を並列に送受信し、各GPUにおいて各自のソートセルリストを生成し直し、
各GPUにおいて現在時刻の衝突リストを生成し、現在時刻の衝突リストと一つ前の時刻の衝突リストと接線相対変位に応じて、各GPUにおいて接線相対変位の位置を並列に調整し、
接触力学モデルによって、各GPUにおいて各粒子のストレス及び加速度を並列に算出し、
現在の算出結果を記憶し、
算出が完成していなければ、各GPUが予め定められた速度及び座標を並列に更新するステップに戻し、そうでなければ、算出ステップを終了させるように構成される。
一実施例において、前記システムは、更に表示モジュールを含み、上記表示モジュールは、境界の条件を確定し、幾何体の境界を透明な曲面で作り、粒子の位置及び粒子の直径に応じて、粒子を同じ色又は異なる色のペレットで描き、階調画像でスカラ場を表示し、粒子情報を重み付けしてグリッドにマッピングすることによって、ベクトル場を流線描き方法で描くように構成される。
本発明のまた一局面によれば、GPUに基づく粒子流動のシミュレーションシステムを提供した。該GPUに基づく粒子流動のシミュレーションシステムは、
クライアントから入力される粒子のモデリング情報に応じて、粒子の情報を生成すると共に、幾何体の情報を生成するように構成される前端サーバと、
前端サーバから粒子の情報及び幾何体の情報を受信し、粒子の数及び各計算ノードにフリーなGPUの数に応じて、どれらの計算ノードにおけるどれらのGPUを使用するかを確定し、そして、確定したGPUの数及び粒子の空間における分布状況に応じてどれらの粒子がどの計算ノードのどのGPUによって算出されるかを確定し、確定した結果によって割り当てるように構成される管理ノードと、
それぞれが複数のGPUを含み、複数のGPUにおいて粒子の衝突による各粒子のストレスを並列に算出し、加速度を更に算出して、粒子の流動をシミュレーションするように構成される複数の計算ノードと、
シミュレーションの結果を表示するように構成される後端サーバと、を備える。
一実施例において、前端サーバは、幾何体を有限の曲面に分解し、これらの曲面に番号をつけることによって、幾何体の情報を生成する。
一実施例において、後端サーバは、表示されるシミュレーション結果において、幾何体の境界を透明な曲面で作り、粒子の位置及び粒子の直径によって、粒子を同じ色又は異なる色のペレットで描き、且つ、階調画像でスカラ場を表示し、粒子情報を重み付けしてグリッドにマッピングすることによって、ベクトル場を流線描き方法で描く。
一実施例において、前端サーバ、管理ノード、計算ノード及び後端サーバは、IB(InfiniBand)ネットワークによって通信する。
本発明によれば、複数のGPUに基づく、モデリングから結果表示までのシミュレーションシステムを実現し、複数のGPUのハードウェア特徴を利用して、複数のGPUの粒子流動のシミュレーション方法を実現した。本発明の実施例によれば、GPUの強い浮動小数点演算能力、広い帯域幅及び複数の軽量計算コアという特徴によって、GPU内の大量のストリーミングプロセッサを十分に利用し、分子動力学の加速アルゴリズムをDEMアルゴリズムに合理的に引き入れ、DEMアルゴリズムをGPUのハードウェア構造により適応できる。複数のGPUで実現する場合、該アルゴリズムが、データを動的分割して負荷均衡を実現する方法を採用し、Overlap領域及び通信量を低減し、GPU及びCPUの利用率及び演算効率を大きく向上できた。納得できるエネルギー消耗及び時間の条件下で、非常によい算出効果を取得し、エネルギー消耗が小さく、メンテナンスコストが低く、且つ演算の効率を向上する効果を奏した。
以下、図面及び実施例によって、本発明の技術案をより詳細に説明する。
図1は、本発明の実施例に係るGPUに基づく粒子流動のシミュレーションシステムの構造模式図である。 図2は、本発明の一実施例に係るGPUに基づく粒子流動のシミュレーション方法のフローチャートである。 図3は、本発明の別の実施例に係るGPUに基づく粒子流動のシミュレーションシステムのモジュール構造模式図である。 図4は、本発明の実施例に係る計算モジュールの操作フローチャートである。
以下、本発明の好ましい実施例について、図面を参照して説明する。ここで記述された好ましい実施例が本発明を説明して解釈することのみに用いられ、本発明を限定するものでないことを理解すべきである。
図1は、本発明の実施例に係る、GPUに基づく粒子流動のシミュレーションシステムの構造模式図である。図1に示すように、該システムは、前端サーバ10、後端サーバ20、管理ノード30、複数の計算ノード40−1,…,40−N(Nは1よりも大きい整数である)、IBスイッチ装置50及びイーサネット(登録商標)・スイッチ装置60を含む。また、図1は、該システムがクライアント及び記憶装置を含むことを更に示している。クライアントは、インターネットを介して前端サーバ10と通信可能であり、現場の実験員に粒子流動のシミュレーション実験を遠隔距離で行わせることを可能にした。例えば、ユーザは、クライアントで、例えば粒子数、大きさや材料などの情報(ヤング率、ポアソン(Poisson)比、密度、回復係数等)及び粒子の分布範囲、摩擦係数、境界条件などのパラメーターというモデリングに必要な情報またはパラメーターを入力すると共に、粒子ボールと接触する幾何体の材料情報を提供し、これらの情報またはパラメーターを、前端サーバに伝送することができる。該外部の記憶装置は、フリーズ、停電などの意外状況の発生によるデータの紛失を防止するよう、例えば各計算ノードの算出結果を記憶することができる。ここで、クライアント及び外部の記憶装置は選択可能であり、例えば、ユーザは、直接に前端サーバで入力を行っても良い。あるいは、計算ノードの算出結果は前端または後端サーバなどに記憶されることができる。
図1において、前端サーバ10、後端サーバ20及び計算ノード40は、IBスイッチ装置50を介して互いに接続されている。そして、前端サーバ10、管理ノード30及び計算ノード40は、イーサネット(登録商標)スイッチ装置60を介して互いに接続されている。しかしながら、本発明の実施例は、ほかの任意の適宜な接続方式を採用することも可能である。一実施例において、計算ノード40は、GPU加速カードを有する高性能クラスタであっても良い。また、一実施例において、それぞれの計算ノードは、いずれもGF110コア以上のNVIDIA汎用計算カードを有する。一実施例において、計算ノードは、40GbのIB(InfiniBand)ネットワーク接続を使用する。一実施例において、前後端サーバは、それぞれQuadrio6000表示カードを有する一台のグラフィックスワークステーションである。例えば、ワークステーションのメモリは、32Gよりも大きく、IBネットワークカードを有する。
本発明の実施例のGPUに基づく粒子流動のシミュレーションシステムにおいて、前端サーバ10は、クライアントから入力された粒子モデリング情報に応じて粒子情報を生成すると共に、幾何体情報を生成する。例えば、前端サーバ10は、粒子のサイズ、材料及び幾何構造に関する入力を受信でき、粒子を交互的に増加・削除し、粒子の位置を移動させることもできる。前端サーバ10は、幾何体を有限的な曲面に分解し、これらの曲面に番号をつけることによって、幾何体情報を生成することができる。管理ノード30は、現在の各計算ノードの運行状態、GPUの作業状態、記憶状況などを任意に観察できると共に、各タスク間に衝突が発生しないことを保証するように、提出されたタスクを中止することもできる。例えば、管理ノード30は、粒子情報及び幾何体情報を、前端サーバ10から受信し、粒子数及び各計算ノードにおいてフリーなGPUの数に応じて、どれらの計算ノードのどれらのGPUを使用するかを確定する。その後、確定されたGPUの数及び粒子が空間における分布状況によって、どれらの粒子が、どの計算ノードのどのGPUによって算出されるかを確定して、確定した結果に応じて割り当てを行う。計算モジュール全体が各々の計算ノード40から構成され、複雑な境界問題を処理することができ、複数のGPUを並列に運行し、中断(例えば、停電)機能を有し、中断前の状態に引き続いて演算することができる。該計算モジュールは、データの動的分割方法及びポインターやり取り技術を用いて、データの動的平衡を保証する。例えば、各計算ノード40は、それぞれのGPUにおいて粒子衝突による各粒子のストレスを並列に算出し、加速度を更に算出して、粒子流動のシミュレーションを行う。後端サーバ20は、シミュレーションの結果を表示する。例えば、現在の粒子の構造、温度場、ストリーム場、圧力場などのパラメーターを動的に表示する。また、交互の方式で観察の角度を調整し、粒子グループを任意に拡大縮小させても良い。例えば、後端サーバ20は、ディスプレイなどの出力装置を含んでも良い。後端サーバ20は、幾何体の境界を透明的な曲面で作り出し、粒子の位置及び粒子の直径に応じて、粒子を、同じ色又は異なる色のペレットで描き、そして、階調画像で温度場などのスカラ場を表示し、粒子情報を重み付けてグリッドにマッピングすることによって、ストリーム場、圧力場などのベクトル場を、流線描き方法で描くことができる。
以上のシステムは、本発明の基本的な構想の一種の表現のみである。当業者は、上記各部品の機能を更に割り当てて組み合わせることによって他のシステムを構築して形成できることを理解すべきである。また、機能が十分に強ければ、上記各部品の機能は、1つのコンピュータ又はワークステーションに集積しても良い。
図2は、本発明の実施例のシミュレーションシステムに実行される、GPUに基づく粒子流動のシミュレーション方法のフローチャートである。図2に示すように、該シミュレーション方法は、以下のステップを含む。
ステップ201:DEM方法を用いて粒子のモデリングを行い、作成したDEMモデルを複数の粒子として割り当て、該複数の粒子を複数の計算ノードに割り当て処理を行う。それぞれの計算ノードのCPU及びGPUに記憶空間が割り当てされており、CPUにおいてデータの初期化を行い、初期化されたデータを、CPUの記憶空間から前記GPUの記憶空間へコピーする。
ステップ202:上記それぞれの計算ノードのGPUは、各粒子を処理する。その中、それぞれの計算ノードのGPUの各ストリーミングプロセッサは、1つの粒子を処理し、GPUの記憶空間に記憶された粒子の座標及び粒子の速度を更新する。
ステップ203:GPUの記憶空間に記憶された粒子の座標が変化することによって、負荷の均衡を保証するために、毎回の算出において各ノードが算出する粒子は異なっている。まず、それぞれの計算ノードのGPUは、該ノードが制御する粒子の数を算出し、各GPUが制御する粒子の数をCPUの記憶空間へコピーして、GPUの記憶空間におけるグリッドの粒子数に応じてデータの動的分割を行う。すなわち、負荷均衡の原則に従い、各ノードがどれらの粒子を算出するかを算出する。
ステップ204:MPIインターフェースプロトコルによって、データが動的分割された上記粒子を、それぞれの計算ノード間に遷移させる。
ステップ205:ステップ203で取得した各計算ノードが制御する粒子によって、GPUにおいて重畳領域を算出し、データをCPUのメモリ内へコピーし、その後、MPIインターフェースプロトコルによってデータのやり取りを行う。
ステップ206:それぞれの計算ノードのGPUにおける各ストリーミングプロセッサは、それぞれの粒子の座標に応じて、各粒子がGPUの記憶空間に位置するグリッドの番号を算出する。
ステップ207:それぞれの計算ノードのGPUにおける各ストリーミングプロセッサは、それぞれの粒子運動中のストレス及び加速度の算出処理を行う。
ステップ208:それぞれの計算ノードのGPUにおける各ストリーミングプロセッサは、それぞれの粒子速度の算出処理を行う。
ステップ209:指定の歩数に達するまでにステップ202に戻り、DEM方法を完成させる。
ステップ210:マスターノード及び計算ノードの記憶空間を釈放する。
その中、前記ステップ202、ステップ206、ステップ207及びステップ208においては、GPUを用いてそれぞれの粒子に対して並列なデータ処理を行う。すなわち、それぞれのGPUが粒子に対する処理は、同期的に行われるものである。
ステップ204において、前記粒子が各ノード間における遷移は、粒子がノード間に伝送して遷移する方法を用いる。すなわち、MPIインターフェースを用いて関数を送受信し、粒子の各物理量の発信及び受信を実現し、そして粒子がノード間における伝送及び遷移を実現する。受信関数は、MPI_Send()及びMPI_Recv()関数である。
ステップ205において、前記GPUにおいて重畳領域(Overlap区)を算出することは、GPUにおいてOverlap領域を算出する方法を利用している。すなわち、GPUの1つのストリーミングプロセッサは、1つのグリッドの処理を行う。三次元の場合には、それぞれのグリッドは、26個のグリッドに隣接し、そして、隣接のグリッドが現在の計算ノード中に位置するか否かを判断し、位置しなければ、overlap領域として算出し、他のノードから遷移して取得する。
具体的には、以下の通りである。
ステップ1:それぞれの計算ノードは、CPU及びGPUにおいて記憶空間を設け、CPUにおいてデータを初期化して、GPUへコピーする。
ステップ2:
計算ノードのGPUの各ストリーミングプロセッサは、1つの粒子の処理を行い、1歩の粒子座標及び1/2歩の粒子速度を並列に更新する。CUDAのKernel関数:
__global__void UpdateP(double*x1, double *x2, double *x3,
double *vx, double *vy, double *vz,
double *ax, double *ay, double *az,
unsigned int NumParticles);
__global__void UpdateV (double *vx, double *vy, double *vz,
double *wx, double *wy, double *wz,
double *ax, double *ay, double *az,
double *bx, double *by, double *bz,
unsigned int NumParticles);
が含まれている。呼び出す際に、CUDAのシンタックス(syntax)条件に従って、以下の方式:
UpdateV <<<gridsize, blocksize>>>(vx, vy, vz,
wx, wy, wz,
ax, ay, az,
bx, by, bz,
NumParticles);
を用いて呼び出す。この2つの関数の「block」及び「grid」は、いずれも一次元の方式を採用し、異なる粒子数に対して、block及びgridの値を調整でき、算出時間に対して一定の影響を与えている。
ステップ3:それぞれの計算ノードのGPUにおいて、該ノードが制御する粒子を算出し、CPUへコピーして、グリッド内の粒子数に従ってデータの動的分割を行う。
算出過程において、粒子が、異なるノード間に遷移することによって、負荷が不均衡の場合を避けるのに、本発明は、データを動的に分割する方式を用いて、それぞれのノードの計算量を平衡させる。
初期状態では、仮に、M個のグリッドを有し、各グリッドにおける粒子数Xが同じであり、M個のグリッド(G〜GM−1)は、それぞれ、均等にN段に分割され、それぞれ、N個のノード(P〜PN−1)で処理される。これにより、それぞれのノードが算出する粒子数は、(M/N)*Xとなる。反復算出された後で、各ノードPiが算出するグリッド範囲内の粒子総数が変化する。このため、それぞれノードが算出するグリッドの範囲を調整することによって、算出粒子の総数を変更させることができる。データの動的分割は、以下のように実現されることになる。即ち:
(1)それぞれのノードは、グリッド全体の数量Mと同じであるint型のアレイiCellCountを維持する。CUDAのコア関数calcParticleNumPerCell()を呼び出してそれぞれのグリッドにおける粒子の個数を算出し、それをiCellCountに格納する。この時、iCellCount中の粒子個数は、局所的なことであり、現在のノードが算出する粒子が、グリッドにおける個数のみを記録した。
(2)PID=0のノードをROOTノードとし、MPI減少関数MPI_Reduce()を呼び出して、全てのノードiCellCountの情報を、加算の操作によってROOTノードのiGlobalCellCountアレイに集める。このとき、iGlobalCellCountアレイに記録される各グリッドの粒子個数は、全体的なことであり、全ての粒子が各グリッドにおける個数である。
(3)iGlobalCellCountアレイを用いて、各ノードの算出グリッド範囲の分割を行う。この分割は、CPU+GPUの方式を採用している。分割のステップは、以下の通りである。
ノード個数Nに応じて、アレイiGlobalCellCountをN段に均等に分割し、それぞれのノードの算出グリッド範囲が同じであるとする。各ノードの算出グリッド範囲が、アレイiDividedResultに格納される。初期状態の場合、iDividedResultにおける各元素の値は、{0,M/N-1,M/N,2M/N-1,...,(N-1)M/N,M-1}であり、ノードiの範囲は、iDividedResult[i*2]及びiDividedResult[i*2+1]によって取得することができる。
CUDAコア関数dReducePerSeg()を呼び出して、各段の粒子個数をそれぞれ求めて、アレイiParticlesCountPerSeg={X,X,...,XN−1}に格納する。
CPUにより、iDividedResult、iParticlesCountPerSeg及びiGlobalCellCountに基づいて最終的な分割結果を確定する。まず、理想的な状況の下での各ノード算出粒子の個数iParticlesPerNodeIdealを確定して、iParticlesCountPerSeg[0]の値を読み出す。若し、iParticlesCountPerSeg[0] > iParticlesPerNodeIdealであれば、ノード0が処理する範囲は、大きすぎると分かる。このため、
iParticlesCountPerSeg[0] - iGlobalCellCount[iDividedResult[0*2+1]],
iParticlesCountPerSeg[1]+iGlobalCellCount[iDividedResult[0*2+1]],
iDividedResult[1*2] = iDividedResult[0*2+1],
iDividedResult[0*2+1]-1,
iParticlesCountPerSeg[0]は、iParticlesPerNodeIdealと同じあるいは近接になるまでに、上記過程を繰り返して行う。若し、iParticlesCountPerSeg[0] < iParticlesPerNodeIdealであれば、ノード0が処理する範囲は小さすぎると分かる。このため、上記過程を反対の方向への処理を行う。iParticlesCountPerSeg[0]は、iParticlesPerNodeIdealと同じあるいは近接になった際に、iDividedResult[0], iDividedResult[0*2+1]は、ノード0の算出範囲となる。
(3)の過程を繰り返して行い、全ての分段に対して処理を行った後、各ノードの処理するグリッドの範囲を取得することができる。
(4)ROOTノードは、MPI_BCast()関数を呼び出して、分割結果を全てのノードにブロードキャストする。
ステップ4:
MPIインターフェースプロトコルを用いて、データが分割された粒子を各ノード間に遷移させる。
各ノードは、グリッドの分割結果iDividedResultに応じて、iSendGridInfoアレイ及びiSendParticlesOffsetアレイを確定する。アレイiSendGridInfo及びiSendParticlesOffsetの大きさは、グリッド全体の数と同じであり、その中、iSendGridInfoは、各グリッドがどのノードに位置するかを記録するものである。iSendParticlesOffsetは、各グリッドにおいて1番目の粒子が粒子アレイに位置する位置を記録するものである。
連結リストgridInfoの長さに応じて、現在のノードが粒子をiSendNodeCount個のノードに発信することを確定し、発信情報をアレイiSendInfoに書き込む。アレイiSendInfoの長さはiSendNodeCount*3である。ここで、iSendInfo[i*3]は、受信粒子のノードの番号PIDRであり、iSendInfo[i*3+1]は発信粒子の個数であり、iSendInfo[i*3+2]は、発信ノードの番号PIDSである。
ROOTノードは、MPI_Gatherv()関数を呼び出して、全てのノードのiSendInfoアレイをiGlobalSendInfoアレイに集めさせる。iGlobalSendInfo[i*3]の値に応じて、小さい順にソートし、更にMPI_Scatterv()関数を呼び出し、iGlobalSendInfo[i*3]の値に応じて、トリプルを、対応のノードに発信する。
各ノードは、ROOTから発信されたトリプルを受信し、アレイiRecvInfoに格納してから、粒子の発信及び受信を開始する。
ステップ5:ステップ3で取得した各ノードが制御する粒子に応じて、GPUにおいてOverlap領域を算出し、データをCPUメモリへコピーする。そして、MPIインターフェースプロトコルに基づいてデータのやり取りを行う。
三次元のDEMは、算出過程において、各グリッドが、隣接の26個のグリッド(overlapグリッド)における粒子データを必要となっているため、各ノードのグリッド算出範囲及び伝送粒子を分割し直した後で、各ノードは、算出が正確に行うことを確保するように、overlapグリッドを必ず取得する。Overlapのやり取り過程は、以下のように実現される。
受信した粒子を粒子アレイに格納すると共に、発信した粒子を粒子アレイから削除する。位置するグリッドの番号に従って、新たな粒子アレイを小さい順にソートして、iCellCount及びiSendParticlesOffsetアレイを算出し直す。
iDividedResultアレイが記録された現在のノード処理グリッド範囲に応じて、それぞれの範囲内のグリッドに隣接する隣接グリッドを算出し、現在のノードに位置しない隣接グリッドの番号及びそれが位置するノードの番号を確定する。
ROOTノードは、MPI_Gathervを呼び出して、各ノードのiSendInfoアレイをROOTノードのiGlobalSendInfoアレイに集めさせる。iGlobalSendInfo[i*3]に従って小さい順にソートした後で、MPI_Scatterv()関数を呼び出し、iGlobalSendInfo[i*3]の値に応じて、トリプルを、対応のノードに発信する。
各ノードは、ROOTから発信されたトリプルを、アレイiRecvInfoに格納させる。iCellCount[iRecvInfo[i*3+1]]に応じて、何個の粒子を、番号がiRecvInfo[i*3+2]であるノードに発信するかを確定すると共に、iSendGridInfo[iRecvInfo[i*3+1]]=iRecvInfo[i*3+2]とさせる。
ステップ2中の方法を用いて、overlapグリッドにおける粒子を、指定されたノードに発信する。
ステップ6:各計算ノードのGPUにおける1つのストリーミングプロセッサにおいて1つの粒子の処理を行う。粒子の座標に応じて、各粒子が位置するグリッドの番号を算出する。
グリッドの番号は、記憶空間を節約するために、行毎に1次元に記憶される。CUDAコア関数
calcHash<<<gridsize, blocksize>>> (ParticleHash, ParticleIndex,
x1, x2, x3,
NumParticles);
を呼び出して、粒子が位置するグリッドの番号ParticleHashが取得される。算出領域外の粒子に対して、その粒子が位置するグリッドを算出する時、それを算出領域内のあるグリッドに人為的に入れて、算出に影響しない。
そして、Cell−listの条件に従って、以下のkernelを用いて、ParticleHashによりcell−listを生成する。
CalcCellStartEnd<<<gridsize, blocksize>>> (cellStart, cellEtart,
ParticleHash, ParticleIndex,
NumParticles)
上記の結果に応じて、以下のkernel関数、即ち、
nbrlstgen<<<gridsize, blocksize>>>(NbrLst, NbrLstcnt,
x1, x2, x3,
ParticleIndex, ParticleHash,
CellStart, CellEnd, NumParticles);
を呼び出して、各粒子の隣接リストNbrLstを生成する。新たに生成したNbrLstによって、新たな接線相対変位Uを算出する。
ステップ7:各計算ノードのGPUにおける1つのストリーミングプロセッサは、1つの粒子の処理を行い、その粒子のストレス及び加速度を算出する。
ステップ6で取得したNbrLst及びUに応じて、粒子の座標、速度、角速度と合わせ、DEM方法の条件に従って、各粒子のストレス及びトルクを算出する。ニュートンの第二法則に従って、各粒子の加速度及び角加速度を算出する。
ステップ8:ステップ7で算出した加速度及び角加速度に応じて、1/2歩の粒子の速度を更新する。具体的な方式はステップ2と同じである。
ステップ9:条件を満たすまでに、ステップ2に戻って循環し、引き続きの算出を行う。
ステップ10:GPU装置のメモリに必要なデータをCPUメモリへコピーして、マスターノード及び計算ノードの記憶空間を釈放する。
以下の表1には、上記シミュレーション方法で実行した結果が示されている。プログラムは、nVIDIAのGPUにおいて異なる歩数で運行される。なお、異なるblock及びThreadの数をそれぞれ採用して実行される。
Figure 0006009075
図3は、本発明の別の実施例に係る、GPUに基づく粒子流動シミュレーションシステムのモジュール構造を示す模式図である。図3に示すように、該モジュール化されたシミュレーションシステムは、モデリングモジュール302と、タスク管理モジュール304と、計算モジュール306と表示モジュール308とを含む。図1を参照して、例えば、モデリングモジュール302は、前端サーバ10で実現されることができ、タスク管理モジュール304は、管理ノード30で実現されることができ、計算モジュール306は、計算ノード40のクラスタで実現されることができ、表示モジュール308は、後端サーバ20で実現されることができる。しかしながら、これらのモジュールは、適宜な方式で、例えば1つ又は複数のコンピューターで実現されることもできる。
モデリングモジュール302は、粒子を生成するために必要な情報、例えば、粒子の数、大きさ、材料などの情報(ヤング率、ポアソン(Poisson)比、密度、回復係数など)及び粒子の分布範囲、摩擦係数、境界条件などのパラメーターを受信し、粒子と接触する幾何体の材料の情報を提供する。
モデリングモジュール302は、受信した情報に応じて、必要な粒子モデル(単に「粒子」ということもできる)を生成する。生成した粒子間に重畳しない、あるいは、重畳が小さいことを確保するために、以下のいくつかの種類の方法を用いて粒子モデルを生成することが可能である。(1)規則生成法、すなわち、所定の範囲内で規則的な粒子を生成する。ただし、粒子の半径の0.1%〜1%に相当する変動を加える必要がある。(2)1つの粒子を生成する毎に、その粒子を、以前に生成された全ての粒子と比較し、重畳するか否かを検出する。若し、重畳すれば、その粒子を生成し直すことになる。そうでなければ、生成が成功することと見なす。(3)まず、小さい空間内で方法(2)を用いていくつかの粒子を生成し、そして、粒子の数の条件を満たすまでに、これらの粒子をコピーして平行移動させ、他の空間を充填する。これは、粒子分布のランダム性を向上できると共に、算出の時間を節約することもできる。上記3つの方法以外に、粒子の数が比較的に少ない場合について、空間の範囲が確定された後で、交互的な方法によって、マウスでクリックして生成してもよい。
粒子が生成された後で、モデリングモジュール302は、幾何体の情報に対する処理を行う。幾何体を有限的な曲面に分解し、これらの曲面に番号をつける。次に、生成された粒子、幾何体及び他の材料の情報をタスク管理モジュール304に供給する。
タスク管理モジュール304は、まず、伝送される粒子の数及びフリーなGPUの数に応じて、現在のタスクに対してノード及びGPUを割り当てる。若し、リソースが不足であれば、それをユーザに通知し、あるいは、待ちや放棄をユーザに選択させる。GPUを確定した後で、初期の粒子の位置情報を管理ノード30のGPUに記憶し、GPUの数及び粒子が空間中の分布状況に応じてどれらの粒子がどの計算ノード40のどのGPUカードによって算出されるかを確定する。タスク管理モジュール304は、確定した結果を、計算モジュール306へ伝送し、各計算ノード40に割り当てる。
各計算ノード40が自身に必要な粒子を取得した後で、まず、現在の加速度に応じて1/2歩を積分し、1/2歩後の速度を取得し、そして、この速度及び現在の粒子の座標値に応じて全ての粒子の位置の更新を行う。
位置を更新した後で衝突の検出を行う。このとき、空間をいくつかのグリッドに分割する必要がある。いずれか一つの粒子のストレス状況を算出する時、該粒子と隣接するグリッド内の粒子がその粒子に衝突するか否かの算出のみを行えば良い。若し、衝突が生じれば、衝突粒子を衝突リストに入れ、衝突粒子の個数に1を加算する。
粒子ボールのストレスを算出する時、まず、該衝突粒子の座標、速度、角速度の情報を抽出して、ストレスの算出を行う。その後、全ての衝突粒子に対して合力を求めると共に、粒子の加速度を算出する。粒子周辺の幾何体のストレスについて、まず、粒子と幾何体との間の距離を算出し、該距離が粒子の半径よりも小さい場合、該粒子が幾何体に衝突していると見なす。幾何体を、質量が無限大であり且つ速度及び角速度場が0である粒子とし、粒子が幾何体から受ける力を同様に算出することができる。
中断後で引き続きの算出を保証するために、実際な需要に応じて、一歩の算出データを一時間毎に格納することができる。該計算モジュール306は、需要に応じて、堆積係数、平均堆積密度、温度粘性係数などの物理量を算出して記憶してもよい。算出完成後、若し、ユーザが結果を可視化にしたければ、データを表示モジュール308に発信することができる。
以下、図4を参照して、計算モジュール306の操作フローを記述する。該実施例において、計算モジュール306の算出過程は、「ソートされるセルリスト」を採用することができる。該方法は、全ての粒子に対して、粒子が位置するグリッドに従ってソートし、cellStart及びCellEndとの2つのアレイの優勢を十分に利用する。該方法は、構造が簡単で、実現しやすく、効率が高いという特徴を有する。そのため、該方法は、各種類の高密度の粒子衝突に適用し、粒子の高い速度によるクロス・ノードの伝送という問題を解決することができる。
粒子を記述する物理量は、座標pos、速度vel、角速度w、加速度a、角加速度beta、粒子の接線相対変位Uを有する。これらの変数は、いずれも三次元の変数である。また、粒子が位置するグリッドの番号hash、粒子の永久全体番号pid及び一時局所番号index、粒子の衝突リストCollideList、及び衝突の粒子数CollideListCntを更に有する。
セルとは、上記分割によって取得したグリッドである。本明細書では、「セル」と「グリッド」との意味は同じであり、両者を互換して使用することができる。セルiを記述する変数は、cellStart[i]、cellEnd[i]、cellCount[i]を有し、ただし、iはセルの番号を示し、cellStart[i]はセルiの開始粒子の番号を示し、cellEnd[i]は、セルiの終了粒子の番号を示し、cellCount[i]は、セルiの粒子総数を示す。
コース通信を記述するための二次元のアレイは、ParticlesSendToEachNodeと称しても良い。i行目j列目のエレメント[i][j]は、i番目のノードからj番目のノードへ発信する粒子の総数を示す。
本発明の採用した時間積分アルゴリズムは、速度verletアルゴリズムである(従来の積分アルゴリズムであり、例えば、http://en.wikipedia.org/wiki/Verlet_integrationを参照する)。
図4に示すように、ステップ401において、初期化を行う。GPU及びCPUの記憶空間を設け、算出した粒子の情報を各計算ノードのGPUに発信することを含む。
ステップ402において、予め定められた速度及び座標を更新する。例えば、加速度(又は角加速度)に応じて1/2歩の速度(又は角速度)を更新した直後、速度に応じて粒子の座標の更新を行う。以下の式に示すようになる。
Figure 0006009075
以上の2つのステップは、いずれもそれぞれの計算ノードのGPUにおいて並列に完成されるものである。GPU中の一つのスレッド(thread)は、一つの粒子に対応し、GPUの最も高い効率に達した。
このように、新たな座標を取得した。新たな座標及び新たな速度(角速度)における加速度(角加速度)を算出する必要がある。
粒子の座標が変わったため、もともとAコース(又はGPU)で算出すべきの粒子は、このときにBコースで算出すべきとなる可能性がある。このように、Aコースの該粒子の全ての情報を、Bコースに発信する必要がある。
まず、各計算ノードのGPUにおいて、各粒子が位置するグリッドの番号Hashを算出する。各粒子が位置するグリッドの番号Hash及び粒子の局所の自然番号indexでkey−valueのソートを行う。このステップは、thrustライブラリ(従来熟したライブラリであり、cudaに集積され、例えばhttp://code.google.com/p/thrust/を参照する)で完成する。ソートされたhashに応じて、GPUにおいて、並列に算出を行い、各グリッドiのcellStart[i]、cellEnd[i]及びcellCount[i]を取得する。すなわち、ステップ403を実行する。
ソートのindexに従って、粒子の全ての物理量のソートを行う。
ここまで、粒子が位置するグリッドの番号に従って、粒子の全ての物理量をソートし直し、各グリッドiのcellStart[i]、cellEnd[i]、cellCount[i]は「ソートされるセルリスト」と総称する。
そして、ステップ404において、動的分割を行う。具体的には、各計算ノードは、自身が有する粒子のグリッド及び粒子の数を、複数の計算ノードにおけるマスターノードに発信する。すなわち、各計算ノードにおいて、cellCount[i]!=0のとき、i及びcellCount[i]をマスターノードに発信する。それぞれの計算ノードが発信したcellCount[i]を、マスターノードによって累積して、空間全体のcellCount[i]を取得する。マスターノードは、空間全体のcellCount[i]に応じて、それぞれのGPUの算出する粒子を分割し直す。分割の原則は、グリッドを単位とし、それぞれのGPUがいずれも連続的なグリッドを算出し、且つ、グリッドにおける粒子の総数が、各GPUの平均の粒子の数に近接する、ということである。このように、それぞれのGPUはいずれも、粒子の座標変化による粒子の算出範囲を取得した。
新たな算出範囲及び現在の各GPUの算出範囲に応じて、関連の粒子情報を送受信する。GPUが送受信する必要とする粒子の総数を確定するために、二次元のアレイ:ParticlesSendToEachNodeを作成する。該アレイのそれぞれの一次元の大きさは、いずれもコースの数(又はGPUの数)である。ParticlesSendToEachNode[i][j]の意味は、i番目のGPUがj番目のGPUへ発信する必要とする粒子の総数であり、すなわち、j番目のGPUがi番目のGPUから受信する粒子の総数である。該アレイの対角線のエレメントは、全てゼローである。該アレイのi行目に対して求めた和は、i番目のGPUが発信する粒子の総数である。j列目に対して求めた和は、j番目のGPUが受信する粒子の総数である。cellStart及びcellCountを入力として、アレイParticlesSendToEachNodeを算出する。その同時に、SendStartを算出する。SendStartも二次元のアレイであり、SendStart[i][j]は、i番目のGPUがj番目のGPUへ発信する一番目の粒子のアレイにおける位置である。このように、発信のために、発信しようとする粒子の情報をGPUから取得して、発信粒子のバッファーに伝送することができる。次に、受信のために、アレイの列に対して和を求めることによって、それぞれのGPUが受信する粒子の総数を確定でき、対応のバッファーを設けることができる。全ての送受信が完成するまでに、MPIの標準関数における、例えば、非同期の送受信方式MPI_Irecv関数及びMPI_Isend関数などによって、対応の粒子の物理情報を送受信する。
cudaMemcpyHostToDevice関数(既知の関数であり、GPUにおいてホストメモリとのやり取りデータを記憶する)によって、受信したアレイを、直接にGPUの各アレイの末端へコピーし、送受信バッファーを釈放する。
このとき、それぞれのGPUに対して算出すべきの新たな粒子の情報は、全て取得されたが、新たに加入した粒子及び発信した粒子を考慮する必要があり、「ソートされるセルリスト」を算出し直すことによって、ソートされた物理量のアレイを取得することができる。
各GPUの算出する粒子が独立せず、すなわち、GPU間に重畳(Overlap)領域があるため、ステップ405において、各GPUの算出するグリッドの番号に応じて、該GPUが必要なOverlap領域を算出することができる。動的分割と類似する方法を用いて、それぞれのGPUは、必要なOverlap領域の粒子の物理情報を取得して、それぞれのアレイの末端に記憶する。このように、Overlap領域を加えた物理情報のアレイは、完全的にソートされていないが、同一のグリッドにおける粒子は、連続的に記憶されている。その同時、それぞれのグリッドのcellStart及びcellEndを算出する。
ステップ406において、粒子の情報及びcellStart、cellEndに応じて、現在の全ての粒子の衝突リストを算出する。その方法は、以下のようである。即ち、いずれか一つの粒子iに対して、まず、texture memory(テクスチャーメモリ)によってその座標を取得し、それが位置するグリッドの番号を算出し、その自身を含む周辺の27つのグリッドにおける他の全ての粒子をスキャンする。若し、他の粒子と該粒子とのセントロイド距離が両者の半径の合計よりも小さければ、この粒子を、該粒子の衝突リストCollideList[i][CollideListCnt[i]]にマークして、衝突リストの数CollideListCnt[i]に1を加算する。
接線相対変位は、2つの粒子が接触するときのみに存在する。現在時刻のいずれか一つの粒子iのストレスを算出するために、一つ前の時刻の接線相対変位を必要とする。該接線相対変位を記憶するアレイUの次元の大きさは、CollideListの次元の大きさと同じである。U[i][j]は、粒子iと粒子CollideList[i][j]との接線相対変位を記憶する。したがって、算出結果の正確性を確保するために、粒子の現在時刻のストレスを算出する前に、現在時刻のCollideList、一つ前の時刻のCollideListOld及びUOldに応じて、アレイUをソートし直しなければならない。このソート過程は、GPUにおいて実現される。具体的には、入力された一つ前の時刻の衝突リストCollideListOldと、CollideListCntと、CollideListOldに対応するUOldとを用い、現在時刻の衝突リストCoolideList[CollideListCnt]を入力とし、UOldの順序を調整して、現在時刻のアレイUを取得する。
このように、力を算出するための全ての正しいアレイを取得した。ステップ407において、HM接触力学モデルによって、それぞれの粒子のストレスを算出する。具体的には、座標pos、速度vel、角速度w、粒子の接線相対変位U、衝突リストCollideList[CollideListCnt]を用いて、HM接触力学の式に従って、それぞれの粒子の加速度a及び角加速度betaを算出することができる。
新な加速度a(角加速度b)を取得した後で、ステップ408において、以上の速度に従って1/2歩の速度を再びに更新する。
ここまで、計算モジュールにおける完全な一歩の演算を完成した。
現在の全ての粒子の物理情報のアレイを格納し、次回のアレイのために準備する。ここで、ステップ409においては、コピー又はポインターやり取り技術を採用することができる。ポインターやり取り技術は、現在のアレイと次回に算出するアレイとの最初のアドレスをやり取りして、データのコピーが必要な比較的に長い時間を低減することができる。
ステップ410において、外部への記憶を行うか否かを判断する。必要であれば、ステップ411において、全ての粒子の全ての物理情報を外部の記憶装置に格納して、停電した後で算出し直すというリスクを防止することができる。ステップ412において、統計するか否かを判断する。必要であれば、ステップ413において、例えば、平均値、分散などの関連的な統計物理量を算出する。ステップ414において、算出の終了条件を満たすか否かを判断する。例えば、予め定められた回数の算出を実行したか否かを判断する。算出が完成していなければ、ステップ402に戻す。そうでなければ、算出を終了させ、結果を格納して、記憶の空間を釈放する。
国際的に著名なソフトウェアlammps(広く適用されるオープンソース・ソフトウェアであり、http://lammps.sandia.gov/を参照することができる)の8コアのCPUに基づく実施と比べると、本発明のGPU (例えば、Telsa M2090)に基づくシミュレーション方法の演算速度は、10倍ほど向上できた。
当業者は、本発明の主旨及び範囲を逸脱しない限り、本発明に対する変更や変形をすることができる。このように、本発明のこれらの補正及び変形が本発明の特許請求の範囲及びそれと同様な技術範囲に属すれば、本発明もこれらの変更及び変形を含む。

Claims (20)

  1. 並列の複数のGPU上で離散要素法(DEM)方法を実行して粒子流動のシミュレーションを行うGPUに基づく粒子流動のシミュレーション方法であって、
    DEM方法で粒子をモデリングし、作られたDEMモデルを複数の粒子として割り当てし、該複数の粒子を複数の計算ノードに割り当て処理を行い、各計算ノードのCPU及びGPUに記憶空間がそれぞれ割り当てされており、CPUにおいてデータの初期化を行い、初期化されたデータをCPUの記憶空間から前記GPUの記憶空間へコピーするステップaと、
    上記各計算ノードのGPUは、各粒子の処理を行い、各計算ノードのGPUの各ストリーミングプロセッサは、1つの粒子を処理し、GPUの記憶空間に記憶される粒子の座標及び粒子の速度を更新するステップbと、
    ステップbの処理過程において、各計算ノードが制御する粒子を確定し、各計算ノードが制御する粒子の個数をCPUの記憶空間へコピーして、各計算ノードがどれらの粒子を算出するかを均衡負荷の原則に従って動的に確定できるように、GPUの記憶空間における粒子の数に応じて動的分割を行うステップc、具体的には、各GPUが、現在算出されるグリッドにおける粒子数をCPUメモリ空間にコピーし、各グリッドに粒子数をまとめ、各グリッドの粒子数を累積することによって、それぞれのGPUが算出すべき粒子数に対して動的分割を行い直し、分割原則は、1個又は複数個のグリッドの粒子数が算出平均粒子数に累積する場合、当該1個又は複数個のグリッドを、当該GPUの算出範囲として、1つのGPUに割り当てることであることを含む、ステップcと、
    MPIインターフェースプロトコルによって、上記データが動的分割された粒子を各計算ノード間に遷移させるステップdと、
    ステップcで取得した各計算ノードが制御する粒子に応じて、GPUにおいて重畳領域を算出し、データをCPUメモリへコピーしてから、MPIインターフェースプロトコルによってデータのやり取りを行うステップeと、
    各計算ノードのGPUにおける各ストリーミングプロセッサは、各粒子の座標に応じて、各粒子が位置するGPUの記憶空間におけるグリッドの番号を算出するステップfと、
    各計算ノードのGPUにおける各ストリーミングプロセッサは、各粒子の運動中のストレス及び加速度を処理して算出するステップgと、
    各計算ノードのGPUにおける各ストリーミングプロセッサは、各粒子の速度を処理するステップhと、
    指定された歩数に達するまでに、ステップbに戻すステップiと、
    マスターノード及び計算ノードの記憶空間を釈放するステップjと、を含むことを特徴とするGPUに基づく粒子流動のシミュレーション方法。
  2. ステップb、ステップf、ステップg及びステップhは、
    GPUにおいて各粒子に対して並列なデータ処理を行う請求項1に記載のGPUに基づく粒子流動のシミュレーション方法。
  3. ステップdにおいて、前記粒子が各ノード間で遷移し、MPIインターフェースで関数を送受信し、粒子の各物理量の送受信を実現する請求項1に記載のGPUに基づく粒子流動のシミュレーション方法。
  4. ステップeにおいて、前記GPUにおいて重畳領域を算出することは、
    GPUにおいて重畳領域を算出することを利用し、GPUの1つのストリーミングプロセッサが1つのグリッドを処理することを含み、
    三次元の場合において、各グリッドは26個のグリッドに隣接し、隣接のグリッドが現在の計算ノードに位置するか否かを判断し、位置しなければ、重畳領域とし、他のノードから遷移して取得する請求項1に記載のGPUに基づく粒子流動のシミュレーション方法。
  5. GPUに基づく粒子流動のシミュレーション方法であって、
    粒子の材料、粒子のパラメーター、境界の条件、幾何体の形状、及び粒子の初期分布の領域を確定し、予め定められた粒子の分布領域及び数量に応じて粒子を生成するモデリングステップと、
    粒子の総数及び複数の計算ノード上にフリーなGPU数に応じて、最適なGPU数を確定し、最適なGPU数及び現在フリーなGPU数に応じて、算出関与のGPUを確定し、算出関与のGPUの状態をビジーに設置するタスク管理ステップと、
    算出ステップと、を含み、
    該算出ステップは、
    各計算ノードの算出関与のGPUを初期化し、算出に必要な粒子の情報を各GPUに発信するステップと、
    各GPUが、予め定められた速度及び座標を並列に更新し、受信した粒子の情報をソートして各自のソートセルリストを生成するステップと、
    各GPUが、現在各自のコースにおける非ゼローのグリッドの番号及びグリッドにおける粒子数を並列に算出し、マスターノードに発信して、マスターノードによって各GPUの最適な粒子数に応じて、グリッドを動的分割し、各GPUが並列に算出するグリッドの数及びグリッドの番号を確定するステップと、
    マスターノードが確定した結果に応じて、各GPUが粒子情報を並列に送受信し、各GPUにおいて各自のソートセルリストを生成し直すステップと、
    各GPUにおいて現在時刻の衝突リストを生成し、現在時刻の衝突リストと一つ前の時刻の衝突リストと接線相対変位に応じて、各GPUにおいて接線相対変位の位置を並列に調整し、該衝突リストに、対象粒子と互いに接触した粒子のみが含まれるステップと、
    接触力学モデルによって、各GPUにおいて各粒子のストレス及び加速度を並列に算出するステップと、
    現在の算出結果を記憶するステップと、
    算出が完成していなければ、各GPUが予め定められた速度及び座標を並列に更新するステップに戻し、そうでなければ、算出ステップを終了させるステップと、を含むことを特徴とするGPUに基づく粒子流動のシミュレーション方法。
  6. 更に、表示ステップを含み、
    上記表示ステップは、
    境界の条件を確定し、幾何体の境界を透明な曲面で作るステップと、
    粒子の位置及び粒子の直径に応じて、粒子を同じ色又は異なる色のペレットで描くステップと、
    階調画像でスカラ場を表示し、粒子情報を重み付けしてグリッドにマッピングすることによって、ベクトル場を流線描き方法で描くステップとを含む請求項5に記載のGPUに基づく粒子流動のシミュレーション方法。
  7. 算出結果とする全ての粒子情報を外部の記憶装置に格納するステップとを更に含む請求項5に記載のGPUに基づく粒子流動のシミュレーション方法。
  8. 各GPUが、粒子に関する物理統計量を並列に算出することを更に含む請求項5に記載のGPUに基づく粒子流動のシミュレーション方法。
  9. 予め定められた粒子の分布領域及び数量に応じて粒子を生成することは、
    粒子の数量条件を満たすまでに、比較的に小さい空間内でいくつかの粒子を生成して、これらの粒子を平行移動してコピーを行い、他の空間を充填することを含む請求項5に記載のGPUに基づく粒子流動のシミュレーション方法。
  10. ソートセルリストは、粒子が位置するグリッドに応じて、全ての粒子をソートするリストである請求項5に記載のGPUに基づく粒子流動のシミュレーション方法。
  11. 動的分割方法を採用して、非ゼローのグリッドの番号及びグリッドにおける粒子数をGPUにおいて並列に算出する請求項5に記載のGPUに基づく粒子流動のシミュレーション方法。
  12. 各GPUにおいては、
    1つのスレッドが1つの粒子に対応するとの方式を用いて算出を行う請求項5に記載のGPUに基づく粒子流動のシミュレーション方法。
  13. 接線相対変位を算出することは、
    一つ前の時刻の接線相対変位を記録し、現在時刻の衝突リストに応じてそれを更新することを含む請求項5に記載のGPUに基づく粒子流動のシミュレーション方法。
  14. コピー又はポインターやり取り技術を用いて、現在の算出結果をアレイに記憶する請求項5に記載のGPUに基づく粒子流動のシミュレーション方法。
  15. GPUに基づく粒子流動のシミュレーションシステムであって、
    粒子の材料、粒子のパラメーター、境界の条件、幾何体の形状、及び粒子の初期分布の領域を確定し、予め定められた粒子の分布領域及び数量に応じて粒子を生成するように構成されるモデリングモジュールと、
    粒子の総数及び複数の計算ノードにフリーなGPU数に応じて、最適なGPU数を確定し、最適なGPU数及び現在フリーなGPU数に応じて、算出関与のGPUを確定し、算出関与のGPUの状態をビジーに設置するように構成されるタスク管理モジュールと、
    算出モジュールと、を含み、
    該算出モジュールは、
    各計算ノードの算出関与のGPUを初期化し、算出に必要な粒子の情報を各GPUに発信し、
    各GPUが、予め定められた速度及び座標を並列に更新し、受信した粒子の情報をソートして各自のソートセルリストを生成し、
    各GPUが、現在各自のコースにおける非ゼローのグリッドの番号及びグリッドにおける粒子数を並列に算出し、マスターノードに発信して、マスターノードによって各GPUの最適な粒子数に応じて、グリッドを動的分割し、各GPUが並列に算出するグリッドの数及びグリッドの番号を確定し、
    マスターノードが確定した結果に応じて、各GPUが粒子情報を並列に送受信し、各GPUにおいて各自のソートセルリストを生成し直し、
    各GPUにおいて現在時刻の衝突リストを生成し、現在時刻の衝突リストと一つ前の時刻の衝突リストと接線相対変位に応じて、各GPUにおいて接線相対変位の位置を並列に調整し、該衝突リストに、対象粒子と互いに接触した粒子のみが含まれ、
    接触力学モデルによって、各GPUにおいて各粒子のストレス及び加速度を並列に算出し、
    現在の算出結果を記憶し、
    算出が完成していなければ、各GPUが予め定められた速度及び座標を並列に更新するステップに戻し、そうでなければ、算出ステップを終了させるように構成されることを特徴とするGPUに基づく粒子流動のシミュレーションシステム。
  16. 更に、表示モジュールを含み、
    上記表示モジュールは、
    境界の条件を確定し、幾何体の境界を透明な曲面で作り、
    粒子の位置及び粒子の直径に応じて、粒子を同じ色又は異なる色のペレットで描き、
    階調画像でスカラ場を表示し、粒子情報を重み付けしてグリッドにマッピングすることによって、ベクトル場を流線描き方法で描くように構成される請求項15に記載のGPUに基づく粒子流動のシミュレーションシステム。
  17. GPUに基づく粒子流動のシミュレーションシステムであって、
    クライアントから入力される粒子のモデリング情報に応じて、粒子の情報を生成すると共に、幾何体の情報を生成するように構成される前端サーバと、
    前端サーバから粒子の情報及び幾何体の情報を受信し、粒子の数及び各計算ノード上にフリーなGPUの数に応じて、どれらの計算ノードにおけるどれらのGPUを使用するかを確定し、そして、確定したGPUの数及び粒子の空間における分布状況に応じてどれらの粒子がどの計算ノードのどのGPUによって算出されるかを確定し、確定した結果によって割り当てるように構成される管理ノードと、
    それぞれが複数のGPUを含み、複数のGPUにおいて粒子の衝突による各粒子のストレスを並列に算出し、加速度を更に算出して、粒子の流動をシミュレーションするように構成される複数の計算ノードと、
    シミュレーションの結果を表示するように構成される後端サーバと、を備え
    前記複数の計算ノードは、
    各計算ノードの算出関与のGPUを初期化し、算出に必要な粒子の情報を各GPUに発信し、
    各GPUが、予め定められた速度及び座標を並列に更新し、受信した粒子の情報をソートして各自のソートセルリストを生成し、
    各GPUが、現在各自のコースにおける非ゼローのグリッドの番号及びグリッドにおける粒子数を並列に算出し、マスターノードに発信して、マスターノードによって各GPUの最適な粒子数に応じて、グリッドを動的分割し、各GPUが並列に算出するグリッドの数及びグリッドの番号を確定し、
    マスターノードが確定した結果に応じて、各GPUが粒子情報を並列に送受信し、各GPUにおいて各自のソートセルリストを生成し直し、
    各GPUにおいて現在時刻の衝突リストを生成し、現在時刻の衝突リストと一つ前の時刻の衝突リストと接線相対変位に応じて、各GPUにおいて接線相対変位の位置を並列に調整し、該衝突リストに、対象粒子と互いに接触した粒子のみが含まれ、
    接触力学モデルによって、各GPUにおいて各粒子のストレス及び加速度を並列に算出し、
    現在の算出結果を記憶し、
    算出が完成していなければ、各GPUが予め定められた速度及び座標を並列に更新するステップに戻し、そうでなければ、算出ステップを終了させるように構成されることを特徴とするGPUに基づく粒子流動のシミュレーションシステム。
  18. 前端サーバは、
    幾何体を有限の曲面に分解し、これらの曲面に番号をつけることによって、幾何体の情報を生成する請求項17に記載のGPUに基づく粒子流動のシミュレーションシステム。
  19. 後端サーバは、
    表示されるシミュレーション結果において、幾何体の境界を透明な曲面で作り、
    粒子の位置及び粒子の直径に応じて、粒子を同じ色又は異なる色のペレットで描き、
    且つ、階調画像でスカラ場を表示し、粒子情報を重み付けしてグリッドにマッピングすることによって、ベクトル場を流線描き方法で描く請求項17に記載のGPUに基づく粒子流動のシミュレーションシステム。
  20. 前端サーバ、管理ノード、計算ノード及び後端サーバは、
    IB(InfiniBand)ネットワークによって通信する請求項17に記載のGPUに基づく粒子流動のシミュレーションシステム。
JP2015521951A 2012-12-20 2013-05-22 粒子流動のシミュレーションシステム及びその方法 Active JP6009075B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201210558134 2012-12-20
CN201210558134.6 2012-12-20
PCT/CN2013/076045 WO2014094410A1 (zh) 2012-12-20 2013-05-22 颗粒流动仿真系统和方法

Publications (2)

Publication Number Publication Date
JP2015530636A JP2015530636A (ja) 2015-10-15
JP6009075B2 true JP6009075B2 (ja) 2016-10-19

Family

ID=49193522

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015521951A Active JP6009075B2 (ja) 2012-12-20 2013-05-22 粒子流動のシミュレーションシステム及びその方法

Country Status (5)

Country Link
US (1) US10007742B2 (ja)
JP (1) JP6009075B2 (ja)
CN (1) CN103324780B (ja)
GB (1) GB2523640B (ja)
WO (1) WO2014094410A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11403440B2 (en) 2018-08-27 2022-08-02 E8IGHT Co., Ltd Particle-based fluid simulation method using multiple processors and fluid simulation apparatus

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617088B (zh) * 2013-11-29 2018-07-24 深圳中微电科技有限公司 在不同类型线程中分配内核资源的方法、装置及其处理器
US10210287B2 (en) 2013-12-31 2019-02-19 Disney Enterprises, Inc. Augmented material point method for simulating phase changes and varied materials
US10019827B2 (en) * 2013-12-31 2018-07-10 Disney Enterprises, Inc. Material point method for simulation of granular materials
US10634814B2 (en) * 2014-01-17 2020-04-28 Conocophillips Company Advanced parallel “many-core” framework for reservoir simulation
CN105389855B (zh) * 2014-08-26 2019-11-01 三星电子株式会社 对对象进行建模的方法和设备
JP6547547B2 (ja) * 2015-09-25 2019-07-24 富士通株式会社 粒子シミュレーションプログラム、計算機資源配分方法、および粒子シミュレーション装置
JP6543557B2 (ja) * 2015-11-11 2019-07-10 富士通株式会社 粒子シミュレーションプログラム、粒子シミュレーション装置、及び計算機資源配分方法
CN107016180A (zh) * 2017-03-30 2017-08-04 中国石油大学(北京) 一种颗粒流动仿真方法
US10262390B1 (en) 2017-04-14 2019-04-16 EMC IP Holding Company LLC Managing access to a resource pool of graphics processing units under fine grain control
US10275851B1 (en) 2017-04-25 2019-04-30 EMC IP Holding Company LLC Checkpointing for GPU-as-a-service in cloud computing environment
CN107230242B (zh) * 2017-06-07 2020-09-25 广州酷狗计算机科技有限公司 粒子映射方法和装置
US10325343B1 (en) 2017-08-04 2019-06-18 EMC IP Holding Company LLC Topology aware grouping and provisioning of GPU resources in GPU-as-a-Service platform
CN107766148B (zh) * 2017-08-31 2021-02-19 北京百度网讯科技有限公司 一种异构集群及任务处理方法和装置
KR101980699B1 (ko) * 2017-10-31 2019-05-22 한국과학기술원 공간 데이터를 분산 처리하는 시스템 및 방법
US10698766B2 (en) 2018-04-18 2020-06-30 EMC IP Holding Company LLC Optimization of checkpoint operations for deep learning computing
CN110795228B (zh) 2018-08-03 2023-08-25 伊姆西Ip控股有限责任公司 用于训练深度学习模型的方法和制品、以及计算系统
US10776164B2 (en) 2018-11-30 2020-09-15 EMC IP Holding Company LLC Dynamic composition of data pipeline in accelerator-as-a-service computing environment
CN109753726A (zh) * 2019-01-04 2019-05-14 东南大学 一种基于边界盒搜索方法和gpu的球磨机介质运动仿真方法
CN109977505B (zh) * 2019-03-13 2024-02-09 南京大学 基于gpu矩阵计算的离散元孔隙系统快速搜索方法
CN110275732B (zh) * 2019-05-28 2023-02-21 上海交通大学 在ARMv8处理器上质点网格法的并行实现方法
WO2020254066A1 (en) * 2019-06-20 2020-12-24 Asml Netherlands B.V. Method for patterning process modelling
JP7244757B2 (ja) 2019-07-01 2023-03-23 富士通株式会社 情報処理装置、粒子シミュレーション方法および粒子シミュレーションシステム
CN110348156B (zh) * 2019-07-18 2022-10-14 河南理工大学 一种炉料颗粒在高炉旋转溜槽内部运动的仿真方法
CN112035995A (zh) * 2019-07-19 2020-12-04 交通运输部天津水运工程科学研究所 基于gpu计算技术的非结构网格潮汐潮流数值模拟方法
CN112528456B (zh) * 2019-09-18 2024-05-07 曙光信息产业(北京)有限公司 一种异构节点计算系统及方法
CN110766709B (zh) * 2019-10-30 2021-03-30 成都理工大学 基于图像识别的滑坡颗粒堆积特征识别方法
CN111222262B (zh) * 2019-10-30 2023-09-29 中国中元国际工程有限公司 基于质量比影响的气浮隔振平台性能优化设计方法
CN110992456B (zh) * 2019-11-19 2021-09-07 浙江大学 一种基于位置动力学的雪崩模拟方法
CN111027244B (zh) * 2019-12-03 2024-03-12 天津大学 一种百亿级颗粒模型的构建方法
KR102371345B1 (ko) * 2020-05-07 2022-03-07 국방과학연구소 도심지 유동해석 방법 및 장치
CN112001108B (zh) * 2020-07-08 2024-02-02 中国人民解放军战略支援部队信息工程大学 锥束ct蒙特卡洛仿真集群并行加速方法及系统
CN112100939B (zh) * 2020-09-14 2023-06-16 福建天晴在线互动科技有限公司 一种基于Compute Shader的实时流体仿真方法及其系统
CN112380788B (zh) * 2020-11-06 2022-03-01 天津大学 一种超椭球颗粒与流场双向耦合的半解析计算方法
CN113177346B (zh) * 2020-11-17 2022-06-10 西北工业大学 一种锅炉煤粉运输安全性判断方法及系统
CN112380793B (zh) * 2020-11-18 2024-02-13 上海交通大学 基于gpu的湍流燃烧数值模拟并行加速实现方法
CN112464543B (zh) * 2021-01-28 2021-04-06 北京科技大学 一种计算vim冶炼过程中的夹杂物运动的方法
CN113283048A (zh) * 2021-03-12 2021-08-20 南京航空航天大学 一种多枝晶运动相场法并行模拟的碰撞检测和合并方法
CN113221200B (zh) * 2021-04-15 2022-10-25 哈尔滨工程大学 一种适用于堆芯颗粒分布不确定性分析的三维高效随机排布方法
CN113239522B (zh) * 2021-04-20 2022-06-28 四川大学 一种基于计算机集群的大气污染物扩散模拟方法
CN113282976B (zh) * 2021-04-30 2023-04-11 重庆大学 基于comsol的粉床构建方法
CN112948643B (zh) * 2021-05-13 2021-08-06 中国空气动力研究与发展中心计算空气动力研究所 一种基于线程并行的结构化网格流线积分方法
CN113343605B (zh) * 2021-06-29 2022-03-25 华南理工大学 一种汽车涂层抗石击性标准实验的仿真对标方法
CN114186468B (zh) * 2021-12-16 2024-03-29 西安交通大学 一种基于gpu加速的二次电子发射模拟方法及系统及设备
CN114254572B (zh) * 2021-12-16 2024-01-02 西北工业大学太仓长三角研究院 考虑污染物沉积的航发压气机流场性能预测方法及系统
CN114491864B (zh) * 2022-01-26 2022-12-13 哈尔滨工程大学 一种具有参数化、可重构特征的核动力管网模型预处理方法
CN115600449B (zh) * 2022-07-05 2024-06-18 浙江大学 基于细长柔性物件组成的大规模颗粒系统的模拟预测方法
CN115719047B (zh) * 2022-11-14 2023-06-06 沐曦集成电路(上海)有限公司 基于波形gpu联合仿真系统
CN116738806A (zh) * 2023-04-18 2023-09-12 西北农林科技大学 含丁坝水流交汇区微塑料输运规律的模拟方法
CN116562065B (zh) * 2023-07-12 2023-09-12 北京凌云智擎软件有限公司 一种网格拓扑的转换方法、设备及装置
CN117272769B (zh) * 2023-09-27 2024-06-07 长江大学 一种颗粒混合过程仿真数据的处理方法
CN117217132B (zh) * 2023-11-08 2024-02-09 四川新能源汽车创新中心有限公司 一种基于cfd-dem耦合的颗粒运动模拟方法
CN118069374B (zh) * 2024-04-18 2024-06-18 清华大学 数据中心智能训练仿真事务加速方法、装置、设备及介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7952583B2 (en) * 2000-06-19 2011-05-31 Mental Images Gmbh Quasi-monte carlo light transport simulation by efficient ray tracing
JP5371221B2 (ja) * 2007-09-11 2013-12-18 プロメテック・ソフトウェア株式会社 粒子法シミュレーションのためのスライスデータ構造、およびスライスデータ構造を利用した粒子法シミュレーションのgpuへの実装方法
JP5124845B2 (ja) 2007-09-14 2013-01-23 本田技研工業株式会社 金属リング周長補正方法
CN101727653B (zh) 2008-10-31 2012-03-07 中国科学院过程工程研究所 一种基于图形处理器的多组分系统离散模拟计算方法
JP5408611B2 (ja) * 2009-03-31 2014-02-05 独立行政法人海洋研究開発機構 粒子シミュレーション装置及び粒子シミュレーション方法
US8531463B2 (en) * 2009-08-10 2013-09-10 Dem Solutions Limited Method and apparatus for discrete element modeling with a virtual geometry object
WO2012034176A1 (en) * 2010-09-15 2012-03-22 Commonwealth Scientific And Industrial Research Organisation Discrete element method
US9038088B2 (en) * 2011-03-10 2015-05-19 Nec Laboratories America, Inc. Load balancing on hetrogenous processing cluster based on exceeded load imbalance factor threshold determined by total completion time of multiple processing phases
US8554527B2 (en) * 2011-04-08 2013-10-08 Japan Agency For Marine-Earth Science And Technology Particle simulator and method of simulating particles
US9760376B1 (en) * 2016-02-01 2017-09-12 Sas Institute Inc. Compilation for node device GPU-based parallel processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11403440B2 (en) 2018-08-27 2022-08-02 E8IGHT Co., Ltd Particle-based fluid simulation method using multiple processors and fluid simulation apparatus

Also Published As

Publication number Publication date
US20150213163A1 (en) 2015-07-30
CN103324780A (zh) 2013-09-25
WO2014094410A1 (zh) 2014-06-26
US10007742B2 (en) 2018-06-26
JP2015530636A (ja) 2015-10-15
GB2523640B (en) 2020-05-27
CN103324780B (zh) 2016-03-16
GB201500658D0 (en) 2015-03-04
GB2523640A (en) 2015-09-02

Similar Documents

Publication Publication Date Title
JP6009075B2 (ja) 粒子流動のシミュレーションシステム及びその方法
Tang et al. CAMA: Contact‐aware matrix assembly with unified collision handling for GPU‐based cloth simulation
CN110706341B (zh) 一种城市信息模型的高性能渲染方法、装置及存储介质
US10055808B1 (en) Distributed and parallelized visualization framework
JP5227103B2 (ja) 近傍粒子探索に用いるデータ構造の構築方法、そのプログラム、およびそのプログラムを格納した記憶媒体
Valero-Lara et al. Accelerating fluid–solid simulations (Lattice-Boltzmann & Immersed-Boundary) on heterogeneous architectures
Hernandez et al. Simulating and visualizing real-time crowds on GPU clusters
Bruckschen et al. Real-time out-of-core visualization of particle traces
CN107016180A (zh) 一种颗粒流动仿真方法
Mueller‐Roemer et al. Ternary sparse matrix representation for volumetric mesh subdivision and processing on GPUs
Bleiweiss Multi agent navigation on the gpu
Kuester et al. Visualization of particle traces in virtual environments
Cetinaslan Position‐based simulation of elastic models on the GPU with energy aware gauss‐seidel algorithm
Akkurt et al. An efficient edge based data structure for the compressible Reynolds‐averaged Navier–Stokes equations on hybrid unstructured meshes
CN1680943A (zh) 分布型cad装置
Chen et al. Flexible and rapid animation of brittle fracture using the smoothed particle hydrodynamics formulation
Yong et al. GVM based intuitive simulation web application for collision detection
Plimpton et al. Rendezvous algorithms for large-scale modeling and simulation
Pacevič et al. Visualization of cracks by using the local Voronoi decompositions and distributed software
Fehling Algorithms for massively parallel generic hp-adaptive finite element methods
CN112100939A (zh) 一种基于Compute Shader的实时流体仿真方法及其系统
Fofanov et al. Optimization of load balancing algorithms in parallel modeling of objects using a large number of grids
Oh et al. Practical simulation of hierarchical brittle fracture
Niebling et al. Integrated simulation workflows in computer aided engineering on hpc resources
Playne et al. Benchmarking multi-GPU communication using the shallow water equations

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160516

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160830

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160913

R150 Certificate of patent or registration of utility model

Ref document number: 6009075

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250