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 |