Installation
Table of Contents
- Prerequisites
- Quick Installation (from PyPI)
- Installation from Source
- Offline Installation (Wheelhouse)
- Installation with Spack (for HPC environments)
- Optional Dependencies
- Verifying Your Installation
Prerequisites
Before installing IOPS, ensure you have:
- Python 3.10 or later
- For benchmark execution: Required tools in PATH (e.g.,
ior,mpirunfor I/O benchmarks) - For SLURM clusters: Access to a SLURM scheduler
Virtual environment (recommended)
Install IOPS into an isolated environment (venv or Conda, both work the same) so its dependencies do not conflict with other Python tools on the machine.
# Option 1: venv (standard library)
python3 -m venv ~/.venvs/iops
source ~/.venvs/iops/bin/activate
# Option 2: Conda / Mamba
conda create -n iops python=3.10
conda activate iops
With the environment active, use any of the installation methods below.
Quick Installation (from PyPI)
pip install iops-benchmark
Installation from Source
# Clone the repository
git clone https://gitlab.inria.fr/lgouveia/iops.git
cd iops
# Install the package with dependencies
pip install .
# Verify installation
iops --version
Offline Installation (Wheelhouse)
For clusters without internet access, create a wheelhouse (a directory of pre-downloaded wheel files) on a machine with internet, then transfer it to the cluster.
Step 1: Create the Wheelhouse (on a machine with internet)
mkdir iops-wheelhouse
# Download IOPS and all dependencies as wheels
pip download iops-benchmark -d iops-wheelhouse
Step 2: Transfer to the Cluster
scp -r iops-wheelhouse user@cluster:/path/to/destination/
Step 3: Install on the Cluster
# Install from the wheelhouse (no internet required)
pip install --no-index --find-links=/path/to/iops-wheelhouse iops-benchmark
Notes
- Ensure the machine creating the wheelhouse has the same OS and Python version as the cluster
- For different architectures (e.g., x86_64 vs ARM), create the wheelhouse on a matching system or use
--platformflag withpip download
Installation with Spack (for HPC environments)
Spack is a package manager designed for HPC systems that integrates well with cluster module systems.
Warning: Spack installs can take a long time
In full Spack-managed mode, Spack compiles everything from source, including Python itself and scientific libraries such as NumPy, SciPy, and their BLAS backends. The first build can take from 30 minutes to several hours depending on the cluster, the compiler, and the dependency cache. Prefer standalone mode (PyPI wheels) to get IOPS quickly; reserve full mode for reproducible environments that require Spack-built dependencies.
Adding the IOPS Spack Repository
spack repo add https://gitlab.inria.fr/lgouveia/iops-spack.git
Option 1: Standalone Mode
Uses pip to install dependencies from PyPI.
spack install iops-benchmark+standalone
Option 2: Full Spack-Managed Dependencies
Spack builds and manages all dependencies.
spack install iops-benchmark
Loading and Verifying
# Load the module
spack load iops-benchmark
# Verify installation
iops --version
Optional Dependencies
The core install keeps its dependency footprint small, so several features are
backed by packages installed separately as extras. Run iops deps to see what
they are, what each one enables, and which are present in the current
environment:
iops deps
Optional dependencies for IOPS 3.5.10
EXTRA PACKAGE STATUS ENABLES
bayesian scikit-optimize 0.10.2 benchmark.search_method: bayesian
parquet pyarrow not installed output.sink.type: parquet
watch rich 13.7.1 iops find --watch, progress bars
plots kaleido not installed iops report --export-plots
gallery pillow 12.0.0 reporting.gallery.max_width downscaling
studio nicegui 2.11.0 iops studio
Install the missing ones with:
pip install "iops-benchmark[parquet,plots]"
iops deps --missing lists only what is absent. iops deps --check exits with
status 1 when anything is missing, which is useful in a CI job that must run on
a fully equipped environment.
Extras can be combined in a single install:
pip install "iops-benchmark[bayesian,parquet,watch]"
A missing extra never breaks the core: IOPS reports what is needed and, where it can, carries on with the feature degraded rather than failing.
Verifying Your Installation
# Check version
iops --version
# Generate a configuration template
iops generate test_config.yaml
# Check the configuration
iops check test_config.yaml