issp-center-dev / HPhi

Quantum Lattice Model Simulator Package
https://www.pasums.issp.u-tokyo.ac.jp/hphi/en/
GNU General Public License v3.0
82 stars 25 forks source link

sz関数のOpenMP化できていない部分の並列化 #123

Closed mitsuaki1987 closed 2 years ago

mitsuaki1987 commented 2 years ago

sz関数(sz.c)の中で「this part can not be parallelized」と書いてある部分がボトルネックになる場合があり、並列化しました。 背景 ヘリウム原子の4fまでを基底としてとり、1体積分・2体積分を計算して厳密体格化する(full-CIに相当)という目的

30軌道×2スピンに2電子入れるということになるが、 szの計算のところでハッカーの愉しみ法を使ってもそこがボトルネックになることが分かった(具体的に言うと上記のコメントが書かれている箇所)。 そこをOpenMP化しました。

改良前 ファイル入力 1:27 ヒルベルト次元とリストの計算 8:54 対角化 2:47 合計 13:11

改良後 ファイル入力 1:26 ヒルベルト次元とリストの計算 0:42 対角化 2:44
合計 4:55