Skip to content

Commit 643bf78

Browse files
[GLUTEN-10903][VL] Install cudf libraries in docker to simplify link and accelerate build (#11386)
This patch improved the GPU build with: - Build velox source code - cmake install cudf-build, so install relevant libraries such as kvikio - gluten link cudf::cudf - LD_LIBRARY_PATH to link correct curl version in veox _deps
1 parent 5382556 commit 643bf78

File tree

6 files changed

+24
-43
lines changed

6 files changed

+24
-43
lines changed

.github/workflows/velox_backend_x86.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1381,6 +1381,7 @@ jobs:
13811381
export CMAKE_BUILD_PARALLEL_LEVEL=4
13821382
export NUM_THREADS=4
13831383
export CCACHE_DIR=/work/.ccache
1384+
export LD_LIBRARY_PATH=/work/ep/build-velox/build/velox_ep/_build/release/_deps/curl-build/lib:$LD_LIBRARY_PATH
13841385
mkdir -p /work/.ccache
13851386
13861387
cd /work

cpp/velox/CMakeLists.txt

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,8 @@ if(BUILD_EXAMPLES)
417417
endif()
418418

419419
if(ENABLE_GPU)
420+
find_package(cudf CONFIG REQUIRED)
421+
420422
import_library(
421423
facebook::velox::velox_cudf_expression
422424
${VELOX_BUILD_PATH}/velox/experimental/cudf/expression/libvelox_cudf_expression.a
@@ -431,35 +433,20 @@ if(ENABLE_GPU)
431433
facebook::velox::velox_cudf_hive_connector
432434
${VELOX_BUILD_PATH}/velox/experimental/cudf/connectors/hive/libvelox_cudf_hive_connector.a
433435
)
434-
target_include_directories(
435-
velox
436-
PRIVATE ${VELOX_BUILD_PATH}/_deps/cudf-src/cpp/include
437-
${VELOX_BUILD_PATH}/_deps/rmm-src/cpp/include
438-
${VELOX_BUILD_PATH}/_deps/kvikio-src/cpp/include
439-
${VELOX_BUILD_PATH}/_deps/nvtx3-src/c/include
440-
${VELOX_BUILD_PATH}/_deps/nvcomp_proprietary_binary-src/include
441-
${VELOX_BUILD_PATH}/_deps/rapids_logger-src/include
442-
/usr/local/cuda/include/cccl
443-
/usr/local/cuda/include)
444436

445437
target_compile_definitions(
446438
velox PRIVATE LIBCUDACXX_ENABLE_EXPERIMENTAL_MEMORY_RESOURCE)
447439

440+
add_library(velox_curl SHARED IMPORTED GLOBAL)
441+
set_target_properties(
442+
velox_curl PROPERTIES IMPORTED_LOCATION
443+
${VELOX_BUILD_PATH}/_deps/curl-build/lib/libcurl.so)
444+
448445
target_link_libraries(
449446
velox
450447
PUBLIC facebook::velox::velox_cudf_exec facebook::velox::velox_cudf_vector
451448
facebook::velox::velox_cudf_hive_connector
452-
facebook::velox::velox_cudf_expression)
453-
target_link_libraries(
454-
velox
455-
PRIVATE
456-
${VELOX_BUILD_PATH}/_deps/cudf-build/libcudf.so
457-
${VELOX_BUILD_PATH}/_deps/rmm-build/librmm.so
458-
${VELOX_BUILD_PATH}/_deps/kvikio-build/libkvikio.so
459-
${VELOX_BUILD_PATH}/_deps/nvcomp_proprietary_binary-src/lib64/libnvcomp.so
460-
${VELOX_BUILD_PATH}/_deps/nvcomp_proprietary_binary-src/lib64/libnvcomp_cpu.so
461-
${VELOX_BUILD_PATH}/_deps/rapids_logger-build/librapids_logger.so
462-
/usr/local/cuda/lib64/libcudart.so)
449+
facebook::velox::velox_cudf_expression cudf::cudf velox_curl)
463450
endif()
464451

