-
Notifications
You must be signed in to change notification settings - Fork 23
Compilation (config)
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