如何正确指向PBS脚本中的数组/作业文件?

时间:2018-05-22 19:49:14

标签: python unix pbs

事先,我真诚地为这样一个可能已经得到回答的基本问题道歉。我很感谢你的帮助,或者指点我现有的答案。

我试图通过在PSB脚本中设置数组作业来运行1000个python脚本超过1000个数据文件。每个脚本都显式调用特定的数据文件;这是硬连线。这里很有挑战性,无需解释为什么需要单独维护python脚本和数据文件。

我有python文件名1.py,2.py,... 1000.py.这些没有存储在我的主目录中,我认为这是现在的问题。

我在PBS脚本上尝试了很多变化无济于事,但我认为我比今天早上更接近。

无论如何,这就是我现在所拥有的:

#! /bin/bash
#PBS -j oe
#PBS -o TEST-ARRAY.txt    
#PBS -N TEST-ARRAY    
#PBS -l nodes=1:ppn=1
#PSB -t 1-1000%100
#PBS -q long  

file='SOME/DIRECTORY/'${PBS_ARRAYID}'.py'
python $file

不幸的是,我收到了错误

python: can't open file 'SOME/DIRECTORY/.py': [Errno 2] No such file or directory

因此,似乎我的文件变量设置存在缺陷,并且无法为文件名字符串插入作业数组编号。但是,我尝试过使用和不使用单引号,以及其他一些没有运气的逻辑事物。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

似乎我无法通过

 ${PBS_ARRAYID}'.py'

到python。我应该注意到其他模型的数组是

 somescript ${PBS_ARRAYID}.file

所有作业中的脚本相同且数据文件不同。这不是我的情况。

我通过制作许多调度程序文件以新手的方式解决了这个问题。是的,1000个工作中的每个工作一个......然后在所有工作上运行qsub命令来创建数组。所以,我的PBS脚本中的最后一行看起来像这样:

 qsub ${PBS_ARRAYID}.sh

我知道我可以在不必实际制作1000个脚本的情况下循环调度程序脚本,但我可以让它工作得非常正确并稍后再试一次。