Thesis or Dissertation GPUおよび領域分割を用いた粒子法による流体シミュレーションの高速化

佐々木, 卓雅  ,  ササキ, タクマ  ,  Sasaki, Takuma

pp.1 - 57 , 2016-03-25 , The University of Electro-Communications
Description
流体シミュレーションの手法として、計算対象の空間を格子によって分割し、格子点上の固定された計算点を用いて計算を行う格子法が用いられてきた。代表的な方法として差分法、有限要素法などが挙げられる。しかし、この手法には、流体の自由表面の追跡の為に特別なスキームが必要なことや複雑形状に対する格子生成の手間がかかるなどの課題があった。この課題の解決法の1つである粒子法は、連続体を有限子の粒子によって表し、連続体の挙動を粒子の運動によって計算する方法である。各粒子は速度や圧力といった変数を保持しながら移動するので格子は使われない。非圧縮性流体を扱うための粒子法については、越塚らがMoving Particle Semi-implicitMethod(MPS法)という方法を提案した。MPS法は半陰的アルゴリズムを用いており、微分演算子に対する離散化方法として、粒子間相互作用モデルを用いて流体の支配方程式の離散化を行っている。本研究では、粒子法による流体シミュレーション、特にUniform Gridを用いた領域分割による近傍にある粒子探索の高速化と、CUDAを用いたGPUコンピューティングによるシミュレーションの高速化を行った。CPU上のシミュレーションの高速化では、Uniform Gridによる領域分割の効果で近傍の粒子探索が高速化され、全体の計算時間がCG法の1.5乗のオーダーでスケーリングされることを確認した。これに加え、OpenMPを用いた並列化により、粒子数が13万個の時、初期のプログラムと比較し約46倍の高速化を達成できた。GPU上のシミュレーションの高速化では、GPUに搭載されている様々なメモリを活用し、Uniform Gridを用いたシミュレーションプログラムを作成した。また、シェアードメモリを使い、グローバルメモリとのアクセス回数を更に減らす変更を加えたプログラムも作成した。この変更は、探索する粒子数が大きく増加する3次元のシミュレーションでより大きな高速化が見込まれる。粒子数が13万個の時、CPUと比較し約7倍の高速化を達成できた。

Number of accesses :  

Other information