【问题标题】:How do I properly point to array/job files within a PBS script?如何正确指向 PBS 脚本中的数组/作业文件?
【发布时间】:2018-05-22 19:49:13
【问题描述】:

在此之前,对于这样一个可能已经回答的基本问题,我深表歉意。感谢您的帮助或为我指明现有答案的方向。

我正在尝试通过在 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

所以,看来我的文件变量设置有缺陷,无法为文件名字符串插入作业数组号。但是,我尝试过使用和不使用单引号,以及其他一些没有运气的逻辑事情。

提前感谢您的帮助。

【问题讨论】:

  • 您是否尝试将“SOME/DIRECTORY/”更改为文件所在的实际目录? “SOME/DIRECTORY”只是一个占位符,需要改成真实路径。
  • 是的,当然。我在这里只使用了“SOME/DIRECTORY/”,因为实际名称很长而且视觉上很可怕。

标签: python unix pbs


【解决方案1】:

好像过不了

 ${PBS_ARRAYID}'.py'

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

 somescript ${PBS_ARRAYID}.file

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

我通过制作许多调度程序文件以新手方式解决了这个问题。是的,1000 个作业中的每一个都有一个……然后对所有作业运行 qsub 命令以创建数组。因此,我的 PBS 脚本中的最后一行如下所示:

 qsub ${PBS_ARRAYID}.sh

我知道我可以循环访问调度程序脚本而不必实际制作 1000 个脚本,但我可以让它正常工作,稍后再试一次。

【讨论】:

  • 实际上,我收回了这一点。问题似乎是我们服务器上的“${PBS_ARRAYID}”。那好吧。所以,这里忽略我的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多