TSUBAME3.0計算サービスのWebページはこちら

TSUBAME2.5からTSUBAME3.0へのデータ移行方法の資料はこちら

リスタート計算について教えてください。

 市販のプログラムの場合は、ほとんどこの機能がついています。マニュアルを参照ください。

自分でこの機能をプログラムに入れる場合、いくつか方法があります。
ここでは、処理時間を参照しながら指定時間を超過した場合にリスタート計算ができるようにしたプログラムサンプルです。

(sample20.fを参照してください)

      t0(1)=second()     <-- 開始時間をセット(処理の先頭)
       :
      ist=1
      ITAR=200
      Limit=9999
      iresin=0
      read(5,*) iresin,limitin  <-- 条件入力: iresin=1のときリスタート入力
      if (limitin.ne.0) Limit=limitin       : limitin=計算時間の上限      
!     ------------------- リスタート入力
      if(iresin.ne.0) then
         read(10) N,M,ITAR,IRESOUT,IRESIN,ADD,Limit,ist
         read(10) A,B,US
         ist=ist+1        : 処理済みの次から再開
         go to 50
      endif
!   -------------------------
        :
  50  DO K=ist,ITAR   <--- メインループ(粒度が大きい)
         :
        t0(2)=second()
        now = t0(2) - t0(1)        <-- 経過時間
!     ------------------ リスタートファイルの出力
        if (now.ge.limit) then     <-- 制限超過の場合
           rewind 10               <-- 複数回ある場合は必要
           write(10) N,M,ITAR,IRESOUT,IRESIN,ADD,Limit,K
           write(10) A,B,US
           write(6,*) ' TIME= ',now,' resart out '
           goto 100
        endif
!     ------------------------  : Kが処理済み
      ENDDO

実際に動かしてみます。(sample20)

最初にリスタート無し
~/tune> pgf95 -fastsse  -o sample20 sample20.f wclock.c
~/tune> ./sample20 < in_dat          <-- "0 0"
  TIME=     2.520773        719400028.4671783     
FORTRAN STOP

処理時間が2.5秒なので、上限1で動かしてみます。
~/tune> ./sample20 < in_dat          <-- "0 1"
  TIME=     1.006387      resart out 
FORTRAN STOP

リスタートファイルを出しているので、次はこれを入力します
~/tune> ./sample20 < in_dat          <-- "1 1"
  TIME=     1.006011      resart out 
FORTRAN STOP
リスタートを上書きしているので、もう一度実行します。
:~/tune> ./sample20 < in_dat
  TIME=    0.5993278        719400028.4671783     
FORTRAN STOP

リスタート無しと同じ結果を得ることができました。

TSUBAMEの場合は1日が上限ですから、23時間くらいをlimitに指定します。
実際のプログラムはデータ量がもっと多くて複雑です。処理内容を充分確認して機能を入れてください。