2011-01-03 2 views
1

Я отправляю задание с использованием qsub, которое выполняется параллельно R. Мой намерение состоит в том, чтобы программа R работала на 4 разных ядрах, а не на 8 ядрах. Вот некоторые из моих настроек в файле PBS:Отправка R-заданий с использованием 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

Почему бы не сделать следующий -

спросить PBS для ППН = 4, дополнительно, попросить всех памяти на узле, т.е.

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

Это может быть невозможно при настройке.

Я не знаю, как R распараллеливание, но если это OpenMP можно определенно попросить 8 ядер, но установить OMP_NUM_THREADS 4

+0

Я могу определенно установить мем = 31944900k в системе. Я не знаю, где добавить ppn = 4 дополнительно. Является ли он на той же задаче PBS или представляет другую отдельную работу с ppn = 4? – Tony

+0

Я не уверен, что понимаю ваш вопрос. Мое предложение состоит в том, что вы заменяете свою линию на мою, то, что она делает, это запрашивать один узел, 4 процессора на узел и общую память для задания PBS 31944900k. Это не дополнительная работа. –

1

«Как я могу запретить другим пользователям использовать другие 4 ядра? Мне нравится, чтобы замаскировать как-то, что моя работа использует 8 ядер с 4 ядрами на холостом ходу.»

Может быть, простой способ обойти это, чтобы отправить работу «сна» на другую 4? Кажется, хаки! (ANS предупреждение, мой PBS ржавый!)