Available Executables
Each LAVA distribution contains multiple executables for different physics configurations. The executables are organized by solver type (Cartesian, Curvilinear, Unstructured) with varying numbers of species and multiphase capabilities.
Naming Convention
LAVA executables follow this naming pattern:
<solver>:cart(Cartesian),curv(Curvilinear), orunst(Unstructured)<dim>:2Dor3D(two-dimensional only in Cartesian)<species>:NS1,NS2,NS3,NS4,NS5(number of species)<options>:MP(multiphase, when applicable)<arch>:AVX2orAVX512(CPU executables only; omitted for GPU)<precision>:DOUBLEorFLOAT(optional; defaults to DOUBLE)
Examples:
lavacart.3D.NS1- Cartesian solver, 1 species, double precision, GPUlavacart.3D.NS1.FLOAT- Cartesian solver, 1 species, single precision, GPUlavacart.3D.NS1.AVX2- Cartesian solver, 1 species, double precision, CPU with AVX2lavaunst.3D.NS3.AVX512- Unstructured solver, 3 species, double precision, CPU with AVX512
Executable Selection Guide
For GPU Systems
| System Architecture | GPU Support | Recommended Tarball | Example |
|---|---|---|---|
| x86_64 | CUDA Compute 8.0+ (Ampere A100, Ada RTX 5090/4090, Blackwell, and newer) |
LAVA_*_NVIDIA_OpenMPI_x86_64_*.tar.gz |
lavacart.3D.NS1 |
| ARM | CUDA Compute 9.0+ (Hopper GH200, H100/H200, and newer) |
LAVA_*_NVIDIA_HPCX_aarch64_*.tar.gz |
lavacart.3D.NS1 |
For CPU-Only Systems
| Instruction Set | CPU Support | Recommended Tarball | Example |
|---|---|---|---|
| AVX2 | Intel: Haswell, Broadwell, Skylake (non-X) AMD: Zen, Zen 2, Zen 3 (Rome, Milan, Genoa) |
LAVA_*_Intel_OpenMPI_x86_64_*.tar.gz |
lavacart.3D.NS1.AVX2 |
| AVX512 | Intel: Skylake-X, Cascade Lake, Ice Lake, Sapphire Rapids AMD: Zen 5 (Turin) |
LAVA_*_Intel_OpenMPI_x86_64_*.tar.gzor LAVA_*_Intel_Cray-MPICH_x86_64_*.tar.gz |
lavacart.3D.NS1.AVX512 |
Choosing the Right Instruction Set
- AVX512: Use on supported CPUs for best performance
- AVX2: Use for broader compatibility or when AVX512 is not available
- Check your CPU capabilities:
lscpu | grep -i flags(look foravx2oravx512)
Precision Selection
- Double Precision (default): Higher accuracy
- Use executables without precision suffix
-
Example:
lavacart.3D.NS1 -
Single Precision: faster runtime, uses less memory
- Use executables with
.FLOATsuffix - Example:
lavacart.3D.NS1.FLOAT
Single Precision Validation Required
Single precision may not be suitable for all applications. Users must perform their own testing and validation to verify that .FLOAT executables produce acceptable numerical accuracy for their specific simulation. Compare results against double precision runs to assess solution quality.
Species Selection
Choose the executable based on your application:
- NS1: Single-species
- NS2: Two-species
- NS3: Three-species (can be with or without multiphase (
.MPsuffix required)) - NS4: Four-species with multiphase (requires
.MPsuffix) - NS5: Five-species with multiphase (requires
.MPsuffix)
Note
Higher species counts increase computational cost. Use the executable that best matches your requirements.
Additional Tools
For detailed information regarding supporting tools, please refer to the following documentation.
GPU Executables (NVIDIA Builds)
GPU executables are available in the LAVA_*_NVIDIA_OpenMPI_x86_64_*.tar.gz (for x86_64 systems) and LAVA_*_NVIDIA_HPCX_aarch64_*.tar.gz (for ARM systems) tarballs. GPU executables are ptx-based binaries that support multiple GPU architectures.
Cartesian Solver (lavacart) - GPU
| Executable Name | Dimension | Species | Multiphase | Precision |
|---|---|---|---|---|
lavacart.3D.NS1 |
3 | 1 | No | Double |
lavacart.3D.NS1.FLOAT |
3 | 1 | No | Single |
lavacart.3D.NS2 |
3 | 2 | No | Double |
lavacart.3D.NS2.FLOAT |
3 | 2 | No | Single |
lavacart.3D.NS3 |
3 | 3 | No | Double |
lavacart.3D.NS3.FLOAT |
3 | 3 | No | Single |
lavacart.3D.NS3.MP |
3 | 3 | Yes | Double |
lavacart.3D.NS3.MP.FLOAT |
3 | 3 | Yes | Single |
lavacart.3D.NS4.MP |
3 | 4 | Yes | Double |
lavacart.3D.NS4.MP.FLOAT |
3 | 4 | Yes | Single |
lavacart.3D.NS5.MP |
3 | 5 | Yes | Double |
lavacart.3D.NS5.MP.FLOAT |
3 | 5 | Yes | Single |
lavacart.2D.NS1 |
2 | 1 | No | Double |
lavacart.2D.NS1.FLOAT |
2 | 1 | No | Single |
Curvilinear Solver (lavacurv) - GPU
| Executable Name | Species | Multiphase | Precision |
|---|---|---|---|
lavacurv.3D.NS1 |
1 | No | Double |
Unstructured Solver (lavaunst) - GPU
| Executable Name | Species | Multiphase | Precision |
|---|---|---|---|
lavaunst.3D.NS1 |
1 | No | Double |
lavaunst.3D.NS1.FLOAT |
1 | No | Single |
lavaunst.3D.NS2 |
2 | No | Double |
lavaunst.3D.NS2.FLOAT |
2 | No | Single |
lavaunst.3D.NS3 |
3 | No | Double |
lavaunst.3D.NS3.FLOAT |
3 | No | Single |
CPU Executables (Intel Builds)
CPU executables are available in Intel compiler tarballs: LAVA_*_Intel_OpenMPI_x86_64_*.tar.gz and LAVA_*_Intel_Cray-MPICH_x86_64_*.tar.gz.
Intel + OpenMPI (x86_64)
Available in LAVA_*_Intel_OpenMPI_x86_64_*.tar.gz
This tarball includes both AVX2 and AVX512 executables with double and single precision variants.
Cartesian Solver (lavacart) - CPU
| Executable Name | Dimension | Species | Multiphase | Precision | Architecture |
|---|---|---|---|---|---|
lavacart.3D.NS1.AVX2 |
3 | 1 | No | Double | AVX2 |
lavacart.3D.NS1.AVX2.FLOAT |
3 | 1 | No | Single | AVX2 |
lavacart.3D.NS1.AVX512 |
3 | 1 | No | Double | AVX512 |
lavacart.3D.NS1.AVX512.FLOAT |
3 | 1 | No | Single | AVX512 |
lavacart.3D.NS2.AVX2 |
3 | 2 | No | Double | AVX2 |
lavacart.3D.NS2.AVX2.FLOAT |
3 | 2 | No | Single | AVX2 |
lavacart.3D.NS2.AVX512 |
3 | 2 | No | Double | AVX512 |
lavacart.3D.NS2.AVX512.FLOAT |
3 | 2 | No | Single | AVX512 |
lavacart.3D.NS3.AVX2 |
3 | 3 | No | Double | AVX2 |
lavacart.3D.NS3.AVX2.FLOAT |
3 | 3 | No | Single | AVX2 |
lavacart.3D.NS3.AVX512 |
3 | 3 | No | Double | AVX512 |
lavacart.3D.NS3.AVX512.FLOAT |
3 | 3 | No | Single | AVX512 |
lavacart.2D.NS1.AVX2 |
2 | 1 | No | Double | AVX2 |
lavacart.2D.NS1.AVX2.FLOAT |
2 | 1 | No | Single | AVX2 |
Curvilinear Solver (lavacurv) - CPU
| Executable Name | Species | Multiphase | Precision | Architecture |
|---|---|---|---|---|
lavacurv.3D.NS1.AVX2 |
1 | No | Double | AVX2 |
lavacurv.3D.NS1.AVX512 |
1 | No | Double | AVX512 |
Unstructured Solver (lavaunst) - CPU
| Executable Name | Species | Multiphase | Precision | Architecture |
|---|---|---|---|---|
lavaunst.3D.NS1.AVX2 |
1 | No | Double | AVX2 |
lavaunst.3D.NS1.AVX2.FLOAT |
1 | No | Single | AVX2 |
lavaunst.3D.NS1.AVX512 |
1 | No | Double | AVX512 |
lavaunst.3D.NS1.AVX512.FLOAT |
1 | No | Single | AVX512 |
lavaunst.3D.NS2.AVX2 |
2 | No | Double | AVX2 |
lavaunst.3D.NS2.AVX2.FLOAT |
2 | No | Single | AVX2 |
lavaunst.3D.NS2.AVX512 |
2 | No | Double | AVX512 |
lavaunst.3D.NS2.AVX512.FLOAT |
2 | No | Single | AVX512 |
lavaunst.3D.NS3.AVX2 |
3 | No | Double | AVX2 |
lavaunst.3D.NS3.AVX2.FLOAT |
3 | No | Single | AVX2 |
lavaunst.3D.NS3.AVX512 |
3 | No | Double | AVX512 |
lavaunst.3D.NS3.AVX512.FLOAT |
3 | No | Single | AVX512 |
Intel + Cray-MPICH (Athena - AVX512)
Available in LAVA_*_Intel_Cray-MPICH_x86_64_*.tar.gz
Cartesian Solver (lavacart) - CPU AVX512
| Executable Name | Dimension | Species | Multiphase | Precision |
|---|---|---|---|---|
lavacart.3D.NS1.AVX512 |
3 | 1 | No | Double |
lavacart.3D.NS1.AVX512.FLOAT |
3 | 1 | No | Single |
lavacart.3D.NS2.AVX512 |
3 | 2 | No | Double |
lavacart.3D.NS2.AVX512.FLOAT |
3 | 2 | No | Single |
lavacart.3D.NS3.AVX512 |
3 | 3 | No | Double |
lavacart.3D.NS3.AVX512.FLOAT |
3 | 3 | No | Single |
lavacart.2D.NS1.AVX512 |
2 | 1 | No | Double |
lavacart.2D.NS1.AVX512.FLOAT |
2 | 1 | No | Single |
Curvilinear Solver (lavacurv) - CPU AVX512
| Executable Name | Species | Multiphase | Precision |
|---|---|---|---|
lavacurv.3D.NS1.AVX512 |
1 | No | Double |
Unstructured Solver (lavaunst) - CPU AVX512
| Executable Name | Species | Multiphase | Precision |
|---|---|---|---|
lavaunst.3D.NS1.AVX512 |
1 | No | Double |
lavaunst.3D.NS1.AVX512.FLOAT |
1 | No | Single |
lavaunst.3D.NS2.AVX512 |
2 | No | Double |
lavaunst.3D.NS2.AVX512.FLOAT |
2 | No | Single |
lavaunst.3D.NS3.AVX512 |
3 | No | Double |
lavaunst.3D.NS3.AVX512.FLOAT |
3 | No | Single |