Submission Evaluation Logic (Lua-based)
This section outlines the internal logic used in GRAVITON to validate and configure submitted jobs. A custom Lua script is integrated into SLURM’s job submission pipeline, enforcing site policies such as partition selection, memory allocation, and input validation.
This system ensures that all jobs conform to the resource management model of GRAVITON and provides a predictable, fair scheduling environment for all users.
Key Rules Enforced
Only users with a valid Accounting group (SOM, COM, or EXT) are allowed to submit jobs.
The following SBATCH directives are not allowed and will result in rejection:
--partition
--nodes
--mem
--mem-per-cpu
Partition assignment is automatic, based on the selected QoS:
--qos=lattice
→ assigned to theparallel
partitionAny other valid QoS → assigned to the
serial
partition
Memory per core is assigned automatically according to the partition:
serial
partition: 3.8 GB per coreparallel
partition: 4.3 GB per core
If the job includes
--constraint=double_mem
, memory per core is doubled accordingly.
Important
Although it may seem advantageous to submit jobs under the lattice
QoS — since it assigns more memory per core (4.3 GB instead of 3.8 GB) — this QoS automatically routes your job to the parallel
partition.
However, nodes somcosmo01
and somcosmo02
, which are significantly more powerful than the standard grwn[01-21]
nodes, are not included in the parallel
partition.
In contrast, all other QoS options (hep
, cosmo
, std
) send jobs to the serial
partition, which prioritizes somcosmo01
and somcosmo02
for job allocation.
Therefore, using lattice
automatically exclude your job from accessing the most performant nodes available in GRAVITON.
Job Submission Flow Diagram
graph TD A[Job submitted] B{Accounting group?} B1[Prio = 10] B2[Prio = 10] B3[Prio = 2] C{Past Member?} D{--mem? <br> --partition? <br> --nodes?} H{QoS?} I[Assign partition = parallel] J[Assign partition = serial] K1[Mem = 4.3 GB x CPU] K2[Mem = 3.8 GB x CPU] L{--constraint=double_mem?} M[Mem = Mem x 2] N[Job accepted ✔] A --> B B -->|SOM| B1 --> C B -->|COM| B2 --> C B -->|EXT| B3 --> C B -->|NO| Z1[Reject ❌] C -- Yes --> Z2[Reject ❌] C -- No --> D D -- Yes --> Z2[Reject ❌] D -- No --> H H --> |lattice| I --> K1 --> L H --> |hep| J H --> |cosmo| J H --> |std| J J --> K2 --> L L -- Yes --> M --> N L -- No --> N
The diagram below illustrates the complete decision process that SLURM applies to submitted jobs via Lua scripting.