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

标签 linux r parallel-processing pbs

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

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

我的问题是我该如何解决这个问题?我不确定我应该如何编写我的脚本。一个例子会很有帮助!

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

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

1)命令行:

> qsub myjobs.pbs

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

3) myscript.sh:

#!/bin/sh
cd $PBS_O_WORKDIR
R CMD BATCH --no-save my_script.R

4) my_script.R:

> library(survival)
> ...
> write.table(test,"TESTER.csv",
> sep=",", row.names=F, quote=F)

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

-CC

最佳答案

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

关于linux - R 编程 - 使用 PBS 在多节点 linux 集群上提交作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3144802/

相关文章:

r - 如何将dplyr中的动态列名传递给自定义函数?

r - 如何反转R中模式中数据帧的顺序

java - Java并行流的性能影响

r - 使用 R 并行加速 Bootstrap

linux - Mono/Ubuntu 中的 ReadProcessMemory Win32API?

Linux、调试、跟踪

linux - 使用vmware_vm_shell模块使用ansible配置Linux VM时变成su?

linux - Qt Creator 为 Raspberry Pi 2 进行交叉编译和远程部署的正确设置 - 为错误的架构生成二进制文件

r - 如何在检测到特定字符串后使用过滤器和 dplyr 删除数据帧行

concurrency - 并行异步任务不同时执行