diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index cab33c9e9d..b9504f576a 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -875,11 +875,11 @@ if (CUOPT_BUILD_CUSTOM_CUDSS_MTLAYER) INSTALL_RPATH "\$ORIGIN" ) set(CUDSS_MT_LIB_FILE_NAME "libcudss_mtlayer_cuopt.so") -else () - # Full path, not just the basename, so the runtime dlopen pin (sparse_cholesky.cuh) and - # cudssSetThreadingLayer() resolve the exact same file CMake found (#1883). - set(CUDSS_MT_LIB_FILE_NAME "${CUDSS_MT_LIB_FILE}") endif () +# else: keep the basename already computed above (line 740) -- glibc's dlopen matches an +# already-loaded library by name before searching paths, so the runtime pin (sparse_cholesky.cuh) +# and cudssSetThreadingLayer()'s own dlopen still resolve to the same mapping. A full, +# build-time-resolved path isn't needed for that, and can go stale after install. # cuopt_routing: VRP / routing engine (omitted when SKIP_ROUTING_BUILD=ON) # diff --git a/cpp/src/barrier/sparse_cholesky.cuh b/cpp/src/barrier/sparse_cholesky.cuh index 71ba3c0e01..d842a778fc 100644 --- a/cpp/src/barrier/sparse_cholesky.cuh +++ b/cpp/src/barrier/sparse_cholesky.cuh @@ -289,9 +289,8 @@ class sparse_cholesky_cudss_t : public sparse_cholesky_base_t { if (!detail::pin_cudss_threading_layer(cudss_mt_lib_file)) { settings.log.printf( "cuDSS Threading layer : could not pin '%s'; falling back to single-threaded " - "cuDSS to avoid a possible crash during teardown. Set the CUDSS_THREADING_LIB " - "environment variable to an absolute path, or ensure the host provides " - "libgomp.so.1, to enable multi-threaded cuDSS.\n", + "cuDSS. Set the CUDSS_THREADING_LIB environment variable to an absolute path, or " + "ensure the host provides libgomp.so.1, to enable multi-threaded cuDSS.\n", cudss_mt_lib_file); } else { cudssStatus_t threading_status = cudssSetThreadingLayer(handle, cudss_mt_lib_file);