this is a classic CUDA / GROMACS mismatch issue, not really a “broken install.”
what’s happening is GROMACS 2023.1 was built expecting libcufft.so.10, but your system only has CUDA 12.3, which ships libcufft.so.11 instead. so the runtime loader just can’t find what it was linked against.
the reason make check fails is because the GROMACS binaries were compiled against a different CUDA major version than what’s available at runtime. CUDA is not ABI-stable across major versions, so this mismatch shows up immediately.
you’ve basically got three real options:
1. Build GROMACS against your installed CUDA (recommended)
Reconfigure and rebuild with CUDA 12.3 explicitly:
cmake .. \
-DGMX_GPU=CUDA \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
-DGMX_BUILD_OWN_FFTW=ON
Then rebuild. This ensures it links against libcufft.so.11 instead of .10.
2. Install the CUDA version GROMACS expects
If the build was done with CUDA 10.x headers, install CUDA 10.x alongside 12.3 and point LD_LIBRARY_PATH accordingly. This is clean but annoying.
3. Symlink hack (works but not ideal)
What bene304 did:
ln -s libcufft.so.11 libcufft.so.10
will often work, but it’s risky. cuFFT isn’t guaranteed to be ABI compatible across major versions, so you might get subtle runtime issues or wrong results under load.
if this is production or research work, don’t rely on the symlink. rebuild GROMACS with the CUDA version you actually have. if it’s just quick testing, the symlink is usually fine.
also worth checking:
ldd gmx_mpi | grep cufft
to confirm what it’s really linking against.
tldr: this isn’t a GROMACS bug it’s a CUDA version mismatch. rebuild against CUDA 12.3 or install the CUDA version GROMACS expects.