Getting Started with Open OnDemand (OOD)

Overview

Open OnDemand is a web portal for accessing the AI.Panther HPC cluster. It lets you launch interactive coding environments, manage files, submit jobs, and open a terminal, all from your browser. You must be on campus Ethernet/Wi-Fi or connected to the Florida Tech VPN to access the portal.

The five interactive apps below run on the cluster's vgpu nodes (NVIDIA L40S vGPU slices, sized for GUI and notebook work). For traditional batch work on the full cluster (CPU nodes, A100 and H200 GPU nodes), use the Job Composer or the Shell to submit a regular sbatch job.

Interactive apps:

Open OnDemand application support is listed by visiting: https://www.openondemand.org/run-open-ondemand#enabled-applications

Request an Open OnDemand application on AI.Panther

Accessing OOD

Go to https://ood.fit.edu and sign in with your Florida Tech credentials. You will be prompted for DUO multi-factor authentication. After signing in, you will see the OOD dashboard.

You must be a member of the AI.Panther HPC group to access OOD. If you get an error after signing in, ask your faculty advisor or PI to submit an access request on your behalf:

AI.Panther HPC Access Request

The Dashboard

After logging in the dashboard shows:

  • Pinned Apps: quick-launch buttons for the interactive apps.
  • Recently Used Apps: apps you have launched recently.
  • Quick Links: shortcuts to your home directory, terminal, job history, all apps, this getting started guide, and a link to submit a support request.
  • Project Storage: usage and quota cards for any /shared/projects/<name> directories you have access to. Each card shows space used vs the soft quota and the inode count. The progress bar turns yellow at 80% and red at 95% of the soft quota. The card title links to the project folder in the Files app. If you have no project group memberships, no cards appear. Access to a project folder is granted by AD group membership (ad-idm-ai-panther-projects-<name>); your PI requests the addition.

Navigation Bar

Files

Browse and manage files. You can upload, download, create, rename, edit, and delete. Three areas are visible:

  • /home1/<your username>: your home directory (NFS, 79 TB cluster wide).
  • /shared/projects/<project>: shared project space on Lustre. Access is granted by AD group membership.
  • /shared/scratch: shared scratch space on Lustre, writable by everyone. Files are deleted after 60 days without modification.

Files you upload are immediately available in your interactive sessions and batch jobs since all three areas are mounted on every node.

Jobs

  • Job History: your past Slurm jobs with status, runtime, and links to output files. The Output column links straight to the working directory in the Files app.
  • Active Jobs: currently running and queued jobs.
  • Job Composer: create and submit batch jobs. A default template is provided with the SBATCH directives most people need. The template targets vdi-short with a 15-minute walltime. For CPU work, change --partition to short, med or long and adjust --time. For A100 or H200 jobs, change --partition to gpu1, gpu2, h200 or h200_mig and add a --gres=gpu:<type>:<count> line. Output files use %x.%J.out and %x.%J.err naming, so a job named MyJob with ID 290029 produces MyJob.290029.out and MyJob.290029.err in the working directory.

If you add a module load line to a job script, change the first line to #!/bin/bash -l. Without the -l, a job on the AMD GPU nodes loads software built for the wrong processor and fails with Illegal instruction (core dumped). See Illegal Instruction Error When Running Apptainer on GPU Nodes.

Clusters

  • Shell Access: terminal on the login node (ai-panther.fit.edu). Use this for sbatch, squeue, module load, creating virtual environments, and anything else command-line.
  • Module Browser: browsable index of the modules available on the cluster, including the Spack software tree and cluster-provided modules like MATLAB, ORCA, ANSYS and the NGC containers. Use the names you see here in the Modules field on the interactive app forms.

Interactive Apps

All interactive apps run as Slurm jobs on the vgpu nodes (vgpu01-03), which provide NVIDIA L40S vGPU slices (12 GB framebuffer each). You will not pick a specific node, just a partition.

App Default CPU / RAM / GPU Max CPU / RAM / GPU What it's for
Code Server 4 / 8 GB / 0 16 / 32 GB / 4 VS Code in the browser. Best for code editing, terminals, extensions.
Jupyter Lab 8 / 16 GB / 1 16 / 32 GB / 4 Notebook environment for Python, data analysis, scientific computing.
Desktop 4 / 8 GB / 1 16 / 32 GB / 1 Full XFCE desktop via noVNC. Use for GUI applications like Firefox or anything that needs a window manager.
MATLAB 4 / 8 GB / 1 16 / 32 GB / 1 MATLAB desktop with Simulink and figure windows. Release picker for R2026a or R2022b.
ANSYS Workbench 4 / 8 GB / 1 16 / 32 GB / 1 ANSYS Workbench project schematic, 2026 R1. Launch Fluent and other solvers from the Toolbox.

All open in a new browser tab.

