5

Я использую SLURM в качестве планировщика заданий и очереди для небольшого кластера (один узел с 64 ядрами). Для отправки пакетной работы я использую:

> sbatch run.sh

Где run.sh выглядит так:

#! /bin/bash

#SBATCH --ntasks=4

export OMP_THREAD_LIMIT=4
/home/Benchmarks/Graph500/omp-csr/omp-csr -s 23

Однако, когда я отправляю 2 пакетных задания одно за другим, я получаю:

> squeue
     JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
        29     debug   run.sh anonymou PD       0:00      1 (Resources)
        28     debug   run.sh anonymou  R       1:13      1 localhost

Каждое задание требует только 4 ядра, поэтому оба задания должны выполняться. Возможно, я неправильно настроил контроллер slurm, соответствующие строки из /etc/slurm.conf:

# COMPUTE NODES
NodeName=localhost CPUs=64 Sockets=4 CoresPerSocket=8 ThreadsPerCore=2 State=UNKNOWN
PartitionName=debug Nodes=localhost Default=YES MaxTime=INFINITE State=UP

Буду благодарен за любую помощь / подсказку.

1 ответ1

6

SLURM по умолчанию не разрешает совместное использование ресурсов, поэтому, когда задание выполняется на 1 узле, остальные задания ожидают его завершения, прежде чем выполнять какие-либо другие задания на том же узле.

SLURM должен быть настроен для совместного использования ресурсов, это должно быть довольно просто и хорошо документировано.

Пример того, что добавить в файл slurm.conf (обычно находится в /etc /slurm):

SelectType=select/cons_res
SelectTypeParameters=
DefMemPerCPU=

Это позволило бы совместно использовать ресурсы узла с помощью плагина con_res .

Плагин select/con_res предоставляет широкий спектр параметров (SelectTypeParameters). Наиболее выдающиеся из них перечислены ниже (полный список параметров см. На странице руководства slurm.conf):

CR_CPU: ЦП являются расходуемым ресурсом.
CR_CPU_Memory: добавляет память как расходуемую в CR_CPU.
Ядра CR_Core: Ядра являются потребляемым ресурсом.
CR_Core_Memory: добавляет память как расходуемую в CR_CPU_Memory.

После того, как это сделано, и вы выбрали тип ресурса, который вы хотите использовать в качестве расходного материала в SLURM, все, что вам нужно сделать, это добавить параметр shared=yes в вашу очередь по умолчанию и выполнить команду scontrol reconfigure на узле, который используется как контроллер.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .