[Dart-dev] DART/branches Revision: 11659
dart at ucar.edu
dart at ucar.edu
Wed May 24 09:39:34 MDT 2017
nancy at ucar.edu
2017-05-24 09:39:34 -0600 (Wed, 24 May 2017)
65
revert template back to default gfortran; committed by mistake.
Modified: DART/branches/rma_updates_nancy/build_templates/mkmf.template
===================================================================
--- DART/branches/rma_updates_nancy/build_templates/mkmf.template 2017-05-24 15:37:53 UTC (rev 11658)
+++ DART/branches/rma_updates_nancy/build_templates/mkmf.template 2017-05-24 15:39:34 UTC (rev 11659)
@@ -1,4 +1,4 @@
-# Template for Intel Fortran Compiler on Linux clusters and workstations.
+# Template for GNU gfortran on Linux or Mac OSX
#
# DART software - Copyright UCAR. This open source software is provided
# by UCAR, "as is", without charge, subject to all terms of use at
@@ -9,107 +9,57 @@
# typical use with mkmf
# mkmf -t mkmf.template.xxxx ...
#
-# 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 (perhaps required) flags:
+# -ffree-line-length-none handles "long" lines - i.e. longer than 72 chars
#
-# -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
+# 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
#
-# 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)
+# 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 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
-# buffer so you can see the last output before the program dies.
-# for production, however, you want to batch up writes into larger
-# blocks before stopping to do i/o to disk. an alternative at
-# runtime is to set FORT_BUFFERED to 'true' in your environment.
-# (e.g. csh family: setenv FORT_BUFFERED true or
-# ksh family: export FORT_BUFFERED=true).
More information about the Dart-dev
mailing list