diff --git a/package/bisheng/3.0.0/install.sh b/package/bisheng/3.0.0/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..ae32ecd87ddda9e8eab69759b5c3617e4e36796e --- /dev/null +++ b/package/bisheng/3.0.0/install.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -e +export bisheng_ver='BiSheng-compiler-3.0.0' +../meta.sh $1 diff --git a/package/hmpi/1.3.0/install.sh b/package/hmpi/1.3.0/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..bc7083146e01c65ff597282406a9eb525c761fa5 --- /dev/null +++ b/package/hmpi/1.3.0/install.sh @@ -0,0 +1,45 @@ +#!/bin/bash +set -x +set -e +hmpi_version='1.3.0' +#. ${DOWNLOAD_TOOL} -u https://github.com/kunpengcompute/hucx/archive/refs/tags/v${hmpi_version}-huawei.zip -f hucx-${hmpi_version}-huawei.zip +. ${DOWNLOAD_TOOL} -u https://github.com/openucx/ucx/archive/refs/tags/v1.10.1.tar.gz -f hucx-${hmpi_version}-huawei.tar.gz +#. ${DOWNLOAD_TOOL} -u https://github.com/kunpengcompute/xucg/archive/refs/tags/v${hmpi_version}-huawei.zip -f xucg-${hmpi_version}-huawei.zip +. ${DOWNLOAD_TOOL} -u https://gitee.com/kunpengcompute/xucg/archive/refs/tags/v1.3.0-huawei.tar.gz -f xucg-${hmpi_version}-huawei.tar.gz +#. ${DOWNLOAD_TOOL} -u https://github.com/kunpengcompute/hmpi/archive/refs/tags/v${hmpi_version}-huawei.zip -f hmpi-${hmpi_version}-huawei.zip +. ${DOWNLOAD_TOOL} -u https://gitee.com/kunpengcompute/hmpi/archive/refs/tags/v1.3.0-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 ucx-1.10.1 -rf +tar xf ${JARVIS_DOWNLOAD}/hucx-1.3.0-huawei.tar.gz +cd ucx-1.10.1 +./autogen.sh +./contrib/configure-opt --prefix=$1/hucx --disable-numa --enable-mt CC=clang CXX=clang++ FC=flang CFLAGS="-Wno-unused-but-set-variable" CXXFLAGS="-Wno-unused-but-set-variable" +make -j128 +make -j128 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 + +rm xucg-v1.3.0-huawei/ -rf +tar xf ${JARVIS_DOWNLOAD}/xucg-1.3.0-huawei.tar.gz +cd xucg-v1.3.0-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=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_Fortran_COMPILER=flang +make -j128 +make -j128 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-v1.3.0-huawei/ -rf +tar xf ${JARVIS_DOWNLOAD}/hmpi-1.3.0-huawei.tar.gz +cd hmpi-v1.3.0-huawei/ +./autogen.pl +./configure --prefix=$1 --with-platform=contrib/platform/mellanox/optimized --enable-mpi1-compatibility --with-ucx=$1/hucx --with-ucg=$1/xucg CC=clang CXX=clang++ FC=flang +make -j128 +make -j128 install +cd - + diff --git a/package/kml/2.0.0/bisheng/install.sh b/package/kml/2.0.0/bisheng/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..4e59544e28515cfbc861a3ec48e00a4e5c55e1dc --- /dev/null +++ b/package/kml/2.0.0/bisheng/install.sh @@ -0,0 +1,102 @@ +#!/bin/bash +set -x +set -e +kml_version=2.0.0 +#. ${DOWNLOAD_TOOL} -u https://kunpeng-repo.obs.cn-north-4.myhuaweicloud.com/Kunpeng%20BoostKit/Kunpeng%20BoostKit%2022.0.0/BoostKit-kml_${kml_version}_bisheng.zip +. ${DOWNLOAD_TOOL} -u https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.10.1.tar.gz -f lapack-3.10.1.tar.gz +. ${DOWNLOAD_TOOL} -u https://github.com/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}_bisheng.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 +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 +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.0.0/gcc/install.sh b/package/kml/2.0.0/gcc/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..af76238a3b5372c5a223027586fad00cbcd7a824 --- /dev/null +++ b/package/kml/2.0.0/gcc/install.sh @@ -0,0 +1,102 @@ +#!/bin/bash +set -x +set -e +kml_version=1.7.0 +. ${DOWNLOAD_TOOL} -u https://kunpeng-repo.obs.cn-north-4.myhuaweicloud.com/Kunpeng%20BoostKit/Kunpeng%20BoostKit%2022.0.0/BoostKit-kml_${kml_version}.zip +. ${DOWNLOAD_TOOL} -u https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.10.1.tar.gz -f lapack-3.10.1.tar.gz +. ${DOWNLOAD_TOOL} -u https://github.com/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/pnetcdf/1.12.3/install.sh b/package/pnetcdf/1.12.3/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..19e5c317b12e321703a963119218cef2b7f7c725 --- /dev/null +++ b/package/pnetcdf/1.12.3/install.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -x +set -e +pnetcdf_version='1.12.3' +. ${DOWNLOAD_TOOL} -u https://parallel-netcdf.github.io/Release/pnetcdf-${pnetcdf_version}.tar.gz +cd ${JARVIS_TMP} +tar zxvf ${JARVIS_DOWNLOAD}/pnetcdf-${pnetcdf_version}.tar.gz +cd pnetcdf-${pnetcdf_version} +./configure --prefix=$1 --build=aarch64-linux --enable-shared --enable-fortran --enable-large-file-test CFLAGS="-fPIC -DPIC" CXXFLAGS="-fPIC -DPIC" FCFLAGS="-fPIC" FFLAGS="-fPIC" CC=mpicc CXX=mpicxx FC=mpifort F77=mpifort +make -j16 +make install diff --git a/src/installService.py b/src/installService.py index c0e0eca3ea9828e039199bc0a0677657eecfd68d..744dc638229fc83740dc7737e6a0812208c8c64b 100644 --- a/src/installService.py +++ b/src/installService.py @@ -91,23 +91,28 @@ class InstallService: def get_icc_info(self): return self.gen_compiler_dict("icc", ('2018', "2018.4")) - def get_hmpi_version(self): - ucx_path = self.get_cmd_output('which ucx_info')[0] - ucx_path = os.path.dirname(ucx_path) - ucx_path = os.path.dirname(ucx_path) - libucg_path = os.path.join(ucx_path, "lib") + ucg_path = self.get_cmd_output('which ucg_info')[0] #新增的一个if分支,1.3.0版本之后以ucg_info作为标志,不存在则沿用之前的判断 + version2 = ('1','1.3.0') + ver_dict = {('2','2.0.0'): 'version2'} + if ucg_path == "": #不存在ucg_info + ucx_path = self.get_cmd_output('which ucx_info')[0] + ucg_path = os.path.dirname(ucx_path) + ucg_path = os.path.dirname(ucg_path) + ucg_path = os.path.dirname(ucg_path) + libucg_path = os.path.join(ucg_path, "lib") libucg_so_flag = "libucg.so." version = None for file_name in os.listdir(libucg_path): if libucg_so_flag in file_name: version = self.get_version_info(file_name) - if version: - break - return version + if version in ver_dict: + version = ver_dict[version] + return version2 + return version def get_hmpi_info(self): - hmpi_info = self.get_cmd_output('ompi_info | grep "MCA coll: ucx"')[0] + hmpi_info = self.get_cmd_output('which ucx_info')[0] if hmpi_info == "": return None name = 'hmpi'