使用PBS提交R作业

时间:2011-01-03 13:50:37

标签: r parallel-processing pbs

我正在使用qsub提交一个运行并行化R. My的作业 目的是让R程序在4个不同的内核而不是8个内核上运行。以下是PBS文件中的一些设置:

    #PBS -l nodes=1:ppn=4

....
time  R --no-save < program1.R > program1.log

我发出命令ta job_id,我看到列出了4个核心。但是,该作业占用大量内存(31944900k used vs 32949628k total)。如果我使用8个内核,由于内存限制,作业就会挂起。

top - 21:03:53 up 77 days, 11:54,  0 users,  load average: 3.99, 3.75, 3.37
Tasks: 207 total,   5 running, 202 sleeping,   0 stopped,   0 zombie
Cpu(s): 30.4%us,  1.6%sy,  0.0%ni, 66.8%id,  0.0%wa,  0.0%hi,  1.2%si,  0.0%st
Mem:  32949628k total, 31944900k used,  1004728k free,   269812k buffers
Swap:  2097136k total,     8360k used,  2088776k free,  6030856k cached

发出命令ta job_id

时,这是一个快照
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1794 x     25   0 6247m 6.0g 1780 R 99.2 19.1   8:14.37 R
 1795 x     25   0 6332m 6.1g 1780 R 99.2 19.4   8:14.37 R
 1796 x     25   0 6242m 6.0g 1784 R 99.2 19.1   8:14.37 R
 1797 x     25   0 6322m 6.1g 1780 R 99.2 19.4   8:14.33 R
 1714 x     18   0 65932 1504 1248 S  0.0  0.0   0:00.00 bash
 1761 x     18   0 63840 1244 1052 S  0.0  0.0   0:00.00 20016.hpc
 1783 x     18   0  133m 7096 1128 S  0.0  0.0   0:00.00 python
 1786 x     18   0  137m  46m 2688 S  0.0  0.1   0:02.06 R

如何阻止其他用户使用其他4个内核?我喜欢以某种方式掩盖我的工作是使用8个核心,4个核心空闲。

有人可以帮我解决这个问题吗?这可以用pbs解决吗?

非常感谢

2 个答案:

答案 0 :(得分:1)

“如何阻止其他用户使用其他4个内核?我喜欢以某种方式掩盖我的工作是使用8个内核,4个内核闲置。”

也许一个简单的方法就是在另外4个上发送'睡眠'工作?虽然看起来很破旧! (警告,我的PBS生锈了!)

答案 1 :(得分:0)

为什么不这样做 -

请求PBS获取ppn = 4,此外,请求节点上的所有内存,即

#PBS -l nodes=1:ppn=4 -l mem=31944900k 

您的设置可能无法实现。

我不确定R是如何并行化的,但是如果它是OPENMP你绝对可以要求8个内核但是将OMP_NUM_THREADS设置为4