GPU Computing
| Hundreds of NVIDIA GPUs | Available in OrangeGrid and Zest | No separate access request |
Research Computing at Syracuse University provides hundreds of GPUs to our computing clusters. Note that there is no separate GPU cluster. Our GPUs are compute nodes inside OrangeGrid and dedicated partitions in Zest. There is no need to request “GPU access” on its own. If you require GPUs for your computations work, simply request access to a cluster, then simply request GPUs in your job submissions. If you already have an OrangeGrid or Zest account, you can submit GPU jobs today!
What Is Available
The bulk of our GPUs are in OrangeGrid, with a smaller pool in Zest. Both clusters are free to use for faculty-sponsored research.
| Cluster | GPU model | GPU memory | Scheduler | Notes |
|---|---|---|---|---|
| OrangeGrid | NVIDIA H100 80GB HBM3 | 80 GB | HTCondor | 16 GPUs across 2 nodes, NVLink within a node, 3-day runtime cap |
| NVIDIA A100 80GB PCIe | 80 GB | HTCondor | ||
| NVIDIA L40S | 48 GB | HTCondor | ||
| NVIDIA A40 | 48 GB | HTCondor | ||
| Quadro RTX 6000 | 24 GB | HTCondor | Good fit for inference and smaller models | |
| Quadro RTX 5000 | 16 GB | HTCondor | ||
| Zest | NVIDIA A40 | 48 GB | Slurm | gpu and gpu_zone2 partitions, up to 4 GPUs per job, 20-day runtime limit |
H100 nodes are our scarcest resource and demand is high. Jobs on them are capped at three days of runtime. Request them only when you are ready to use them, and checkpoint anything that runs longer than a day. See the Checkpointing example.
Which Cluster for GPU Work?
Your welcome email tells you which cluster you have been assigned. If you are not yet a user, this is what we consider during consultation.
| Your workload | Cluster | Why |
|---|---|---|
| Many independent GPU jobs (batch inference, hyperparameter sweeps, per-dataset fine-tuning) | OrangeGrid | Largest GPU pool, jobs run as soon as any matching GPU is free |
| Single-node training or fine-tuning, including multi-GPU on one node | OrangeGrid | H100 and A100 nodes with NVLink between GPUs on the same node |
| LLM inference with Ollama or similar | OrangeGrid | Working examples, wide choice of GPU memory sizes |
| Multi-node GPU jobs communicating over MPI | Zest | InfiniBand interconnect, Slurm multi-node support |
| GPU job that also needs many CPU cores or a long guaranteed runtime | Zest | 20-day runtime limit, uniform nodes |
Most GPU users are on OrangeGrid. If your needs change, email researchcomputing@syr.edu and we can add access to the other cluster.
Requesting GPUs in a Job
OrangeGrid (HTCondor)
A GPU job needs two lines in the submit file. Both are required.
Requirements = TotalGPUS > 0
+request_gpus = 1
The first line restricts your job to nodes that have GPUs. The second tells HTCondor how many you need. If you have no requirements line, your job can land on a CPU node and silently run without a GPU. Leave off the + and your job may sit idle indefinitely.
To target GPU memory or compute capability, extend the Requirements line:
# At least 40 GB of GPU memory
Requirements = CUDAGlobalMemoryMb >= 40000
+request_gpus = 1
Full details, common mistakes, and how to diagnose an idle GPU job are in the OrangeGrid GPU Resources section.
Zest (Slurm)
Request a GPU partition and the number of GPUs:
#SBATCH --partition=gpu_zone2,gpu
#SBATCH --gres=gpu:1
module load cuda
Listing both partitions lets Slurm use whichever has a free GPU first. You can request up to four GPUs with --gres=gpu:4 if your code can use them. See Zest GPU Resources for details.
Working Examples
We have complete, tested job scripts you can copy and adapt in our OrangeGridExamples and ZestExamples repositories.
CUDA and GPU Software
- You choose your CUDA version on OrangeGrid. Install the CUDA runtime your code needs into a Conda or pip environment (for example a
+cu128PyTorch build). It will work with the drivers on any OrangeGrid GPU node, so do not add a CUDA driver version requirement to your job. - CUDA 13 and newer need one extra compatibility package. Follow the CUDA13 example.
- On Zest, use CUDA 12 builds. Pick the CUDA 12 variant of your framework (for example PyTorch’s
cu126wheel, ortensorflow[and-cuda]andjax[cuda12], which already are).module load cudaprovides the CUDA 12 toolkit for compiling. See the Zest GPU example. - Containers (Apptainer/Singularity) with GPU support run on both clusters. See the Apptainer example.
- Common frameworks: PyTorch, TensorFlow, JAX, Ollama, vLLM, GROMACS, NAMD, LAMMPS with Kokkos, Octave, Blender.
Good GPU Citizenship
GPUs are the most contended resource we have. A few habits keep them available for everyone:
- Request only the GPUs you can use. A job that asks for two GPUs but uses one blocks a GPU for someone else.
- Request capabilities, not models. Asking for
CUDAGlobalMemoryMb >= 40000matches more nodes and starts sooner than asking for a specific card. - Do not claim a GPU before you are ready. Idle time on a claimed GPU is the single most disruptive thing on our scarcest hardware.
- Do not remove idle jobs just to resubmit them. Queue waits are normal under fair-share scheduling, and resubmitting does not move you forward.
- Checkpoint long jobs. Hardware failures and runtime caps happen. A checkpointed job resumes; an unchecked one starts over.
The full Good Neighbor Policy applies to GPU nodes as it does everywhere else.
Getting Access
GPU access comes with cluster access. Follow the Requesting Access process and tell us:
- What you are running (training, inference, simulation, rendering)
- Roughly how much GPU memory your model or dataset needs
- Whether jobs are independent or need to talk to each other
- How long a single job runs
We will place you on the right cluster and point you to a working example that matches your workflow.
Email researchcomputing@syr.edu with any GPU questions.