/[MITgcm]/MITgcm/tools/build_options/linux_amd64_gfortran
ViewVC logotype

Diff of /MITgcm/tools/build_options/linux_amd64_gfortran

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.9 by yunx, Mon Apr 5 20:55:28 2010 UTC revision 1.20 by jmc, Mon Jul 22 18:40:45 2013 UTC
# Line 3  Line 3 
3  #  $Header$  #  $Header$
4  #  $Name$  #  $Name$
5    
6    # Build options for gfortran compiler (GNU) on Linux AMD64 platform
7    #
8  #  Tested with gcc-gfortran v4.1.x as shipped with Fedora Core 6,7,8  #  Tested with gcc-gfortran v4.1.x as shipped with Fedora Core 6,7,8
9  #         with gcc-gfortran v4.3.x as shipped with Fedora Core 9,10  #         with gcc-gfortran v4.3.x as shipped with Fedora Core 9,10
10  #  It fixes the ' \' versus ' &' terminator ;  #
 #  with older versions (v4.0): namelist problems with syntax such as:  
 #     fields(1,1) = 'UVELSLT ','VVELSLT ','WVELSLT ',  
 #      which results in run-time errors.)  
   
11  # OpenMP : Tested on dickens with gcc-gfortran v4.3.2 as shipped with FC 10  # OpenMP : Tested on dickens with gcc-gfortran v4.3.2 as shipped with FC 10
12    #              on baudelaire with gcc-gfortran v4.4.5 as shipped with FC 13
13    #              on danton     with gcc-gfortran v4.5.1 as shipped with FC 14
14    #              on acesgrid   with gcc-gfortran v4.6.0 as shipped with FC 15
15    #
16    # MPI : Tested on acesgrid (Fedora Core 15), using:
17    #       module load gcc     (Version 4.6.0)
18    #   and with mpich1:
19    #       module load mvapich
20    #   or  with mpich2:
21    #       module load mvapich2
22    #   or  with openmpi:
23    #       module load openmpi
24    # and on baudelaire.csail.mit.edu (FC13), using:
25    #       export MPI_GCC_DIR=/srv/software/gcc/gcc-packages/gcc-4.4.5/mpich2/mpich2-1.3
26    #       export MPI_INC_DIR=$MPI_GCC_DIR/include
27    #       export PATH=$MPI_GCC_DIR/bin:$PATH
28    #
29    # and on IRIDIS at Southampton
30    # http://www.southampton.ac.uk/isolutions/computing/hpc/iridis/
31    #    with
32    #       module load openmpi/1.4.3/gcc-4.3.3
33    #    and
34    #       export MPI_INC_DIR=$MPIROOT/include
35    
36  #-------  #-------
37  # run with OpenMP: needs to set environment var. OMP_NUM_THREADS  # run with OpenMP: needs to set environment var. OMP_NUM_THREADS
38  #    and generally, needs to increase the thread stack-size:  #    and generally, needs to increase the thread stack-size:
39  #   -  sh,bash:  #   -  sh,bash:
40  #     > export OMP_NUM_THREADS=2  #     > export OMP_NUM_THREADS=2
# Line 23  Line 44 
44  #     > setenv GOMP_STACKSIZE 400m  #     > setenv GOMP_STACKSIZE 400m
45  #-------  #-------
46    
47  FC=gfortran  if test "x$MPI" = xtrue ; then
48  F90C=gfortran    CC=${CC:=mpicc}
49  CC=gcc    FC=${FC:=mpif77}
50      F90C=${F90C:=mpif90}
51    else
52      CC=gcc
53      FC=gfortran
54      F90C=gfortran
55    fi
56    
57  DEFINES='-DWORDLENGTH=4 -DNML_TERMINATOR'  DEFINES='-DWORDLENGTH=4 -DNML_TERMINATOR'
58  CPP='cpp  -traditional -P'  CPP='cpp -traditional -P'
 NOOPTFLAGS='-O0'  
59  EXTENDED_SRC_FLAG='-ffixed-line-length-132'  EXTENDED_SRC_FLAG='-ffixed-line-length-132'
60    F90FIXEDFORMAT='-ffixed-form'
61    GET_FC_VERSION="--version"
62  OMPFLAG='-fopenmp'  OMPFLAG='-fopenmp'
63    
64  if test "x$DEVEL" != x ; then  NOOPTFLAGS='-O0'
65      FFLAGS='-g -Wall -W -ffpe-trap=invalid,zero,overflow -fbounds-check'  NOOPTFILES=''
 else  
     FFLAGS=''  
 fi  
