Невозможно запустить параллельные задания с SLURM в Ubuntu 18.04 на одной машине - PullRequest
1 голос
/ 30 октября 2019

Кажется, я не могу запустить параллельные задания на одном узле. Я установил SLURM на одной машине (Ubuntu 18.04 CPU = 8 плат = 1 SocketsPerBoard = 1 CoresPerSocket = 4 ThreadsPerCore = 2 RealMemory = 15976) для использования с Kaldi.

Чтобы проверить, могу ли я выполнять задания параллельно, я использовал короткий фрагмент кода Python:

#!/usr/bin/env python
# demo.py:
# usage: python demo.py [job-number]

import sys
import socket
from time import sleep


def work(jobnum):
  print("Starting job {} on {}.".format(jobnum, socket.gethostname()))
  sleep(5)
  print("Finished job {}...\n".format(jobnum))


if __name__ == "__main__":
  jobnum = sys.argv[1]
  work(jobnum)

А затем в основном я попытался выполнить три задания параллельно, как:

#!/bin/bash

#SBATCH --nodes=1
#SBATCH --ntasks=3
#SBATCH --cpus-per-task=1

# Execute jobs in parallel
srun -c 1 --exclusive python demo.py 0 &
srun -c 1 --exclusive python demo.py 1 &
srun -c 1 --exclusive python demo.py 2 &
wait

Я пробовал много разных вещей с аргументами #SBATCH, но безрезультатно. Они всегда выполняются последовательно. Используя squeue -o "% all", я обнаружил, что в основном первое задание имеет 8 процессоров, в то время как второе и третье 1 процессоров и, таким образом, ставятся в очередь, поскольку первое задание занимает все ресурсы. Так что должно быть что то связанное с установкой или настройкой. Вот мой файл конфигурации:

