Not working, just says that cannot use more nodes than requested: srun: error: Unable to create job step: More processors requested than permitted
Thanks On 04/04/14 13:50, Mehdi Denou wrote: > > Try with: > srun -N 1 -n 25 > > On 04/04/2014 13:47, Joan Arbona wrote: >> Excuse me, I confused "Nodes" with "Tasks". When I wrote "Nodes" in the >> last e-mail I meant "tasks". >> >> Let me explain it again with an example: >> >> My cluster has 2 nodes with 20 processors/node. I want to allocate all >> 40 processors and both nodes in sbatch. Then I have to execute a jobstep >> with srun on a subset of 25 processors. I want SLURM to fill completely >> the maximum number of nodes: That is, using all 20 processors of the >> first node and 5 of the second one. >> >> If I execute an sbatch like this: >> #!/bin/bash >> [...] >> #SBATCH --nodes=2 >> #SBATCH --ntasks=40 >> srun -n25 hostname >> >> Does not work and executes 12 hostname on the first node and 13 on the >> second one, and should execute 20 hostname on the first one and 5 on the >> second one. >> >> >> Thanks and sorry for the confusion, >> Joan >> >> >> >> On 04/04/14 13:22, Mehdi Denou wrote: >>> It's a little bit confusing: >>> >>> When in sbatch I specify that I want to allocate 25 nodes and I execute >>> >>> So it means -N 25 >>> For example if you want to allocate 40 nodes and then execute srun on 25: >>> >>> #!/bin/bash >>> #SBATCH -N 40 >>> >>> srun -N 25 hostname >>> >>> -n is the number of task (the number of system process) >>> -N or --nodes is the number of nodes. >>> >>> If you don't specify -n it's set to 1 by default. >>> >>> On 04/04/2014 11:24, Joan Arbona wrote: >>>> Thanks for the answer. No luck anyway. >>>> When in sbatch I specify that I want to allocate 25 nodes and I execute >>>> srun without parameters it works. However, if I specify I want to >>>> allocate 40 nodes and then I execute srun selecting only 25 of them it >>>> does not work. >>>> >>>> That is: >>>> >>>> --- >>>> >>>> 1. >>>> #!/bin/bash >>>> [...] >>>> #SBATCH --nodes=2 >>>> #SBATCH --ntasks=25 >>>> >>>> srun hostname >>>> >>>> -> Works, but we don't want it because we need srun to select a subset >>>> of the requested nodes. >>>> >>>> --- >>>> >>>> 2. >>>> #!/bin/bash >>>> [...] >>>> #SBATCH --nodes=2 >>>> #SBATCH --ntasks=40 >>>> >>>> srun -n25 hostname >>>> >>>> -> Doesn't work. Executes half of the processes on the first node and >>>> the other half on the second. Also tried to remove --nodes=2. >>>> >>>> --- >>>> >>>> It seems that it's the way sbatch influences srun. Is there anyway to >>>> see which parameters does the sbatch call transfers to srun? >>>> >>>> Thanks, >>>> Joan >>>> >>>> >>>> >>>> >>>> On 04/04/14 10:54, Mehdi Denou wrote: >>>>> Hello, >>>>> >>>>> You should take a look at the parameter --mincpu >>>>> >>>>> >>>>> On 04/04/2014 10:22, Joan Arbona wrote: >>>>>> Hello all, >>>>>> >>>>>> We have a cluster with 40 nodes and 20 cores for node and we are trying >>>>>> to distribute jobsteps executed with sbatch "in blocks". That means we >>>>>> want to fill the maximum number of nodes and, if the number of tasks is >>>>>> not multiple of 20, to have only one node without all cores busy. For >>>>>> example, if we executed a task on 25 cores, we would have node 1 with >>>>>> all 20 cores reserved and node 2 with only 5 cores reserved. >>>>>> >>>>>> If we execute >>>>>> srun -n25 -pthin hostname >>>>>> works fine and produces the following output: >>>>>> >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner118 >>>>>> foner119 >>>>>> foner119 >>>>>> foner119 >>>>>> foner119 >>>>>> foner119 >>>>>> >>>>>> >>>>>> However, when we execute this in a sbatch script it does not work at >>>>>> all. I have tried it with all possible configurations I know and with >>>>>> all useful parameters. Instead it executes 13 processes on the first >>>>>> node and 12 processes on the second node. >>>>>> >>>>>> This is our sbatch script: >>>>>> #!/bin/bash >>>>>> #SBATCH --job-name=prova_joan >>>>>> #SBATCH --partition=thin >>>>>> #SBATCH --output=WRFJobName-%j.out >>>>>> #SBATCH --error=WRFJobName-%j.err >>>>>> #SBATCH --nodes=2 >>>>>> #SBATCH --ntasks=40 >>>>>> >>>>>> srun -n25 --exclusive hostname & >>>>>> >>>>>> wait >>>>>> >>>>>> I have already tried to remove the --exclusive and the & without success. >>>>>> >>>>>> To sum up, the question is: What's the way to group tasks of jobsteps so >>>>>> they fill as many nodes as possible with sbatch? >>>>>> >>>>>> Thanks, >>>>>> Joan >>>>>> >>>>>> >>>>>> PS: Attaching slurm.conf: >>>>>> >>>>>> >>>>>> ##################BEGIN SLURM.CONF####################### >>>>>> ClusterName=foner >>>>>> ControlMachine=foner1,foner2 >>>>>> ControlAddr=slurm-server >>>>>> #BackupController= >>>>>> #BackupAddr= >>>>>> # >>>>>> SlurmUser=slurm >>>>>> #SlurmdUser=root >>>>>> SlurmctldPort=6817 >>>>>> SlurmdPort=6818 >>>>>> AuthType=auth/munge >>>>>> CryptoType=crypto/munge >>>>>> JobCredentialPrivateKey=/etc/slurm/private.key >>>>>> JobCredentialPublicCertificate=/etc/slurm/public.key >>>>>> StateSaveLocation=/SLURM >>>>>> SlurmdSpoolDir=/var/log/slurm/spool_slurmd/ >>>>>> SwitchType=switch/none >>>>>> MpiDefault=none >>>>>> SlurmctldPidFile=/var/run/slurm/slurmctld.pid >>>>>> SlurmdPidFile=/var/run/slurmd.pid >>>>>> #ProctrackType=proctrack/pgid >>>>>> ProctrackType=proctrack/linuxproc >>>>>> TaskPlugin=task/affinity >>>>>> TaskPluginParam=Cpusets >>>>>> #PluginDir= >>>>>> CacheGroups=0 >>>>>> #FirstJobId= >>>>>> ReturnToService=0 >>>>>> #MaxJobCount= >>>>>> #PlugStackConfig= >>>>>> #PropagatePrioProcess= >>>>>> #PropagateResourceLimits= >>>>>> #PropagateResourceLimitsExcept= >>>>>> #Prolog=/data/scripts/prolog_ctld.sh >>>>>> #Prolog= >>>>>> Epilog=/data/scripts/epilog.sh >>>>>> #SrunProlog= >>>>>> #SrunEpilog= >>>>>> #TaskProlog= >>>>>> #TaskEpilog= >>>>>> #TaskPlugin= >>>>>> #TrackWCKey=no >>>>>> #TreeWidth=50 >>>>>> #TmpFS= >>>>>> #UsePAM= >>>>>> #UsePAM=1 >>>>>> # >>>>>> # TIMERS >>>>>> SlurmctldTimeout=300 >>>>>> SlurmdTimeout=300 >>>>>> InactiveLimit=0 >>>>>> MinJobAge=300 >>>>>> KillWait=30 >>>>>> Waittime=0 >>>>>> # >>>>>> # SCHEDULING >>>>>> SchedulerType=sched/backfill >>>>>> #SchedulerAuth= >>>>>> #SchedulerPort= >>>>>> #SchedulerRootFilter= >>>>>> #SelectType=select/linear >>>>>> SelectType=select/cons_res >>>>>> SelectTypeParameters=CR_Core_Memory,CR_CORE_DEFAULT_DIST_BLOCK >>>>>> FastSchedule=1 >>>>>> PriorityType=priority/multifactor >>>>>> #PriorityDecayHalfLife=14-0 >>>>>> #PriorityUsageResetPeriod=14-0 >>>>>> PriorityWeightFairshare=0 >>>>>> PriorityWeightAge=0 >>>>>> PriorityWeightPartition=0 >>>>>> PriorityWeightJobSize=0 >>>>>> PriorityWeightQOS=1000 >>>>>> #PriorityMaxAge=1-0 >>>>>> # >>>>>> # LOGGING >>>>>> SlurmctldDebug=5 >>>>>> SlurmctldLogFile=/var/log/slurm/slurmctld.log >>>>>> SlurmdDebug=5 >>>>>> SlurmdLogFile=/var/log/slurm/slurmd.log >>>>>> JobCompType=jobcomp/none >>>>>> #JobCompLoc= >>>>>> # >>>>>> # ACCOUNTING >>>>>> #JobAcctGatherType=jobacct_gather/linux >>>>>> #JobAcctGatherFrequency=30 >>>>>> # >>>>>> #AccountingStorageType=accounting_storage/slurmdbd >>>>>> ##AccountingStorageHost=slurm-server >>>>>> #AccountingStorageLoc= >>>>>> #AccountingStoragePass= >>>>>> #AccountingStorageUser= >>>>>> # >>>>>> >>>>>> AccountingStorageEnforce=qos >>>>>> AccountingStorageLoc=slurm_acct_db >>>>>> AccountingStorageType=accounting_storage/slurmdbd >>>>>> AccountingStoragePort=8544 >>>>>> AccountingStorageUser=root >>>>>> #AccountingStoragePass=slurm >>>>>> AccountingStorageHost=slurm-server >>>>>> # ACCT_GATHER >>>>>> JobAcctGatherType=jobacct_gather/linux >>>>>> JobAcctGatherFrequency=60 >>>>>> #AcctGatherEnergyType=acct_gather_energy/rapl >>>>>> #AcctGatherNodeFreq=30 >>>>>> >>>>>> #Memoria >>>>>> #DefMemPerCPU=1024 # 1GB >>>>>> #MaxMemPerCPU=3072 # 3GB >>>>>> >>>>>> >>>>>> >>>>>> # COMPUTE NODES >>>>>> NodeName=foner[11-14] Procs=20 RealMemory= 258126 Sockets=2 >>>>>> CoresPerSocket=10 ThreadsPerCore=1 State=UNKNOWN >>>>>> >>>>>> NodeName=foner[101-142] CPUs=20 Sockets=2 CoresPerSocket=10 >>>>>> ThreadsPerCore=1 RealMemory=64398 State=UNKNOWN >>>>>> >>>>>> PartitionName=thin Nodes=foner[103-142] Shared=NO PreemptMode=CANCEL >>>>>> State=UP MaxTime=4320 MinNodes=2 >>>>>> PartitionName=thin_test Nodes=foner[101,102] Default=YES Shared=NO >>>>>> PreemptMode=CANCEL State=UP MaxTime=60 MaxNodes=1 >>>>>> PartitionName=fat Nodes=foner[11-14] Shared=NO PreemptMode=CANCEL >>>>>> State=UP MaxTime=4320 MaxNodes=1 >>>>>> >>>>>> ##################END SLURM.CONF####################### >>>>>> >> > -- Joan Francesc Arbona Ext. 2582 Centre de Tecnologies de la Informació Universitat de les Illes Balears http://jfdeu.wordpress.com http://guifisoller.wordpress.com