#!/bin/bash export ROOT_DIR=$HOME/NAMD_BUILD export LIBRARY_PATH=$LIBRARY_PATH export LD_LIBRARY_PATH=$LD_LIBRARY_PATH export C_INCLUDE_PATH=$C_INCLUDE_PATH export C_COMP=icc export F_COMP=ifort export CXX_COMP=icpc export MPIC_COMP=mpiicc export MPICXX_COMP=mpiicpc export MPIF_COMP=mpiifort export MPIF77_COMP=mpiifort export LIBRARY_PATH=$ROOT_DIR/common_dependencies/lib:$LIBRARY_PATH export LD_LIBRARY_PATH=$ROOT_DIR/common_dependencies/lib:$LD_LIBRARY_PATH export PATH=$ROOT_DIR/common_dependencies/bin:$PATH export C_INCLUDE_PATH=$ROOT_DIR/common_dependencies/include:$C_INCLUDE_PATH if [ ! -d $ROOT_DIR ]; then mkdir -p $ROOT_DIR/common_dependencies mkdir -p $ROOT_DIR/logs fi cd $ROOT_DIR if [ ! -f tcl8.5.18-src.tar.gz ]; then wget http://downloads.sourceforge.net/project/tcl/Tcl/8.5.18/tcl8.5.18-src.tar.gz?r=&ts=1437718859&use_mirror=liquidtelecom fi if [ ! -f tk8.5.18-src.tar.gz ]; then wget http://downloads.sourceforge.net/project/tcl/Tcl/8.5.18/tk8.5.18-src.tar.gz?r=&ts=1437718913&use_mirror=liquidtelecom fi if [ ! -f fftw-2.1.5.tar.gz ]; then wget http://www.fftw.org/fftw-2.1.5.tar.gz fi if [ ! -f fftw-3.3.4.tar.gz ]; then wget http://www.fftw.org/fftw-3.3.4.tar.gz fi if [ ! -f NAMD_2.10_Source.tar.gz ]; then wget http://www.ks.uiuc.edu/Research/namd/2.10/download/578621/NAMD_2.10_Source.tar.gz fi if [ ! -f apoa1.tar.gz ]; then wget http://www.ks.uiuc.edu/Research/namd/utilities/apoa1.tar.gz fi tar -xzvf tk8.5.18-src.tar.gz tar -xzvf tcl8.5.18-src.tar.gz tar -xzvf fftw-2.1.5.tar.gz tar -xzvf fftw-3.3.4.tar.gz tar -xzvf NAMD_2.10_Source.tar.gz echo "#################| TCL 8.5 |##########################" if [ ! -f $ROOT_DIR/common_dependencies/lib/libtcl8.5.so ]; then cd $ROOT_DIR/tcl8.5.18/unix CC=$MPIC_COMP CFLAGS="-fPIC" ./configure --prefix="$ROOT_DIR/common_dependencies" --enable-threads --enable-64bit |tee $ROOT_DIR/logs/tcl_8.5_config.log make| tee $ROOT_DIR/logs/tcl_8.5_make.log make install fi echo "#################| TK 8.5 |#########################" if [ ! -f $ROOT_DIR/common_dependencies/lib/libtk8.5.so ]; then cd $ROOT_DIR/tk8.5.18/unix CC=$MPIC_COMP CFLAGS="-fPIC" LDFLAGS="-L$ROOT_DIR/common_dependencies/lib" ./configure --prefix="$ROOT_DIR/common_dependencies" --enable-threads --enable-64bit|tee $ROOT_DIR/logs/tk_8.5_config.log make|tee $ROOT_DIR/logs/tk_8.5_make.log make install fi echo "################| FFTW 2 installation |####################" if [ ! -f $ROOT_DIR/common_dependencies/lib/libfftw.a ]; then cd $ROOT_DIR/fftw-2.1.5 MPICC=$MPIC_COMP CC=$C_COMP CFLAGS="-fPIC" F77=$F_COMP FFLAGS="-fPIC" ./configure --prefix="$ROOT_DIR/common_dependencies" --enable-type-prefix --enable-float --with-openmp --enable-mpi make make install make clean ./configure --prefix="$ROOT_DIR/common_dependencies" make make install fi <&1 | tee $ROOT_DIR/01namd_with1_procs_1ppn.log ( time mpirun -np 1 ./namd2 +ppn 2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/02namd_with1_procs_2ppn.log ( time mpirun -np 1 ./namd2 +ppn 4 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/03namd_with1_procs_4ppn.log ( time mpirun -np 1 ./namd2 +ppn 8 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/04namd_with1_procs_8ppn.log ( time mpirun -np 1 ./namd2 +ppn 10 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/05namd_with1_procs_10ppn.log ( time mpirun -np 1 ./namd2 +ppn 12 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/06namd_with1_procs_12ppn.log ( time mpirun -np 1 ./namd2 +ppn 16 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/07namd_with1_procs_16ppn.log ( time mpirun -np 1 ./namd2 +ppn 19 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/08namd_with1_procs_19ppn.log ( time mpirun -np 1 ./namd2 +ppn 23 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/09namd_with1_procs_23ppn.log ( time mpirun -np 1 ./namd2 +ppn 24 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/10namd_with1_procs_24ppn.log ( time mpirun -np 1 ./namd2 +ppn 28 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/11namd_with1_procs_28ppn.log ( time mpirun -np 1 ./namd2 +ppn 32 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/12namd_with1_procs_32ppn.log ( time mpirun -np 1 ./namd2 +ppn 38 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/13namd_with1_procs_38ppn.log ( time mpirun -np 1 ./namd2 +ppn 39 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/14namd_with1_procs_39ppn.log ( time mpirun -np 1 ./namd2 +ppn 40 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/15namd_with1_procs_40ppn.log ( time mpirun -np 1 ./namd2 +ppn 46 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/16namd_with1_procs_46ppn.log ( time mpirun -np 1 ./namd2 +ppn 47 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/17namd_with1_procs_47ppn.log ( time mpirun -np 1 ./namd2 +ppn 48 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/18namd_with1_procs_48ppn.log ( time mpirun -np 1 ./namd2 +ppn 56 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/19namd_with1_procs_56ppn.log ( time mpirun -np 1 ./namd2 +ppn 57 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/20namd_with1_procs_57ppn.log ( time mpirun -np 1 ./namd2 +ppn 64 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/21namd_with1_procs_64ppn.log ( time mpirun -np 1 ./namd2 +ppn 114 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/22namd_with1_procs_114ppn.log ( time mpirun -np 1 ./namd2 +ppn 228 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/23namd_with1_procs_228ppn.log #chosen for 16 core config #8cores (underutilizing 16 core s!!) #16 cores #32 cores (overutilizing 16 cores!!-more procs) #32 cores (overutilizing 16 cores!!-more threads) #chosen for 20 core config #10 cores(underutilizing 20 core machine!) #20 cores (utilizing all cores!) #40 cores (doubling load on 20 cores) #chosen for 24 core config #12 cores (underutilizing 24 core machine) <&1 | tee $ROOT_DIR/24namd_with2_procs_2ppn.log ( time mpirun -np 2 ./namd2 +ppn 4 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/25namd_with2_procs_4ppn.log ( time mpirun -np 2 ./namd2 +ppn 5 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/26namd_with2_procs_5ppn.log ( time mpirun -np 2 ./namd2 +ppn 6 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/27namd_with2_procs_6ppn.log ( time mpirun -np 2 ./namd2 +ppn 8 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/28namd_with2_procs_8ppn.log ( time mpirun -np 2 ./namd2 +ppn 10 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/29namd_with2_procs_10ppn.log ( time mpirun -np 2 ./namd2 +ppn 12 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/30namd_with2_procs_12ppn.log ( time mpirun -np 2 ./namd2 +ppn 14 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/31namd_with2_procs_14ppn.log ( time mpirun -np 2 ./namd2 +ppn 16 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/32namd_with2_procs_16ppn.log ( time mpirun -np 2 ./namd2 +ppn 20 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/33namd_with2_procs_20ppn.log ( time mpirun -np 2 ./namd2 +ppn 24 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/34namd_with2_procs_24ppn.log ( time mpirun -np 2 ./namd2 +ppn 28 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/35namd_with2_procs_28ppn.log ( time mpirun -np 2 ./namd2 +ppn 57 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/36namd_with2_procs_57ppn.log ( time mpirun -np 2 ./namd2 +ppn 114 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/37namd_with2_procs_114ppn.log ( time mpirun -np 3 ./namd2 +ppn 4 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/38namd_with3_procs_4ppn.log ( time mpirun -np 3 ./namd2 +ppn 8 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/39namd_with3_procs_8ppn.log ( time mpirun -np 3 ./namd2 +ppn 16 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/40namd_with3_procs_16ppn.log ( time mpirun -np 3 ./namd2 +ppn 38 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/41namd_with3_procs_38ppn.log ( time mpirun -np 3 ./namd2 +ppn 76 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/42namd_with3_procs_76ppn.log ( time mpirun -np 4 ./namd2 +ppn 2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/43namd_with4_procs_2ppn.log ( time mpirun -np 4 ./namd2 +ppn 3 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/44namd_with4_procs_3ppn.log ( time mpirun -np 4 ./namd2 +ppn 4 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/45namd_with4_procs_4ppn.log ( time mpirun -np 4 ./namd2 +ppn 5 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/46namd_with4_procs_5ppn.log ( time mpirun -np 4 ./namd2 +ppn 6 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/47namd_with4_procs_6ppn.log ( time mpirun -np 4 ./namd2 +ppn 7 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/48namd_with4_procs_7ppn.log ( time mpirun -np 4 ./namd2 +ppn 8 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/49namd_with4_procs_8ppn.log ( time mpirun -np 4 ./namd2 +ppn 10 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/50namd_with4_procs_10ppn.log ( time mpirun -np 4 ./namd2 +ppn 12 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/51namd_with4_procs_12ppn.log ( time mpirun -np 4 ./namd2 +ppn 14 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/52namd_with4_procs_14ppn.log ( time mpirun -np 4 ./namd2 +ppn 57 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/53namd_with4_procs_57ppn.log ( time mpirun -np 5 ./namd2 +ppn 2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/54namd_with5_procs_2ppn.log ( time mpirun -np 6 ./namd2 +ppn 2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/55namd_with6_procs_2ppn.log ( time mpirun -np 6 ./namd2 +ppn 4 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/56namd_with6_procs_4ppn.log ( time mpirun -np 6 ./namd2 +ppn 19 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/57namd_with6_procs_19ppn.log ( time mpirun -np 6 ./namd2 +ppn 38 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/58namd_with6_procs_38ppn.log ( time mpirun -np 7 ./namd2 +ppn 4 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/59namd_with7_procs_4ppn.log ( time mpirun -np 7 ./namd2 +ppn 7 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/60namd_with7_procs_7ppn.log ( time mpirun -np 7 ./namd2 +ppn 8 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/61namd_with7_procs_8ppn.log ( time mpirun -np 8 ./namd2 +ppn 1 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/62namd_with8_procs_1ppn.log ( time mpirun -np 8 ./namd2 +ppn 2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/63namd_with8_procs_2ppn.log ( time mpirun -np 8 ./namd2 +ppn 3 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/64namd_with8_procs_3ppn.log ( time mpirun -np 8 ./namd2 +ppn 4 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/65namd_with8_procs_4ppn.log ( time mpirun -np 8 ./namd2 +ppn 5 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/66namd_with8_procs_5ppn.log ( time mpirun -np 8 ./namd2 +ppn 6 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/67namd_with8_procs_6ppn.log ( time mpirun -np 8 ./namd2 +ppn 7 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/68namd_with8_procs_7ppn.log ( time mpirun -np 10 ./namd2 +ppn 1 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/69namd_with10_procs_1ppn.log ( time mpirun -np 10 ./namd2 +ppn 2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/70namd_with10_procs_2ppn.log ( time mpirun -np 10 ./namd2 +ppn 4 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/71namd_with10_procs_4ppn.log ( time mpirun -np 12 ./namd2 +ppn 1 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/72namd_with12_procs_1ppn.log ( time mpirun -np 12 ./namd2 +ppn 4 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/73namd_with12_procs_4ppn.log ( time mpirun -np 12 ./namd2 +ppn 19 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/74namd_with12_procs_19ppn.log ( time mpirun -np 14 ./namd2 +ppn 2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/75namd_with14_procs_2ppn.log ( time mpirun -np 14 ./namd2 +ppn 4 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/76namd_with14_procs_4ppn.log ( time mpirun -np 16 ./namd2 +ppn 2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/77namd_with16_procs_2ppn.log ( time mpirun -np 16 ./namd2 +ppn 3 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/78namd_with16_procs_3ppn.log ( time mpirun -np 19 ./namd2 +ppn 6 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/79namd_with19_procs_6ppn.log ( time mpirun -np 19 ./namd2 +ppn 12 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/80namd_with19_procs_12ppn.log ( time mpirun -np 20 ./namd2 +ppn 2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/81namd_with20_procs_2ppn.log ( time mpirun -np 24 ./namd2 +ppn 1 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/82namd_with24_procs_1ppn.log ( time mpirun -np 24 ./namd2 +ppn 2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/83namd_with24_procs_2ppn.log ( time mpirun -np 26 ./namd2 +ppn 2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/84namd_with26_procs_2ppn.log ( time mpirun -np 28 ./namd2 +ppn 1 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/85namd_with28_procs_1ppn.log ( time mpirun -np 38 ./namd2 +ppn 4 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/86namd_with38_procs_4ppn.log ( time mpirun -np 38 ./namd2 +ppn 6 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/87namd_with38_procs_6ppn.log ( time mpirun -np 40 ./namd2 +ppn 1 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/88namd_with40_procs_1ppn.log ( time mpirun -np 48 ./namd2 +ppn 1 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/89namd_with48_procs_1ppn.log ( time mpirun -np 56 ./namd2 +ppn 1 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/90namd_with56_procs_1ppn.log ( time mpirun -np 57 ./namd2 +ppn 2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/91namd_with57_procs_2ppn.log ( time mpirun -np 57 ./namd2 +ppn 4 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/92namd_with57_procs_4ppn.log ( time mpirun -np 76 ./namd2 +ppn 3 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/93namd_with76_procs_3ppn.log ( time mpirun -np 114 ./namd2 +ppn 1 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/94namd_with114_procs_1ppn.log ( time mpirun -np 114 ./namd2 +ppn 2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/95namd_with114_procs_2ppn.log ( time mpirun -np 228 ./namd2 +ppn 1 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/96namd_with228_procs_1ppn.log touch $ROOT_DIR/output.data && cp /dev/null $ROOT_DIR/output.data for logfile in `ls $ROOT_DIR/*ppn.log` do tail -6 $logfile |head -1| awk '{print $6 " " $2}' >> $ROOT_DIR/output.data done comment #24 core full #48 #chosen for mic 57 cores! #unserutilisinglmic (28) #full utilization mic #doubling load mic (114) #quadrupling load miv (228) #chosen for mic # time mpiexec.hydra -perhost 1 -n 1 ./namd2 +ppn 4 ./apoa1/apoa1.namd |tee $ROOT_DIR/namd_with1_procs_hydra.log #( time mpirun -np 2 ./namd2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/namd_with2_procs.log #( time mpirun -np 4 ./namd2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/namd_with4_procs.log #( time mpirun -np 8 ./namd2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/namd_with8_procs.log # ( time mpirun -np 16 ./namd2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/namd_with16_procs.log # ( time mpirun -np 23 ./namd2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/namd_with23_procs.log # ( time mpirun -np 32 ./namd2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/namd_with32_procs.log # ( time mpirun -np 64 ./namd2 ./apoa1/apoa1.namd ) 2>&1 | tee $ROOT_DIR/namd_with64_procs.log # GCC VERSION: # ./build charm++ net-linux-x86_64 # net-linux-x86_64/ #./build charm++ mpi-linux-x86_64 $MPIC_COMP tcp # mpi-linux-x86_64