HTCondor输出文件:获取创建的目录

时间:2017-02-23 15:28:53

标签: python grid condor

我正在使用HTcondor生成一些数据(txt,png)。通过运行我的程序,它会在.sub文件旁边创建一个目录,名为datasets,数据集存储在该目录中。不幸的是,condor在完成后并没有回复这个创建的数据。换句话说,我的目标是将创建的数据放在"数据集" .sub文件旁边的子文件夹。

我试过了: 1)不要将数据放在数据集子文件夹下,我按照想法获得它们。 Howerver,这不是一个平滑的解决方案,因为我生成了100个文件,现在与.sub文件和所有其他文件混合在一起。

2)我还试图在子文件中设置它,导致这个:

notification = Always
should_transfer_files = YES
RunAsOwner = True
When_To_Transfer_Output = ON_EXIT_OR_EVICT
getenv = True

transfer_input_files = main.py
transfer_output_files = Datasets

universe      = vanilla
log           = log/test-$(Cluster).log
error         = log/test-$(Cluster)-$(Process).err
output        = log/test-$(Cluster)-$(Process).log
executable    = Simulation.bat

queue

这次我收到错误,找不到数据集。已经检查了拼写。

3)另一个选择是,将所有内容打包成zip,但由于我必须运行数百个作业,所以我不想在之后解压缩所有这些文件。

我希望有人能提出如何解决这个问题的好主意。

1 个答案:

答案 0 :(得分:1)

仅在此处记录:HTCondor不会在运行结束或其内容时传送创建的目录。取回内容的最佳方法是编写一个包装脚本,该脚本将运行您的可执行文件,然后在工作目录的根目录处压缩创建的目录。该文件将与所有其他文件一起传输。例如,创建run.exe:

./Simulation.bat
tar zcf Datasets.tar.gz Datasets

,并在您的秃鹰提交脚本中输入:

executable    = run.exe

但是,如果您不想执行此操作,并且HTCondor使用的是AFS之类的公共共享空间,则可以简单地将整个目录复制出来:

./Simulation.bat
cp -r Datasets <AFS location>

另一种方法是定义一个初始目录,如https://research.cs.wisc.edu/htcondor/manual/quickstart.html

末尾所述。

但是必须手动创建目录结构。

另外,环顾pg。 65 of:https://indico.cern.ch/event/611296/contributions/2604376/attachments/1471164/2276521/TannenbaumT_UserTutorial.pdf

通常,对于初学者来说,该文档非常有用。