Troubleshooting#
This page collects solutions to common installation and runtime problems. If your issue is not listed here, please check our GitHub issues or open a new one.
Numba Version Compatibility#
MC/DC requires Numba >= 0.60.0.
Symptoms of version mismatch include TypingError, unexpected LoweringError,
or missing @njit features.
Check your version:
python -c "import numba; print(numba.__version__)"
Upgrading Numba:
# pip
pip install --upgrade 'numba>=0.60.0'
# conda
conda install numba>=0.60.0 -c conda-forge
Pinning Numba for CUDA compatibility:
If your system requires a specific CUDA toolkit,
Numba and cuda-toolkit versions must match.
For example, CUDA 11.8 works best with Numba 0.60.x:
conda install numba=0.60 cudatoolkit=11.8 -c conda-forge
Patching Numba for AMD GPUs (HIP):
AMD ROCm GPU support requires a patched Numba build. Follow the numba-hip instructions to apply the HIP target triple patch. This is required before installing Harmonize for AMD targets. See also AMD GPUs.
Building mpi4py from Source#
On most HPCs, prebuilt mpi4py wheels are incompatible with the system MPI library.
Symptoms include MPI_Init failures, segfaults at launch, or
ImportError: libmpi.so: cannot open shared object file.
Step 1 — Load the correct MPI module:
# Examples for different systems:
module load mvapich2 # Quartz (LLNL)
module load gcc/8 cuda/11.8 # Lassen (LLNL)
module load cray-mpich # Tioga / El Capitan (LLNL)
Step 2 — Install mpi4py from source:
CC=mpicc pip install --no-cache-dir --no-binary mpi4py mpi4py
Or, if using conda with the install.sh script:
bash install.sh --hpc
The --hpc flag instructs the install script to build mpi4py from source
using the currently loaded MPI module.
Verifying the installation:
python -c "from mpi4py import MPI; print(MPI.Get_library_version())"
This should print the system MPI library version (e.g., MVAPICH2, Open MPI, Cray MPICH).
HPC Module Environments#
Before installing or running MC/DC on an HPC, load the required modules. Incorrect or missing modules are the most common source of build failures.
System |
Module loads |
Notes |
|---|---|---|
Quartz (LLNL) |
|
Default |
Dane (LLNL) |
|
x86_64, similar to Quartz |
Lassen (LLNL) |
|
POWER9; conda recommended |
Tioga (LLNL) |
|
AMD MI250X GPUs |
El Capitan (LLNL) |
|
AMD MI300A GPUs |
After loading modules, activate your Python environment (venv or conda)
before running pip install or bash install.sh.
Container Errors#
lsetxattr error#
Cause: Podman storage on network filesystem.
setgroups 65534 failed#
Cause: Rootless Podman user mapping.
permission denied#
Fix:
podman run --rm -it --user root mcdc:dev
Out of memory (Apptainer)#
Use sandbox mode.
HYDU_create_process error#
Use:
mpirun -launcher fork -n 4 python input.py
Common Runtime Errors#
“No module named ‘mcdc’”
Your Python environment is not activated, or MC/DC was installed in a different environment. Activate the correct one:
source <venv>/bin/activate
# or
conda activate <env_name>
“MCDC_LIB is not set” when running continuous-energy problems
Set the MCDC_LIB environment variable to point to your data library directory:
export MCDC_LIB=/path/to/mcdc_xsec_library
See Generating a Data Library from ACE Files.
Numba compilation takes very long (> 2 minutes)
First compilation is expected to be slow (15–80 s depending on problem complexity).
Use --caching to save compiled binaries:
python input.py --mode=numba --caching
Subsequent runs will skip compilation. If compilation seems stuck, check that you are not running on a login node with limited resources.
Segmentation fault during MPI runs
This typically indicates an mpi4py / system MPI mismatch. Rebuild mpi4py from source as described above. Also ensure that the number of MPI ranks does not exceed available cores:
srun -n <ncores> python input.py --mode=numba
“AttributeError: ‘list’ object has no attribute ‘ID’” in mcdc.Cell()
This error occurs when passing a Python list instead of using the & (intersection)
and | (union) region operators.
Use the operator syntax:
# Correct
mcdc.Cell(region=+s1 & -s2, fill=material)
# Wrong — do NOT use a list
mcdc.Cell(region=[+s1, -s2], fill=material)
See #348.
Bugs and Issues#
Our documentation is in the early stages of development, so thank you for bearing with us while we bring it up to snuff. If you find a novel bug or anything else you feel we should be aware of, feel free to open an issue.
Getting More Help#
If you are still stuck after reviewing this troubleshooting guide:
Search the GitHub issues for similar problems.
Run in debug mode for more informative error messages:
python input.py --mode=numba_debug
Open a new issue with your error message, Python/Numba versions, and platform info.