GPU PTX/JIT Binaries
LAVA ships two families of GPU executables that are built differently:
- Cartesian / unstructured binaries (
lava*) are built primarily as PTX-bearing binaries and rely on CUDA JIT compilation at runtime, keeping forward compatibility across newer GPU generations. - Curvilinear binaries (
lavacurv*) embed only pre-compiled SASS for a fixed set of architectures and do not JIT. On x86_64 they support compute capabilities 8.0, 8.9, and 12.0; the ARM build targets 9.0. Running a curvilinear binary on any other architecture is not supported (it would fall back to slow runtime translation on latest drivers).
Supported NVIDIA GPU Architectures
The following table lists some of the common GPU architectures supported by the LAVA GPU binaries, including tested systems and additional compatible families.
| System Architecture | GPU Model / Family | Compute Capability (SM) | Status |
|---|---|---|---|
| x86_64 | NVIDIA RTX 5090 | SM 12.0 (Blackwell) | Tested |
| x86_64 | NVIDIA RTX 4090 | SM 8.9 (Ada Lovelace) | Tested |
| x86_64 | NVIDIA A100 | SM 8.0 (Ampere) | Tested |
| ARM | NVIDIA GH200 | SM 9.0 (Hopper) | Tested |
| x86_64 | RTX 50-Series (Other) | SM 12.0 (Blackwell) | Untested |
| x86_64 | RTX 40-Series (Other) | SM 8.9 (Ada Lovelace) | Untested |
| x86_64 | L40 / L40S / L4 | SM 8.9 (Ada Lovelace) | Untested |
| x86_64 | A30 | SM 8.0 (Ampere) | Untested |
| x86_64 | H100 / H200 | SM 9.0 (Hopper) | Untested |
| ARM | H100 / H200 (ARM-based) | SM 9.0 (Hopper) | Untested |
Note
The above list is not exhaustive. Check your GPU against the compute capability supported in External Users (Tarball Installation).
Forward Compatibility and JIT Compilation
The Cartesian / unstructured binaries include PTX intermediate code and rely on the NVIDIA driver JIT compiler to generate native machine code for the installed GPU at runtime:
- x86_64 systems: Forward compatible for GPUs with CC 8.0+
- ARM systems: Forward compatible for GPUs with CC 9.0+
Curvilinear binaries do not JIT
The curvilinear binaries (lavacurv*) do not include a JIT/forward-compatibility path. They run only on the architectures for which native SASS is embedded: CC 8.0, 8.9, and 12.0 on x86_64, and CC 9.0 on ARM.
Runtime Behavior
For the Cartesian / unstructured binaries, the executable automatically detects your hardware at runtime:
- Driver JIT Compilation: On first launch on a given system/driver, the CUDA driver compiles embedded PTX to native GPU code
- JIT Cache Reuse: Subsequent runs reuse the NVIDIA compute cache and start faster
- Zero User Intervention: The process is automatic; no rebuild is required for supported GPUs
Technical Note on PTX/JIT Execution:
- First-Run Compilation Delay: The CUDA driver performs JIT compilation on the first launch, which may add a few hundred milliseconds to several seconds of startup time depending on kernel complexity
- JIT Caching: The compiled binary is stored in the NVIDIA Compute Cache. Subsequent runs will be fast, loading the cached binary directly
- Identical Runtime Performance: Once compiled, execution speed is identical to pre-compiled binaries
- Cache Invalidation: Updating the NVIDIA driver or clearing the cache will trigger recompilation on the next launch
- Driver Compatibility: The PTX target must be supported by your driver/toolchain; use the LAVA-recommended driver baseline for release binaries
In summary, the Cartesian / unstructured GPU builds prioritize PTX + JIT for portability and forward compatibility, with a one-time first-run compile cost, while the curvilinear builds ship native SASS for a fixed set of architectures (CC 8.0/8.9/12.0 on x86_64, CC 9.0 on ARM) and do not JIT.