diff --git a/build/buildcpp.sh b/build/buildcpp.sh
index 02f1dfcf25..216e47b4cf 100755
--- a/build/buildcpp.sh
+++ b/build/buildcpp.sh
@@ -55,6 +55,7 @@ CPP_PARALLEL_LEVEL=${CPP_PARALLEL_LEVEL:-10}
CUDF_BUILD_TYPE=${CUDF_BUILD_TYPE:-Release}
CUDF_PATH=${CUDF_PATH:-$PROJECT_BASE_DIR/thirdparty/cudf}
CUDF_PIN_PATH=${CUDF_PIN_PATH:-$PROJECT_BASE_DIR/thirdparty/cudf-pins}
+CUDF_NVCOMP_LINKAGE=${CUDF_NVCOMP_LINKAGE:-SHARED}
CUDF_USE_PER_THREAD_DEFAULT_STREAM=${CUDF_USE_PER_THREAD_DEFAULT_STREAM:-ON}
GPU_ARCHS=${GPU_ARCHS:-DEPRECATED}
CMAKE_CUDA_ARCHITECTURES=${CMAKE_CUDA_ARCHITECTURES:-RAPIDS}
@@ -70,6 +71,7 @@ LIBCUDF_CONFIGURE_ONLY=${LIBCUDF_CONFIGURE_ONLY:-OFF}" > "$PROJECT_BUILD_DIR/bui
fi
source "$PROJECT_BUILD_DIR/buildcpp-env.sh"
+CUDF_NVCOMP_LINKAGE=${CUDF_NVCOMP_LINKAGE:-SHARED}
if [[ "$GPU_ARCHS" != "DEPRECATED" ]]; then
CMAKE_CUDA_ARCHITECTURES="$GPU_ARCHS"
@@ -117,6 +119,7 @@ if [[ $LIBCUDF_BUILD_CONFIGURE == true || ! -f $LIBCUDF_BUILD_PATH/CMakeCache.tx
-DCUDF_KVIKIO_REMOTE_IO=OFF \
-DCUDF_LARGE_STRINGS_DISABLED=ON \
-DCUDF_BUILD_STATIC_DEPS=FORCE \
+ -DCUDF_NVCOMP_LINKAGE="$CUDF_NVCOMP_LINKAGE" \
-DLIBCUDF_LOGGING_LEVEL="$RMM_LOGGING_LEVEL" \
-DRMM_LOGGING_LEVEL="$RMM_LOGGING_LEVEL" \
-C="$CUDF_PIN_PATH/setup.cmake"
diff --git a/pom.xml b/pom.xml
index 6b57307cb8..59437ae94f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -90,6 +90,7 @@
ON
ON
ON
+ SHARED
false
false
cuda12
@@ -462,6 +463,7 @@
+
diff --git a/src/main/cpp/CMakeLists.txt b/src/main/cpp/CMakeLists.txt
index 5fc9787d76..0a2cdb4a81 100644
--- a/src/main/cpp/CMakeLists.txt
+++ b/src/main/cpp/CMakeLists.txt
@@ -62,6 +62,7 @@ option(BUILD_TESTS "Configure CMake to build tests" OFF)
option(BUILD_BENCHMARKS "Configure CMake to build (google) benchmarks" OFF)
option(BUILD_FAULTINJ "Configure CMake to build fault injection" ON)
option(BUILD_PROFILER "Configure CMake to build profiler" ON)
+option(HIDE_PRIVATE_CUDA_SYMBOLS "Hide private symbols from static CUDA compiler libraries" ON)
message(
VERBOSE "SPARK_RAPIDS_JNI: Build with per-thread default stream:
@@ -70,6 +71,9 @@ message(
message(VERBOSE "SPARK_RAPIDS_JNI: Configure CMake to build tests: ${BUILD_TESTS}")
message(VERBOSE "SPARK_RAPIDS_JNI: Configure CMake to build (nvbench) benchmarks: ${BUILD_BENCHMARKS}")
message(VERBOSE "SPARK_RAPIDS_JNI: Configure CMake to build fault injection: ${BUILD_FAULTINJ}")
+message(VERBOSE
+ "SPARK_RAPIDS_JNI: Hide private static CUDA compiler symbols: ${HIDE_PRIVATE_CUDA_SYMBOLS}"
+)
set(SPARK_RAPIDS_JNI_BUILD_TESTS ${BUILD_TESTS})
set(SPARK_RAPIDS_JNI_BUILD_BENCHMARKS ${BUILD_BENCHMARKS})
@@ -349,6 +353,17 @@ target_link_libraries(
${PARQUET_LIB}
${THRIFT_LIB}
)
+if(HIDE_PRIVATE_CUDA_SYMBOLS)
+ # These toolkit implementation symbols are not part of the cuDF or JNI ABI. Localizing them keeps
+ # the regular ELF symbol table for diagnostics while removing them from the dynamic export table.
+ target_link_options(
+ spark_rapids_jni
+ PRIVATE "LINKER:--exclude-libs,libnvrtc_static.a"
+ "LINKER:--exclude-libs,libnvrtc-builtins_static.a"
+ "LINKER:--exclude-libs,libnvptxcompiler_static.a"
+ "LINKER:--exclude-libs,libnvJitLink_static.a"
+ )
+endif()
rapids_cuda_set_runtime(spark_rapids_jni USE_STATIC ON)
set_target_properties(spark_rapids_jni PROPERTIES LINK_LANGUAGE "CXX")
# For backwards-compatibility with the cudf Java bindings and RAPIDS accelerated UDFs,
diff --git a/thirdparty/cudf b/thirdparty/cudf
index 2f166347a9..960d6746ab 160000
--- a/thirdparty/cudf
+++ b/thirdparty/cudf
@@ -1 +1 @@
-Subproject commit 2f166347a918be0a7244db4774419e7d162d06e3
+Subproject commit 960d6746abc11e2fda2b7dcd609553a546e6607f