Troubleshooting
Toolchain and setup problems are documented where the tool is: missing
mold/clang, CMake and host-compiler versions in
Prerequisites; checkout-local native selectors in
Building from Source; and
test-runner, fingerprint, and target/-size issues in Tests.
This page keeps the failures whose error text does not point at the cause.
cuGraph configure aborts: private RMM detected
scripts/build/build_libcugraph.sh refuses to finish when the configure resolved an
RMM or rapids_logger other than the one exported by CUDF_INSTALL_DIR, or when
CPM-built copies linger under target/native/cugraph-build/_deps. This protects the
one-RMM-per-process invariant
(native dependency relationship).
Usual cause: the build dir predates the external-RMM configure. Remove
target/native/cugraph-build and re-run the script. Do not delete the check or point
the build at a private RMM — a process that loads two librmm.so copies
corrupts memory-resource state at runtime.
cuGraph configure demands spdlog / fmt: prefix not fully bootstrapped
CMake Error ... rapids_logger-dependencies.cmake ... find_dependency(spdlog)
Could not find a package configuration file provided by "spdlog"
cuGraph does a real find_package(rmm), whose closure pulls in
rapids_logger, which in turn find_dependency()s fmt and spdlog. Those
packages are not part of the libcudf install; bootstrap_cudf_install.sh
adds rapids_logger, nvtx3, fmt, and spdlog to the prefix together (it
installs them from the canonical target/native/cudf-build/_deps/). This error means the
prefix has rapids_logger but is missing its fmt/spdlog closure — i.e. the
bootstrap did not run or could not complete.
scripts/build/build_libcugraph.sh runs the bootstrap automatically, so the usual fix is
simply to run it (or the bootstrap alone) with the canonical cuDF build cache
intact:
cd "$NEXUS_ROOT" && bash scripts/build/build_libcugraph.sh
# or just the prefix-completion step:
CUDF_INSTALL_DIR="$CUDF_INSTALL_DIR" bash scripts/build/bootstrap_cudf_install.sh
Only if the canonical cuDF build cache (target/native/cudf-build/_deps) was deleted — leaving the
bootstrap nothing to install from — rebuild libcudf first (keeping
target/native/cudf-build), then re-run the bootstrap:
cd "$NEXUS_ROOT" && bash scripts/build/build_libcudf.sh
GPU op aborts: cudaErrorNoKernelImageForDevice
The binary loads and links fine, then the first kernel launch aborts. The
libcudf or libcugraph build did not include full kernels for the GPU it is
running on — CMAKE_CUDA_ARCHITECTURES=NATIVE bakes kernels only for
the GPU present at build time. Rebuild both native libraries listing every
deployment architecture (CUDF_CMAKE_CUDA_ARCHITECTURES for libcudf,
CMAKE_CUDA_ARCHITECTURES for scripts/build/build_libcugraph.sh), and verify coverage of
each .so:
for so in "$CUDF_INSTALL_DIR"/lib/libcudf.so \
"$NEXUS_ROOT"/target/native/cugraph-build/libcugraph.so; do
echo "== $so =="
cuobjdump --list-elf "$so" | grep -oE 'sm_[0-9]+' | sort | uniq -c
done
Comparable, large counts per architecture are healthy; ~a dozen entries for an architecture means stubs only.
SCC fails on Blackwell (sm_120): cudaErrorInvalidDeviceFunction
cugraph_strongly_connected_components failed:
copy_if failed on 2nd step: cudaErrorInvalidDeviceFunction
Known upstream cuGraph defect on Blackwell
(sm_120, e.g. RTX 50-series / RTX PRO 6000)
(rapidsai/cugraph#5543) —
CCCL 3.4.0's CUB select tuning has no policy for compute capability 12.0.
The pinned cugraph fork routes SCC through a host-side fallback on
single-GPU sm_120 while keeping the C API result shape. If you see this,
you built upstream cuGraph (or an old fork commit) instead of the pinned
submodule.