diff --git a/templates/namd/2.14/data.namd.arm.gpu.opt.config b/templates/namd/2.14/data.namd.arm.gpu.opt.config index b1f5ad4942dc597c59f369c3bc819f7e78522b64..bf9a1c14496eeb396de55d5ab60e2fb9e9b27acb 100644 --- a/templates/namd/2.14/data.namd.arm.gpu.opt.config +++ b/templates/namd/2.14/data.namd.arm.gpu.opt.config @@ -3,79 +3,118 @@ [DOWNLOAD] #download NAMD_2.14 and charm-6.10.2 by hand -https://www.ks.uiuc.edu/Development/Download/download.cgi?PackageName=NAMD -http://charm.cs.illinois.edu/distrib/charm-6.10.2.tar.gz +#https://www.ks.uiuc.edu/Development/Download/download.cgi?PackageName=NAMD +NAMD/2.14 https://www.ks.uiuc.edu/Research/namd/2.14/download/946183/NAMD_2.14_Source.tar.gz +charm/6.10.2 http://charm.cs.illinois.edu/distrib/charm-6.10.2.tar.gz +cuda/11.4.0 https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux_sbsa.run +tcl/8.5.9 http://www.ks.uiuc.edu/Research/namd/libraries/tcl8.5.9-linux-arm64-threaded.tar.gz [DEPENDENCY] -yum install -y fftw-devel tcl-devel +yum install -y fftw-devel tcl-devel module use ./software/modulefiles module purge ./jarvis -install bisheng/2.1.0 com module load bisheng/2.1.0 export CC=clang CXX=clang++ FC=flang ./jarvis -install hmpi/1.1.1 clang -tar xzf $JARVIS_DOWNLOAD/NAMD_2.14_Source.tar.gz -cd NAMD_2.14_Source -tar xf $JARVIS_DOWNLOAD/charm-6.10.2.tar +module use ./software/moduledeps/bisheng2.1.0 +module load hmpi/1.1.1 +./jarvis -install fftw/3.3.8 clang+mpi +module use ./software/moduledeps/bisheng2.1.0-hmpi1.1.1 +module load fftw/3.3.8 +#tar xzf $JARVIS_DOWNLOAD/NAMD_2.14_Source.tar.gz +#cd NAMD_2.14_Source +rm -rf NAMD-2.13 +mkdir NAMD-2.14 +#tar xf charm-6.10.2.tar +# 1. 添加执行权限 +sudo chmod +x ${JARVIS_DOWNLOAD}/cuda_11.4.0_470.42.01_linux_sbsa.run +# 2. 静默安装 +sudo sh ${JARVIS_DOWNLOAD}/cuda_11.4.0_470.42.01_linux_sbsa.run \ + --silent \ + --toolkit \ + --override \ + --no-opengl-libs \ + --no-man-page \ + --no-drm \ + --installpath=/usr/local/cuda \ + --toolkitpath=/usr/local/cuda \ + --samplespath=/usr/local/cuda/samples [ENV] module use ./software/modulefiles module purge module load bisheng/2.1.0 +module use ./software/moduledeps/bisheng2.1.0 module load hmpi/1.1.1 +module use ./software/moduledeps/bisheng2.1.0-hmpi1.1.1 +module load fftw/3.3.8 export CC=clang CXX=clang++ FC=flang -export PATH=//usr/local/cuda/bin:$PATH +export PATH=/usr/local/cuda/bin:$PATH [APP] app_name = NAMD -build_dir = $JARVIS_ROOT/NAMD_2.14_Source/ -#binary_dir = $JARVIS_ROOT/NAMD_2.14_Source/Linux-ARM64-g++ -binary_dir = +build_dir = $JARVIS_ROOT/NAMD-2.14/ +binary_dir = $JARVIS_ROOT/NAMD-2.14/build/NAMD_2.14_Source/Linux-ARM64-g++ +binary_dir = case_dir = ${JARVIS_ROOT}/workloads/namd/stmv [BUILD] set -x set -e -cat > ./arch/Linux-ARM64.fftw <<\EOF -FFTDIR=/usr -FFTINCL=-I$(FFTDIR)/include -FFTLIB=-L$(FFTDIR)/lib -lfftw3f -FFTFLAGS=-DNAMD_FFTW -DNAMD_FFTW_3 -FFT=$(FFTINCL) $(FFTFLAGS) -EOF -cat > ./arch/Linux-ARM64.tcl <<\EOF -TCLDIR=/usr -TCLINCL=-I$(TCLDIR)/include -TCLLIB=-L$(TCLDIR)/lib64 -ltcl8.6 -ldl -lpthread -TCLFLAGS=-DNAMD_TCL -TCL=$(TCLINCL) $(TCLFLAGS) +rm -rf build +rm -rf install +mkdir build install +export BUILD_DIR=$JARVIS_ROOT/NAMD-2.14/build +export INSTALL_DIR=$JARVIS_ROOT/NAMD-2.14/install +cd $JARVIS_ROOT/NAMD-2.14/build +tar -xvf $JARVIS_DOWNLOAD/charm-6.10.2.tar.gz +cd charm-v6.10.2 +mkdir ${INSTALL_DIR}/charm690/ +cp src/arch/mpi-linux-x86_64 src/arch/mpi-linux-arm8 -rf +grep -rl 'm64' src/arch/mpi-linux-arm8 | xargs sed -i 's/\-m64//g' +./build charm++ mpi-linux-arm8 smp --with-production --destination=$JARVIS_ROOT/NAMD-2.14/install/charm690/mpi-linux-arm8 + +cd $BUILD_DIR +tar xzf $JARVIS_DOWNLOAD/NAMD_2.14_Source.tar.gz +cd NAMD_2.14_Source +cp arch/Linux-x86_64.fftw3 arch/Linux-ARM64.fftw3 +cd $JARVIS_ROOT/NAMD-2.14/ +tar -xzvf $JARVIS_DOWNLOAD/tcl8.5.9-linux-arm64-threaded.tar.gz +cd $BUILD_DIR/NAMD_2.14_Source +sed -i "s|^CHARMBASE[[:space:]]*=.*|CHARMBASE = $INSTALL_DIR/charm690|" Make.charm + +cd $BUILD_DIR/NAMD_2.14_Source +sed -i '1,$d' arch/Linux-ARM64-g++.arch +cat <> "arch/Linux-ARM64-g++.arch" +NAMD_ARCH = Linux-ARM64 +CHARMARCH = mpi-linux-arm8 +#FLOATOPTS = -O2 -ffast-math -funsafe-math-optimizations -fomit-frame-pointer -mcpu=cortex-a9 -mtune=cortex-a9 +FLOATOPTS = -O2 -ffast-math -funsafe-math-optimizations -fomit-frame-pointer +CXX = clang++ +CXXOPTS = \$(FLOATOPTS) +CXXNOALIASOPTS = \$(FLOATOPTS) -fno-strict-aliasing +CC = clang +COPTS = \$(FLOATOPTS) EOF -#compile charm -cd charm-6.10.2 -./build charm++ multicore-arm8 -j32 clang flang --with-production -cd multicore-arm8-flang-clang/tests/charm++/megatest -make pgm -./pgm +p4 -cd ../../../../.. -#compile NAMD -rm -rf Linux-ARM64-g++ -./config Linux-ARM64-g++ --charm-arch multicore-arm8-flang-clang --with-cuda --cxx clang++ --cc clang +./config Linux-ARM64-g++ --with-fftw3 --fftw-prefix $FFTW_PATH --with-tcl --tcl-prefix $JARVIS_ROOT/NAMD-2.14/tcl8.5.9-linux-arm64-threaded --charm-arch mpi-linux-arm8 cd Linux-ARM64-g++ -make -j +make + [CLEAN] make clean [RUN] run = rm -rf namd_* && dsub -s dsub_namd_1n.sh -binary = +binary = # binary = namd2 +p126 +setcpuaffinity +maffinity +isomalloc_sync +devices 0,1 stmv_nve_cuda.namd 2>&1 | tee namd.log && python2 $JARVIS_ROOT/templates/namd/2.14/ns_per_day.py namd.log nodes = 1 [PERF] kperf = --spe --uncore -perf = +perf = nsys = -y 5s -d 60s ncu = --target-processes all --launch-skip 16 --launch-count 1 diff --git a/templates/namd/2.14/namd.arm.gpu.config b/templates/namd/2.14/namd.arm.gpu.config index 3b49fd8491364b3f8844f43dff9e9d1bce19a57d..d8e6e6784bce1468107488004a20f0c86f133488 100644 --- a/templates/namd/2.14/namd.arm.gpu.config +++ b/templates/namd/2.14/namd.arm.gpu.config @@ -2,55 +2,103 @@ 1.1.11.1 [DOWNLOAD] -https://www.ks.uiuc.edu/Development/Download/download.cgi?PackageName=NAMD +NAMD/2.14 https://www.ks.uiuc.edu/Research/namd/2.14/download/946183/NAMD_2.14_Source.tar.gz +charm/6.10.2 http://charm.cs.illinois.edu/distrib/charm-6.10.2.tar.gz +cuda/11.4.0 https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux_sbsa.run +tcl/8.5.9 http://www.ks.uiuc.edu/Research/namd/libraries/tcl8.5.9-linux-arm64-threaded.tar.gz [DEPENDENCY] +yum install -y fftw-devel tcl-devel module use ./software/modulefiles module purge ./jarvis -install bisheng/2.1.0 com module load bisheng/2.1.0 export CC=clang CXX=clang++ FC=flang -./jarvis -install hmpi/1.2.0 clang -tar -xzvf $JARVIS_DOWNLOAD/NAMD_2.14_Source.tar.gz -cd NAMD_2.14_Source -tar xvf charm-6.10.2.tar +./jarvis -install hmpi/1.1.1 clang +module use ./software/moduledeps/bisheng2.1.0 +module load hmpi/1.1.1 +./jarvis -install fftw/3.3.8 clang+mpi +module use ./software/moduledeps/bisheng2.1.0-hmpi1.1.1 +module load fftw/3.3.8 +#tar xzf $JARVIS_DOWNLOAD/NAMD_2.14_Source.tar.gz +#cd NAMD_2.14_Source +rm -rf NAMD-2.13 +mkdir NAMD-2.14 +#tar xf charm-6.10.2.tar +# 1. 添加执行权限 +sudo chmod +x ${JARVIS_DOWNLOAD}/cuda_11.4.0_470.42.01_linux_sbsa.run +# 2. 静默安装 +sudo sh ${JARVIS_DOWNLOAD}/cuda_11.4.0_470.42.01_linux_sbsa.run \ + --silent \ + --toolkit \ + --override \ + --no-opengl-libs \ + --no-man-page \ + --no-drm \ + --installpath=/usr/local/cuda \ + --toolkitpath=/usr/local/cuda \ + --samplespath=/usr/local/cuda/samples [ENV] module use ./software/modulefiles module purge module load bisheng/2.1.0 -module load hmpi/1.2.0 -# add cuda -export CUDA_INCLUDE_DIRS=/usr/local/cuda/include -export CUDA_CUDART_LIBRARY=/usr/local/cuda/lib64/libcudart.so -export CUDA_HOME=/usr/local/cuda -export PATH=$CUDA_HOME/bin:$PATH -export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH -export C_INCLUDE_PATH=$CUDA_HOME/include:$C_INCLUDE_PATH -export LIBRARY_PATH=$CUDA_HOME/lib64:$LIBRARY_PATH +module use ./software/moduledeps/bisheng2.1.0 +module load hmpi/1.1.1 +module use ./software/moduledeps/bisheng2.1.0-hmpi1.1.1 +module load fftw/3.3.8 +export CC=clang CXX=clang++ FC=flang +export PATH=/usr/local/cuda/bin:$PATH [APP] app_name = NAMD -build_dir = $JARVIS_ROOT/NAMD_2.14_Source/ -binary_dir = $JARVIS_ROOT/NAMD_2.14_Source/Linux-ARM64-g++/ -case_dir = ${JARVIS_ROOT}/stmv +build_dir = $JARVIS_ROOT/NAMD-2.14/ +binary_dir = $JARVIS_ROOT/NAMD-2.14/build/NAMD_2.14_Source/Linux-ARM64-g++ +binary_dir = +case_dir = ${JARVIS_ROOT}/workloads/namd/stmv [BUILD] set -x set -e -cd charm-6.10.2 -#charm_arch='netlrts-linux-arm8-flang-smp-clang' -#./build charm++ netlrts-linux-arm8 smp -j32 clang flang --with-production -charm_arch='multicore-arm8-flang-clang' -./build charm++ multicore-arm8 -j32 clang flang --with-production -cd $charm_arch/tests/charm++/megatest -make pgm -./pgm +p4 -cd ../../../../.. -rm -rf Linux-ARM64-g++ -./config Linux-ARM64-g++ --charm-arch $charm_arch --with-cuda --cxx clang++ --cc clang + +rm -rf build +rm -rf install +mkdir build install +export BUILD_DIR=$JARVIS_ROOT/NAMD-2.14/build +export INSTALL_DIR=$JARVIS_ROOT/NAMD-2.14/install +cd $JARVIS_ROOT/NAMD-2.14/build +tar -xvf $JARVIS_DOWNLOAD/charm-6.10.2.tar.gz +cd charm-v6.10.2 +mkdir ${INSTALL_DIR}/charm690/ +cp src/arch/mpi-linux-x86_64 src/arch/mpi-linux-arm8 -rf +grep -rl 'm64' src/arch/mpi-linux-arm8 | xargs sed -i 's/\-m64//g' +./build charm++ mpi-linux-arm8 smp --with-production --destination=$JARVIS_ROOT/NAMD-2.14/install/charm690/mpi-linux-arm8 + +cd $BUILD_DIR +tar xzf $JARVIS_DOWNLOAD/NAMD_2.14_Source.tar.gz +cd NAMD_2.14_Source +cp arch/Linux-x86_64.fftw3 arch/Linux-ARM64.fftw3 +cd $JARVIS_ROOT/NAMD-2.14/ +tar -xzvf $JARVIS_DOWNLOAD/tcl8.5.9-linux-arm64-threaded.tar.gz +cd $BUILD_DIR/NAMD_2.14_Source +sed -i "s|^CHARMBASE[[:space:]]*=.*|CHARMBASE = $INSTALL_DIR/charm690|" Make.charm + +cd $BUILD_DIR/NAMD_2.14_Source +sed -i '1,$d' arch/Linux-ARM64-g++.arch +cat <> "arch/Linux-ARM64-g++.arch" +NAMD_ARCH = Linux-ARM64 +CHARMARCH = mpi-linux-arm8 +#FLOATOPTS = -O2 -ffast-math -funsafe-math-optimizations -fomit-frame-pointer -mcpu=cortex-a9 -mtune=cortex-a9 +FLOATOPTS = -O2 -ffast-math -funsafe-math-optimizations -fomit-frame-pointer +CXX = clang++ +CXXOPTS = \$(FLOATOPTS) +CXXNOALIASOPTS = \$(FLOATOPTS) -fno-strict-aliasing +CC = clang +COPTS = \$(FLOATOPTS) +EOF +./config Linux-ARM64-g++ --with-fftw3 --fftw-prefix $FFTW_PATH --with-tcl --tcl-prefix $JARVIS_ROOT/NAMD-2.14/tcl8.5.9-linux-arm64-threaded --charm-arch mpi-linux-arm8 cd Linux-ARM64-g++ -make -j +make [CLEAN] make clean @@ -64,4 +112,4 @@ nodes = 1 kperf = --spe --uncore perf = nsys = -y 5s -d 60s -ncu = --target-processes all --launch-skip 16 --launch-count 1 \ No newline at end of file +ncu = --target-processes all --launch-skip 16 --launch-count 1