意外に遅い? RTX4090 の fp64 性能 – ソフトウェア技術者(ときどき科学)のつぶやき (minosys.com)において、FP64 性能の話題を取り上げましたが、FP32 に変更しても計算時間が変わりませんでした。
minoru@mino11:~$ python3 cavity2d_torch32.py
start calculation
end calculation
69.0999818
mean solve_p: 0.0013539623714285713 , total: 47.38868299999999
mean evolve_uv: 0.0006386576285714285 , total: 22.353016999999998
minoru@mino11:~$ python3 cavity2d_torch64.py
start calculation
end calculation
70.0399457
mean solve_p: 0.0013612587142857143 , total: 47.644055
mean evolve_uv: 0.0006423244571428571 , total: 22.481355999999998
t
minoru@mino11:~$ python3 cavity2d_cpu.py
start calculation
end calculation
10.0454091
mean solve_p: 0.00019398897142857137 , total: 6.7896139999999985
mean evolve_uv: 0.00010279248571428571 , total: 3.597737
ということは、計算に時間がかかっているのではなく、メモリ移動に時間がかかっているということになります。特に変数 u, v はループがなく、直線的なコーディングになりますが、7倍の時間がかかっているので、メモリ移動がインパクトを与えていると考えてよいと思います。
時間があれば OpenCV の CUDA 実装と比較してみたいと思います。
どうやら格子サイズが原因のようです。
詳細は明日ポストします。