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

HTCondor output files: obtain created directory

我正在使用 HTcondor 生成一些数据(txt、png)。通过 运行ning 我的程序,它在 .sub 文件旁边创建了一个名为数据集的目录,数据集存储在该目录中。不幸的是,Condor 完成后并没有将创建的数据还给我。换句话说,我的目标是在 .sub 文件旁边的 "Datasets" 子文件夹中获取创建的数据。

我试过: 1)不要将数据放在数据集子文件夹下,我按想法获得了它们。然而,这不是一个顺利的解决方案,因为我生成了大约 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,但由于我必须 运行 数百个作业,所以我不想事后解压缩所有这些文件。

我希望有人能提出解决此问题的好主意。

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

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

并在您的 Condor 提交脚本中输入:

executable    = run.exe

但是,如果您不想这样做,并且如果 HTCondor 使用像 AFS 这样的公共共享 space,您可以简单地复制整个目录:

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

另一种选择是定义一个 initialdir,如末尾所述:https://research.cs.wisc.edu/htcondor/manual/quickstart.html

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

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

总的来说,这份文件对初学者非常有用。