issp-center-dev / dsqss

DSQSS -- Discrete Space Quantum System Solver
http://www.pasums.issp.u-tokyo.ac.jp/dsqss/
GNU General Public License v3.0
11 stars 3 forks source link

計算が終わらない #26

Closed takeokato719 closed 3 years ago

takeokato719 commented 3 years ago

dlaを用いて、2次元ハイゼンベルク模型(サイズ40x40, T=0.2)を128並列で回したら、計算が終わらなくなりました。 症状としては、一回終わらないパターンにはいると、計算が決して終わりません。

途中、ループが閉じないで永遠と系をさまよっているということはありますでしょうか?

k-yoshimi commented 3 years ago

@takeokato719 ご報告ありがとうございます。 今の症状だけだと解析できませんので、以下の情報を提供していただけるでしょうか?

使用しているDSQSSのバージョン 実行に使用した入力ファイルとその出力

Takuto36 commented 3 years ago

プログラムを回した者です。

DSQSSのバージョンは2.0.3です。 添付したmake_jobscript.pyを実行しジョブを生成してスパコンに投げました。 (指定したパーティションのみ”パーティション名”に変えています。) L=38の場合は8分程度で添付したアウトプットファイルが出力されたのですが L=40の場合は3日と16時間回しても計算が終わらなかった為、途中でジョブを切りました。

実行に使用したファイルはインデントを含めたコードの貼り方が分からなかった為、 以下のグーグルドライブにあげさせていただきました。 よろしくお願いいたします。

https://drive.google.com/drive/folders/13NCWWvsxyJHwLBkvDfeYVmeWspw32RTB?usp=sharing

Takuto36 commented 3 years ago

追加で1点補足です。 計算機による問題かを把握する為に 前回送らせていただいたプログラムをベースに ①クラスター計算機 ②スーパーコンピューター の2つで8並列にして計算プログラムを投げてみたところ L=40では、①②のどちらでも計算はエラー無しで終了するのですが (①は38秒、②は5分12秒で計算が終了。) アウトプットファイルは出力されませんでした。 ①②共にDSQSSのバージョンは2.0.3です。 お手数をおかけしますが、よろしくお願いいたします。

takeokato719 commented 3 years ago

今ohtakaで確認したところ、L=40では以下のようなエラーメッセージがでてますね。

>>> The program is being run with MPI mode.( N_PROC = 8 ) 

+++++++++ input data +++++++++
RUNTYPE = 0

NSET    = 10
NTHERM  = 10000
NMCS    = 1000
SEED    = 12132400
NVERMAX = 10000
NSEGMAX = 10000

BETA    = 5
NTAU    = 256
ALGFILE = algorithm.xml
LATFILE = lattice_L40.xml
WVFILE = 
DISPFILE = 
OUTFILE = res_seed0_M1_L40_T0.2_nset10_nthermal10000_ndecor1000_nmcs1000.dat
CFOUTFILE  = cf.dat
SFOUTFILE  = sf.dat
CKOUTFILE  = ck.dat
SIMULATIONTIME   = 0
+++++++++ input data +++++++++
Determining hyperparameter NCYC : 9
Start main calculation.
Pool> ERROR. Attempt to extract from an empty pool.
Pool> ERROR. Attempt to extract from an empty pool.
Pool> ERROR. Attempt to extract from an empty pool.
Pool> ERROR. Attempt to extract from an empty pool.
Pool> ERROR. Attempt to extract from an empty pool.
Pool> ERROR. Attempt to extract from an empty pool.
.....
yomichi commented 3 years ago

対応遅れてすみません。 最後のログにあるエラーメッセージですが、 vertex などのオブジェクトとしてあらかじめ確保してあるものを使い切ってしまっているようです。 MPI 並列したときに計算が終わらないのは、これによっていくつかのプロセスが終了してしまっていて、最後にモンテカルロ平均のために merge するところですでに消えてしまった待ち人を待っているために思えます。

というわけで、 parameter の nvermaxnsegmax を増やしてみてください。

(ちょくちょく引っかかる人がいるので faq への追加というのも含めていい加減なにか考えます)

k-yoshimi commented 3 years ago

@takeokato719 @Takuto36 これは上の回答で解決したのでしょうか?解決したようでしたら、closeをお願いします。

takeokato719 commented 3 years ago

解決していますので、closeします。