SLURM srun не запускает задания MPI параллельно Ubuntu 18 - PullRequest
0 голосов
/ 12 марта 2019

Я не могу запустить задания MPI, используя slurm. Любая помощь или совет?

Запуск локального домашнего мини-кластера для использования всех моих процессоров. Я использую 18.04 и установил стандартные пакеты openmpi и slurm. У меня есть небольшая тестовая программа, которую я использую, чтобы показать, на каких ядрах я работаю. Когда я бегу с mpirun, я получаю:

$ mpirun -N 3 MPI_Hello
Process 1 on ubuntu18.davidcarter.ca, out of 3
Process 2 on ubuntu18.davidcarter.ca, out of 3
Process 0 on ubuntu18.davidcarter.ca, out of 3

Когда я бегу с srun, я получаю:

$ srun -n 3 MPI_Hello
Process 0 on ubuntu18.davidcarter.ca, out of 1
Process 0 on ubuntu18.davidcarter.ca, out of 1
Process 0 on ubuntu18.davidcarter.ca, out of 1

Я делал это много раз с разными аргументами (--mpi = pmi2, --mpi = openmpi и т. Д.) И могу подтвердить, что вместо выполнения задания с n параллельными потоками он выполняет n однопоточных заданий. n раз работы с 1 / n раз ожидаемых ресурсов на задание.

Это моя тестовая программа:

#include <stdio.h>
#include <mpi.h>

int main(int argc, char** argv) {
        int numprocs, rank, namelen;
        char processor_name[MPI_MAX_PROCESSOR_NAME];

        MPI_Init (&argc, &argv);
        MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
        MPI_Comm_rank(MPI_COMM_WORLD, &rank);
        MPI_Get_processor_name(processor_name, &namelen);

        printf("Process %d on %s, out of %d\n", rank, processor_name, numprocs);

        MPI_Finalize();
}

Это мой /etc/slurm-llnl/slurm.conf:

# slurm.conf file generated by configurator easy.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
ControlMachine=ubuntu18.davidcarter.ca
#ControlAddr=
#
#MailProg=/bin/mail
MpiDefault=none
MpiParams=ports=12000-12100
ProctrackType=proctrack/pgid
ReturnToService=1
SlurmctldPidFile=/var/run/slurm-llnl/slurmctld.pid
#SlurmctldPort=6817
SlurmdPidFile=/var/run/slurm-llnl/slurmd.pid
#SlurmdPort=6818
SlurmdSpoolDir=/var/lib/slurm-llnl/slurmd
SlurmUser=slurm
#SlurmdUser=root
StateSaveLocation=/var/lib/slurm-llnl/slurmctld
SwitchType=switch/none
TaskPlugin=task/affinity
#
#
# TIMERS
#KillWait=30
#MinJobAge=300
#SlurmctldTimeout=120
#SlurmdTimeout=300
#
#
# SCHEDULING
FastSchedule=1
SchedulerType=sched/backfill
#SchedulerPort=7321
SelectType=select/linear
#
#
# LOGGING AND ACCOUNTING
AccountingStorageType=accounting_storage/none
ClusterName=cluster
#JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/linux
#SlurmctldDebug=3
SlurmctldLogFile=/var/log/slurm-llnl/slurmctld.log
#SlurmdDebug=3
SlurmdLogFile=/var/log/slurm-llnl/slurmd.log
#
#
# COMPUTE NODES
#NodeName=compute[1-4] Sockets=1 CoresPerSocket=2 RealMemory=1900 State=UNKNOWN
#NodeName=compute[1-2] Sockets=1 CoresPerSocket=4 RealMemory=3800 State=UNKNOWN
NodeName=compute1 Sockets=8 CoresPerSocket=1 RealMemory=7900 State=UNKNOWN
NodeName=ubuntu18 Sockets=1 CoresPerSocket=3 RealMemory=7900 State=UNKNOWN

#
# Partitions
PartitionName=debug Nodes=ubuntu18 Default=YES MaxTime=INFINITE State=UP OverSubscribe=NO
PartitionName=batch Nodes=compute1 Default=NO MaxTime=INFINITE State=UP OverSubscribe=NO
PartitionName=prod Nodes=compute1,ubuntu18 Default=NO MaxTime=INFINITE State=UP OverSubscribe=NO
...