我正在使用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,但由于我必须运行数百个作业,所以我不想在之后解压缩所有这些文件。
我希望有人能提出如何解决这个问题的好主意。
答案 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
通常,对于初学者来说,该文档非常有用。