Documentation Index
Fetch the complete documentation index at: https://mintlify.com/DedalusProject/dedalus_conda/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The Dedalus conda build scripts support linking to custom MPI, FFTW, and HDF5 libraries instead of using conda-forge versions. This is essential for:- High-performance computing (HPC) clusters with vendor-optimized MPI implementations
- Systems requiring specific MPI flavors (Intel MPI, Cray MPICH, etc.)
- Environments with pre-existing optimized library installations
- Clusters where conda-installed MPI may conflict with system configurations
When to Use Custom Libraries
Use Custom Libraries When:
- Your HPC cluster requires a specific MPI implementation (e.g., Intel MPI, Cray MPICH)
- You need vendor-optimized libraries for maximum performance
- System administrators provide pre-built libraries tuned for your hardware
- The conda-installed MPI conflicts with your cluster’s job scheduler
Use Conda Libraries When:
- Installing on a laptop or workstation
- You have full control over the system
- Simplicity and reproducibility are priorities
- You don’t have access to system-specific optimized libraries
Configuration Options
Bothconda_install_dedalus2.sh and conda_install_dedalus3.sh provide three main configuration flags at the top of the script:
Using Custom MPI
FTTW from conda is compiled with OpenMPI support. If you use a custom non-OpenMPI implementation, you should also use custom FFTW to avoid compatibility issues.
Using Custom FFTW
find /usr/local -name "libfftw3*.so" 2>/dev/null
# Example: /usr/local/fftw/lib/libfftw3.so
# FFTW_PATH would be: /usr/local/fftw
Using Custom HDF5
which h5pcc # If this exists, you have parallel HDF5
# Find prefix:
/path/to/h5pcc -show | grep -o '\-L[^ ]*' | head -1
Parallel HDF5 must be built with the same MPI implementation you’re using for Dedalus. If your HDF5 was built with Intel MPI, Dedalus must also use Intel MPI.
Complete Custom Build Example
Here’s a complete example for an HPC cluster using Intel MPI and vendor-provided libraries:Validation
After installation, verify your custom libraries are properly linked:Platform-Specific Considerations
Linux HPC Clusters
Linux HPC Clusters
- Always use environment modules to load consistent library versions
- Check with system administrators for recommended MPI implementations
- Many clusters use Cray MPICH, Intel MPI, or MVAPICH2
- Ensure your libraries are compiled for the correct CPU architecture (e.g., Haswell, Skylake)
macOS
macOS
- Custom MPI builds on macOS can be complex due to Accelerate framework
- Conda-forge builds are generally recommended for macOS
- If using custom libraries, ensure they’re compiled for the same architecture (x86_64 or arm64)
- Note: FFTW from conda with custom MPI only works well with OpenMPI-compatible MPIs
Apple Silicon (M1/M2/M3)
Apple Silicon (M1/M2/M3)
- The script defaults to x86_64 builds via Rosetta (
APPLE_SILICON_BUILD_ARM=0) - Native arm64 builds may have issues with certain library versions
- Custom libraries on Apple Silicon require careful architecture matching
- Consider using conda-forge builds unless you have specific arm64-optimized libraries
Troubleshooting Custom Builds
mpicc not found during installation
mpicc not found during installation
Error:Solution:
- Verify
MPI_PATHpoints to the correct prefix - Ensure
${MPI_PATH}/bin/mpiccexists - Check that environment modules are loaded before running the script
Library linking errors during pip install
Library linking errors during pip install
Error:Solution:
- Verify library paths are correct
- Add library paths to
LD_LIBRARY_PATH(Linux) orDYLD_LIBRARY_PATH(macOS):
MPI version mismatch
MPI version mismatch
Symptoms:
- Segmentation faults during parallel runs
- MPI initialization errors
- Ensure ALL components (mpi4py, h5py, FFTW, Dedalus) use the same MPI implementation
- Do not mix OpenMPI and Intel MPI
- Rebuild all components if you change MPI implementations
Next Steps
- Review Troubleshooting for common installation issues
- Check CI/CD Workflows to see how builds are tested
- Return to Installation Methods for standard conda-forge builds