[Dart-dev] DART/branches Revision: 11718

dart at ucar.edu dart at ucar.edu
Tue Jun 13 15:21:09 MDT 2017


sergey.frolov at nrlmry.navy.mil
2017-06-13 15:21:09 -0600 (Tue, 13 Jun 2017)
25
added intel.cray template


Modified: DART/branches/coamps/build_templates/mkmf.template
===================================================================
--- DART/branches/coamps/build_templates/mkmf.template	2017-06-13 21:18:53 UTC (rev 11717)
+++ DART/branches/coamps/build_templates/mkmf.template	2017-06-13 21:21:09 UTC (rev 11718)
@@ -1,7 +1,7 @@
-# Template for GNU gfortran on Linux or Mac OSX
+# Template for Intel Fortran Compiler on Linux clusters and workstations.
 #
-# DART software - Copyright UCAR. This open source software is provided
-# by UCAR, "as is", without charge, subject to all terms of use at
+# DART software - Copyright 2004 - 2013 UCAR. This open source software is
+# provided by UCAR, "as is", without charge, subject to all terms of use at
 # http://www.image.ucar.edu/DAReS/DART/DART_download
 #
 # DART $Id$
@@ -9,57 +9,107 @@
 # typical use with mkmf
 # mkmf -t mkmf.template.xxxx ...
 #
-# Suggested (perhaps required) flags:
-# -ffree-line-length-none   handles "long" lines - i.e. longer than 72 chars
+# FFLAGS   useful for DEBUGGING. NOTE: The intel compiler can provide a lot more
+#          information if you LEAVE the object and module files intact.
+#          Do not remove the *.o and *.mod files when debugging code.
 #
-# Suggested debugging flags:
-#  -g                  add debugging information to executable
-#  -Wuninitialized     catch uninitialized variables
-#  -Wunused            issue warning for unused variables - keeps code clean
-#  -fbacktrace         runtime errors try to print out a stack backtrace
-#  -fbounds-check      add runtime-checking for out-of-range array indices
-#  -ffpe-trap=invalid,zero,overflow
-#                      stop on floating point errors
+#     -g       include debugging information.  these are all synonyms.
+#     -debug full
+#     -debug all
+#     -O0      setting -g will make this the default (no optimization).
+#              it is possible to set -g and then explicitly set -O2 if
+#              the behavior being debugged depends on optimization changes.
+#     -ftrapuv   traps if a local variable is used before being set
+#     -C       enables all runtime checks.  -C and -check all are synonyms.
+#     -check all
+#     -check <keywords>    enables/disables more specific runtime checks.
+#           keywords:  [arg_temp_created,bounds,overflow,format,pointers,uninit]
+#     -warn <keywords>  the level of warning messages issued.
+#           keywords:  [alignments, argument_checking, declarations,
+#                      errors, fileopt, general, ignore_loc,
+#                      stderrors, truncated_source, uncalled,
+#                      uninitialized, unused, usage, all]
+#     -fp-stack-check  catches conditions where the FP stack is not correct.
+#           Typically this is when a real function is called as if it were a
+#           subroutine, OR a subroutine is called as if it were a function (return
+#           values left of FP stack OR too much data is taken off the FP stack)
+#     -vec-reportN  controls how much diagnostic output is printed about
+#                   loops vectorized by the compiler. N = 0 is silent,
+#                   N can have values up to 5.
+#     -traceback    tells the compiler to generate extra information in the
+#                   object file to provide source file traceback information
+#                   when a severe error occurs at run time
 #
-#  earlier versions of this mkmf file listed 'precision' as one of the options on
-#  the fpe-trap line.  this is not recommended anymore as some of the gfortran internal
-#  routines will trap, as well as some perfectly valid DART computations.
+# FFLAGS   useful for bitwise reproducibility and accuracy control
+#          (these will slow down performance to various degrees)
+#     -fp-model precise    control how floating point roundoff is done so it is
+#                          reproducible from run to run.  in simple tests this
+#                          flag alone was enough to create bitwise reproducible
+#                          code but slowed execution significantly.
+#     -ftz        'flush to zero' underflows result in zero.  set by default if
+#                 any -O other than -O0 set, or if -fpe0 or -fpe1 set.
+#     -fpeN       controls floating point exception handling.  -fpe0 rounds underflow
+#                 to zero and traps on any other exception type.
+#     -pc80       set internal FPU precision to 64 bit significand
+#                 (default is -pc64 with 53 internal bits)
 #
-# Generally not needed but possibly useful for non-DART code:
+# FFLAGS   useful for production
+#     -O2        default.  optimize without too much unrepeatable numerical games
+#     -O3        more aggressive optimizations.  check numerical differences
+#                before using this indiscriminately.
+#     -O1        if you get compile-time errors about out of memory or unable to
+#                complete compilation because of complexity, try lowering the
+#                optimization level on the offending source files.
+#     -ipo       enable optimizations between routines in separate source files
+#     -heap-arrays 10    allocate large arrays from the heap instead of putting them
+#                on the stack.  the number is the limit in KB for when arrays
+#                move from the stack to the heap.  this can help if you get stack
+#                overflow errors and cannot increase the stack size more.
+#                allocating from the stack is faster, but it's usually a smaller
+#                size than the heap.
+#     -x, -m, -ax, -mcode, -march   all these flags tell the compiler to generate
+#                processor-specific or vector instructions.  either 'man ifort' or
+#                ifort --help to see what the current list of options are and
+#                which have priority over the others.
+#                (for those running on yellowstone, -axavx will enable the advanced
+#                vector instructions available on the sandy bridge processors.)
+#     -assume buffered_io  allows the runtime library to buffer up individual
+#                writes before calling the operating system.  in particular, we
+#                write our observation sequence files as a series of many individual
+#                calls to the write() routine.  when debugging you do not want to


More information about the Dart-dev mailing list