CUDA SPH 65536 particles


SPH (パーティクルベース流体シム) を実装。と言っても、コード自体は DirectX SDK のサンプルにある ComputeShader 使った 2D SPH のほぼベタ移植ですが。
当初は GPGPU は OpenCL でやる予定でしたが、色々検証した結果 CUDA にしました。8000系以上の GeForce ではないマシンは全部切り捨てることになりますが、今回は開発の楽さを優先します。


上記デモの CUDA のコード


CUDA は素晴らしく楽に GPGPU させてくれます。C++ プロジェクトに直接組み込める。template をかなり高いレベルでサポートしている。GPUSTL 的なライブラリ (thrust) があり、sort したい場合 thrust::sort() 一発で可能。等々。
SPH のデータ構造にはハッシュグリッドが使われており、ここらへんの理論はこちらが参考になりました。