Skip to content

Compilation (config)

Alexandra Bozec edited this page Apr 30, 2019 · 1 revision

All Makefiles source config/$(ARCH)_$(TYPE), where ARCH defines exactly what machine architecture to target and TYPE is the parallelization strategy (one, omp, mpi, ompi, mpisr, shmem).

The specified config/$(ARCH)_$(TYPE) file must already exist. So far the following are available:

 hpe-intel-relo_mpi              - HPE SGI, MPI (mpt), Intel Compiler
 hpe-intel-relo_ompi             - HPE SGI, MPI+OpenMP (mpt), Intel Compiler
 hpe-intel-relo_one              - HPE SGI,  single processor, Intel Compiler
 intelGF-impi-sm-relo_mpi        - IBM iDATAPlex, GNU Fortran and Intel MPI
 intelsse-impi-sm-relo_mpi       - IBM iDATAPlex, Intel Fortran and Intel MPI
 intelsse-impi-sm-relo_omp       - IBM iDATAPlex, Intel Fortran, OpenMP
 intelsse-impi-sm-relo_one       - IBM iDATAPlex, Intel Fortran, single processor
 intelsse-pe-sm-relo_mpi         - IBM iDATAPlex, Intel Fortran and IBM MPI
 xc40-gnu-relo_mpi               - Cray XC40, MPI, GNU Fortran
 xc40-gnu-relo_omp               - Cray XC40, OpenMP, GNU Fortran
 xc40-gnu-relo_one               - Cray XC40, single processor, GNU Fortran
 xc40-intel-relo_cesmb           - Cray XC40, CESMBETA, Intel Compiler
 xc40-intel-relo_cice            - Cray XC40, HYCOM+CICE using ESMF4, Intel Compiler
 xc40-intel-relo_mpi             - Cray XC40, MPI, Intel Compiler
 xc40-intel-relo_ompi            - Cray XC40, MPI+OpenMP, Intel Compiler
 xc40-intel-relo_one             - Cray XC40, single processor, Intel Compiler
 xc40-pgi-relo_mpi               - Cray XC40, MPI, Portland Group Compiler

The following environment variables must be defined in each config file:

# FC: Fortran 90 compiler.
# FCFFLAGS: Fortran 90 compilation flags.
# CC: C compiler.
# CCFLAGS: C compilation flags.
# CPP: cpp preprocessor (may be implied by FC).
# CPPFLAGS: cpp -D macro flags (see the Macros insert below).
# LD: Loader.
# LDFLAGS: Loader flags.
# EXTRALIBS: Extra local libraries (if any).

In addition, make suffix rules are required for .c.o, and .F90.o (i.e. how to create .o files from .c, and .F90 files). In the simplest case these are:

#
# rules.
#

.c.o:
     $(CC) $(CPPFLAGS) $(CCFLAGS) -c $*.c

.F90.o:
     $(FC) $(CPPFLAGS) $(FCFFLAGS) -c $*.F90

Note that the rule command lines start with a tab character.


Macros that may be used in config/$(ARCH)_$(TYPE)

 AIX             IBM AIX
 ALPHA           Compaq Alpha (Linux or OSF)
 HPEI            HPE with Intel Fortran
 IA32            IA32 Linux (x86 or x86_64, Intel or AMD)
 SGI             SGI IRIX64
 SUN             SUN Solaris
 T3E             Cray T3E
 YMP             Cray YMP/C90/T90/SV1
 X1              Cray X1
 
 NAGFOR          NAG   Fortran compiler
 IFC             Intel Fortran compiler

 STOP2003        Replace STOP with exit(0)
 NAN2003         Use ieee_arithmetic intrinsic module, and intitalize arrays to NaN
 
 RELO            Allocate most arrays at run-time
 
 SERIAL_IO       Serialize array I/O (MPI, SHMEM)
 ENDIAN_IO       Swap endian-ness as part of array I/O
 
 TIMER           Turn on the subroutine-level wall clock timer
 TIMER_ALLOUT    Print timers for all MPI tasks
 
 DEBUG_ALL       Sets all DEBUG_* (mod_xc) macros
 DEBUG_TIMER_ALL Printout every time the timer is called
 DEBUG_TIMER     Printout every time the timer is called for a user routine
 
 MPI             MPI message passing (see MPISR, NOMPIR8, SERIAL_IO, SSEND)
 SSEND           Use MPI_SSEND and MPI_ISSEND (vs MPI_SEND and MPI_ISEND)
 MPISR           Use MPI_SENDRECV (vs non-blocking pt2pt calls)
 NOMPIR8         This MPI does not implement mpi_real8
 REAL4           REAL is REAL*4 (never  used in practice)
 REAL8           REAL is REAL*8 (always used in practice)
 SHMEM           SHMEM put/get version (see RINGB, SERIAL_IO)
 RINGB           Use local syncronization for SHMEM

Macros that may be included in CPP_EXTRAS by the Make script:

 EOS_SIG2        ## Sigma-2
 EOS_SIG0        ## Sigma-0
 
 EOS_7T          ## EOS  7-term
 EOS_9T          ## EOS  9-term
 EOS_12T         ## EOS 12-term
 EOS_17T         ## EOS 17-term
 
 ARCTIC          ## global tripole region

 KAPPAF_CENTERED ## Thermobaricity correction centered
 
 STOKES          ## Stokes drift
 
 OCEANS2         ## master and slave HYCOM in same executable
Clone this wiki locally