66    
67  # Requires gfortran from 2006 onwards for -fconvert=big-endian  # Requires gfortran from 2006 onwards for -fconvert=big-endian
68  FFLAGS="$FFLAGS -fconvert=big-endian -fimplicit-none"  FFLAGS="$FFLAGS -fconvert=big-endian -fimplicit-none"
69    # for big objects:
70    FFLAGS="$FFLAGS -fPIC"
71    #- might want to use '-fdefault-real-8' for fizhi pkg:
72    #FFLAGS="$FFLAGS -fdefault-real-8 -fdefault-double-8"
73    
74  if test "x$IEEE" = x ; then  if test "x$IEEE" = x ; then     #- with optimisation:
75      #  No need for IEEE-754     #- full optimisation
76      FOPTIM='-O3 -funroll-loops'      FOPTIM='-O3 -funroll-loops'
77        NOOPTFILES="$NOOPTFILES ini_masks_etc.F"
78       #- can use -O2 (safe optimisation) to avoid Pb with some gcc version of -O3:
79       #FOPTIM='-O2 -funroll-loops'
80  else  else
81      #  Try to follow IEEE-754     # these may also be useful, but require specific gfortran versions:
82      # these may also be useful, but require specific gfortran versions:     # -Wnonstd-intrinsics  for gfortran <= 4.3
83      # -Wnonstd-intrinsics  for gfortran <= 4.3     # -Wintrinsics-std     for gfortran >= 4.4
84      # -Wintrinsics-std     for gfortran >= 4.4     # -Wno-tabs            for gfortran >= 4.3
     # -Wno-tabs            for gfortran >= 4.3  
85      FFLAGS="$FFLAGS -Waliasing -Wampersand -Wsurprising -Wline-truncation"      FFLAGS="$FFLAGS -Waliasing -Wampersand -Wsurprising -Wline-truncation"
86  #   to get plenty of warnings :     #- to get plenty of warnings: -Wall -Wextra (older form: -Wall -W) or:
87  #   FFLAGS="$FFLAGS -Wconversion -Wimplicit-interface -Wunused-labels"     #FFLAGS="$FFLAGS -Wconversion -Wimplicit-interface -Wunused-labels"
88      if test "x$DEVEL" = x ; then  #- no optimisation + IEEE :
89      FOPTIM='-O0'      FOPTIM='-O0'
90  #   for automatic testing with testreport (but no relation with IEEE arithmetic):    else                          #- development/check options:
91      FOPTIM="$FOPTIM -g -ffpe-trap=invalid,zero,overflow -fbounds-check"      FOPTIM='-O0 -g -fbounds-check'
92        FOPTIM="$FOPTIM -ffpe-trap=invalid,zero,overflow -finit-real=inf"
93      fi
94  fi  fi
95    
96  F90FLAGS=$FFLAGS  F90FLAGS=$FFLAGS
97  F90OPTIM=$FOPTIM  F90OPTIM=$FOPTIM
98  CFLAGS=$FOPTIM  CFLAGS='-O0 -fPIC'
99    
100    INCLUDEDIRS=''
101    INCLUDES=''
102    LIBS=''
103    
104  if [ "x$NETCDF_ROOT" != x ] ; then  if [ "x$NETCDF_ROOT" != x ] ; then
105      INCLUDEDIR="${NETCDF_ROOT}/include"      INCLUDEDIR="${NETCDF_ROOT}/include"
# Line 94  elif test -d /usr/local/netcdf ; then Line 134  elif test -d /usr/local/netcdf ; then
134  elif test -d /usr/local/include/netcdf.inc ; then  elif test -d /usr/local/include/netcdf.inc ; then
135      INCLUDES='-I/usr/local/include'      INCLUDES='-I/usr/local/include'
136      LIBS='-L/usr/local/lib64'      LIBS='-L/usr/local/lib64'
137    elif test -d /usr/include/netcdf.inc ; then
138        INCLUDES='-I/usr/include'
139        LIBS='-L/usr/lib64'
140    fi
141    
142    if [ -n "$MPI_INC_DIR" -a "x$MPI" = xtrue ] ; then
143        INCLUDES="$INCLUDES -I$MPI_INC_DIR"
144        INCLUDEDIRS="$INCLUDEDIRS $MPI_INC_DIR"
145        #- used for parallel (MPI) DIVA
146        MPIINCLUDEDIR="$MPI_INC_DIR"
147       #MPI_HEADER_FILES='mpif.h mpiof.h'
148  fi  fi

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.20

  ViewVC Help
Powered by ViewVC 1.1.22