465452
add_custom_command(

cpp/velox/benchmarks/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ target_link_libraries(velox_benchmark_common PUBLIC velox benchmark::benchmark
2424
function(add_velox_benchmark BM_EXEC BM_FILE)
2525
add_executable(${BM_EXEC} ${BM_FILE})
2626
target_link_libraries(${BM_EXEC} PRIVATE velox_benchmark_common)
27+
if(ENABLE_GPU)
28+
target_link_libraries(${BM_EXEC} PRIVATE velox_curl)
29+
endif()
2730
endfunction()
2831

2932
# Generic benchmark

cpp/velox/tests/CMakeLists.txt

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ function(add_velox_test TEST_EXEC)
2929
target_include_directories(${TEST_EXEC} PRIVATE ${CMAKE_SOURCE_DIR}/velox
3030
${CMAKE_SOURCE_DIR}/src)
3131
target_link_libraries(${TEST_EXEC} velox GTest::gtest GTest::gtest_main)
32+
if(ENABLE_GPU)
33+
target_link_libraries(${TEST_EXEC} velox_curl)
34+
endif()
3235
gtest_discover_tests(${TEST_EXEC} DISCOVERY_MODE PRE_TEST)
3336
endfunction()
3437

@@ -71,35 +74,16 @@ if(ENABLE_GPU)
7174
facebook::velox::velox_cudf_hive_connector
7275
${VELOX_BUILD_PATH}/velox/experimental/cudf/connectors/hive/libvelox_cudf_hive_connector.a
7376
)
74-
target_include_directories(
75-
${TEST_EXEC}
76-
PRIVATE ${VELOX_BUILD_PATH}/_deps/cudf-src/cpp/include
77-
${VELOX_BUILD_PATH}/_deps/rmm-src/cpp/include
78-
${VELOX_BUILD_PATH}/_deps/kvikio-src/cpp/include
79-
${VELOX_BUILD_PATH}/_deps/nvtx3-src/c/include
80-
${VELOX_BUILD_PATH}/_deps/nvcomp_proprietary_binary-src/include
81-
${VELOX_BUILD_PATH}/_deps/rapids_logger-src/include
82-
/usr/local/cuda/include)
8377
target_compile_definitions(
8478
${TEST_EXEC} PUBLIC LIBCUDACXX_ENABLE_EXPERIMENTAL_MEMORY_RESOURCE)
85-
target_link_libraries(
86-
${TEST_EXEC}
87-
PRIVATE
88-
${VELOX_BUILD_PATH}/_deps/cudf-build/libcudf.so
89-
${VELOX_BUILD_PATH}/_deps/rmm-build/librmm.so
90-
${VELOX_BUILD_PATH}/_deps/kvikio-build/libkvikio.so
91-
${VELOX_BUILD_PATH}/_deps/nvcomp_proprietary_binary-src/lib64/libnvcomp.so
92-
${VELOX_BUILD_PATH}/_deps/nvcomp_proprietary_binary-src/lib64/libnvcomp_cpu.so
93-
${VELOX_BUILD_PATH}/_deps/rapids_logger-build/librapids_logger.so
94-
/usr/local/cuda-12.8/lib64/libcudart.so.12)
9579
target_link_libraries(
9680
${TEST_EXEC}
9781
PUBLIC facebook::velox::velox_cudf_expression
9882
facebook::velox::velox_cudf_exec
9983
facebook::velox::velox_cudf_vector
10084
facebook::velox::velox_cudf_hive_connector)
101-
target_link_libraries(${TEST_EXEC} PRIVATE velox GTest::gtest
102-
GTest::gtest_main)
85+
target_link_libraries(${TEST_EXEC} PRIVATE velox cudf::cudf velox_curl
86+
GTest::gtest GTest::gtest_main)
10387
gtest_discover_tests(
10488
${TEST_EXEC} DISCOVERY_MODE PRE_TEST
10589
PROPERTIES LABELS "cuda_driver"

dev/docker/cudf/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ RUN cd /opt/gluten/.github/workflows/util/ && ./install-spark-resources.sh 3.4
2525
ENV SPARK_HOME=/opt/spark-3.4.4-bin-hadoop3
2626
ENV PATH=$SPARK_HOME/bin:$PATH
2727
ENV CUDA_ARCHITECTURES=70
28-
28+
ENV LD_LIBRARY_PATH=/opt/gluten/ep/build-velox/build/velox_ep/_build/release/_deps/curl-build/lib:$LD_LIBRARY_PATH
2929

3030
WORKDIR /opt/gluten
3131
RUN rm -rf /opt/rh/gcc-toolset-12 && ln -s /opt/rh/gcc-toolset-14 /opt/rh/gcc-toolset-12; \

ep/build-velox/src/build-velox.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,12 @@ function compile {
173173
sudo cmake --install xsimd-build/
174174
fi
175175
fi
176+
if [ -d cudf-build ]; then
177+
echo "INSTALL cudf."
178+
if [ $OS == 'Linux' ]; then
179+
sudo cmake --install cudf-build/
180+
fi
181+
fi
176182
if [ -d googletest-build ]; then
177183
echo "INSTALL gtest."
178184
if [ $OS == 'Linux' ]; then

0 commit comments

Comments
 (0)