From 80cce9b6cde3413053cbef6b3e255a2dc1ff17d1 Mon Sep 17 00:00:00 2001 From: Chengcheng Jin Date: Fri, 9 Jan 2026 14:22:16 +0800 Subject: [PATCH 1/3] [GLUTEN-10903][VL] Install cudf libraries in docker to simplify link and accelerate build --- .github/workflows/velox_backend_x86.yml | 1 + cpp/velox/CMakeLists.txt | 24 +++--------------------- cpp/velox/tests/CMakeLists.txt | 21 +-------------------- dev/docker/cudf/Dockerfile | 2 +- ep/build-velox/src/build-velox.sh | 6 ++++++ 5 files changed, 12 insertions(+), 42 deletions(-) diff --git a/.github/workflows/velox_backend_x86.yml b/.github/workflows/velox_backend_x86.yml index 12bc7acabe9a..066c5ed5655b 100644 --- a/.github/workflows/velox_backend_x86.yml +++ b/.github/workflows/velox_backend_x86.yml @@ -1381,6 +1381,7 @@ jobs: export CMAKE_BUILD_PARALLEL_LEVEL=4 export NUM_THREADS=4 export CCACHE_DIR=/work/.ccache + export LD_LIBRARY_PATH=/work/ep/build-velox/build/velox_ep/_build/release/_deps/curl-build/lib:$LD_LIBRARY_PATH mkdir -p /work/.ccache cd /work diff --git a/cpp/velox/CMakeLists.txt b/cpp/velox/CMakeLists.txt index 9547cde0e254..d133debf4662 100644 --- a/cpp/velox/CMakeLists.txt +++ b/cpp/velox/CMakeLists.txt @@ -417,6 +417,8 @@ if(BUILD_EXAMPLES) endif() if(ENABLE_GPU) + find_package(cudf CONFIG REQUIRED) + import_library( facebook::velox::velox_cudf_expression ${VELOX_BUILD_PATH}/velox/experimental/cudf/expression/libvelox_cudf_expression.a @@ -431,16 +433,6 @@ if(ENABLE_GPU) facebook::velox::velox_cudf_hive_connector ${VELOX_BUILD_PATH}/velox/experimental/cudf/connectors/hive/libvelox_cudf_hive_connector.a ) - target_include_directories( - velox - PRIVATE ${VELOX_BUILD_PATH}/_deps/cudf-src/cpp/include - ${VELOX_BUILD_PATH}/_deps/rmm-src/cpp/include - ${VELOX_BUILD_PATH}/_deps/kvikio-src/cpp/include - ${VELOX_BUILD_PATH}/_deps/nvtx3-src/c/include - ${VELOX_BUILD_PATH}/_deps/nvcomp_proprietary_binary-src/include - ${VELOX_BUILD_PATH}/_deps/rapids_logger-src/include - /usr/local/cuda/include/cccl - /usr/local/cuda/include) target_compile_definitions( velox PRIVATE LIBCUDACXX_ENABLE_EXPERIMENTAL_MEMORY_RESOURCE) @@ -449,17 +441,7 @@ if(ENABLE_GPU) velox PUBLIC facebook::velox::velox_cudf_exec facebook::velox::velox_cudf_vector facebook::velox::velox_cudf_hive_connector - facebook::velox::velox_cudf_expression) - target_link_libraries( - velox - PRIVATE - ${VELOX_BUILD_PATH}/_deps/cudf-build/libcudf.so - ${VELOX_BUILD_PATH}/_deps/rmm-build/librmm.so - ${VELOX_BUILD_PATH}/_deps/kvikio-build/libkvikio.so - ${VELOX_BUILD_PATH}/_deps/nvcomp_proprietary_binary-src/lib64/libnvcomp.so - ${VELOX_BUILD_PATH}/_deps/nvcomp_proprietary_binary-src/lib64/libnvcomp_cpu.so - ${VELOX_BUILD_PATH}/_deps/rapids_logger-build/librapids_logger.so - /usr/local/cuda/lib64/libcudart.so) + facebook::velox::velox_cudf_expression cudf::cudf) endif() add_custom_command( diff --git a/cpp/velox/tests/CMakeLists.txt b/cpp/velox/tests/CMakeLists.txt index 5fd4f1f8307b..71ccf26a5726 100644 --- a/cpp/velox/tests/CMakeLists.txt +++ b/cpp/velox/tests/CMakeLists.txt @@ -71,34 +71,15 @@ if(ENABLE_GPU) facebook::velox::velox_cudf_hive_connector ${VELOX_BUILD_PATH}/velox/experimental/cudf/connectors/hive/libvelox_cudf_hive_connector.a ) - target_include_directories( - ${TEST_EXEC} - PRIVATE ${VELOX_BUILD_PATH}/_deps/cudf-src/cpp/include - ${VELOX_BUILD_PATH}/_deps/rmm-src/cpp/include - ${VELOX_BUILD_PATH}/_deps/kvikio-src/cpp/include - ${VELOX_BUILD_PATH}/_deps/nvtx3-src/c/include - ${VELOX_BUILD_PATH}/_deps/nvcomp_proprietary_binary-src/include - ${VELOX_BUILD_PATH}/_deps/rapids_logger-src/include - /usr/local/cuda/include) target_compile_definitions( ${TEST_EXEC} PUBLIC LIBCUDACXX_ENABLE_EXPERIMENTAL_MEMORY_RESOURCE) - target_link_libraries( - ${TEST_EXEC} - PRIVATE - ${VELOX_BUILD_PATH}/_deps/cudf-build/libcudf.so - ${VELOX_BUILD_PATH}/_deps/rmm-build/librmm.so - ${VELOX_BUILD_PATH}/_deps/kvikio-build/libkvikio.so - ${VELOX_BUILD_PATH}/_deps/nvcomp_proprietary_binary-src/lib64/libnvcomp.so - ${VELOX_BUILD_PATH}/_deps/nvcomp_proprietary_binary-src/lib64/libnvcomp_cpu.so - ${VELOX_BUILD_PATH}/_deps/rapids_logger-build/librapids_logger.so - /usr/local/cuda-12.8/lib64/libcudart.so.12) target_link_libraries( ${TEST_EXEC} PUBLIC facebook::velox::velox_cudf_expression facebook::velox::velox_cudf_exec facebook::velox::velox_cudf_vector facebook::velox::velox_cudf_hive_connector) - target_link_libraries(${TEST_EXEC} PRIVATE velox GTest::gtest + target_link_libraries(${TEST_EXEC} PRIVATE velox cudf::cudf GTest::gtest GTest::gtest_main) gtest_discover_tests( ${TEST_EXEC} DISCOVERY_MODE PRE_TEST diff --git a/dev/docker/cudf/Dockerfile b/dev/docker/cudf/Dockerfile index c900c632ea1f..f81f8b7d9ae8 100644 --- a/dev/docker/cudf/Dockerfile +++ b/dev/docker/cudf/Dockerfile @@ -25,7 +25,7 @@ RUN cd /opt/gluten/.github/workflows/util/ && ./install-spark-resources.sh 3.4 ENV SPARK_HOME=/opt/spark-3.4.4-bin-hadoop3 ENV PATH=$SPARK_HOME/bin:$PATH ENV CUDA_ARCHITECTURES=70 - +ENV LD_LIBRARY_PATH=/opt/gluten/ep/build-velox/build/velox_ep/_build/release/_deps/curl-build/lib:$LD_LIBRARY_PATH WORKDIR /opt/gluten RUN rm -rf /opt/rh/gcc-toolset-12 && ln -s /opt/rh/gcc-toolset-14 /opt/rh/gcc-toolset-12; \ diff --git a/ep/build-velox/src/build-velox.sh b/ep/build-velox/src/build-velox.sh index ac62f8fc27f3..b4b31fa9e1cd 100755 --- a/ep/build-velox/src/build-velox.sh +++ b/ep/build-velox/src/build-velox.sh @@ -173,6 +173,12 @@ function compile { sudo cmake --install xsimd-build/ fi fi + if [ -d cudf-build ]; then + echo "INSTALL cudf." + if [ $OS == 'Linux' ]; then + sudo cmake --install cudf-build/ + fi + fi if [ -d googletest-build ]; then echo "INSTALL gtest." if [ $OS == 'Linux' ]; then From 80117f32cdce78be39436f52894d17ace8330e5a Mon Sep 17 00:00:00 2001 From: Chengcheng Jin Date: Mon, 12 Jan 2026 17:29:48 +0800 Subject: [PATCH 2/3] fix test and benchmark build --- cpp/velox/CMakeLists.txt | 7 ++++++- cpp/velox/benchmarks/CMakeLists.txt | 3 +++ cpp/velox/tests/CMakeLists.txt | 5 ++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cpp/velox/CMakeLists.txt b/cpp/velox/CMakeLists.txt index d133debf4662..519ab765b933 100644 --- a/cpp/velox/CMakeLists.txt +++ b/cpp/velox/CMakeLists.txt @@ -437,11 +437,16 @@ if(ENABLE_GPU) target_compile_definitions( velox PRIVATE LIBCUDACXX_ENABLE_EXPERIMENTAL_MEMORY_RESOURCE) + add_library(velox_curl SHARED IMPORTED GLOBAL) + set_target_properties(velox_curl PROPERTIES + IMPORTED_LOCATION + ${VELOX_BUILD_PATH}/_deps/curl-build/lib/libcurl.so) + target_link_libraries( velox PUBLIC facebook::velox::velox_cudf_exec facebook::velox::velox_cudf_vector facebook::velox::velox_cudf_hive_connector - facebook::velox::velox_cudf_expression cudf::cudf) + facebook::velox::velox_cudf_expression cudf::cudf velox_curl) endif() add_custom_command( diff --git a/cpp/velox/benchmarks/CMakeLists.txt b/cpp/velox/benchmarks/CMakeLists.txt index 9a95ba97ac45..e56627466c91 100644 --- a/cpp/velox/benchmarks/CMakeLists.txt +++ b/cpp/velox/benchmarks/CMakeLists.txt @@ -24,6 +24,9 @@ target_link_libraries(velox_benchmark_common PUBLIC velox benchmark::benchmark function(add_velox_benchmark BM_EXEC BM_FILE) add_executable(${BM_EXEC} ${BM_FILE}) target_link_libraries(${BM_EXEC} PRIVATE velox_benchmark_common) + if(ENABLE_GPU) + target_link_libraries(${BM_EXEC} PRIVATE velox_curl) + endif() endfunction() # Generic benchmark diff --git a/cpp/velox/tests/CMakeLists.txt b/cpp/velox/tests/CMakeLists.txt index 71ccf26a5726..7df4aa96479a 100644 --- a/cpp/velox/tests/CMakeLists.txt +++ b/cpp/velox/tests/CMakeLists.txt @@ -29,6 +29,9 @@ function(add_velox_test TEST_EXEC) target_include_directories(${TEST_EXEC} PRIVATE ${CMAKE_SOURCE_DIR}/velox ${CMAKE_SOURCE_DIR}/src) target_link_libraries(${TEST_EXEC} velox GTest::gtest GTest::gtest_main) + if(ENABLE_GPU) + target_link_libraries(${TEST_EXEC} velox_curl) + endif() gtest_discover_tests(${TEST_EXEC} DISCOVERY_MODE PRE_TEST) endfunction() @@ -79,7 +82,7 @@ if(ENABLE_GPU) facebook::velox::velox_cudf_exec facebook::velox::velox_cudf_vector facebook::velox::velox_cudf_hive_connector) - target_link_libraries(${TEST_EXEC} PRIVATE velox cudf::cudf GTest::gtest + target_link_libraries(${TEST_EXEC} PRIVATE velox cudf::cudf velox_curl GTest::gtest GTest::gtest_main) gtest_discover_tests( ${TEST_EXEC} DISCOVERY_MODE PRE_TEST From 6eb136e916cb63d5dee8c897484ce0f23dad5b98 Mon Sep 17 00:00:00 2001 From: Chengcheng Jin Date: Tue, 13 Jan 2026 14:58:31 +0800 Subject: [PATCH 3/3] fix code style --- cpp/velox/CMakeLists.txt | 6 +++--- cpp/velox/tests/CMakeLists.txt | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cpp/velox/CMakeLists.txt b/cpp/velox/CMakeLists.txt index 519ab765b933..806b65f881c0 100644 --- a/cpp/velox/CMakeLists.txt +++ b/cpp/velox/CMakeLists.txt @@ -438,9 +438,9 @@ if(ENABLE_GPU) velox PRIVATE LIBCUDACXX_ENABLE_EXPERIMENTAL_MEMORY_RESOURCE) add_library(velox_curl SHARED IMPORTED GLOBAL) - set_target_properties(velox_curl PROPERTIES - IMPORTED_LOCATION - ${VELOX_BUILD_PATH}/_deps/curl-build/lib/libcurl.so) + set_target_properties( + velox_curl PROPERTIES IMPORTED_LOCATION + ${VELOX_BUILD_PATH}/_deps/curl-build/lib/libcurl.so) target_link_libraries( velox diff --git a/cpp/velox/tests/CMakeLists.txt b/cpp/velox/tests/CMakeLists.txt index 7df4aa96479a..a690347bc4bc 100644 --- a/cpp/velox/tests/CMakeLists.txt +++ b/cpp/velox/tests/CMakeLists.txt @@ -82,8 +82,8 @@ if(ENABLE_GPU) facebook::velox::velox_cudf_exec facebook::velox::velox_cudf_vector facebook::velox::velox_cudf_hive_connector) - target_link_libraries(${TEST_EXEC} PRIVATE velox cudf::cudf velox_curl GTest::gtest - GTest::gtest_main) + target_link_libraries(${TEST_EXEC} PRIVATE velox cudf::cudf velox_curl + GTest::gtest GTest::gtest_main) gtest_discover_tests( ${TEST_EXEC} DISCOVERY_MODE PRE_TEST PROPERTIES LABELS "cuda_driver"