diff --git a/package/bisheng/4.1.0/install.sh b/package/bisheng/4.1.0/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..afca5b01793b586044d3beb20ac681d5af29badb --- /dev/null +++ b/package/bisheng/4.1.0/install.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e +export bisheng_ver='BiShengCompiler-4.1.0' +arch='x86' +if [ x$(arch) = xaarch64 ];then + arch='aarch64' +fi +# . ${DOWNLOAD_TOOL} -u https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_compiler/${bisheng_ver}-${arch}-linux-mini-hpc.tar.gz +. ${DOWNLOAD_TOOL} -u https://kunpeng-repo.obs.cn-north-4.myhuaweicloud.com/BiSheng%20Enterprise/BiSheng%20Enterprise%20203.0.0/${bisheng_ver}-${arch}-linux.tar.gz +cd ${JARVIS_TMP} +. $CHECK_ROOT && yum -y install libatomic libstdc++ libstdc++-devel +tar xzvf ${JARVIS_DOWNLOAD}/${bisheng_ver}-${arch}-linux.tar.gz -C $1 --strip-components=1 diff --git a/package/hmpi/2.4.2/install.sh b/package/hmpi/2.4.2/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..3f3f512c96b92dde84cc09f210a0644e75113c88 --- /dev/null +++ b/package/hmpi/2.4.2/install.sh @@ -0,0 +1,44 @@ +#!/bin/bash +set -x +set -e +hmpi_version='2.4.2' +. ${DOWNLOAD_TOOL} -u https://gitee.com/kunpengcompute/hucx/repository/archive/v2.4.2-huawei.tar.gz -f hucx-${hmpi_version}-huawei.tar.gz +. ${DOWNLOAD_TOOL} -u https://gitee.com/kunpengcompute/xucg/repository/archive/v2.4.2-huawei.tar.gz -f xucg-${hmpi_version}-huawei.tar.gz +. ${DOWNLOAD_TOOL} -u https://gitee.com/kunpengcompute/hmpi/repository/archive/v2.4.2-huawei.tar.gz -f hmpi-${hmpi_version}-huawei.tar.gz +cd ${JARVIS_TMP} +. $CHECK_ROOT && yum install -y perl-Data-Dumper autoconf automake libtool binutils flex +rm hucx-v${hmpi_version}-huawei -rf +tar xf ${JARVIS_DOWNLOAD}/hucx-${hmpi_version}-huawei.tar.gz +cd hucx-v${hmpi_version}-huawei +./autogen.sh +./contrib/configure-opt --prefix=$1/hucx --disable-numa --enable-mt CFLAGS="-Wno-unused-but-set-variable -Wno-error=int-conversion" CXXFLAGS="-Wno-unused-but-set-variable -Wno-error=int-conversion" +make -j +make -j install +cd - +export LD_LIBRARY_PATH=$1/hucx/lib:$LD_LIBRARY_PATH +export C_INCLUDE_PATH=$1/hucx/include:$C_INCLUDE_PATH +export CPLUS_INCLUDE_PATH=$1/hucx/include:$CPLUS_INCLUDE_PATH + +export CFLAGS="-Wno-unused-but-set-variable -Wno-error=int-conversion" CXXFLAGS="-Wno-unused-but-set-variable -Wno-error=int-conversion" FFLAGS="-Wno-error=int-conversion" + +rm xucg-v${hmpi_version}-huawei/ -rf +tar xf ${JARVIS_DOWNLOAD}/xucg-${hmpi_version}-huawei.tar.gz +cd xucg-v${hmpi_version}-huawei/ +mkdir build && cd build +cmake .. -DCMAKE_INSTALL_PREFIX=$1/xucg -DCMAKE_BUILD_TYPE=Release -DUCG_BUILD_WITH_UCX=$1/hucx -DUCG_ENABLE_MT=ON -DUCG_BUILD_TESTS=OFF -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_Fortran_COMPILER=$FC +make -j +make -j install +cd - +export LD_LIBRARY_PATH=$1/xucg/lib:$LD_LIBRARY_PATH +export C_INCLUDE_PATH=$1/xucg/include:$C_INCLUDE_PATH +export CPLUS_INCLUDE_PATH=$1/xucg/include:$CPLUS_INCLUDE_PATH + +rm hmpi-v${hmpi_version}-huawei/ -rf +tar xf ${JARVIS_DOWNLOAD}/hmpi-${hmpi_version}-huawei.tar.gz +cd hmpi-v${hmpi_version}-huawei/ +./autogen.pl +./configure --prefix=$1 --with-platform=contrib/platform/mellanox/optimized --enable-mpi1-compatibility --with-ucx=$1/hucx --with-ucg=$1/xucg +make -j +make -j install +cd - + diff --git a/package/kml/2.4.0/bisheng/install.sh b/package/kml/2.4.0/bisheng/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..3470566e072dae2ef209b0845580028905bae445 --- /dev/null +++ b/package/kml/2.4.0/bisheng/install.sh @@ -0,0 +1,107 @@ +#!/bin/bash +set -x +set -e +kml_version=2.4.0 +# . ${DOWNLOAD_TOOL} -u https://kunpeng-repo.obs.cn-north-4.myhuaweicloud.com/Kunpeng%20BoostKit/Kunpeng%20BoostKit%2023.0.0/BoostKit-kml_${kml_version}_bisheng.zip +. ${DOWNLOAD_TOOL} -u https://kunpeng-repo.obs.cn-north-4.myhuaweicloud.com/Kunpeng%20HPCKit/Kunpeng%20HPCKit%2024.0.RC2/KML_${kml_version}_bisheng.zip +. ${DOWNLOAD_TOOL} -u $JARVIS_PROXY/Reference-LAPACK/lapack/archive/refs/tags/v3.12.0.tar.gz -f lapack-3.12.0.tar.gz +. ${DOWNLOAD_TOOL} -u $JARVIS_PROXY/Reference-ScaLAPACK/scalapack/archive/refs/tags/v2.2.0.tar.gz -f scalapack-2.2.0.tar.gz + +cd ${JARVIS_TMP} +rm -rf kml-${kml_version}-1.aarch64.rpm +unzip -o ${JARVIS_DOWNLOAD}/KML_${kml_version}_bisheng.zip +rpm --force --nodeps -ivh --prefix=$1 kml-${kml_version}-1.aarch64.rpm +mv $1/kml/* $1/ + +echo AAA + +# generate full lapack +netlib=${JARVIS_DOWNLOAD}/lapack-3.12.0.tar.gz +netlib2=${JARVIS_DOWNLOAD}/scalapack-2.2.0.tar.gz +klapack=$1/lib/libklapack.a +kservice=$1/lib/libkservice.a +kscalapack=$1/lib/libkscalapack.a +kblas=$1/lib/kblas/omp/libkblas.so +echo $netlib +echo $klapack +echo $netlib2 +echo $kscalapack + +# build netlib lapack +cd ${JARVIS_TMP} +rm -rf netlib +mkdir netlib +cd netlib +tar zxvf $netlib +mkdir build +cd build +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_DEPRECATED=ON ../lapack-3.12.0 +make -j +cd ../ + +cp build/lib/liblapack.a liblapack_adapt.a + +# get symbols defined both in klapack and netlib lapack +nm -g liblapack_adapt.a | grep 'T ' | grep -oP '\K\w+(?=_$)' | sort | uniq > netlib.sym +nm -g $klapack | grep 'T ' | grep -oP '\K\w+(?=_$)' | sort | uniq > klapack.sym +comm -12 klapack.sym netlib.sym > comm.sym + +objcopy -W dsecnd_ -W second_ liblapack_adapt.a + +# add _netlib_ postfix to symbols in liblapack_adapt.a (e.g. dgetrf_netlib_) +while read sym; do \ + if ! nm liblapack_adapt.a | grep -qe " T ${sym}_\$"; then \ + continue; \ + fi; \ + ar x liblapack_adapt.a $sym.f.o; \ + mv $sym.f.o ${sym}_netlib.f.o; \ + objcopy --redefine-sym ${sym}_=${sym}_netlib_ ${sym}_netlib.f.o; \ + ar d liblapack_adapt.a ${sym}.f.o; \ + ar ru liblapack_adapt.a ${sym}_netlib.f.o; \ + rm -rf ${sym}_netlib.f.o; \ +done < comm.sym + +# (optional) build a full lapack shared library +clang -o libklapack_full.so -shared -fPIC -Wl,--whole-archive $klapack liblapack_adapt.a $kservice -Wl,--no-whole-archive -fopenmp -lpthread -lflang -lm + +\cp libklapack_full.so $1/lib/ + +# build netlib2 scalapack +export CFLAGS='-Wno-error=implicit-function-declaration' CXXFLAGS='-Wno-error=implicit-function-declaration' +cd ${JARVIS_TMP} +rm -rf netlib2 +mkdir netlib2 +cd netlib2 +tar zxvf $netlib2 +mkdir build +cd build +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_C_COMPILER=mpicc -DCMAKE_Fortran_COMPILER=mpifort -DLAPACK_LIBRARIES=$1/lib/libklapack_full.so -DBLAS_LIBRARIES=$kblas ../scalapack-2.2.0 +make -j +cd ../ + +cp ../netlib/build/lib/liblapack.a liblapack_adapt.a +cp build/lib/libscalapack.a libscalapack_adapt.a + +nm -g libscalapack_adapt.a | grep 'T ' | grep -oP '\K\w+(?=_$)' | sort | uniq > netlib.sym +nm -g $kscalapack | grep 'T ' | grep -oP '\K\w+(?=_$)' | sort | uniq > kscalapack.sym +comm -12 kscalapack.sym netlib.sym > comm.sym +# update symbols name of libscalapack_adapt.a +while read sym; do \ + if ! nm libscalapack_adapt.a | grep -qe " T ${sym}_\$"; then \ + continue; \ + fi; \ + ar x libscalapack_adapt.a $sym.f.o; \ + mv $sym.f.o ${sym}_netlib.f.o; \ + objcopy --redefine-sym ${sym}_=${sym}_netlib_ ${sym}_netlib.f.o; \ + ar d libscalapack_adapt.a ${sym}.f.o; \ + ar ru libscalapack_adapt.a ${sym}_netlib.f.o; \ + rm -rf ${sym}_netlib.f.o; \ +done < comm.sym + +clang -o libkscalapack_full.so -shared -fPIC -Wl,--whole-archive $kscalapack libscalapack_adapt.a -Wl,--no-whole-archive $klapack liblapack_adapt.a $kservice -fopenmp -lpthread -lflang -lm + +\cp libkscalapack_full.so $1/lib/ +echo "Generated liblapack_adapt.a and libklapack_full.so" +echo "Generated libscalapack_adapt.a and libkscalapack_full.so" + +exit 0 diff --git a/package/kml/2.4.0/gcc/install.sh b/package/kml/2.4.0/gcc/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..8e702d5217d34df58b0564ae774a4bf2ff93c448 --- /dev/null +++ b/package/kml/2.4.0/gcc/install.sh @@ -0,0 +1,102 @@ +#!/bin/bash +set -x +set -e +kml_version=2.2.0 +. ${DOWNLOAD_TOOL} -u https://kunpeng-repo.obs.cn-north-4.myhuaweicloud.com/Kunpeng%20BoostKit/Kunpeng%20BoostKit%2023.0.0/BoostKit-kml_${kml_version}.zip +. ${DOWNLOAD_TOOL} -u $JARVIS_PROXY/Reference-LAPACK/lapack/archive/refs/tags/v3.10.1.tar.gz -f lapack-3.10.1.tar.gz +. ${DOWNLOAD_TOOL} -u $JARVIS_PROXY/Reference-ScaLAPACK/scalapack/archive/refs/tags/v2.2.0.tar.gz -f scalapack-2.2.0.tar.gz + +cd ${JARVIS_TMP} +rm -rf boostkit-kml-${kml_version}-1.aarch64.rpm +unzip -o ${JARVIS_DOWNLOAD}/BoostKit-kml_${kml_version}.zip +rpm --force --nodeps -ivh --relocate /usr/local/kml=$1 --badreloc=$1 boostkit-kml-${kml_version}-1.aarch64.rpm + +# generate full lapack +netlib=${JARVIS_DOWNLOAD}/lapack-3.10.1.tar.gz +netlib2=${JARVIS_DOWNLOAD}/scalapack-2.2.0.tar.gz +klapack=$1/lib/libklapack.a +kservice=$1/lib/libkservice.a +kscalapack=$1/lib/libkscalapack.a +kblas=$1/lib/kblas/omp/libkblas.so +echo $netlib +echo $klapack +echo $netlib2 +echo $kscalapack + +# build netlib lapack +cd ${JARVIS_TMP} +rm -rf netlib +mkdir netlib +cd netlib +tar zxvf $netlib +mkdir build +cd build +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_DEPRECATED=ON ../lapack-3.10.1 +make -j +cd ../ + +cp build/lib/liblapack.a liblapack_adapt.a + +# get symbols defined both in klapack and netlib lapack +nm -g liblapack_adapt.a | grep 'T ' | grep -oP '\K\w+(?=_$)' | sort | uniq > netlib.sym +nm -g $klapack | grep 'T ' | grep -oP '\K\w+(?=_$)' | sort | uniq > klapack.sym +comm -12 klapack.sym netlib.sym > comm.sym + +objcopy -W dsecnd_ -W second_ liblapack_adapt.a + +# add _netlib_ postfix to symbols in liblapack_adapt.a (e.g. dgetrf_netlib_) +while read sym; do \ + if ! nm liblapack_adapt.a | grep -qe " T ${sym}_\$"; then \ + continue; \ + fi; \ + ar x liblapack_adapt.a $sym.f.o; \ + mv $sym.f.o ${sym}_netlib.f.o; \ + objcopy --redefine-sym ${sym}_=${sym}_netlib_ ${sym}_netlib.f.o; \ + ar d liblapack_adapt.a ${sym}.f.o; \ + ar ru liblapack_adapt.a ${sym}_netlib.f.o; \ + rm -rf ${sym}_netlib.f.o; \ +done < comm.sym + +# (optional) build a full lapack shared library +gcc -o libklapack_full.so -shared -fPIC -Wl,--whole-archive $klapack liblapack_adapt.a $kservice -Wl,--no-whole-archive -fopenmp -lpthread -lgfortran -lm + +\cp libklapack_full.so $1/lib/ + +# build netlib2 scalapack +cd ${JARVIS_TMP} +rm -rf netlib2 +mkdir netlib2 +cd netlib2 +tar zxvf $netlib2 +mkdir build +cd build +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_C_COMPILER=mpicc -DCMAKE_Fortran_COMPILER=mpifort -DLAPACK_LIBRARIES=$1/lib/libklapack_full.so -DBLAS_LIBRARIES=$kblas ../scalapack-2.2.0 +make -j +cd ../ + +cp ../netlib/build/lib/liblapack.a liblapack_adapt.a +cp build/lib/libscalapack.a libscalapack_adapt.a + +nm -g libscalapack_adapt.a | grep 'T ' | grep -oP '\K\w+(?=_$)' | sort | uniq > netlib.sym +nm -g $kscalapack | grep 'T ' | grep -oP '\K\w+(?=_$)' | sort | uniq > kscalapack.sym +comm -12 kscalapack.sym netlib.sym > comm.sym +# update symbols name of libscalapack_adapt.a +while read sym; do \ + if ! nm libscalapack_adapt.a | grep -qe " T ${sym}_\$"; then \ + continue; \ + fi; \ + ar x libscalapack_adapt.a $sym.f.o; \ + mv $sym.f.o ${sym}_netlib.f.o; \ + objcopy --redefine-sym ${sym}_=${sym}_netlib_ ${sym}_netlib.f.o; \ + ar d libscalapack_adapt.a ${sym}.f.o; \ + ar ru libscalapack_adapt.a ${sym}_netlib.f.o; \ + rm -rf ${sym}_netlib.f.o; \ +done < comm.sym + +gcc -o libkscalapack_full.so -shared -fPIC -Wl,--whole-archive $kscalapack libscalapack_adapt.a -Wl,--no-whole-archive $klapack liblapack_adapt.a $kservice -fopenmp -lpthread -lgfortran -lm + +\cp libkscalapack_full.so $1/lib/ +echo "Generated liblapack_adapt.a and libklapack_full.so" +echo "Generated libscalapack_adapt.a and libkscalapack_full.so" + +exit 0 diff --git a/package/libxsmm/1.17/install.sh b/package/libxsmm/1.17/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..88a99121cc725dc6a1e2e9615f67c739427790fc --- /dev/null +++ b/package/libxsmm/1.17/install.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -x +set -e +cd ${JARVIS_TMP} +libxsmm_ver=aarch64-v1.0 +. ${DOWNLOAD_TOOL} -u https://github.com/MiyaaL/libxsmm/archive/refs/tags/${libxsmm_ver}.tar.gz -f libxsmm-${libxsmm_ver}.tar.gz +rm -rf libxsmm-${libxsmm_ver} +tar -xvzf ${JARVIS_DOWNLOAD}/libxsmm-${libxsmm_ver}.tar.gz +cd libxsmm-${libxsmm_ver} +cd $1 +make -j -f ${JARVIS_TMP}/libxsmm-${libxsmm_ver}/Makefile STATIC=0 JIT=1 LIBXSMM_JIT=1 LIBXSMM_CONFIG_JIT=1 INTRINSICS=2301 + diff --git a/src/installService.py b/src/installService.py index 84837994e84892d8827a57bb87d22afc01a342d0..778ff83f1681a5b1d5a593b9c3d8b14c761c12e2 100644 --- a/src/installService.py +++ b/src/installService.py @@ -113,8 +113,8 @@ class InstallService: return version def get_hmpi_info(self): - hmpi_v2_info = self.get_cmd_output('ucx_info -c | grep -i BUILT')[0] - hmpi_v3_info = self.get_cmd_output('ucg_info -c | grep -i PLANC')[0] + hmpi_v2_info = (self.get_cmd_output('ucx_info -c | grep -i BUILT')[0]).upper() + hmpi_v3_info = (self.get_cmd_output('ucg_info -c | grep -i PLANC')[0]).upper() if "BUILT" not in hmpi_v2_info and "PLANC" not in hmpi_v3_info: return None name = 'hmpi'