Troubleshooting¶
Quick fixes for common configure and runtime problems. The full install story is INSTALL.md.
Configure-time¶
fatal error: 'mpi.h' file not found¶
CMake or the compiler is not using the same MPI you intend. Before cmake:
Load your modules (
gcc,openmpi, …) — seeINSTALL.md§1.Set
CC/CXXto the MPI wrappers or modulegccexplicitly.Remove a stale build tree or re-run
cmakewith-DCMAKE_C_COMPILER=…and-DCMAKE_CXX_COMPILER=…soCMakeCache.txtdoes not still point at/usr/bin/gcc.
HIP/Cray builds may need extra include flags for MPI in HIP translation units; see INSTALL.LUMI.md §2.
CMake finds the wrong GCC (e.g. GCC 8 instead of 11)¶
Same as above: configure after module load, set compilers explicitly, or delete the build directory. See INSTALL.md (“Stale CMake cache”).
Could not find Heffte / Heffte_DIR not set¶
Build and install HeFFTe 2.4.1 (or compatible) for your backend —
INSTALL.md§3.Point CMake at the install prefix:
export CMAKE_PREFIX_PATH=$HOME/opt/heffte/2.4.1-cpu:$CMAKE_PREFIX_PATH(adjust path and variant:-cpu,-cuda,-rocm).Do not unpack HeFFTe inside the OpenPFC clone.
find_package(OpenPFC) fails in a downstream project¶
OpenPFC must be installed (or you must point CMake at a build tree that exports the package). Set CMAKE_PREFIX_PATH to the install prefix, or -DOpenPFC_DIR=/path/to/lib/cmake/OpenPFC. See getting_started/01-basics/README.md.
Link / run-time¶
Wrong MPI at run time (mpirun from MPICH, binary linked to Open MPI)¶
Build and run with the same MPI implementation. which mpirun should match the prefix of mpicc used to build HeFFTe and OpenPFC. See INSTALL.md (MPI callout).
Slurm srun: OMPI was not built with SLURM's PMI support¶
You launched with srun, but this Open MPI was configured without Slurm PMI/PMIx. Fix: use an Open MPI with Slurm integration (on many VTT partitions module load openmpi/5.0.10), then rebuild HeFFTe and OpenPFC against that MPI; or launch with mpirun instead of srun if your site documents that pattern. See INSTALL.md (MPI callout) and apps/kobayashi/slurm/README.md for a rebuild sbatch example.
Linking tests / libheffte.so / GLIBCXX_3.4.xx (libstdc++ mismatch)¶
Symptom: Linking openpfc-tests (or similar) fails with undefined references to std::…@GLIBCXX_3.4.29 (or another GLIBCXX symbol) involving libheffte.so, or the link succeeds but you see mixed C++ runtime errors at load time.
Cause: HeFFTe was built with a different GCC (or different libstdc++) than the compiler used for OpenPFC/tests. The static library libopenpfc.a is fine; the failure often appears when the link line pulls in libheffte.so and your default libstdc++.so does not match what HeFFTe expected.
Check |
What to verify |
|---|---|
One toolchain |
Same |
Prefix |
|
Inspect |
|
Remediation (preferred order): (1) module load the intended GCC and OpenMPI, then rebuild HeFFTe into a clean prefix and re-run OpenPFC CMake so it picks up the new HeFFTe. (2) Do not mix a system g++ for OpenPFC with a HeFFTe built under a module GCC without aligning LD_LIBRARY_PATH — fix the build instead. (3) CI uses scripts/install-heffte-ci.sh with the same compiler matrix as the build; mirror that locally when debugging.
Missing examples/ or apps/... binaries¶
Examples and apps are controlled by OpenPFC_BUILD_EXAMPLES and OpenPFC_BUILD_APPS (default ON). If you configured with OFF, reconfigure with ON and rebuild. See quickstart.md.
GPU / HIP job fails with GPU-aware MPI errors¶
For ROCm/LUMI-style stacks, MPICH_GPU_SUPPORT_ENABLED=1 and a build with GPU-aware MPI may be required. See INSTALL.LUMI.md and applications.md.
CUDA toolchain compatibility¶
Process exits immediately with “validation” or parameter errors¶
Models such as tungsten validate model.params at startup. Read the printed report: missing keys, out-of-range values, or wrong types. Compare your file to apps/tungsten/inputs_json/ samples. See app_pipeline.md for which JSON sections are consumed and apps/tungsten/README.md for layout pointers.
“No such file” for the config path¶
Paths are resolved from the current working directory (often your build/ folder). Use a path relative to that directory, or an absolute path.
Still stuck?¶
faq.md— short Q&Aquickstart.md— first successful runmpi_io_layout_checklist.md— MPI ranks, cwd, binary I/Olearning_paths.md— pick a sequenced track by roleDocumentation index — full documentation map