R编程 - 使用PBS在多节点linux集群上提交作业

CCA*_*CCA 10 linux parallel-processing r pbs

我在多节点Linux集群上运行R. 我想使用脚本或批处理模式在R上运行我的分析,而不使用MPI或snow等并行计算软件.

我知道这可以通过划分输入数据来完成,使得每个节点运行不同的数据部分.

我的问题是我该如何解决这个问题呢?我不确定如何编写脚本代码.一个例子非常有用!

到目前为止,我一直在使用PBS运行我的脚本,但它似乎只在一个节点上运行,因为R是一个单线程程序.因此,我需要弄清楚如何调整我的代码,以便将人工分配给所有节点.

这是我到目前为止所做的事情:

1)命令行:

> qsub myjobs.pbs
Run Code Online (Sandbox Code Playgroud)

2)myjobs.pbs:

> #!/bin/sh
> #PBS -l nodes=6:ppn=2
> #PBS -l walltime=00:05:00
> #PBS -l arch=x86_64
> 
> pbsdsh -v $PBS_O_WORKDIR/myscript.sh
Run Code Online (Sandbox Code Playgroud)

3)myscript.sh:

#!/bin/sh
cd $PBS_O_WORKDIR
R CMD BATCH --no-save my_script.R
Run Code Online (Sandbox Code Playgroud)

4)my_script.R:

> library(survival)
> ...
> write.table(test,"TESTER.csv",
> sep=",", row.names=F, quote=F)
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激!谢谢!

-CC

mbq*_*mbq 2

这更像是 PBS 的问题;我通常制作一个 R 脚本(#! 后面带有 Rscript 路径),并使其收集一个参数(使用commandArgs函数)来控制当前实例应该执行的“工作的一部分”。因为我使用multicore很多,所以通常只需要使用 3-4 个节点,所以我只提交一些使用每个可能的控制参数值调用此 R 脚本的作业。
另一方面,您的使用pbsdsh应该发挥其作用...然后 的值PBS_TASKNUM可以用作控制参数。

  • 这是一个有趣的建议。您能否与我们分享您使用“commandArgs”和“PBS”脚本的 Rscript?目前还不清楚如何去做。谢谢 (2认同)