diff --git a/templates/wrf/4.2.1/bisheng/data.wrf.arm.cpu.config b/templates/wrf/4.2.1/bisheng/data.wrf.arm.cpu.config index 468a93870e13a431fc52b4c4a493f2442ecbdb72..7315d9aa9bddb2238c0473d52021d92fe4602645 100644 --- a/templates/wrf/4.2.1/bisheng/data.wrf.arm.cpu.config +++ b/templates/wrf/4.2.1/bisheng/data.wrf.arm.cpu.config @@ -9,36 +9,45 @@ case/conus12km https://www2.mmm.ucar.edu/wrf/src/conus12km.tar.gz set -e set -x # basic system components -./CHECK_ROOT -module purge -module use ./software/modulefiles -./jarvis -install bisheng/3.2.0-mini com -module load bisheng/3.2.0-mini +yum install -y csh +module purge +./jarvis -install hpckit/${HPCKIT_VERSION} any +module use ./software/utils/hpckit/${HPCKIT_VERSION}/HPCKit/${HPCKIT_VERSION}/modulefiles +module load bisheng/compiler${BISHENG_VERSION}/bishengmodule +module load bisheng/hmpi${HPCKIT_VERSION}/release bisheng/kml${HPCKIT_VERSION}/kml export CC=clang CXX=clang++ FC=flang +export CFLAGS="-Wno-implicit-function-declaration -Wno-incompatible-function-pointer-types" ./jarvis -install jasper/1.900.2 bisheng -module use ./software/moduledeps/bisheng3.2.0 +module use ./software/moduledeps/bisheng${BISHENG_VERSION}/ module load jasper/1.900.2 -./jarvis -install hmpi/2.3.0 bisheng -module load hmpi/2.3.0 export CC=mpicc CXX=mpicxx FC=mpifort ./jarvis -install hdf5/1.12.0/clang bisheng+mpi +module use ./software/moduledeps/bisheng${BISHENG_VERSION}-hmpi${HPCKIT_VERSION} module load hdf5-clang/1.12.0 ./jarvis -install pnetcdf/1.12.1 bisheng+mpi module load pnetcdf/1.12.1 ./jarvis -install netcdf/4.8.1/clang bisheng+mpi module load netcdf-clang/4.8.1 -./jarvis -install kml/2.2.0/bisheng bisheng +rm -rf conus12km +tar -zxvf $JARVIS_DOWNLOAD/conus12km.tar.gz +rm -rf WRF-4.2.1 +tar -zxvf $JARVIS_DOWNLOAD/wrf-4.2.1.tar.gz [ENV] #!/bin/bash -module purge -module use ${JARVIS_ROOT}/software/modulefiles -module load bisheng/3.2.0-mini -module use ${JARVIS_ROOT}/software/moduledeps/bisheng3.2.0 +module purge +module use ./software/utils/hpckit/${HPCKIT_VERSION}/HPCKit/${HPCKIT_VERSION}/modulefiles +module load bisheng/compiler${BISHENG_VERSION}/bishengmodule +module load bisheng/hmpi${HPCKIT_VERSION}/release bisheng/kml${HPCKIT_VERSION}/kml +export CC=clang CXX=clang++ FC=flang +export CFLAGS="-Wno-implicit-function-declaration -Wno-incompatible-function-pointer-types" +module use ./software/moduledeps/bisheng${BISHENG_VERSION}/ module load jasper/1.900.2 -module load hmpi/2.3.0 -module load hdf5-clang/1.12.0 pnetcdf/1.12.1 netcdf-clang/4.8.1 -module load kml-bisheng/2.2.0 +export CC=mpicc CXX=mpicxx FC=mpifort +module use ./software/moduledeps/bisheng${BISHENG_VERSION}-hmpi${HPCKIT_VERSION} +module load hdf5-clang/1.12.0 +module load pnetcdf/1.12.1 +module load netcdf-clang/4.8.1 export WRFIO_NCD_LARGE_FILE_SUPPORT=1 export NETCDF=$NETCDF_CLANG_PATH export HDF5=$HDF5_CLANG_PATH @@ -50,38 +59,40 @@ export JASPREINC=$JASPER_PATH/include export CPPFLAGS="-I$HDF5/include -I$PNETCDF/include -I$NETCDF/include" export LDFLAGS="-L$HDF5/lib -L$PNETCDF/lib -L$NETCDF/lib -lnetcdf -lnetcdff -lpnetcdf -lhdf5_hl -lhdf5 -lz" export CC=mpicc CXX=mpicxx FC=mpif90 F77=mpif90 F90=mpif90 -export WRF_DIR=$JARVIS_ROOT/workloads/WRF-4.2.1 -export MPI_LIB="-L$MPI_LIB -lmpi -lomp" +export WRF_DIR=$JARVIS_ROOT/WRF-4.2.1 +export MPI_LIB="-L${JARVIS_ROOT}/software/utils/hpckit/${HPCKIT_VERSION}/HPCKit/${HPCKIT_VERSION}/hmpi/bisheng/release/xucg/lib -lmpi -lomp" export INCLUDE=$WRF_DIR/include:$INCLUDE -export KML_LIB=$KML_BISHENG_PATH/lib -export CASE_DIR=$WRF_DIR/case/conus12km +export KML_LIB=${JARVIS_ROOT}/software/utils/hpckit/${HPCKIT_VERSION}/HPCKit/${HPCKIT_VERSION}/kml/bisheng/lib/noarch +export CASE_DIR=${JARVIS_ROOT}/conus12km [APP] app_name = WRF build_dir = ${WRF_DIR} -binary_dir = ${WRF_DIR}/run +binary_dir = case_dir = ${CASE_DIR} [BUILD] +set -x + cd ${JARVIS_ROOT} -./jarvis -e -source ./env.sh -cd ${JARVIS_ROOT}/workloads -if [ -d "./WRF-4.2.1" ]; then - rm -rf ./WRF-4.2.1 -fi -tar -zxvf $JARVIS_DOWNLOAD/wrf-4.2.1.tar.gz cd WRF-4.2.1 -mkdir case patch -p1 < ${JARVIS_ROOT}/templates/wrf/4.2.1/bisheng/wrf-4.2.1.patch +sed -i 's/derf/erf/g' ./phys/module_mp_SBM_polar_radar.F echo 4 | ./configure -./compile em_real 2>&1 | tee compile.log +./compile -j 20 em_real 2>&1 | tee compile.log + +cd $JARVIS_ROOT +rm -rf conus12km +tar -zxvf $JARVIS_DOWNLOAD/conus12km.tar.gz +rsync -av --exclude='namelist.input' $JARVIS_ROOT/WRF-4.2.1/run/* conus12km/ +cd conus12km +ln -sf $JARVIS_ROOT/WRF-4.2.1/main/*.exe ./ [CLEAN] ./clean -a [RUN] -run = mpirun --allow-run-as-root -n 32 -x OMP_NUM_THREADS=1 -bind-to core $WRF_DIR/run/wrf.exe +run = mpirun --allow-run-as-root -n 16 -x OMP_NUM_THREADS=1 -bind-to core ./wrf.exe binary = nodes = 1 @@ -109,3 +120,4 @@ echo "$EXEC_CMD" date $EXEC_CMD date + diff --git a/templates/wrf/4.2.1/bisheng/wrf-4.2.1.patch b/templates/wrf/4.2.1/bisheng/wrf-4.2.1.patch index d2a988ce31b6c10c490874dd35e154c2fb333662..12e185566e3dadf8c1e42b311e45805d6d67aed3 100644 --- a/templates/wrf/4.2.1/bisheng/wrf-4.2.1.patch +++ b/templates/wrf/4.2.1/bisheng/wrf-4.2.1.patch @@ -3,28 +3,28 @@ diff -Nru WRF-4.2.1/arch/configure.defaults WRF-4.2.1-ok/arch/configure.defaults +++ WRF-4.2.1-ok/arch/configure.defaults 2024-02-22 20:43:20.842876000 +0800 @@ -1,3 +1,45 @@ +############################################################ -+#ARCH Linux aarch64,BiSheng HYPERMPI#serial smpar dmpar dm+sm -+DESCRIPTION = BISHENG ($SFC/$SCC) -+DMPARALLEL = 1 -+OMPCPP = -D_OPENMP -+OMP = -fopenmp -+OMPCC = -fopenmp ++#ARCH Linux aarch64,clang HYPERMPI#serial smpar dmpar dm+sm ++DESCRIPTION = CLANG ($SFC/$SCC) ++DMPARALLEL = 1 ++OMPCPP = -D_OPENMP ++OMP = -fopenmp ++OMPCC = -fopenmp +SFC = flang -+SCC = clang ++SCC = clang -Wno-implicit-function-declaration -Wno-implicit-int -Wno-deprecated-non-prototype +CCOMP = clang +DM_FC = mpif90 -f90=$(SFC) -+DM_CC = mpicc -cc=$(SCC) -DMPI2_SUPPORT ++DM_CC = mpicc -cc=$(SCC) -DMPI2_SUPPORT -Wno-implicit-function-declaration -Wno-implicit-int +FC = CONFIGURE_FC +CC = CONFIGURE_CC -+LD = $(FC) ++LD = $(FC) -L$(KML_LIB) -lkm +RWORDSIZE = CONFIGURE_RWORDSIZE +PROMOTION = #-fdefault-real-8 +ARCH_LOCAL = -DNONSTANDARD_SYSTEM_SUBR -DWRF_USE_CLM -+CFLAGS_LOCAL = -mcpu=linxicore9100 -mllvm -force-customized-pipeline=true -w -O3 -c -fvectorize -funroll-loops -mllvm -unroll-indirect-loads=true -ljemalloc -mllvm -prefetch-loop-depth=3 -mllvm -min-prefetch-stride=16 -mllvm -prefetch-distance=940 -+LDFLAGS_LOCAL = -L${KML_LIB} -lkm -ltirpc -ljemalloc ++CFLAGS_LOCAL = -mcpu=native -w -O3 -c -march=armv8.2-a ++LDFLAGS_LOCAL = +CPLUSPLUSLIB = +ESMF_LDFLAG = $(CPLUSPLUSLIB) -+FCOPTIM = -O3 -funroll-loops -mcpu=linxicore9100 -mllvm -force-customized-pipeline=true -fvectorize -mllvm -unroll-indirect-loads=true -ljemalloc -mllvm -prefetch-loop-depth=3 -mllvm -min-prefetch-stride=16 -mllvm -prefetch-distance=940 ++FCOPTIM = -O3 -march=armv8.2-a +FCREDUCEDOPT = $(FCOPTIM) +FCNOOPT = -O0 +FCDEBUG = -g # -fbacktrace -ggdb-fcheck=bounds,do,mem,pointer -ffpe-trap=invalid,zero,overflow @@ -33,7 +33,7 @@ diff -Nru WRF-4.2.1/arch/configure.defaults WRF-4.2.1-ok/arch/configure.defaults +FCSUFFIX = +BYTESWAPIO = -fconvert=big-endian +FCBASEOPTS_NO_G = -w $(FORMAT_FREE) $(BYTESWAPIO) -+FCBASEOPTS = -mcpu=linxicore9100 -mllvm -force-customized-pipeline=true $(OMP) $(FCBASEOPTS_NO_G) ++FCBASEOPTS = -mcpu=native $(OMP) $(FCBASEOPTS_NO_G) +MODULE_SRCH_FLAG = +TRADFLAG = -traditional +CPP = /lib/cpp -P