1

我正在提交使用qsub运行并行 R 的作业。我的目的是让 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解决吗?

非常感谢

4

2 回答 2

1

“我怎样才能防止其他用户使用其他 4 核?我喜欢以某种方式掩盖我的工作是使用 8 核和 4 核空闲。”

也许一个简单的解决方法是在其他 4 个上发送一个“睡眠”工作?虽然看起来很hackish!(an 警告,我的 PBS 生锈了!)

于 2011-01-03T19:41:53.497 回答
0

为什么不执行以下操作 -

向 PBS 询问 ppn=4,另外,询问节点上的所有内存,即

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

这在您的设置中可能是不可能的。

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

于 2011-03-10T10:04:25.917 回答