#!/bin/csh # # 6 May 10 - script to "link-edit" a GAMESS executable # 22 August 10: ES corrected for MKL/linux32 lines 421-425 # Invoke this job by 'lked EXE VERNO >& lked.log &' # EXE is normally 'gamess', # VERNO is the next version number, e.g. 01, 02, 03, ... # This produces executable "EXE.VERNO.x", e.g. gamess.01.x # if (-e install.info) then source install.info else echo "Please run 'config' first, to set up GAMESS compiling information" exit 4 endif # # the configuration file read just above provides the next two variables, # and some others that are used below. # set TARGET=$GMS_TARGET chdir $GMS_PATH # if (!($?GMS_BG_MODEL)) set GMS_BG_MODEL=' ' # # ---- and now the script begins... # set EXE=$1 set VERNO=$2 if (null$EXE == null) set EXE=gamess if (null$VERNO == null) set VERNO=00 date # echo GAMESS will be linked into the binary file $EXE.$VERNO.x. # if (-e $EXE.$VERNO.x) then echo An old executable $EXE.$VERNO.x already exists! echo Bombing out... exit 4 endif # # optional SIMOMM method, using Tinker MM code # qmmm.o is dummy substitute from the standard GAMESS distribution. set TINKER=false if ($TINKER == true) then set QMMMOBJ="Libtad.o Libteac.o Libtedl.o Libtemo.o Libterx.o Libtfi.o" set QMMMOBJ="$QMMMOBJ Libtjo.o Libtpr.o Libtsx.o Tdrive.o Tinkin.o Toys.o" else set QMMMOBJ='qmmm.o' endif # # optional Valence Bond method, using VB2000 code --or-- XMVB code. # you can link only one (1) VB program, please do not select both! # # (vbdum.o is dummy substitute from the standard GAMESS distribution) # set VB2000=false set XMVB=false set VBOBJ='vbdum.o' if ($VB2000 == true) set VBOBJ='vb2000.o vb2gms.o' if ($XMVB == true) set VBOBJ='xmvb.o' # # optional Nuclear-Electronic Orbital method, using NEO code # neostb.o is dummy substitute from the standard GAMESS distribution. set NEO=false if ($NEO == true) then set NEOOBJ="neo.o neobas.o neocas.o neoden.o neofci.o" set NEOOBJ="$NEOOBJ neog2a.o neog2b.o neog2c.o neogrd.o" set NEOOBJ="$NEOOBJ neohf.o neohss.o neoint.o neomp2.o" set NEOOBJ="$NEOOBJ neonci.o neoopt.o neopos.o neoprp.o" set NEOOBJ="$NEOOBJ neosym.o neotrn.o neovib.o" else set NEOOBJ='neostb.o' endif # # Define the options for the system loader 'ld'. These are # LDR - the name of the loader (usually a compiler). # LDOPTS - options, such as asking for a load map. # LIBRARIES - extra system libraries which must be searched. # BLAS - set to blas.o if not using system BLAS. # set to blank if using system BLAS. # VECTOR - set to vector.o on a vector processor. # set to blank on a scalar processor. # QUICHE - set to zunix.o if using true dynamic memory, # possibly add other system specific objects. # set to blank otherwise. # # --- start of machine specific options --- # # # Use the Digital/Compaq eXtended Math Library for BLAS if installed. # if ($TARGET == axp64) then set LDR='f77' if (`uname` == Linux) set LDR='fort' set LDOPTS='' # -Wl,-M' shows load map, -non_shared to see libraries set LIBRARIES=' ' set BLAS='blas.o' if (-e /usr/lib/libdxml.a) then set LIBRARIES='-ldxml' set BLAS=' ' endif if (-e /usr/lib/libcxml.a) then set LIBRARIES='-lcxml' set BLAS=' ' endif set VECTOR=' ' set QUICHE='zunix.o' endif # if ($TARGET == cray-pvp) then set LDR='f90' set LDOPTS='-m 0 -v -V' set LIBRARIES=' ' set BLAS=' ' set VECTOR='vector.o' set QUICHE='zunix.o' endif # if ($TARGET == cray-t3e) then set LDR='env TARGET=cray-t3e cld -Dstreams=on' set LDOPTS='-V -Xm' set LIBRARIES='-lc -lm -lu -lf -lsci -lfi -lsma -lmpi -lpmpi' set BLAS=' ' set VECTOR=' ' set QUICHE='zunix.o' endif # if ($TARGET == cray-x1) then set LDR='ftn' set LDOPTS='-V -dp -sdefault64 -Ossp' set LIBRARIES=' ' set BLAS=' ' set VECTOR='vector.o' set QUICHE='zunix.o' endif # if ($TARGET == cray-xd1) then set LDR='mpif90' # choose 'amd64e' in next line if your Opteron supports SSE3 instructions set LDOPTS='-tp amd64 -i8 -fast -Mnosecond_underscore' set LIBRARIES=' ' set BLAS=' ' # choose PGI library over ACML library. if (-e $PGI/linux86-64/lib/libblas.a) then set LIBRARIES="$PGI/linux86-64/lib/libblas.a" echo "Found BLAS in $LIBRARIES" else if (-e $ACML_DIR/lib/libacml.a) then set LIBRARIES="$ACML_DIR/lib/libacml.a" echo "Found BLAS in $LIBRARIES" else echo ' ' echo '* * * * * * * * * * * * * * * * * * * * * * * * * * * *' echo ' Warning. No math library was found.' echo ' You should install one for maximum performance.' echo '* * * * * * * * * * * * * * * * * * * * * * * * * * * *' echo ' ' set BLAS='blas.o' endif set VECTOR=' ' set QUICHE='zunix.o' endif # # Cray XT # if ($TARGET == cray-xt) then # this will be set to 'ftn' by the configuration step set LDR=$GMS_FORTRAN # two things not included in the configuration stage # here we presume the default in 'comp' was not changed. set COMPILER = 'pgi' # here we set the number of cores we have set XT_NCORE = 4 set LDOPTS = ' -default64 ' if($XT_NCORE == 1) then echo ****************************************************** echo ERROR: XT_NCORE=$XT_NCORE is not implemented echo EMAIL: ryan@cray.com for more info echo ****************************************************** exit 4 else if($XT_NCORE == 2) then if($COMPILER == pgi) then set LDOPTS = "$LDOPTS -tp k8-64e " else if($COMPILER == pathscale) then set LDOPTS = "$LDOPTS -L$MPT_DIR/mpich2-pgi/lib" else echo COMPILER not set correctly exit 4 endif else if($XT_NCORE == 4) then if($COMPILER == pgi) then set LDOPTS = "$LDOPTS -Mfpmisalign" # AMD Barcelona optimizations set LDOPTS = "$LDOPTS -mcmodel=medium" # set LDOPTS = "$LDOPTS -Mipa=fast -Minline -Minfo=all -Mneginfo=loop" else if($COMPILER == pathscale) then set LDOPTS = "$LDOPTS -L$MPT_DIR/mpich2-pgi/lib" else echo COMPILER not set correctly exit 4 endif else echo ****************************************************** echo ERROR: XT_NCORE (ENV variable) is not defined. echo ****************************************************** endif set LIBRARIES="-L/cray/iss/park_bench/lib -lfpmpi64-cnl" set LIBRARIES=" " set LIBRARIES="$LIBRARIES -lhugetlbfs" # # ------------------------ -lfast_mv ------------------------------ # use -lfast_mv for faster evaluation of the exponential function. # -lfast_mv must come after the objects, yet before -lm or -lacml # performance improvement will vary. # not used by default, since it is so far a non-standard module. # ------------------------ -lfast_mv ------------------------------ # set BLAS=' ' set VECTOR=" " set QUICHE="zunix.o" endif # # Fujitsu PrimePower, using SSL2 BLAS library # if (($TARGET == fuji-pp32) || ($TARGET == fuji-pp64)) then set LDR='f90' set LDOPTS='-KV8PLUS' if ($TARGET == fuji-pp64) set LDOPTS='-KV9' set LIBRARIES='-SSL2' set BLAS=' ' if ($TARGET == fuji-pp64) set BLAS='blaswrap.o' set VECTOR=' ' set QUICHE='zunix.o' endif # if (($TARGET == hpux32) || ($TARGET == hpux64)) then set LDR='f90' if ($TARGET == hpux32) then set LDOPTS='+O2 +Ofastaccess' # add -Wl,-m to see map set LIBRARIES='-ldld /opt/fortran90/lib/pa2.0/libblas.a +U77' endif if ($TARGET == hpux64) then set LDOPTS='+DD64 +O2' # add -Wl,-m to see map set LIBRARIES='-ldld -lveclib8 +U77' endif set BLAS=' ' set VECTOR=' ' set QUICHE=' ' endif # # Various IBM sections follow. # To see length of common blocks and subroutine sizes, # add "-Wl,-bmap:../lked.sizes" to LDOPTS. # The following will pick out the huge common blocks: # a) grep -i " cm " lked.sizes >& filtered # b) vi filtered # :%s/^/ / # :wq (pushes subroutine names above column72) # c) strip72 (Mike's program on Si.FI) # input=filtered # output=stripped # d) vi stripped # :%s/^ // # :wq (no blanks in column 1) # e) sort +1 -d stripped >& sorted # f) keep only the end of 'sorted' # # To avoid use of dynamic link libraries, if xlfrte is absent, # add "-Wl,-bnso -Wl,-bI:/lib/syscalls.exp" to LDOPTS. # # The fast math library from IBM is called ESSL: # 1. BLAS routines in ESSL are faster than the free 32 bit lib in AIX, # note that -lblas works *IF AND ONLY IF* you are running 32 bit. # 2. Power2 has a different ESSL name, -lessl2, which we don't # any longer try to detect since few Power2 systems remain. # 3. We can use -lessl on 64 bit machines only by using the 32 bit # wrapper hack in blaswrap.src. # 4. If you don't have ESSL, a fallback is to remove the 32 bit # wrapper hack in "comp" (search on DASUM), repeat compall, # and set BLAS to "blas.o" and LIBRARIES to blank below. # if ($TARGET == ibm32) then set LDR='xlf' set LDOPTS='-Wl,-m -Wl,-bmaxdata:0x70000000 -Wl,-bloadmap:../lked.map' set LIBRARIES='-lblas' # free 32 bit lib in AIX if (-e /lib/libessl.a) set LIBRARIES='-lessl' # a bit better if exists set BLAS=' ' set VECTOR=' ' set QUICHE='zunix.o' endif # if ($TARGET == ibm64) then set LDR='xlf' if(`uname` == AIX) then set LDOPTS='-q64 -Wl,-m -Wl,-bloadmap:../lked.map' set LIBRARIES='-lessl' else set LDOPTS='-q64' set LIBRARIES='-lessl -lxlf90_r' endif set BLAS='blaswrap.o' set VECTOR=' ' set QUICHE='zunix.o' endif # if ($TARGET == ibm64-sp) then set LDR='mpxlf_r' set LDOPTS='-q64' set LIBRARIES='-lessl' set BLAS='blaswrap.o' set VECTOR=' ' set QUICHE='zunix.o' endif # if ($TARGET == ibm-bg) then if ($GMS_BG_MODEL == L) then set LDR='blrts_xlf' endif if ($GMS_BG_MODEL == P) then set LDR='mpixlf77_r' endif set LDOPTS=' ' # math library: try IBM's ESSL first, # then try Goto-san's Blas (two possible system directories), # then try Goto-san's Blas (from GAMESS directory itself). # Abort if none is found. if (-e /opt/ibmmath/lib/libesslbg.a) then set LIBRARIES='-L/opt/ibmmath/lib -lesslbg' set BLAS=' ' else if (-e /soft/tools/GotBLAS/libgoto.a) then set LIBRARIES='-L/soft/tools/GotBLAS -lgoto' set BLAS=' ' else if (-e /soft/tools/LIBGOTO/libgoto.a) then set LIBRARIES='-L/soft/tools/LIBGOTO -lgoto' set BLAS=' ' else if (-e libgoto.a) then set LIBRARIES='-L.. -lgoto' set BLAS=' ' else # if you really don't have a math library, use the slow FORTRAN # code supplied with GAMESS, taking out this abrupt departure. #--set LIBRARIES=' ' #--set BLAS='blas.o' echo "No math library found on this Blue Gene, please help scripting" exit 4 endif set VECTOR=' ' set QUICHE='zunix.o' endif # # remarks common to linux32 and linux64 # ===================================== # Linux has become the standard Unix flavor, and thus blossomed into # the usual Unix confusion: multiple FORTRAN compilers, multiple # math libraries, and since there is no vendor, or even one main # distribution, the software is installed at random locations. # Hence, the 'config' script will have asked many questions to get the # compiler, math library, version numbers, and appropriate path names. # # The 64 bit stuff is used much more often than the 32 bit stuff, # so you might find a glitch or two just below. # # ------ Linux on 32 bit chips ----- # if ($TARGET == linux32) then set VECTOR=' ' set QUICHE='zunix.o' # # settings which depend on the compiler choice: # switch ($GMS_FORTRAN) case g77: set LDR='g77' set LDOPTS=' ' # add '-Wl,-M' to see load map set FORTLIBS=' ' breaksw case gfortran: set LDR='gfortran' set LDOPTS=' ' set FORTLIBS=' ' breaksw case ifort: set LDR='ifort' set LDOPTS=' ' # add '-Wl,-M' to see load map set FORTLIBS='-Vaxlib' breaksw case pgf77: set LDR='pgf77' set LDOPTS='-g77libs -Mlfs' set FORTLIBS=' ' breaksw case f2c: set LDR='gcc' set LDOPTS=' ' set FORTLIBS='-lf2c -lm' breaksw default: echo Please spell your linux32 compiler correctly. exit 4 endsw # # settings which depend on the math library: mkl, atlas, acml, none # switch ($GMS_MATHLIB) # for MKL, we lack experience. The following is the 64-bit # stuff, with all 64's removed. It might be right! Try your # major version number by deleting the "help", in your case below. # It will then go into your choice of 8, 9, ... and miss the # bombing out in the 'default' clause. case mkl: set mpath=$GMS_MATHLIB_PATH switch ($GMS_MKL_VERNO) case 8help: set MATHLIBS="-L$mpath -lmkl_lapack -lmkl -lguide -lpthread" breaksw case 9help: set MATHLIBS="-L$mpath -lmkl_lapack -lmkl -lguide -lpthread" breaksw case 10: # next one forces single-threaded usage only...exactly what we want. set MATHLIBS="$mpath/libmkl_intel.a" set MATHLIBS="$MATHLIBS $mpath/libmkl_sequential.a" set MATHLIBS="$MATHLIBS $mpath/libmkl_core.a" breaksw case 11help: # next attempts a static link, from reading online documentation. # if this fails to work, try the version 10 lines shown just above. set MATHLIBS="$mpath/libmkl_intel.a" set MATHLIBS="$MATHLIBS $mpath/libmkl_sequential.a" set MATHLIBS="$MATHLIBS $mpath/libmkl_core.a" breaksw default: echo "please edit 'lked' to select the right MKL library stuff" exit breaksw endsw set BLAS=' ' breaksw case atlas: # If the ATLAS comes with static libraries, link to them # so that only the compile node has to have the libraries. # Otherwise, attempt a link against shared object libs. if (-e $GMS_MATHLIB_PATH/libf77blas.a) then set MATHLIBS="$GMS_MATHLIB_PATH/libf77blas.a" set MATHLIBS="$MATHLIBS $GMS_MATHLIB_PATH/libatlas.a" else set MATHLIBS="-L$GMS_MATHLIB_PATH -lf77blas -latlas" endif set BLAS=' ' breaksw case acml: # do a static link so that only compile node needs to install ACML set MATHLIBS="$GMS_MATHLIB_PATH/libacml.a" set BLAS=' ' breaksw case none: default: echo "Warning. No math library was found, you should install one." echo " MP2 calculations speed up about 2x with a math library." echo "CCSD(T) calculations speed up about 5x with a math library." set BLAS='blas.o' set MATHLIBS=' ' breaksw endsw # set LIBRARIES="$FORTLIBS $MATHLIBS" endif # # ------ Linux on 64 bit chips ----- # if ($TARGET == linux64) then set VECTOR=' ' set QUICHE='zunix.o' # # settings which depend on the FORTRAN: # switch ($GMS_FORTRAN) case gfortran: set LDR='gfortran' set LDOPTS=' ' set FORTLIBS=' ' breaksw case ifort: set LDR='ifort' set LDOPTS='-i8' # -Wl,-M generates a load map # this auxiliary library seems to have disappeared in ifort 10 set FORTLIBS=' ' if($GMS_IFORT_VERNO < 10) set FORTLIBS='-Vaxlib' breaksw case pgf77: set LDR='pgf77' set LDOPTS='-i8 -i8storage -mcmodel=medium' set LDOPTS="$LDOPTS -fastsse -Mipa=fast,safe -Mprof=func" set FORTLIBS=' ' breaksw case pathf90: set LDR='pathf90' set LDOPTS=' ' set FORTLIBS=' ' breaksw default: echo "don't know how to use a linux64 compiler named $GMS_FORTRAN" exit 4 breaksw endsw # # settings which depend on the math library: mkl, atlas, acml, none # switch ($GMS_MATHLIB) case mkl: set mpath=$GMS_MATHLIB_PATH switch ($GMS_MKL_VERNO) case 8: set MATHLIBS="-L$mpath -lmkl_lapack64 -lmkl -lguide -lpthread" breaksw case 9: set MATHLIBS="-L$mpath -lmkl_lapack -lmkl -lguide -lpthread" breaksw breaksw case 10: case 11: # next are a static link, in single-threaded mode (serial BLAS). # This option precludes any need to # a) install .so shared object libraries on every node, # b) define LD_LIBRARY_PATH to find the .so libraries, or # c) define MKL_NUM_THREADS=1 # If desired, there is a single-threaded shared object link below. set MATHLIBS=" $mpath/libmkl_intel_lp64.a" set MATHLIBS="$MATHLIBS $mpath/libmkl_sequential.a" set MATHLIBS="$MATHLIBS $mpath/libmkl_core.a" breaksw case 10-so: case 11-so: # next one forces single-threaded usage. # run-time libs (and LD_LIBRARY_PATH) needed on every compute node. # hand edit GMS_MKL_VERNO in your 'install.info' to access this. set MATHLIBS="-L$mpath -lmkl_intel_lp64 -lmkl_sequential -lmkl_core" default: echo "unknown version number for MKL/linux64" exit breaksw endsw set BLAS=' ' breaksw case atlas: # If the ATLAS comes with static libraries, link to them # so that only the compile node has to have the libraries. # Otherwise, attempt a link against shared object libs. if (-e $GMS_MATHLIB_PATH/libf77blas.a) then set MATHLIBS="$GMS_MATHLIB_PATH/libf77blas.a" set MATHLIBS="$MATHLIBS $GMS_MATHLIB_PATH/libatlas.a" else set MATHLIBS="-L$GMS_MATHLIB_PATH -lf77blas -latlas" endif set BLAS=' ' breaksw case acml: # do a static link so that only compile node needs to install ACML set MATHLIBS="$GMS_MATHLIB_PATH/libacml.a" set BLAS=' ' breaksw case none: default: echo "Warning. No math library was found, you should install one." echo " MP2 calculations speed up about 2x with a math library." echo "CCSD(T) calculations speed up about 5x with a math library." set BLAS='blas.o' set MATHLIBS=' ' breaksw endsw # set LIBRARIES="$FORTLIBS $MATHLIBS" endif # endif # # MacIntosh, clauses for using g77 or gfortran. # The math library is Apple's veclib framework. # if (($TARGET == mac32) || ($TARGET == mac64)) then set LDR=$GMS_FORTRAN switch ($TARGET) case mac32: set LDOPTS='-Wl,-multiply_defined -Wl,suppress' set BLAS=' ' breaksw case mac64: set LDOPTS='-m64' set BLAS='blaswrap.o' breaksw endsw # Next is the incantation to link to Apple's BLAS library. # The SystemStubs library wasn't needed under Xcode 2.0 # Older systems (e.g. 10.3) may need this changed to -lcc_dynamic set LIBRARIES='-Wl,-framework -Wl,vecLib -lSystemStubs' set VECTOR=' ' set QUICHE='zunix.o' endif # if ($TARGET == necsx) then set LDR='f90' set LDOPTS='-ebw -size_t64 -Wf"-v -pvctl noassume vwork=stack"' # If MathKeisan is installed do not use the old memory layout. if ({(/bin/nm /usr/lib/libblas.a | grep -c mkversion)}) then echo 'MathKeisan is in use' set LDOPTS="$LDOPTS -Pmulti" else echo 'MathKeisan is NOT in use' set LDOPTS="$LDOPTS -Pmulti -Wl,-h32G_memlayout" endif set LIBRARIES='/usr/lib/lib64/libblas_64.a' set BLAS=' ' set VECTOR='vector.o' set QUICHE='zunix.o' endif # # IRIX/MIPS chips only. In other words, only systems sold long, long ago # add '-Wl,-M' to LDOPTS in order to see load map # error 136 about padding common blocks is to be suppressed. if (($TARGET == sgi32) || ($TARGET == sgi64)) then set LDR=$GMS_FORTRAN if ($TARGET == sgi32) set LDOPTS='-n32 -woff 136' if ($TARGET == sgi64) set LDOPTS=' -64 -woff 136' set LIBRARIES='-lblas' set BLAS=' ' if ($TARGET == sgi64) set BLAS='blaswrap.o' set VECTOR=' ' set QUICHE='zunix.o' endif # if (($TARGET == sun32) || ($TARGET == sun64)) then set VECTOR=' ' set QUICHE='zunix.o' # # linker name and link options depend on Solaris and FORTRAN release if ($GMS_SUN_OS_VERNO >= 7) then set LDR='f90' set xxx=$GMS_SUN_FORT_VERNO set f90_major=$xxx:r set f90_minor=$xxx:e set newf90=false if (($f90_major == 8) && ($f90_minor >= 3)) set newf90=true if ($f90_major >= 9) set newf90=true if ($TARGET == sun32) then if ($newf90 == true) then set LDOPTS=-m32 else if(`uname -p` == sparc) set LDOPTS='-fast -xarch=v8plus' if(`uname -p` == i386) set LDOPTS='-fast -xarch=pentium_pro' endif endif if ($TARGET == sun64) then if ($newf90 == true) then set LDOPTS=-m64 else if(`uname -p` == sparc) set LDOPTS='-fast -xarch=v9' if(`uname -p` == i386) set LDOPTS='-fast -xarch=amd64' endif endif else set LDR=f77 set LDOPTS='-fast -xarch=v8plus' endif # add -m to LDOPTS to see a load map if (-e /opt/SUNWspro/lib/libsunperf.so) then set LIBRARIES='-xlic_lib=sunperf' set BLAS=' ' if ($TARGET == sun64) set BLAS='blaswrap.o' else set LIBRARIES=' ' set BLAS='blas.o' if ($TARGET == sun64) set BLAS='blaswrap.o blas.o' echo " " echo "You did not install the Sun Performance Library," echo "which should should in your compiler suite." echo "We strongly recommend tthat you do install this..." echo " " echo "Proceeding without a good math library, which is slow at run time." echo " " endif endif # # Choose the message passing libraries, MSG_LIBRARIES. # # In all cases, the Distributed Data Interface has been # compiled to a library archive, with the name ../ddi/libddi.a, # where we must look first. Depending on the machine DDI has # several implementations and may be looking for # TCP/IP sockets, SHMEM, MPI, or LAPI/MPI # so here we choose the specific low level system libraries. # switch ($TARGET) # TCP/IP sockets interface (most systems) case axp64: case cray-pvp: case cray-xd1: case fuji-pp32: case fuji-pp64: case hpux32: case hpux64: case ibm32: case ibm64: case linux32: case linux64: case mac32: case mac64: case sgi32: case sun32: case sun64: # # try to set up MPI usage on 64-bit linux clusters. set MPILIBS='' if ($TARGET == linux64) then if (($GMS_DDI_COMM == mpi) || ($GMS_DDI_COMM == mixed)) then switch ($GMS_MPI_LIB) case impi: set MPILIBS="-L$GMS_MPI_PATH/lib64" set MPILIBS="$MPILIBS -lmpi -lmpigf -lmpigi -lrt" breaksw case mpich2: set MPILIBS="-L$GMS_MPI_PATH/lib" set MPILIBS="$MPILIBS -lmpich -lrt" breaksw case mvapich2: set MPILIBS="-L$GMS_MPI_PATH/lib -lmpich" set MPILIBS="$MPILIBS -L$GMS_OFED_PATH -libverbs -lrdmacm -libumad" breaksw case myrinet: # very old information, perhaps not correct anymore. set MPILIBS="/usr/local/mpich-gm/lib/libmpich.a" set MPILIBS="$MPILIBS /usr/local/gm/lib/libgm.a" breaksw case openmpi: set MPILIBS="-L$GMS_MPI_PATH/lib" set MPILIBS="$MPILIBS -lmpi" breaksw case mpt: set MPILIBS="-L$GMS_MPI_PATH/lib" set MPILIBS="$MPILIBS -lmpi" breaksw default: echo "comp script has unknown MPI software requested" exit 4 breaksw endsw endif endif # # plain old TCP/IP will have initialized MPILIBS as empty string set MSG_LIBRARIES="../ddi/libddi.a $MPILIBS -lpthread" # # Sun-like needs some extra TCP/IP library searches if (($TARGET == sun64) || \ ($TARGET == fuji-pp32) || ($TARGET == fuji-pp64)) then set MSG_LIBRARIES="$MSG_LIBRARIES -lsocket -lnsl -lrt" endif if ($TARGET == sun32) then if ($GMS_SUN_OS_VERNO < 7) then set MSG_LIBRARIES="$MSG_LIBRARIES -lsocket -lnsl -lposix4" else set MSG_LIBRARIES="$MSG_LIBRARIES -lsocket -lnsl -lrt" endif endif breaksw # # SHMEM interface, which is only partly functional at best. case cray-t3e: case cray-x1: set MSG_LIBRARIES='../ddi/libddi.a' breaksw case sgi64: set MSG_LIBRARIES='../ddi/libddi.a -lsma -lmpi' breaksw # # MPI interface, for entire XT product line case cray-xt: set MSG_LIBRARIES='../ddi/libddi.a' breaksw # # LAPI/MPI interface, for the SP product line case ibm64-sp: set MSG_LIBRARIES='../ddi/libddi.a -llapi_r -lpthread' breaksw # # BG/L and BG/P case ibm-bg: set MSG_LIBRARIES="../ddi/libddi.a" # Blue Gene/L uses both ARMCI and MPI, in that order if ($GMS_BG_MODEL == L) then set MSG_LIBRARIES=$GMS_ARMCI_PATH set MSG_LIBRARIES="$MSG_LIBRARIES -larmci" # this is the MPI library underneath ARMCI: set MSG_LIBRARIES="$MSG_LIBRARIES -L/bgl/BlueLight/ppcfloor/bglsys/lib" set MSG_LIBRARIES="$MSG_LIBRARIES -lmpich.rts -lmsglayer.rts" set MSG_LIBRARIES="$MSG_LIBRARIES -lrts.rts -ldevices.rts" endif # Blue Gene/P uses only MPI-1. # the verb 'mpixlf77_r" means compiler knows its MPI libs breaksw # unknown... case necsx: set MSG_LIBRARIES='undefined' echo Please fix lked for this machine $TARGET exit 5 breaksw # to get here must be a target typo. default: echo The lked script does not select a correct TARGET machine type. echo What you typed when editing this script was $TARGET exit 4 breaksw endsw # # --- end of machine specific options --- # unset echo set STANDARD_GAMESS_OBJ1=(aldeci.o algnci.o \ basccn.o basecp.o basext.o basg3l.o bashuz.o bashz2.o \ basn21.o basn31.o baspcn.o bassto.o \ ccaux.o ccddi.o ccqaux.o ccquad.o ccsdt.o \ ceeis.o chgpen.o cisgrd.o cosmo.o \ cphf.o cpmchf.o cprohf.o \ dccc.o dcgues.o dcint2.o dclib.o dcmp2.o dcscf.o dctran.o \ ddilib.o delocl.o demrpt.o \ dft.o dftaux.o dftdis.o dftfun.o dftgrd.o dftint.o \ dftxca.o dftxcb.o dftxcc.o dftxcd.o dftxce.o dftxcf.o dftxcg.o \ dgeev.o dgesvd.o dmulti.o drc.o \ eaipcc.o ecp.o ecpder.o ecplib.o ecppot.o \ efchtr.o efdrvr.o efelec.o efgrd2.o efgrda.o efgrdb.o efgrdc.o \ efinp.o efinta.o efintb.o efpaul.o efpcm.o efpcov.o efpfmo.o \ eftei.o \ eigen.o elglib.o elgloc.o elgscf.o eomcc.o ewald.o ffield.o \ fmo.o fmoesd.o fmogrd.o fmoint.o fmoio.o fmolib.o \ fmopbc.o fmoprp.o frfmt.o fsodci.o \ g3.o globop.o gmcpt.o gradex.o guess.o \ grd1.o grd2a.o grd2b.o grd2c.o \ gugdga.o gugdgb.o gugdm.o gugdm2.o gugdrt.o gugem.o gugsrt.o \ gvb.o hess.o hss1a.o hss1b.o hss2a.o hss2b.o \ inputa.o inputb.o inputc.o \ int1.o int2a.o int2b.o int2c.o int2d.o int2f.o int2g.o \ int2r.o int2s.o int2t.o int2u.o int2v.o int2w.o int2x.o \ iolib.o ivocas.o lagran.o local.o loccd.o locpol.o) set STANDARD_GAMESS_OBJ2=(mcpgrd.o mcpinp.o mcpint.o \ mcpl10.o mcpl20.o mcpl30.o mcpl40.o \ mcpl50.o mcpl60.o mcpl70.o mcpl80.o \ mccas.o mcjac.o mcqdpt.o mcqdwt.o mcqud.o mcscf.o mctwo.o \ mdefp.o mexing.o mm23.o morokm.o \ mp2.o mp2ddi.o mp2grd.o mp2gr2.o mp2ims.o \ mpcdat.o mpcgrd.o mpcint.o mpcmol.o mpcmsc.o \ mthlib.o nameio.o nmr.o \ ordint.o ormas1.o parley.o pcm.o pcmcav.o pcmcv2.o pcmder.o \ pcmdis.o pcmief.o pcmpol.o pcmvch.o \ prpamm.o prpel.o prplib.o prppop.o \ qeigen.o qfmm.o qmfm.o qrel.o \ raman.o rhfuhf.o rohfcc.o rxncrd.o ryspol.o \ scflib.o scfmi.o scrf.o sobrt.o soffac.o solib.o sozeff.o \ statpt.o surf.o svpchg.o svpinp.o svpleb.o symorb.o symslc.o \ tddft.o tddefp.o tddfun.o tddfxc.o tddgrd.o tddint.o tddxca.o \ tddxcc.o tdhf.o tdx.o tdxio.o tdxitr.o tdxni.o tdxprp.o \ trans.o trfdm2.o trnstn.o trudge.o umpddi.o utddft.o \ vibanl.o vscf.o vvos.o zapddi.o zheev.o zmatrx.o) # # unfortunately, the link command has become too long to show it # explicitly (full command line exceeds 2048 bytes). Show it # piecemeal, taking great care that the order matches the LDR command. # echo " " echo The name of the linker on this machine is $LDR, echo and the linker options are \"$LDOPTS\". echo " " echo Object code list begins with gamess.o unport.o, followed by echo BLAS code=\"$BLAS\", VECTOR code=\"$VECTOR\", quiche=\"$QUICHE\", echo followed by the standard GAMESS object code list, echo " " echo $STANDARD_GAMESS_OBJ1 echo $STANDARD_GAMESS_OBJ2 # echo " " echo Choices for some optional plug-ins are if ($TINKER == true) then echo " Tinker/SIMOMM files are $QMMMOBJ" else echo " Using $QMMMOBJ, Tinker/SIMOMM code is not linked." endif if (($VB2000 == true) || ($XMVB == true)) then echo " valence bond files are $VBOBJ" else echo " Using $VBOBJ, neither VB program is linked." endif if ($NEO == true) then echo " Nuclear Electron Orbital code files are $NEOOBJ" else echo " Using $NEOOBJ, Nuclear Electron Orbital code is not linked." endif # echo " " echo Message passing libraries are $MSG_LIBRARIES echo Other libraries to be searched are $LIBRARIES echo " " echo "Linker messages (if any) follow..." # # --- link GAMESS, using objects/library information as collected above --- # insert a "set echo" line to see the full link command in the log file. # chdir object $LDR -o ../$EXE.$VERNO.x $LDOPTS \ gamess.o unport.o $BLAS $VECTOR $QUICHE \ $STANDARD_GAMESS_OBJ1 \ $STANDARD_GAMESS_OBJ2 \ $QMMMOBJ $VBOBJ $NEOOBJ \ $MSG_LIBRARIES $LIBRARIES # # give the installer a simple thumbs up or down on success # unset echo chdir .. if (-x $EXE.$VERNO.x) then echo " " echo The linking of GAMESS to binary $EXE.$VERNO.x was successful. else echo " " echo Unfortunately, there was an error while linking GAMESS. endif time exit