前回は、下記の論文で言うところのセル分割法を実装してみましたが、二つ目の手法、粒子登録法を組んでみました。
GPUによる近接相互作用に基づく粒子計算の近傍探索手法
https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=107323&file_id=1&file_no=1
出力結果は同じ(動画省略)。さぁ、速度はどうだ。
全粒子判定 1ステップあたり0.039175秒
セル分割法 1ステップあたり0.023670秒(1.65倍)
セル分割法+粒子登録法 0.022526秒(1.73倍)
・・・速くなり・・・ました。ちょっぴしだけど。
論文では、セル分割法単体と比べ、3倍以上の高速化となってますが、今回はそうはなりませんでした。
コードが良くない可能性は大いにあるけども、一応、セル分割法の候補が粒子登録法によって、1/3〜半分程度に抑えられることは確認。ただし、更新頻度が多いので、そっちに処理を食っている模様。試しに更新を判定するアルゴリズムはそのままに、粒子登録法の絞り込みをコメントアウトしてみると・・・
セル分割法+粒子登録法 0.022526(1.73倍)
セル分割法+更新判定のみ 0.022452(1.74倍)
変わらーん。むしろ絞り込みしない方が速いー。っとの結果になりましたorz
粒子登録法は、コードがごちゃごちゃするので、いっそ無くしてしまうか・・・?まぁでも、更新頻度が少ない解析なら、効果を発揮するやもしれぬ。って事で、アルゴリズム的な改良は一旦終了させて、モデルの検討をやっていきたいと思います。
