Skip to main content

Derivative Informed Neural Operators in JAX and Equinox

Project description

dinox

dinox is a JAX implementation of Reduced Basis Derivative Informed Neural Operators, built for high performance in single-GPU environments where all training data fits in GPU memory.

The library is designed primarily for PDE learning workflows based on:

  • FEniCS 2019.1
  • Jacobians computed via hippylib
  • Subspace methods provided by bayesflux

Overview

dinox provides:

  • Reduced basis neural operator architectures
  • Derivative-informed training using PDE Jacobians
  • GPU-accelerated implementations in JAX and Equinox
  • Integration with FEniCS-discretized PDEs

Getting Started

See the hyperelasticity tutorial for a complete walkthrough of the RB-DINO pipeline: problem setup, data generation, training with L2 vs H1 loss, and surrogate evaluation.


Important: FEniCS & Hippylib Environment Required

dinox depends on bayesflux[hippylib], which requires:

  • hippylib
  • FEniCS 2019.1

FEniCS has system-level dependencies and cannot be installed via pip alone.

You must first create a conda environment with FEniCS 2019.1 before installing dinox.


Installation

Prerequisites

  • NVIDIA driver >= 525 (check with nvidia-smi)
  • conda or mamba

Note on CUDA libraries: You do not need to install CUDA Toolkit, cuDNN, or cuSPARSE via conda or your system package manager. The pip wheels for JAX and CuPy bundle their own CUDA 12 runtime libraries. Installing system CUDA alongside pip-bundled CUDA is the most common source of GPU detection failures.

Step 1 — Create a FEniCS 2019.1 environment

conda create -n fenics-2019.1_env -c conda-forge fenics==2019.1.0 python=3.11
conda activate fenics-2019.1_env

Step 2 — Fix LD_LIBRARY_PATH (critical for GPU)

A system-level or conda-set LD_LIBRARY_PATH pointing to a CUDA installation will conflict with the CUDA libraries bundled in the JAX and CuPy pip wheels, causing errors like Unable to load cuSPARSE.

unset LD_LIBRARY_PATH

For a permanent fix, create conda activate/deactivate hooks:

mkdir -p $CONDA_PREFIX/etc/conda/{activate,deactivate}.d

cat > $CONDA_PREFIX/etc/conda/activate.d/unset_ld_library_path.sh << 'EOF'
#!/bin/bash
export _OLD_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
unset LD_LIBRARY_PATH
EOF

cat > $CONDA_PREFIX/etc/conda/deactivate.d/restore_ld_library_path.sh << 'EOF'
#!/bin/bash
if [ -n "$_OLD_LD_LIBRARY_PATH" ]; then
    export LD_LIBRARY_PATH="$_OLD_LD_LIBRARY_PATH"
    unset _OLD_LD_LIBRARY_PATH
else
    unset LD_LIBRARY_PATH
fi
EOF

Step 3 — Install GPU-enabled JAX

pip install "jax[cuda12]" cupy-cuda12x nvidia-curand-cu12

Step 4 — Install dinox

# With CuPy GPU support (recommended)
pip install dinox[cupy]

# Without CuPy
pip install dinox

Step 5 — Verify GPU

python -c "import jax; print('JAX devices:', jax.devices())"
python -c "import cupy; print('CuPy GPU count:', cupy.cuda.runtime.getDeviceCount())"

You should see your NVIDIA GPU listed. If JAX shows only CpuDevice, check that LD_LIBRARY_PATH is unset (see Step 2).


GPU Support

  • Designed for single-GPU workflows where all data fits in GPU memory
  • Requires CUDA 12-enabled JAX (pip install "jax[cuda12]") — the pip wheel bundles its own CUDA runtime
  • Optional CuPy arrays for GPU operations via dinox[cupy]
  • Without GPU, CPU fallback is automatic

Development

conda create -n fenics-2019.1_env -c conda-forge fenics==2019.1.0 python=3.11
conda activate fenics-2019.1_env

pip install "jax[cuda12]" cupy-cuda12x nvidia-curand-cu12
unset LD_LIBRARY_PATH  # or use the permanent conda hook above
pip install -e ".[dev]"

This installs:

  • dinox (editable)
  • development tools (pytest, black, flake8, isort)
  • bayesflux[hippylib]
  • hippylib
  • all required JAX dependencies

Requirements

  • Python >= 3.10
  • FEniCS 2019.1 (via conda)
  • JAX >= 0.7.0 (for GPU: pip install "jax[cuda12]")
  • NVIDIA driver >= 525 (for GPU)
  • Optional: CuPy for GPU array operations (pip install dinox[cupy])

Troubleshooting

Problem Solution
Unable to load cuSPARSE unset LD_LIBRARY_PATH before running Python
No such file: libcurand.so pip install nvidia-curand-cu12
JAX shows only CpuDevice Ensure jax[cuda12] was installed (not just jax) and LD_LIBRARY_PATH is unset
nvidia-smi not found Install or update NVIDIA driver (>= 525)
JAX/CuPy CUDA version conflict Do not conda install cudatoolkit — let pip wheels provide CUDA

Repository

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dinox-0.5.4.tar.gz (17.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dinox-0.5.4-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

File details

Details for the file dinox-0.5.4.tar.gz.

File metadata

  • Download URL: dinox-0.5.4.tar.gz
  • Upload date:
  • Size: 17.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.19

File hashes

Hashes for dinox-0.5.4.tar.gz
Algorithm Hash digest
SHA256 98bfeb28e68726d0f02f9653a55d0696cb71de8d4d91b7ae2468c880b939ff4b
MD5 f7d0e4ebb75d33ee459cfe545472f238
BLAKE2b-256 103466a3299f67d566ae0f307ac293654e3812ac31b4110d3689a578a94552cc

See more details on using hashes here.

File details

Details for the file dinox-0.5.4-py3-none-any.whl.

File metadata

  • Download URL: dinox-0.5.4-py3-none-any.whl
  • Upload date:
  • Size: 20.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.19

File hashes

Hashes for dinox-0.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 56e7ca7f164b9202219558f75e0e45826f52f547580f09683923d2522d6f78ba
MD5 2b1a637a984b9d0bd59825ed3597ba23
BLAKE2b-256 6c827cd2d1d4130ef1dd33b2b1cd323b7ca1c9ec99671b489cb439e82d0d0a5e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page