gpt4 book ai didi

linux - Condor 的沙盒 R(在 Linux 上)

转载 作者:IT王子 更新时间:2023-10-29 00:41:25 24 4
gpt4 key购买 nike

我的大学运行一个 condor 计算网格(计算节点运行 Linux),我想用它在 R 中运行模拟。问题是网格上只有一些机器安装了 R。到目前为止,我看到了两个选项,但我不知道如何实现任何一个,所以我希望你能帮助我(记住我不是系统管理员,不能做太多改变设置计算节点):

1) 检查随我的 condor 提交文件发出的 ClassAds,要求在具有 /usr/bin/R 的节点上计算作业。

2) 将 R 及其所有依赖项打包到一个独立的目录中,该目录可以发送到计算节点,并且可以针对该目录运行我的模拟。我已经尝试了几个小时来做​​到这一点,但是 R 的 Linux 版本(与 OSX 和 Windows 版本不同)似乎针对分布在文件系统中的库运行,我想不出一种实用的方法来收集它们全部放入 R 可以找到它们的位置。

有什么想法吗?提前致谢。

最佳答案

最终对我有用的是建议的解决方案 (1)。在这里,我将讨论如何在我的 condor 提交文件和我的 worker shell 脚本中实现 (1)。

这是 shell 脚本。重要的变化是通过以下方式检查 R 是否安装在计算节点上:if [ -f/usr/bin/R ]。如果找到 R,我们沿着返回值 0 结束的路径前进。如果没有找到 R,我们返回 1(这就是行 exit 0exit 1 的含义)。

mkdir output
if [ -f /usr/bin/R ]
then
if $(uname -m |grep '64')
then
Rscript code/simulations-x86_64.r $*
else
Rscript code/simulations-i386.r $*
fi

tar -zcvf output/output-$1-$2.tgz2 output/*.csv
exit 0
else
exit 1
fi

现在神鹰提交文件。关键的变化是倒数第二行 (on_exit_remove = (ExitBySignal == False) && (ExitCode == 0))。它检查来自计算节点的每个作业的返回值——如果返回值不为零(即,如果在计算节点上未找到 R),则该作业将放回队列中以重新运行。否则,作业被视为已完成并从队列中移除。

universe = vanilla
log = logs/log_$(Cluster)_$(Process).log
error = logs/err_$(Cluster)_$(Process).err
output = logs/out_$(Cluster)_$(Process).out
executable = condor/worker.sh
arguments = $(Cluster) $(Process)
requirements = (Target.OpSys=="LINUX" && regexp("stat", Machine))
should_transfer_files = YES
when_to_transfer_output = ON_EXIT_OR_EVICT
transfer_input_files = code, R-libs, condor, seeds.csv
transfer_output_files = output
notification = Never
on_exit_remove = (ExitBySignal == False) && (ExitCode == 0)
queue 1800

关于linux - Condor 的沙盒 R(在 Linux 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14963107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com