From 3810727688a3004788ce9289bda3ca61794cb921 Mon Sep 17 00:00:00 2001 From: Kai Qiang Wu Date: Tue, 17 Jan 2023 23:46:11 +0800 Subject: [PATCH] [chore](thirdparty) Update bitshuffle from 0.3.5 to 0.5.1 (#15993) In order to use AVX512 instructions. See #15972 --- thirdparty/build-thirdparty.sh | 15 +++++++++------ thirdparty/vars.sh | 8 ++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/thirdparty/build-thirdparty.sh b/thirdparty/build-thirdparty.sh index 934a2c441e3ab4..930c298e00be5e 100755 --- a/thirdparty/build-thirdparty.sh +++ b/thirdparty/build-thirdparty.sh @@ -1035,11 +1035,11 @@ build_bitshuffle() { cd "${TP_SOURCE_DIR}/${BITSHUFFLE_SOURCE}" PREFIX="${TP_INSTALL_DIR}" - # This library has significant optimizations when built with -mavx2. However, - # we still need to support non-AVX2-capable hardware. So, we build it twice, - # once with the flag and once without, and use some linker tricks to - # suffix the AVX2 symbols with '_avx2'. - arches=('default' 'avx2') + # This library has significant optimizations when built with AVX2/AVX512. However, + # we still need to support non-AVX2-capable hardware. So, we build it three times, + # with the flag AVX2, AVX512 each and once without, and use some linker tricks to + # suffix the AVX2 symbols with '_avx2', AVX512 symbols with '_avx512' + arches=('default' 'avx2' 'avx512') MACHINE_TYPE="$(uname -m)" # Becuase aarch64 don't support avx2, disable it. if [[ "${MACHINE_TYPE}" == "aarch64" || "${MACHINE_TYPE}" == 'arm64' ]]; then @@ -1052,6 +1052,9 @@ build_bitshuffle() { if [[ "${arch}" == "avx2" ]]; then arch_flag="-mavx2" fi + if [[ "${arch}" == "avx512" ]]; then + arch_flag="-mavx512bw -mavx512f" + fi tmp_obj="bitshuffle_${arch}_tmp.o" dst_obj="bitshuffle_${arch}.o" "${CC}" ${EXTRA_CFLAGS:+${EXTRA_CFLAGS}} ${arch_flag:+${arch_flag}} -std=c99 "-I${PREFIX}/include/lz4" -O3 -DNDEBUG -c \ @@ -1061,7 +1064,7 @@ build_bitshuffle() { # Merge the object files together to produce a combined .o file. "${ld}" -r -o "${tmp_obj}" bitshuffle_core.o bitshuffle.o iochain.o # For the AVX2 symbols, suffix them. - if [[ "${arch}" == "avx2" ]]; then + if [[ "${arch}" == "avx2" ]] || [[ "${arch}" == "avx512" ]]; then local nm="${DORIS_BIN_UTILS}/nm" local objcopy="${DORIS_BIN_UTILS}/objcopy" diff --git a/thirdparty/vars.sh b/thirdparty/vars.sh index 37960704110f1b..4315496c1477f2 100644 --- a/thirdparty/vars.sh +++ b/thirdparty/vars.sh @@ -263,10 +263,10 @@ S2_SOURCE=s2geometry-0.10.0 S2_MD5SUM="c68f3c5d326dde9255681b9201393a9f" # bitshuffle -BITSHUFFLE_DOWNLOAD="https://github.com/kiyo-masui/bitshuffle/archive/0.3.5.tar.gz" -BITSHUFFLE_NAME=bitshuffle-0.3.5.tar.gz -BITSHUFFLE_SOURCE=bitshuffle-0.3.5 -BITSHUFFLE_MD5SUM="2648ec7ccd0b896595c6636d926fc867" +BITSHUFFLE_DOWNLOAD="https://github.com/kiyo-masui/bitshuffle/archive/0.5.1.tar.gz" +BITSHUFFLE_NAME=bitshuffle-0.5.1.tar.gz +BITSHUFFLE_SOURCE=bitshuffle-0.5.1 +BITSHUFFLE_MD5SUM="b3bf6a9838927f7eb62214981c138e2f" # croaringbitmap CROARINGBITMAP_DOWNLOAD="https://github.com/RoaringBitmap/CRoaring/archive/refs/tags/v0.4.0.tar.gz"