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. [intel18|amd24]

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|amd24], and not the OR syntax, e.g. intel18|amd24. 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 [intel18|(amr|acm)|nvf|nal|nif|agg|agx|(nfh|neh)|nel]. 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 the default constraint above. 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=amr amr&[Default] amr Run this job on only amr
--constraint=
"amr&ib"
amr&ib&[Default] amr&ib Run this job on only nodes with both amr and ib features
--constraint=
"intel18\|amd24"
[intel18|amd24] [intel18|amd24] Run this job on nodes that are either all intel18 or all amd24
--constraint=
"NOAUTO:amr\|nvl"
amr|nvl amr|nvl Run this job on nodes the each have either the amr or nvl feature
--constraint=
"\[intel18&ib\|amd24&ib\]"
[intel18&ib|amd24&ib] [intel18&ib|amd24&ib] Run this job on nodes that are either all intel18&ib or all amd24&ib