#!/bin/bash # # $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/build_options/linux_amd64_ifort_beagle,v 1.6 2011/09/09 16:23:23 jmc Exp $ # $Name: $ # # These are the build options used with the Intel 10.x compiler for # testing on Beagle (with and without MPI). # # Use after # # module add mitgcm # # (tested with darwin/20090605 mitgcm/20090605, i.e., # intel/10.0.025 mx/1.0 netcdf/3.6.2/intel-10.0.025 mpich-mx/1.2.7..7/intel-10.0.025) # # These modules set FFLAGS, CFLAGS and CPPFLAGS for mpich and netcdf. # # The SGE -V option for exporting environment variables may also be # helpful if you encounter missing-library problems. Or, # alternatively, one may choose to link with one of the intel # "-static" or "-i-static" flags. if test "x$MPI" = xtrue ; then CC='mpicc' FC='mpif77' F90C='mpif90' LINK='mpif77' for path in $(echo "$CPATH" | sed 's/:/ /g'); do CPPFLAGS="$CPPFLAGS -I$path" done else CC='icc' FC='ifort' F90C=$FC LINK=$FC fi # the netcdf module sets CPPFLAGS, LDFLAGS and FFLAGS INCLUDES="$CPPFLAGS" # for static linkage: #LIBS="$LDFLAGS -static" # for dynamic linkage (note: needed with netcdf <- namespace conflict???) LIBS="$LDFLAGS -shared-intel" # -DIFORT turns on ifort-specific declarations in darwin (RAND is not an intrinsic) DEFINES='-DWORDLENGTH=4 -DIFORT' CPP='cpp -traditional -P' F90FIXEDFORMAT='-fixed -Tf' EXTENDED_SRC_FLAG='-132' GET_FC_VERSION="--version" OMPFLAG='-openmp' NOOPTFILES='mds_byteswapr8.F mds_byteswapr4.F mds_byteswapi4.F mds_byteswap.F' NOOPTFILES=$NOOPTFILES' mom_calc_ke.F mon_ke.F' # ifort options: # -132 fixed-form line length is 132 characters # -r8 REAL is REAL*8 # -i4 INTEGER is INTEGER*4 # -w95 don't warn about use of Fortran 95 extensions # -W0 disable all warning messages # -WB turns a compile-time bounds check error into a warning # -xT optimize for Intel Core2 and Xeon 51xx # -fno-alias don't assume aliasing (assume that different variables # DON'T refer to the same memory location) # -assume byterecl record length in OPEN statements is in bytes # -convert big_endian binary files contain big-endian data # -CB check bounds # -pc64 round floating point values to 64 bits # one could also try # -mp maintain precision FFLAGS="$FFLAGS -w95 -W0 -WB -xT -fno-alias -assume byterecl -convert big_endian" #- might want to use '-r8' for fizhi pkg: #FFLAGS="$FFLAGS -r8" if test "x$IEEE" = x ; then #- with optimisation: NOOPTFLAGS='-O2' # use this for exact restart (slightly slower): FOPTIM='-O2 -pc64 -mieee-fp -align' # use this for flighty faster execution but with roundoff errors in restart: # FOPTIM='-O2 -align' else #- no optimisation + IEEE : NOOPTFLAGS='-O0' # FOPTIM='-O0 -noalign -CA -CB -CU -CV -CS' FOPTIM='-O0 -noalign' FFLAGS="$FFLAGS -pc64" fi F90FLAGS=$FFLAGS F90OPTIM=$FOPTIM