Launching an Interactive App

  1. Click the app from the dashboard or the Interactive Apps menu.
  2. Fill out the form:
    • Partition: vdi-short (up to 1 hour), vdi-med (up to 8 hours), or vdi-long (up to 7 days). The hours field adjusts based on what you pick.
    • Hours and minutes: how long you need the session. The session terminates when time expires, there is no extension. Combined Hours + Minutes must not exceed the partition's time limit.
    • CPUs: cores to allocate (up to the maximum shown). Each vgpu node has 64 vCPU total.
    • Memory (GB): memory to allocate. Each vgpu node has about 500 GB total.
    • GPUs: L40S-12Q vGPU slices (12 GB VRAM each). Use 0 for plain coding, 1 for CUDA or notebook work. Leave it at 1 for Desktop, MATLAB and ANSYS Workbench so the GUI gets hardware graphics acceleration. Extra slices do not pool VRAM and have no peer-to-peer link between them, so multi-GPU training will not run here; use gpu1, gpu2 or h200 in batch for that.
    • Release (MATLAB and ANSYS Workbench): which version to load.
    • Modules to load (optional): whitespace-separated list of module names, for example anaconda3 cuda. They are loaded with module load before the app starts. Browse names under Clusters > Module Browser.
    • Working Directory (optional): where the app should open. Leave blank to use your home directory.
  3. Click Launch.
  4. Your session appears under My Interactive Sessions, going through Queued > Starting > Running.
  5. Once running, click Connect to open the app in a new tab.

Session output files (scripts, logs, connection info) are stored under ~/ondemand/data/sys/dashboard/batch_connect/sys/<app>/output/<session-id>/. If a session ends unexpectedly the session card has a link to the output log, which is the first place to look for an error.

Jupyter kernels

The Jupyter app launches a system Python by default. To use your own packages, create a virtual environment in your home directory and register it as a kernel:

python3 -m venv ~/myenv
source ~/myenv/bin/activate
pip install ipykernel
python -m ipykernel install --user --name myenv

The new kernel will appear in the Jupyter launcher. As an alternative, load a conda module with the Modules field and use its Python.

Submitting Batch Jobs to the Full Cluster

The interactive apps only land on the vgpu nodes. For jobs that need CPU compute, A100 GPUs, H200 GPUs, or longer runs than the interactive partitions allow, submit a regular sbatch job from the Job Composer or the Shell.

The cluster's batch partitions:

Partition Nodes Time limit Notes
short node01-16 45 min Default CPU partition
med node01-16 4 hours CPU
long node01-16 7 days CPU
gpu1 gpu01-04 7 days 4x A100 SXM4 40 GB per node
gpu2 gpu05-08 7 days 4x A100 PCIe 40 GB per node
h200 gpu09-10 7 days 8x H200 141 GB per node
h200_mig gpu11-12 7 days 24x H200 MIG slices (35 GB each) per node

On long and all four GPU partitions, a job that does not pass --time gets a 1-day default rather than the full limit. Pass --time explicitly if you need longer.

Partition names, walltime limits and the --gres syntax for each GPU type are covered in How to submit and run jobs on AI.Panther.

Using the Job Composer

  1. Go to Jobs > Job Composer.
  2. Click New Job > From Default Template.
  3. Edit the job script: set --partition, --time, --cpus-per-task, --mem, and any --gres=gpu:<type>:<count> line you need.
  4. Click Submit.

Using the Terminal

# from Clusters > Shell Access (lands on ai-panther.fit.edu)
sbatch myjob.sh
squeue -u $USER
sacct -j <jobid>

File Management

Files are shared cluster wide. Anything you put in /home1/<user> or /shared/projects/<project> is visible from every interactive session and every batch job.

Cluster Monitoring

Two Grafana dashboards are available so you can see what the cluster (and your jobs) are doing:

  • Cluster Health: real-time view of free CPU nodes, free GPU slices per type (A100 SXM, A100 PCIe, H200, L40S-12Q), partition CPU usage, and per-node-type GPU utilization.
  • Per-Job Metrics: CPU, memory, GPU, disk, and network usage for a specific running job. Enter your Cluster (head), Host (the node your job is on), and Job ID at the top. GPU panels filter to only the GPU indices Slurm allocated to your job. Note the GPU number shown is the host-side index; inside your job CUDA renumbers it starting at 0, so nvidia-smi in the session may show your assigned GPU as device 0 even though DCGM reports it under its host index.

If a panel is blank for the time range you're looking at, the job had already ended before that point.

Getting Help

If you run into issues or have questions, submit a support request:

Submit a Quick Ticket

Include the following:

  • What you were trying to do.
  • The error message or unexpected behavior you saw.
  • The session ID or job ID if applicable (found on the My Interactive Sessions page or in Job History).
  • If it's an interactive session that failed, the contents of the output log linked from the session card.