This is a design proposal for PBS to support job submissions with conditional operators to filter out node where the job can run.

Here is the list of Use cases and motivation behind it.


Motivation:  Resilience – ensure jobs run “correctly” and are unlikely to experience faults due to use of nodes with incompatible properties (with respect to the applications)

Use Cases: 

1.      User requests all allocated nodes will have CPU speed > 2 GHz

2.      User requests none of the allocated nodes will be node X, node Y, node Z, …

3.      User requests none of the allocated nodes will be ARM nor POWER architecture

4.      User requests all of the allocated nodes should be running Linux version 6.5 or higher, but none will be running 6.5.2


Gist of design: We can expose a way for each job to pass a limited python expression that can be used to filter out nodes on the basis of their resources_available present on the nodes. This filter will be used to filter out nodes that will be considered to run a job (if submitted with node_filter).

link to  forum discussion

Extend PBS to allow users to submit jobs with a node-filter (node_filter) expression.