Using Constraints to Select the Resources You Want

Constraints are features that the Koa administrators use to tag different features available to the different computing nodes that make up Koa.  These become important in the case of Koa 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 Koa 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.


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

Operator Function

Operator Symbol

Example

Named Value



#SBATCH --constraint=“intel

AND

& (ampersand)

#SBATCH --constraint=“skylake&ib_hdr

OR

| (pipe)

#SBATCH --constraint=“turing|volta



More advanced operators can be found in the slurm manual under the sbatch command




Available Constraints

CPU


  • x86

    • intel

      • sapphire_rapids

      • ice_lake

      • casecade_lake

      • skylake

      • broadwell

      • haswell

      • ivy-bridge

    • amd

      • epyc

        • genoa

        • rome

Graphical Processing Units


  • gpu

    • nvidia

      • tesla

        • ada

        • ampere

        • volta

        • hopper

      • quadro

        • ampere

        • turing

      • geforce

        • turing

Networking


  • ib_hdr