2017-01-15 12 views
0

У меня есть кластер Sun Grid Engine на AWS EC2, который я настроил с помощью Starcluster. Каждый узел имеет 4 процессора и 16G RAM. Я хотел бы представить массив задач, который будет отправлять 2 задания за раз, каждый из которых использует полный узел (все 4 процессора и 16G RAM). Однако я не хочу создавать параллельную среду с флагами, такими как -pe smp 4, потому что эмпирически это существенно снижает производительность. Есть ли флаг для qsub, который говорит что-то вроде «отправить задание на узел с 16 ГБ памяти, который не был назначен какой-либо другой работе»? Флаги я в курсе являютсяЗапрос памяти, которая еще не выделена в SGE с qsub

-l mem_free = 16г - отправить задание на узел, если он имеет 16g свободный в данный момент -l h_vmem = 16g - убить работу, если использование памяти идет выше 16g не

Ни из этих работ для моей проблемы. С mem_free = 16g, поскольку задания изначально используют память медленно, qsub распределяет все задачи на 2 узла, а затем все они исчерпывают память одновременно.

ответ

1

Я делаю это с ручной переменной. Вот StarCluster code to it.

Таким образом, в основном он создает переменную «da_mem_gb». Каждая машина имеет начальное значение, равное ее ОЗУ. Затем задания запрашивают, сколько ОЗУ им нужно использовать эту переменную. Если им нужна вся оперативная память машины, одно задание сразу назначается на этот компьютер.

+0

Это потрясающе, спасибо! – dylkot