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