Hello,

I have an OpenMPI job that I would like to submit to a partition with 10 nodes, 
each node has 32 CPUs.  Obviously, at any given time, some of the 
CPUs/processors might be allocated to other jobs.  However, there might be room 
in the partition (subset of the CPUs/processors available) that would be 
sufficient for my job.  If I specify the number of tasks for my job based on 
the total number of CPUs/processors in the partition, like this:

salloc -n320 mpirun mpiApp

...the job remains queued until all 320 CPUs are available (as expected).

This establishes context for the question.

I would like to run the MPI job given a range of tasks/CPUs/processors - i.e., 
I don't want the job to be blocked if there are, say 100 CPUs available, I just 
want to run the job using 100 CPUs rather than waiting for all 320 CPUs to 
become available.  Similar to the range capability on the "nodes" option (i.e., 
-N<minnodes[-maxnodes]>), is there a method to submit a job by specifying a 
task range (or another option / combination of options to achieve the same 
outcome), for example:

salloc -n100-320 mpirun mpiApp

Taking this a step further and being greedy, it would be convenient to have the 
ability to specify a wildcard in the task range, as to remove the need to know 
the number of CPUs in the partition:

salloc -n100-* mpirun mpiApp


I realize I could query the partition state to determine the number of CPUs 
idle (i.e., sinfo -o %C), and submit my job accordingly.  However, this seems 
sub-optimal, bypassing the slurm scheduler and opening up the possibility of a 
race condition blocking the job.  It seems that slurm should be responsible for 
scheduling based on job characteristics and resource availability.  That is, it 
seems like there should be a way to express the job resource requirements with 
a range of tasks.

Thanks for your help!  I have found this newsgroup invaluable throughout the 
installation, administration, and usage of slurm.


-adam

Reply via email to