获取myscript.R
使用作业调度程序在集群从节点上运行(特别是 PBS)
目前,我使用以下命令将 R 脚本提交到从节点
qsub -S /bin/bash -p -1 -cwd -pe mpich 1 -j y -o output.log ./myscript.R
R 中是否有允许我在头节点上运行 myscript.R 并将单个任务发送到从节点的函数?就像是:
foreach(i=c('file1.csv', 'file2.csv', pbsoptions = list()) %do% read.csv(i)
更新: qsub 命令的替代解决方案是删除
#/usr/bin/Rscript
来自 myscript.R
的第一行并直接调用它,正如@Josh 指出的那样qsub -S /usr/bin/Rscript -p -1 -cwd -pe mpich 1 -j y -o output.log myscript.R
最佳答案
如果您想从 R 脚本中提交作业,我建议您查看“BatchJobs”包。这是描述文件中的引用:
Provides Map, Reduce and Filter variants to generate jobs on batch computing systems like PBS/Torque, LSF, SLURM and Sun Grid Engine.
BatchJobs 似乎比以前的类似包(例如 Rsge 和 Rlsf)更复杂。有注册、提交和检索作业结果的功能。这是一个简单的例子:
library(BatchJobs)
reg <- makeRegistry(id='test')
batchMap(reg, sqrt, x=1:10)
submitJobs(reg)
y <- loadResults(reg)
您需要配置 BatchJobs 以使用您的批处理排队系统。 submitJobs“资源”参数可用于为作业请求适当的资源。
如果您的集群不允许长时间运行的作业,或者它严重限制了长时间运行的作业数量,则此方法非常有用。 BatchJobs 允许您通过将您的工作分解为多个工作同时隐藏与手动执行相关的大部分工作来绕过这些限制。
文档和示例位于 the project website .
关于r - 从 R 脚本中向从节点提交作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13142882/