Skip to content

Job Constraints

Constraints are set to restrict which node features are required for a given job. Use -C or --constraint = <list> when submitting your job to specify a constraint. 

Operators

The following operators can be used to combine multiple features when specifying constraints.

Operator Function Description Example
feature&feature AND Nodes allocated for the job must have both features lac&ib
feature|feature OR Each node allocated for the job can have one feature or the other. lac|vim
[feature|feature] XOR All nodes allocated for the job must have one feature or the other. Useful for multi-node shared memory jobs. [intel16|intel18]

Multi-Node Jobs

Multi-node jobs that use constraints to control which cluster hardware they run on must use the XOR syntax to specify multiple clusters, e.g. [intel18|intel16], and not the OR syntax, e.g. intel18|intel16. Multi-node jobs using OR instead of XOR may experience a considerable performance decrease or may be killed by HPCC staff without warning.

In most cases where OR is used, the job would be better served by XOR. For this reason, constraints using OR are automatically re-written to use XOR. If an OR constraint is required, prepend the constraint request with NOAUTO:.

Automatic Job Constraints

When no constraints are specified, a job will get a default constraint of [intel14|intel16|intel18|(amr|acm)|nvf|nal|nif]. This ensures the job runs on only one type of cluster hardware.

User specified constraints that don't use the feature|feature or [feature|feature] syntax are automatically combined with [intel14|intel16|intel18]. If a more complex constraint is required, NOAUTO: must be prepended to the constraint.

User Specified Constraint Literal Constraint Effective Constraint Result
None [Default] [Default] Run this job on nodes that are all the same cluster type
--constraint=lac lac&[Default] lac Run this job on only Laconia nodes
--constraint=
"lac&ib"
lac&ib&[Default] lac&ib Run this job on only nodes with both lac and ib features
--constraint=
"intel16\|intel18"
[intel16|intel18] [intel16|intel18] Run this job on nodes that are either all intel16 or all intel18
--constraint=
"NOAUTO:lac\|vim"
lac|vim lac|vim Run this job on nodes the each have either the lac or vim feature
--constraint=
"\[intel16&ib\|intel18&ib\]"
[intel16&ib|intel18&ib] [intel16&ib|intel18&ib] Run this job on nodes that are either all intel16&ib or all intel18&ib