Можно ли использовать все процессоры узла с Slurm? - PullRequest
0 голосов
/ 27 мая 2019

Я использую функцию R, которая не распараллеливается (она использует только один ЦП узла). Я использую несколько узлов, чтобы разделить вычисления, которые мне нужно сделать: функция используется на нескольких узлах, но используется только один процессор. Каждый узел имеет 32 ЦП. На данный момент, если я использую 10 узлов, я хотел бы знать, возможно ли разделить эти 10 заданий только на один узел, и каждое задание будет использовать 1 ЦП?

Я имею в виду: из 10 заданий на 10 узлах с 1 ЦП / узел, измените эту стратегию, чтобы получить эти 10 заданий на одном узле, используя 10 ЦП?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Если вам известно использование памяти вашей работой, вы можете отправить что-то подобное несколько раз:

!/bin/bash
#SBATCH --share
#SBATCH --mem=2000  # max. memory in MB
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1

./script_to_run

Опция --share указывает распределение работы для совместного использования ресурсов с другими работающими заданиями, когда это разрешенопо параметру общего доступа к разделам см. справочные страницы sbatch для получения подробной информации:

Общее поведение по умолчанию зависит от конфигурации системы, а общий параметр раздела имеет приоритет над параметром задания.

Если совместное использование разрешено настройками раздела, задания будут отправляться на один узел до тех пор, пока не будет исчерпан максимум памяти или ЦП.

0 голосов
/ 27 мая 2019

Сценарий, подобный этому, должен работать (при условии, что вы используете bash):

#!/bin/bash
#SBATCH -J JOB_NAME # job name
#SBATCH -N 1  # 1 Node cores/node)
#SBATCH -n 10 # 10 tasks

./job1 &
./job2 &
./job3 &
# ...

Это зарезервирует 1 узел с 10 задачами и выполнит задания параллельно. В зависимости от среды, в которой вы работаете, вам может потребоваться вызвать какой-нибудь инструмент-обертку для запуска двоичных файлов (и установить соответствие, если требуется).

...