COMP

ILE Top Page >> 高性能計算機室 >>CMC関連 >>ジョブ投入など >>残り時間を採取する方法 

 

CMCノード(SX8RとSX9)で残り時間をプログラム中から採取する方法


注意)システムに負荷を与えますので使用する場合は十分注意してください

■ CMCノード(SX8RとSX9)で残り時間をプログラム中から採取する方法

CMCノード(SX8R&SX9)でジョブを実行させたときに、 NQSII ジョブ内のプログラムから残りElapse時間を取得するためのライブラリ 関数が使えるようになりましたので、お知らせいたします。 核融合研のSX向けに提供されていたライブラリを、核融合研の 了解もえて、移植していただいたものです。

NQSの運用形態が異なりますので、ILEノードとレーザー研のSTARS9システム では利用できません。該当箇所をコメントアウトして、 再コンパイルしていただく必要がありますので、ご注意ください。(※注意1)
eremain による残り Elapse 時間の取得は、NQSII へ問い合わせを行う為、 取得に数秒掛かりますので、短い時間間隔での呼び出しは行わないようご 注意願います。
以下のプログラムの例のように、プログラムの最初で一回よびだし、 あとは、ETIMEでエラプス時間を使って判断いただくのがよいと思います。


--[形式]-------

<Fortranの場合>
 integer*8 time
 call eremain(time)

<Cの場合>
 int eremain( *long )


--[リンク方法]-------

(SX-8R用)
sxf90 -cfsx8 -o sample.lm sample.f90 -leremain(※注意2)

(SX-9用)
sxf90 -cfsx9 -o sample.lm sample.f90 -leremain


--[使用例]-------

sample.f90
------------------------------------------------------
integer*8 itime
real(8) st,nt,nt2,remtime

call etime(st)
call eremain(itime)
remtime=itime

write(6,*) " st = ",st
write(6,*) " itime = ",itime

【計算部分】

call etime(nt)
nt2 = remtime-(nt-st)

(nt2がほぼ残り時間(秒)ですが、多少の誤差はありますので ご注意ください)

------------------------------------------------------


いつも24時間のキューにしか投入しないという場合は、この関数を使われる 必要はないと思いますが、120時間のキューも使うのでというような場合には 便利かと思います。上記にも書きましたように、システムに負荷がかかります ので、使用には、注意が必要です。不明点などは、お問い合わせください。

(※注意1)
 ILEノードで実行した場合、以下のようなエラーが出て、戻り値が0になってしまいます。
NQSconnect: [BSV ELICENSE] nqsapi license was exceeded.

(※注意2)
-leremainはsxf90の一番後ろで指定するとうまくいきました(2012.7.11 長友先生)

使用感や、他のノウハウなど提供いただけたらありがたいです。

go to top

 


Last update: 2012-7-13 Y.Fukuda