diff --git a/cpp/velox/CMakeLists.txt b/cpp/velox/CMakeLists.txt index fc6391b7f3c0..b9d3e65afe0b 100644 --- a/cpp/velox/CMakeLists.txt +++ b/cpp/velox/CMakeLists.txt @@ -47,6 +47,10 @@ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL arm64) set(SYSTEM_LIB_MULTIARCH_PATH "/usr/lib" CACHE PATH "System Lib MultiArch dir") +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL ppc64le) + set(SYSTEM_LIB_MULTIARCH_PATH + "/usr/lib" + CACHE PATH "System Lib MultiArch dir") else() message(FATAL_ERROR "Unsupported processor type: ${CMAKE_SYSTEM_PROCESSOR}") endif() diff --git a/dev/build-helper-functions.sh b/dev/build-helper-functions.sh index c6aa525cc483..4be8ad170ba1 100644 --- a/dev/build-helper-functions.sh +++ b/dev/build-helper-functions.sh @@ -55,6 +55,8 @@ function get_cxx_flags { CPU_ARCH="sse" elif [ "$MACHINE" = "aarch64" ]; then CPU_ARCH="aarch64" + elif [ "$MACHINE" = "ppc64le" ]; then + CPU_ARCH="ppc64le" fi fi fi @@ -121,6 +123,10 @@ function get_cxx_flags { echo -n "-march=armv8-a+crc+crypto -std=c++20 $ADDITIONAL_FLAGS" fi ;; + + "ppc64le") + echo -n "-mcpu=power10 -std=c++20 $ADDITIONAL_FLAGS" + ;; *) echo -n "Architecture not supported!" esac diff --git a/dev/build-thirdparty.sh b/dev/build-thirdparty.sh index 0ef37111fa2f..5676154b12f8 100755 --- a/dev/build-thirdparty.sh +++ b/dev/build-thirdparty.sh @@ -38,7 +38,7 @@ function process_setup_ubuntu_2204 { function process_setup_centos_9 { cp /lib64/{libre2.so.9,libdouble-conversion.so.3,libevent-2.1.so.7,libdwarf.so.0,libicudata.so.67,libicui18n.so.67,libicuuc.so.67,libsodium.so.23} $THIRDPARTY_LIB/ cp /usr/local/lib/{libboost_context.so.1.84.0,libboost_filesystem.so.1.84.0,libboost_program_options.so.1.84.0,libboost_regex.so.1.84.0,libboost_system.so.1.84.0,libboost_thread.so.1.84.0,libboost_atomic.so.1.84.0} $THIRDPARTY_LIB/ - cp /usr/local/lib64/{libgflags.so.2.2,libglog.so.1} $THIRDPARTY_LIB/ + cp /usr/local/lib64/{libgflags.so.2.2,libglog.so.1,libgeos.so.3.10.7} $THIRDPARTY_LIB/ } function process_setup_centos_8 { diff --git a/dev/docker/Dockerfile.centos8-dynamic-build b/dev/docker/Dockerfile.centos8-dynamic-build index 785c6c545b85..c449921634b3 100644 --- a/dev/docker/Dockerfile.centos8-dynamic-build +++ b/dev/docker/Dockerfile.centos8-dynamic-build @@ -43,8 +43,9 @@ RUN set -ex; \ ./install-resources.sh 3.5; \ ./install-resources.sh 3.5-scala2.13; \ ./install-resources.sh 4.0; \ - if [ "$(uname -m)" = "aarch64" ]; then \ - export CPU_TARGET="aarch64"; \ + ARCH=$(uname -m); \ + if [[ "$ARCH" == "aarch64" || "$ARCH" == "ppc64le" ]]; then \ + export CPU_TARGET="$ARCH"; \ fi; \ cd /opt/gluten; \ source /opt/rh/gcc-toolset-11/enable; \ diff --git a/dev/docker/Dockerfile.centos9-dynamic-build b/dev/docker/Dockerfile.centos9-dynamic-build index 25866155cc96..55cc4dcc06b1 100644 --- a/dev/docker/Dockerfile.centos9-dynamic-build +++ b/dev/docker/Dockerfile.centos9-dynamic-build @@ -41,8 +41,9 @@ RUN set -ex; \ ./install-resources.sh 3.5; \ ./install-resources.sh 3.5-scala2.13; \ ./install-resources.sh 4.0; \ - if [ "$(uname -m)" = "aarch64" ]; then \ - export CPU_TARGET="aarch64"; \ + ARCH=$(uname -m); \ + if [[ "$ARCH" == "aarch64" || "$ARCH" == "ppc64le" ]]; then \ + export CPU_TARGET="$ARCH"; \ fi; \ cd /opt/gluten; \ source /opt/rh/gcc-toolset-12/enable; \ diff --git a/dev/package.sh b/dev/package.sh index 34a24b9b52ab..0dc316c87c32 100755 --- a/dev/package.sh +++ b/dev/package.sh @@ -27,6 +27,8 @@ cd "$GLUTEN_DIR" if [ "$ARCH" = "aarch64" ]; then export CPU_TARGET="aarch64" +elif [ "$ARCH" = "ppc64le" ]; then + export CPU_TARGET="ppc64le" fi # build gluten with velox backend, prompt always respond y diff --git a/ep/build-velox/src/build-velox.sh b/ep/build-velox/src/build-velox.sh index 2299792671fc..8d2d3317c026 100755 --- a/ep/build-velox/src/build-velox.sh +++ b/ep/build-velox/src/build-velox.sh @@ -155,7 +155,7 @@ function compile { export Arrow_SOURCE=AUTO if [ $ARCH == 'x86_64' ]; then make $COMPILE_TYPE $NUM_THREADS_OPTS EXTRA_CMAKE_FLAGS="${COMPILE_OPTION}" - elif [[ "$ARCH" == 'arm64' || "$ARCH" == 'aarch64' ]]; then + elif [[ "$ARCH" == 'arm64' || "$ARCH" == 'aarch64' || "$ARCH" == "ppc64le" ]]; then CPU_TARGET=$ARCH make $COMPILE_TYPE $NUM_THREADS_OPTS EXTRA_CMAKE_FLAGS="${COMPILE_OPTION}" else echo "Unsupported arch: $ARCH" diff --git a/ep/build-velox/src/get-velox.sh b/ep/build-velox/src/get-velox.sh index 27e083bbf113..1878e4938514 100755 --- a/ep/build-velox/src/get-velox.sh +++ b/ep/build-velox/src/get-velox.sh @@ -197,8 +197,9 @@ function setup_linux { elif [[ "$LINUX_DISTRIBUTION" == "rhel" ]]; then case "$LINUX_VERSION_ID" in 9.6) ;; + 9.7) ;; *) - echo "Unsupported openEuler version: $LINUX_VERSION_ID" + echo "Unsupported rhel version: $LINUX_VERSION_ID" exit 1 ;; esac diff --git a/pom.xml b/pom.xml index 2227f9d353eb..f2381563a381 100644 --- a/pom.xml +++ b/pom.xml @@ -2234,5 +2234,28 @@ ${platform}_${arch} + + linux-ppc64le + + + Linux + ppc64le + + + + linux + ppc64le + ${platform}_${arch} + + + + disaggregated-shuffle + + false + + + gluten-disaggregated-shuffle + +