【问题标题】:HTCondor output files: obtain created directoryHTCondor 输出文件:获取创建的目录
【发布时间】:2019-03-08 04:24:43
【问题描述】:

我正在使用 HTcondor 生成一些数据(txt、png)。通过运行我的程序,它会在 .sub 文件旁边创建一个名为 datasets 的目录,其中存储了数据集。不幸的是,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,但由于我必须运行数百个作业,因此我不想在之后解压缩所有这些文件。

我希望有人想出一个好主意来解决这个问题。

【问题讨论】:

  • 文件夹名称是“Datasets”还是“datasets”?
  • 文件夹名称后不需要斜杠吗?

标签: python grid condor


【解决方案1】:

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

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

然后在你的 condor 提交脚本中输入:

executable    = run.exe

但是,如果您不想这样做,并且如果 HTCondor 使用 AFS 等公共共享空间,您可以简单地将整个目录复制出来:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 2012-03-07
    • 1970-01-01
    • 2012-09-13
    相关资源
    最近更新 更多