Constraints are features that the Mana administrators use to tag different features available to the different computing nodes that make up Mana. These become important in the case of Mana as it is a highly heterogeneous cluster, which without constraints would require us to either break the resources up into many smaller partitions and potentially limited the utility of Mana for users that don't have a preference to what type of hardware they are running on or have access to. Constraints allows us to keep the partitions to a minimum, while still allowing users the flexibility to only pick and choose the type of hardware their jobs run on.
The types of features we mark with constraint include:
Processor manufactures and series
This is important if you are compiling code for a specific processor
GPU manufacture and series
The selection of a GPU constraint can be used in conjunction with the gres to select any type of GPU. This allows you to allow the scheduler to select from one or more type of GPUs, without you explicitly asking for a type through the gres option.
Infiniband type
For MPI users, the selection of Infiniband (ib_*) is important since these two networks do not overlap. This means, if you were to submit an MPI job, without a constraint on the network, you could potentially be assigned nodes that cannot communicate with each other.
Operators
Constraints can be provided as just a single value, or a boolean expression in which multiple values are utilized and joined with the AND and OR operators.
Operator Function | Operator Symbol | Example |
---|---|---|
Named Value | #SBATCH --constraint=“ib_hdr” | |
AND | & (ampersand) | #SBATCH --constraint=“haswell&ib_qdr” |
OR | | (pipe) | #SBATCH --constraint=“turing|volta” |
More advanced operators can be found in the slurm manual under the sbatch command.