我正在使用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解决吗?
非常感谢
答案 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