--- MITgcm/eesupp/inc/CPP_EEOPTIONS.h 2001/09/21 03:54:35 1.18 +++ MITgcm/eesupp/inc/CPP_EEOPTIONS.h 2013/09/28 19:09:38 1.36 @@ -1,13 +1,6 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/eesupp/inc/CPP_EEOPTIONS.h,v 1.18 2001/09/21 03:54:35 cnh Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/eesupp/inc/CPP_EEOPTIONS.h,v 1.36 2013/09/28 19:09:38 dimitri Exp $ C $Name: $ - These lines are here to deliberately cause a compile-time error. - If you see these lines in your .F files or the compiler shows them - as an error then it means you have not placed your configuration - files in the appropriate place. - You need to place you own copy of CPP_EEOPTIONS.h in the include - path for the model. - CBOP C !ROUTINE: CPP_EEOPTIONS.h C !INTERFACE: @@ -15,7 +8,7 @@ C C !DESCRIPTION: C *==========================================================* -C | CPP_EEOPTIONS.h | +C | CPP\_EEOPTIONS.h | C *==========================================================* C | C preprocessor "execution environment" supporting | C | flags. Use this file to set flags controlling the | @@ -53,16 +46,61 @@ C ALWAYS - indicates the choice will be fixed at compile time C so no run-time option will be present -C Flag used to indicate whether Fortran formatted write +C=== Macro related options === +C-- Control storage of floating point operands +C On many systems it improves performance only to use +C 8-byte precision for time stepped variables. +C Constant in time terms ( geometric factors etc.. ) +C can use 4-byte precision, reducing memory utilisation and +C boosting performance because of a smaller working set size. +C However, on vector CRAY systems this degrades performance. +C Enable to switch REAL4_IS_SLOW from genmake2 (with LET_RS_BE_REAL4): +#ifdef LET_RS_BE_REAL4 +#undef REAL4_IS_SLOW +#else /* LET_RS_BE_REAL4 */ +#define REAL4_IS_SLOW +#endif /* LET_RS_BE_REAL4 */ + +C-- Control use of "double" precision constants. +C Use D0 where it means REAL*8 but not where it means REAL*16 +#define D0 d0 + +C-- Enable some old macro conventions for backward compatibility +#undef USE_OLD_MACROS_R4R8toRSRL + +C=== IO related options === +C-- Flag used to indicate whether Fortran formatted write C and read are threadsafe. On SGI the routines can be thread C safe, on Sun it is not possible - if you are unsure then C undef this option. -#undef FMTFTN_IO_THREADSAFE +#undef FMTFTN_IO_THREAD_SAFE + +C-- Flag used to indicate whether Binary write to Local file (i.e., +C a different file for each tile) and read are thread-safe. +#undef LOCBIN_IO_THREAD_SAFE + +C-- Flag to turn off the writing of error message to ioUnit zero +#undef DISABLE_WRITE_TO_UNIT_ZERO + +C-- Alternative formulation of BYTESWAP, faster than +C compiler flag -byteswapio on the Altix. +#undef FAST_BYTESWAP + +C-- Flag defined for eeset_parms.F and open_copy_data_file.F +C to write scratch files from process 0 only +#undef SINGLE_DISK_IO + +C=== MPI, EXCH and GLOBAL_SUM related options === +C-- Flag turns off MPI_SEND ready_to_receive polling in the +C gather_* subroutines to speed up integrations. +#undef DISABLE_MPI_READY_TO_RECEIVE C-- Control MPI based parallel processing -#undef ALLOW_USE_MPI -#undef ALWAYS_USE_MPI - +CXXX We no longer select the use of MPI via this file (CPP_EEOPTIONS.h) +CXXX To use MPI, use an appropriate genmake2 options file or use +CXXX genmake2 -mpi . +CXXX #undef ALLOW_USE_MPI + C-- Control use of communication that might overlap computation. C Under MPI selects/deselects "non-blocking" sends and receives. #define ALLOW_ASYNC_COMMUNICATION @@ -76,25 +114,12 @@ C-- Control use of JAM routines for Artic network C These invoke optimized versions of "exchange" and "sum" that C utilize the programmable aspect of Artic cards. -#undef LETS_MAKE_JAM -#undef JAM_WITH_TWO_PROCS_PER_NODE - -C-- Control storage of floating point operands -C On many systems it improves performance only to use -C 8-byte precision for time stepped variables. -C Constant in time terms ( geometric factors etc.. ) -C can use 4-byte precision, reducing memory utilisation and -C boosting performance because of a smaller working -C set size. However, on vector CRAY systems this degrades -C performance. -#define REAL4_IS_SLOW - -C-- Control use of "double" precision constants. -C Use D0 where it means REAL*8 but not where it means REAL*16 -#define D0 d0 +CXXX No longer supported ; started to remove JAM routines. +CXXX #undef LETS_MAKE_JAM +CXXX #undef JAM_WITH_TWO_PROCS_PER_NODE C-- Control XY periodicity in processor to grid mappings -C Note: Model code does not need to know whether a domain is +C Note: Model code does not need to know whether a domain is C periodic because it has overlap regions for every box. C Model assume that these values have been C filled in some way. @@ -103,6 +128,29 @@ #define CAN_PREVENT_X_PERIODICITY #define CAN_PREVENT_Y_PERIODICITY +C-- disconnect tiles (no exchange between tiles, just fill-in edges +C assuming locally periodic subdomain) +#undef DISCONNECTED_TILES + +C-- Alternative way of doing global sum without MPI allreduce call +C but instead, explicit MPI send & recv calls. +#undef GLOBAL_SUM_SEND_RECV + +C-- Alternative way of doing global sum on a single CPU +C to eliminate tiling-dependent roundoff errors. +C Note: This is slow. +#undef CG2D_SINGLECPU_SUM + +C=== Other options (to add/remove pieces of code) === +C-- Flag to turn on checking for errors from all threads and procs +C (calling S/R STOP_IF_ERROR) before stopping. +#define USE_ERROR_STOP + +C-- Control use of communication with other component: +C allow to import and export from/to Coupler interface. +#undef COMPONENT_MODULE + #endif /* _CPP_EEOPTIONS_H_ */ #include "CPP_EEMACROS.h" +