【发布时间】:2012-10-30 15:55:27
【问题描述】:
使用作业调度程序让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 命令的替代解决方案是从myscript.R 的第一行中删除#/usr/bin/Rscript 并直接调用它,正如@Josh 指出的那样
qsub -S /usr/bin/Rscript -p -1 -cwd -pe mpich 1 -j y -o output.log myscript.R
【问题讨论】:
-
您可以编写一个 R 函数来构造对 qsub 的系统调用(即您将在 bash 命令行中键入的内容),然后使用
system()执行它们。您可能希望也可能不想让 qsub 调用Rscript作为让 R 执行您的myscript.R的一种方式。 -
@JoshO'Brien 在我的原始示例中这是一个很好的观点,
myscript.R的第一行称为 Rscript;但我可以删除它并在 qsub 命令中将/bin/bash替换为/usr/bin/Rscript...qsub -S /usr/bin/Rscript ...,类似的功能但更简洁,因为它不调用bash,然后调用Rscript。 -
您使用的 qsub 参数表明您使用的是 SGE 而不是 PBS/Torque。
标签: r parallel-processing hpc qsub torque