核心概念
流体シミュレーションにおいて、視覚的に魅力的な結果を対話的なレートで生成することが現在の課題である。本研究では、CPUとGPUでFLIP流体シミュレーションアルゴリズムを実装し、マルチコアアーキテクチャへの移行に必要な努力と得られるパフォーマンス向上について理解を深めた。
摘要
本研究では、流体シミュレーションの分野における最近の進展を調査し、FLIP (Fluid Implicit Particle)アルゴリズムの2つのバージョン、CPUとGPU (NVIDIA CUDA)上で実装した。
主な内容は以下の通り:
- 流体シミュレーションの背景
- ナビエ・ストークス方程式
- ラグランジュ的アプローチとオイラー的アプローチ
- 安定流体アルゴリズム
- ハイブリッド手法: PICとFLIP
- CPU実装
- 交差格子
- 粒子の初期配置
- 移流
- 圧力ソルバ
- 粒子から格子への転送
- 格子から粒子への転送
- GPU実装
- データ表現
- 粒子のビニング
- 圧力ソルバ
- 表面再構築
- 評価
- 3つのベンチマークでのパフォーマンス比較
- CPU実装とGPU実装の違い
- 視覚的結果
本研究は、流体シミュレーションがマルチコアアーキテクチャに適していることを示しており、GPU実装では平均して20倍の高速化が得られた。ただし、メモリアクセスパターンの最適化など、さらなる改善の余地がある。
统计
流体シミュレーションの1ステップあたりの平均時間(ミリ秒)は以下の通り:
ダムブレイク
100k粒子、32^3グリッド: CPU 451ms、GPU 18ms
500k粒子、64^3グリッド: CPU 2065ms、GPU 83ms
1M粒子、128^3グリッド: CPU 4247ms、GPU 204ms
ダブルダムブレイク
100k粒子、32^3グリッド: CPU 630ms、GPU 27ms
500k粒子、64^3グリッド: CPU 3462ms、GPU 154ms
1M粒子、128^3グリッド: CPU 18114ms、GPU 918ms
水滴
100k粒子、32^3グリッド: CPU 323ms、GPU 16ms
500k粒子、64^3グリッド: CPU 2960ms、GPU 171ms
1M粒子、128^3グリッド: CPU 16588ms、GPU 1056ms