pbspro

pdfファイルhttps://www.pbsworks.com/pdfs/PBSUserGuide18.2.pdf
「2.1.5 Scratch Space for Jobs」に

2.1.5 Scratch Space for Jobs
When PBS runs your job, it creates a temporary scratch directory for the job on each execution host.
If your administrator has not specified a temporary directory, the root of the temporary directory is /tmp.
Your administrator can specify a root for the temporary directory on each execution host using the 
$tmpdir MoM parameter. PBS creates the PBS_TMPDIR environment variable, and sets it to the full path to 
the temporary scratch directory.
 
Under Windows, PBS creates the temporary directory and sets TMP to the value of the Windows %PBS_TMPDIR%
environment variable. If your administrator has not specified a temporary directory, PBS creates the temporary directory
under either \winnt\temp or \windows\temp.
 
PBS removes the directory when the job is finished. The location of the temporary directory is set by PBS; you should
not set PBS_TMPDIR.
 
Your job script can access the scratch space. For example:
  Linux:
    cd $PBS_TMPDIR
 
  Windows:
    cd %PBS_TMPDIR%
 
For scratch space for MPI jobs, see section 5.2.3, “Caveats for Using MPIs”, on page 82.

とある。

relionとかで 「scratch_dir」とスクラッチの場所を指定できるのは嬉しいが、
計算が途中で止まったり、qdelとかで計算を中止すると、そのスクラッチ場所にデータが残ってしまう。。。

残ったままだと、他の方が計算するときにスクラッチ領域が圧迫する。
回避策としては、同じスクラッチフォルダ/ファイルを指定する。そうすれば、残ったデータは上書きされるので大丈夫。

っが、一台のマシンを複数人で使用するとなると、、非常にまずい。

自動で消し去るにはどうしたらいいのか?
っで、このPBS_TMPDIRを検討してみる

計算ノードの設定ファイルを修正してTMPDIRを有効にする

具体的には「/var/lib/pbs/mom_priv/config」に「$tmpdir <スクラッチ場所>」を追加します。

[root@n1 ~]# vi /var/lib/pbs/mom_priv/config
$clienthost pbspro.sybyl.local
$restrict_user_maxsysid 999
$tmpdir /scratch               <--- これを追加
 
[root@n1 ~]#

その後、pbsを再起動させます。

[root@n1 ~]# systemctl restart pbs

テスト

簡単なテストを行います。

#!/bin/sh
#PBS -q bio
#PBS -l nodes=1:ppn=4
#PBS -j oe
 
env

なジョブファイルを用意して、qsub実行すると、結果ファイルにはqsub時の環境変数が列挙される。
その中に
「TMPDIR=/scratch/pbs.14.pbspro」
と明記される。

PBS_TMPDIRではないのだが、、、、まあいいや

relionで使ってみる

relionで使用するなら、「Copy particles to scratch directory:」の値を「$TMPDIR」とします。
2019y05m11d_225743593.png
そうすると、コマンドは下記の様に発行される。

 *** The command is:
`which relion_refine` --continue Class2D/job008/run_it025_optimiser.star --o Class2D/job008/run_ct25 \
--dont_combine_weights_via_disc --scratch_dir $TMPDIR --pool 30 --pad 2  --iter 25 --tau2_fudge 2 \
--particle_diameter 200 --oversampling 1 --psi_step 12 --offset_range 5 --offset_step 2 --j 6 --gpu "0:1:2:3"

一応「--scratch_dir $TMPDIR」となっている。
このまま実行すると「/scratch/pbs.15.pbspro/relion_volatile/」を掘って、そこに「particles.mrcs」を置いてくれます。

途中で、ジョブをqdelで停止させると、
「/scratch/pbs.15.pbspro」
から
「/scratch/pbs_remove.15.pbspro」
に代わって、
このフォルダが削除される。

一応目論みどおりかな。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2019-05-12 (日) 07:20:06 (163d)