#!/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-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 tcl8.5.18-src.tar.gz tar -xzvf tk8.5.18-src.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 "#################| FFTW3 installation |####################" if [ ! -f $ROOT_DIR/common_dependencies/lib/libfftw3f.a ]; then cd $ROOT_DIR/fftw-3.3.4 sed -i '13042s/mpicc/mpiicc/' configure CC=$MPIC_COMP CXX=$MPICXX_COMP F77=$MPIF77_COMP CFLAGS="-fPIC" FFLAGS="-fPIC" LDFLAGS="-L$ROOT_DIR/common_dependencies/lib" LIBS="-lifcore -lifport" ./configure --prefix=$ROOT_DIR/common_dependencies --enable-openmp --enable-mpi --enable-single|tee $ROOT_DIR/logs/fftw3.3.4_config.log make |tee $ROOT_DIR/logs/fftw3.3.4_make.log make install fi #read namd echo "################| Charm 6.6 installation |##################" export MY_CHARM_ARCH=mpi-linux-x86_64 if [ ! -f $ROOT_DIR/NAMD_2.10_Source/charm-6.6.1/$MY_CHARM_ARCH-ifort-mpicxx/bin/charmrun ]; then cd $ROOT_DIR/NAMD_2.10_Source tar -xvf charm-6.6.1.tar cd charm-6.6.1/ sed -i "s/mpicxx/mpiicpc/g" $ROOT_DIR/NAMD_2.10_Source/charm-6.6.1/smart-build.pl export CHARM_CONFIG_FILES=$ROOT_DIR/NAMD_2.10_Source/charm-6.6.1/src/arch/$MY_CHARM_ARCH sed -i "/^g++/a mpiicc\) CMK_AMD64=\"-O3 -fPIC\" ;;" $CHARM_CONFIG_FILES/conv-mach.sh sed -i "/^CMK_NATIVE_[CC|LD]/ s/gcc/$C_COMP/g" $CHARM_CONFIG_FILES/conv-mach.sh sed -i "/^CMK_NATIVE_[CXX|LDXX]/ s/g++/$CXX_COMP/g" $CHARM_CONFIG_FILES/conv-mach.sh sed -i "/^CMK_CF90/ s/f95/$F_COMP/g" $CHARM_CONFIG_FILES/conv-mach.sh sed -i "s/conv-mach-gfortran.sh/conv-mach-ifort.sh/g" $CHARM_CONFIG_FILES/conv-mach.sh sed -i "/^CMK_CF77/a CMK_CF77=\"$MPIF_COMP -auto -fPIC \"" $CHARM_CONFIG_FILES/cc-mpicxx.sh sed -i "/^CMK_CF90/a CMK_CF90=\"$MPIF_COMP -auto -fPIC \"" $CHARM_CONFIG_FILES/cc-mpicxx.sh sed -i "s/^MPICXX_DEF/MPICXX_DEF=$MPICXX_COMP/g" $CHARM_CONFIG_FILES/cc-mpicxx.sh sed -i "s/^MPICC_DEF/MPICC_DEF=$MPIC_COMP/g" $CHARM_CONFIG_FILES/cc-mpicxx.sh #why mpicxx needed hete? MPICXX=$MPICXX_COMP CXX=$CXX_COMP ./build charm++ $MY_CHARM_ARCH mpicxx $F_COMP --with-production --no-shared -O3 -DCMK_OPTIMIZE=1 | tee $ROOT_DIR/logs/charmm6.6_build.log cd $MY_CHARM_ARCH-ifort-mpicxx/tests/charm++/megatest make pgm|tee $ROOT_DIR/logs/charmm6.6_testmake.log mpirun -n 4 ./pgm if [ $(echo $?) == "0" ]; then echo "CHARM++ installed properly" else echo "CHARM++:some error occured " read namd_err fi fi echo "#############| NAMD |###############" export MY_NAMD_ARCH=Linux-x86_64-icc if [ ! -f $ROOT_DIR/NAMD_2.10_Source/$MY_NAMD_ARCH/namd2 ]; then cd $ROOT_DIR/NAMD_2.10_Source sed -i "/^CHARMBASE/c CHARMBASE=$ROOT_DIR/NAMD_2.10_Source/charm-6.6.1" Make.charm sed -i "/^CHARMARCH/c CHARMARCH=mpi-linux-x86_64-ifort-mpicxx" arch/$MY_NAMD_ARCH.arch sed -i "/^FLOATOPTS/c FLOATOPTS=-ip -fno-rtti -no-vec" arch/$MY_NAMD_ARCH.arch sed -i "/^CXXOPTS/c CXXOPTS=-static-intel -O2 \$\(FLOATOPTS\)" arch/$MY_NAMD_ARCH.arch sed -i "/^COPTS/c COPTS=-static-intel -O2 \$\(FLOATOPTS\)" arch/$MY_NAMD_ARCH.arch sed -i "/^FFTDIR/c FFTDIR=$ROOT_DIR/common_dependencies" arch/Linux-x86.fftw3 sed -i "/^FFTINCL/c FFTINCL=-I\$\(FFTDIR\)/include" arch/Linux-x86.fftw3 sed -i "/^FFTLIB/c FFTLIB=-L\$\(FFTDIR\)/lib -lfftw3" arch/Linux-x86.fftw3 sed -i "/^FFTFLAGS/c FFTFLAGS=-DNAMD_FFTW" arch/Linux-x86.fftw3 sed -i "/^TCLDIR/c TCLDIR=$ROOT_DIR/common_dependencies" arch/Linux-x86.tcl sed -i "/^TCLLIB/c TCLLIB=-L\$\(TCLDIR\)/lib64 -ltcl8.5 -ldl/c " arch/Linux-x86.tcl sed -i "/^TCLFLAGS/c TCLFLAGS=-DNAMD_TCL" arch/Linux-x86.tcl # mpi-linux-x86_64-ifort-mpicxx ?? ./config $MY_NAMD_ARCH --charm-base ./charm-6.6.1 --charm-arch $MY_CHARM_ARCH-ifort-mpicxx --with-fftw3 --fftw-prefix $ROOT_DIR/common_dependencies --cxx $MPICXX_COMP --cc $MPIC_COMP --with-tcl --tcl-prefix $ROOT_DIR/common_dependencies cd $MY_NAMD_ARCH make VERBOSE=1 | tee $ROOT_DIR/NAMD_make.log fi cd $ROOT_DIR/NAMD_2.10_Source/$MY_NAMD_ARCH/ cp $ROOT_DIR/apoa1.tar.gz . tar -xzvf apoa1.tar.gz time mpirun -np 1 ./namd2 +ppn 23 +idlepoll ./apoa1/apoa1.namd | tee $ROOT_DIR/namd_with1_procs_23ppn.log time mpirun -np 1 ./namd2 ./apoa1/apoa1.namd | tee $ROOT_DIR/namd_with1_procs.log time mpirun -np 2 ./namd2 ./apoa1/apoa1.namd | tee $ROOT_DIR/namd_with2_procs.log time mpirun -np 4 ./namd2 ./apoa1/apoa1.namd | tee $ROOT_DIR/namd_with4_procs.log time mpirun -np 8 ./namd2 ./apoa1/apoa1.namd | tee $ROOT_DIR/namd_with8_procs.log time mpirun -np 16 ./namd2 ./apoa1/apoa1.namd | tee $ROOT_DIR/namd_with16_procs.log time mpirun -np 23 ./namd2 ./apoa1/apoa1.namd | tee $ROOT_DIR/namd_with23_procs.log time mpirun -np 32 ./namd2 ./apoa1/apoa1.namd | tee $ROOT_DIR/namd_with32_procs.log time mpirun -np 64 ./namd2 ./apoa1/apoa1.namd | 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