# slurm.conf file generated by configurator.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
ControlMachine=sam-red
#ControlAddr=
#BackupController=
#BackupAddr=
#
AuthType=auth/munge
#CheckpointType=checkpoint/none
CryptoType=crypto/munge
#DisableRootJobs=NO
#EnforcePartLimits=NO
#Epilog=
#EpilogSlurmctld=
#FirstJobId=1
#MaxJobId=999999
#GresTypes=
#GroupUpdateForce=0
#GroupUpdateTime=600
#JobCheckpointDir=/var/lib/slurm-llnl/checkpoint
#JobCredentialPrivateKey=
#JobCredentialPublicCertificate=
#JobFileAppend=0
#JobRequeue=1
#JobSubmitPlugins=1
#KillOnBadExit=0
#LaunchType=launch/slurm
#Licenses=foo*4,bar
#MailProg=/usr/bin/mail
#MaxJobCount=5000
#MaxStepCount=40000
#MaxTasksPerNode=128
MpiDefault=none
#MpiParams=ports=#-#
#PluginDir=
#PlugStackConfig=
#PrivateData=jobs
ProctrackType=proctrack/pgid
#Prolog=
#PrologFlags=
#PrologSlurmctld=
#PropagatePrioProcess=0
#PropagateResourceLimits=
#PropagateResourceLimitsExcept=
#RebootProgram=
ReturnToService=1
#SallocDefaultCommand=
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=sam
#SlurmdUser=root
#SrunEpilog=
#SrunProlog=
StateSaveLocation=/var/lib/slurm-llnl/slurmctld
SwitchType=switch/none
#TaskEpilog=
TaskPlugin=task/none
#TaskPluginParam=
#TaskProlog=
#TopologyPlugin=topology/tree
#TmpFS=/tmp
#TrackWCKey=no
#TreeWidth=
#UnkillableStepProgram=
#UsePAM=0
#
#
# TIMERS
#BatchStartTimeout=10
#CompleteWait=0
#EpilogMsgTime=2000
#GetEnvTimeout=2
#HealthCheckInterval=0
#HealthCheckProgram=
InactiveLimit=0
KillWait=30
#MessageTimeout=10
#ResvOverRun=0
MinJobAge=300
#OverTimeLimit=0
SlurmctldTimeout=120
SlurmdTimeout=300
#UnkillableStepTimeout=60
#VSizeFactor=0
Waittime=0
#
#
# SCHEDULING
#DefMemPerCPU=0
FastSchedule=1
#MaxMemPerCPU=0
#SchedulerRootFilter=1
#SchedulerTimeSlice=30
SchedulerType=sched/backfill
SchedulerPort=7321
SelectType=select/cons_res
SelectTypeParameters=CR_Core
#
#
# JOB PRIORITY
#PriorityFlags=
#PriorityType=priority/basic
#PriorityDecayHalfLife=
#PriorityCalcPeriod=
#PriorityFavorSmall=
#PriorityMaxAge=
#PriorityUsageResetPeriod=
#PriorityWeightAge=
#PriorityWeightFairshare=
#PriorityWeightJobSize=
#PriorityWeightPartition=
#PriorityWeightQOS=
#
#
# LOGGING AND ACCOUNTING
#AccountingStorageEnforce=0
#AccountingStorageHost=
#AccountingStorageLoc=
#AccountingStoragePass=
#AccountingStoragePort=
AccountingStorageType=accounting_storage/none
#AccountingStorageUser=
AccountingStoreJobComment=YES
ClusterName=cluster
#DebugFlags=
#JobCompHost=
#JobCompLoc=
#JobCompPass=
#JobCompPort=
JobCompType=jobcomp/none
#JobCompUser=
#JobContainerType=job_container/none
JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/none
SlurmctldDebug=3
SlurmctldLogFile=/var/log/slurm-llnl/slurmctld.log
SlurmdDebug=3
SlurmdLogFile=/var/log/slurm-llnl/slurmd.log
#SlurmSchedLogFile=
#SlurmSchedLogLevel=
#
#
# POWER SAVE SUPPORT FOR IDLE NODES (optional)
#SuspendProgram=
#ResumeProgram=
#SuspendTimeout=
#ResumeTimeout=
#ResumeRate=
#SuspendExcNodes=
#SuspendExcParts=
#SuspendRate=
#SuspendTime=
#
#
# COMPUTE NODES
NodeName=sam-red CPUs=8 RealMemory=14000 Sockets=1 CoresPerSocket=4 ThreadsPerCore=2 State=UNKNOWN
PartitionName=shared Nodes=sam-red Default=YES MaxTime=INFINITE State=UP

Я довольно новичок в отношении планировщиков, может быть, это может быть тривиальной проблемой для кого-то с большим опытом.

ОБНОВЛЕНИЕ:

отправка задания с:

#!/bin/bash

srun --nodes=1 --nodelist=sam-red --ntasks=1 --oversubscribe  python demo.py 0  &
srun --nodes=1 --nodelist=sam-red --ntasks=1 --oversubscribe  python demo.py 1  &
srun --nodes=1 --nodelist=sam-red --ntasks=1 --oversubscribe  python demo.py 2  &

wait

Теперь заставляет первое задание выделять только 2 ЦП. Но другие все еще стоят в очереди, даже если у меня есть четырехъядерный процессор с гиперпоточностью.

1 Ответ

0 голосов
/ 05 ноября 2019

Мне пришлось перезагрузить мой сервер для обслуживания. Не уверен, что произошло, но теперь я могу запускать задания параллельно, используя:

#!/bin/bash

srun --nodes=1 --nodelist=sam-red --ntasks=1 --oversubscribe  python demo.py 0  &
srun --nodes=1 --nodelist=sam-red --ntasks=1 --oversubscribe  python demo.py 1  &
srun --nodes=1 --nodelist=sam-red --ntasks=1 --oversubscribe  python demo.py 2  &

wait

Ключ для принудительного выполнения параллельных заданий на одном узле - аргумент --nodes = 1. Одного этого достаточно в моей системе.

для быстрого ознакомления. Дополнительные примеры доступны здесь:

https://slurm.schedmd.com/cpu_management.html#Example6

...