These are flags that appear in the benchmark sources, categorized as to whether they are portability candidates, mandatory, or forbidden.
Selecting one of the following will take you directly to that section:
This macro defines the type of argument that the alloca() function takes. It defaults to 'int'.
Define the bcopy routine as memcpy. Use if the system does not have a bcopy.
This macro indicates that C functions called from Fortran should not have an underscore added to their names.
This macro indicates that C functions called from Fortran should not have thier names changed.
This flag should be used if C function names need to have two underscores appended in order for them to be callable by Fortran functions.
This macro indicates that the benchmark is being compiled on a Linux system.
This macro indicates that Fortran functions called from C should have their names lower-cased.
This macro defines "flush_" instead of the default "flush" routine.
This macro indicates that the benchmark is being compiled on an Irix system.
This macro indicates that the benchmark is being compiled on an Itanium Processor Family-based Linux system.
This macro indicates that the benchmark is being compiled on a PowerPC-based Linux system.
This macro indicates that the benchmark is being compiled on a SPARC-based Linux system.
This macro indicates that the benchmark is being compiled on a MacOS X system.
This macro indicates that the benchmark is being compiled on a MacOS X Big-Endian system.
Don't include the "ncconfig_aix.h" header file when "SPEC_AIX" is defined.
Don't include the "ncconfig_generic.h" header file which is used when no target architecture flag is set.
Don't include the "ncconfig_irix.h" header file when "SPEC_IRIX" is defined.
Don't include the "ncconfig_linux.h" header file when "SPEC_LINUX" or "SPEC_LINUX_PPC" is defined.
Don't include the "ncconfig_macosx.h" header file when "SPEC_MACOSX" is defined.
Don't include the "ncconfig_windows.h" header file when "SPEC_WINDOWS" is defined.
This macro indicates that the benchmark is being compiled on a PowerPC-based AIX system.
This macro indicates that the benchmark is being compiled on a SPARC-based Solaris system.
This macro indicates that the benchmark is being compiled on an x64- or x86-based Solaris system.
This macro indicates that the benchmark is being built on a Windows system using the Intel C++ compiler.
This macro indicates that alloca is not available as a macro or function.
This macro indicates that the alloca.h header file is not present and should not be included.
When set, this macro will inhibit inclusion of the Solaris-specific ncconfig header file.
If the _FILE_OFFSET_BITS macro is not set, this flag indicates that a default value of "64" should not be provided.
When set, this macro indicates that the ftruncate function is not available.
This flag may be used to keep the macro STDC_HEADERS from being defined by default.
This macro indicates that "struct stat" does not contain a member called st_blksize.
This macro indicates that the system building the benchmark is a little-endian system. Note that the current data sets for 621.wrf_s are stored in big-endian format. Please use your compiler's "convert" flag to convert the data on little-endian systems.
If set, this macro indicates that a symbol named "uchar" is already defined to be "unsigned char".
Use the non-standard "iargc" routine instead of the F2003 get_command_argument routine to the the command line arguments.
LOGICAL_STRICT is a NetCDF macro that should be defined for Fortran compilers that treat .eqv./.neqv. as .eq./.ne..
If set, this macro indicates that the io.h header file should be used instead of unistd.h.
If set, this macro indicates that the winsock2.h header file should be included to get the definition for ntohl().
If set, on macOS systems only this will cause "/usr/include/time.h" to be included instead of the more usual <time.h>. On all macOS 10.x systems, this should not be needed.
Define if building on a Microsoft SUA (linux-like) platform. Note that SUA has not been tested with 621.wrf_s.
Define if building on a Microsoft SUA (linux-like) platform.
NCAR AIX does not have lrint. Enable this to define one.
Include the Platform specific "features" header file for a Cray XT3 Catamount system.
This allows alloca to be set to the compiler's preferred alloca by SPEC rules.
This flag is included automatically by Spec/object.pm.
This flag sets the default sizes (in byte) for various data types. It is defined in object.pm and cannot be changed.
This macro defines the size of the unused configuration buffer in words. It is set in object.pm and cannot be changed.
This macro sets the maximum number of domains (number of grids the model will be running). It is set in object.pm and cannot be changed.
These macros determine whether or not the named model core is built. The default values set in object.pm may not be changed.
This flag specifies that the ext_internal I/O module should be used. The default value set in object.pm may not be changed.
Sets the maximum history to store in the results file. The default value set in object.pm may not be changed.
The flag specifies the use of NetCDF for I/O. The default value set in object.pm may not be changed.
Number of NMM nesting levels. The default value set in object.pm may not be changed.
Does not output the namelist input if set. The default value set in object.pm may not be changed.
This macro enables stubbing out of MPI functionality in WRF.
Maximum dimension of NMM. The default value set in object.pm may not be changed.
This macro indicates that WRF should be built for parallel operation.
Using any of the flags below for a publishable run is not permitted.
Note that many of the flags classified as "forbidden" are classified as such only because they were not needed when doing the initial porting work for CPU2017, and because the impact of their use was not evaluated.
Use the AD Spinup algrorithm.
This flag causes NetCDF to attempt to set NC_SHARE on files it opens. It is used for debugging, and changing its value from the default is forbidden.
This flag is used by cfortran.h to determine whether it can use preprocessor features defined by the ANSI C standard. Changing its default value is forbidden.
This flag (if necessary) is defined by the compilation system. Changing its default value is forbidden.
This flag causes WRF to not exit immediately after writing its inital restart file. Changing its default value is forbidden.
This macro indicates that alloca is available as a macro or function. It is set by default; if you need for it to be un-set, use -DSPEC_NO_HAVE_ALLOCA.
This macro indicates that the alloca.h header file is available. It is set by default; if you need for it to be un-set, use -DSPEC_NO_HAVE_ALLOCA_H.
Enable the "get_bathymetry" routine.
Enable internal performance measurements.
Add isotope code.
Change the dimension order for a few temp arrays to get better caching.
Change the dimension order for a few temp arrays to get better caching.
Use the CADA Module. Not used in 621.wrf_s.
This macro indicates that "struct stat" has a member named "st_blksize". It is set by default; if you need for it to be un-set, use -DSPEC_NO_HAVE_ST_BLKSIZE.
This flag enables coordinate check debug output in NetCDF. It may not be used for a CPU2017 run.
This flag causes the variable cdf_routine_name to be set to the current function name in the NetCDF-2 bindings. This flag may not be used for CPU2017.
This flag causes cfortran.h to replace subroutines with function calls. It may not be used for 621.wrf_s.
Use C-LAMP. Not used by 621.wrf_s.
CLWRF-UC June.09. Not used by 621.wrf_s.
Use CN code. Not used by 621.wrf_s.
Use CN code. Not used by 621.wrf_s.
Use a sample main.c in symtab_gen.c.
This macro defines a method to refer to Fortran common blocks from C functions. Its default value may not be changed.
This macro causes variables to be copied out of the grid data structure at various places in the WRF source code. It is used internally by WRF and may not be set explicitly.
Use code that's more easily vectorized and include compiler specific directives.
This macro indicates that CRAY floating point (real*16) should be used. This may not be set for CPU2017.
Use the clm_varcon module's istcrop variable.
Add debugging code.
Add debugging code.
Print debugging output.
Internal debugging code.
This macro enables a potentially dangerous workaround to keep certain Fortran 90 compilers from performing a copy-in/copy-out conversion on the grid data structure in some cases. See this page for more information.
This flag may not be used for CPU2017.
Use the DGVM variables.
Disable debugging output from AUX History Output.
These macros are used to set the names of data structures used for assignment. They are used internally by WRF and may not be set explicitly.
These macros are used when building parts of the WRF library as a DLL. They are not used for CPU2017 and may not be set.
This macro contains the name of the C type which can hold a double precision Fortran number. Its default value may not be changed.
If defined, causes slow copy routines to be used in interp_fcn. This may not be set for CPU2017.
Add dust force calculations.
Enable ESMF coupling.
Set the extinction coefficient.
These macros should all be defined by the compilation system. Setting them explicitly is forbidden.
These macros define sizes and ranges of the variable types used to hold XDR data. They are not used for CPU2017 and may not be changed.
Initialize extra lake layer variables.
Add extra debugging information.
This macro holds the qualifier (if any) needed for C functions called from Fortran. The default value may not be changed.
This macro contains the name of the C type which can hold a Fortran REAL number. Its default value may not be changed.
Defined by system headers. If enabled, fseeko64 may be used.
Defined by system headers. If enabled, _FILE_OFFSET_BIT is set to 64 and fseeko may be used.
Define if the function fuel_left_cell_2 has been implemented. Not used in SPEC CPU version.
Used to disable MOVE_NESTS on fujitsu systems. Since MOVE_NESTS is not used, this option is ignored.
Enable a work around for a g95 bug. However, the routine where the bug occurs is not used in the SPEC CPU version.
Use GRIB1 formatted data files.
Use GRIB2 formatted data files.
If the time has changed, we open a new file. This is a kludge to get around slowness in WRF that occurs when opening a new data file the standard way.
If defined, use the getpagesize system routine.
Ignore. Implicitly set.
Use the hwrf radiation module.
Note that SPEC CPU stubs the MPI call so this workaround is not needed. These three subroutines re-implement MPI_Reduce on MPI_INTEGER with OP=MPI_ADD. This is a workaround for a bug in the IBM MPI implementation. Some MPI processes will get stuck in MPI_Reduce and not return until the PREVIOUS I/O server group finishes writing. This workaround replaces the MPI_Reduce call with many MPI_Send and MPI_Recv calls that perform the sum on the root of the communicator. There are two reduce routines: one for a sum of scalars and one for a sum of arrays. The get_reduce_tag generates MPI tags for the communication.
Use Intel's MKL library "VPOWX" routine in place of "VPOW".
Enable Intel specific alignment directives.
Enable more debugging information.
Add an extra static variable.
These flags enable some NetCDF debugging output. They may not be used for CPU2017.
This flag enables locking for NC.numrecs. It may not be used for CPU2017.
Set if using a MacOS. Use SPEC_MACOS instead.
Disable certain internal routines.
Creates a test program for testing function nc_inq_libvers(). This may not be used for CPU2017.
Set when modeling Mars.
This macro defines the maximum number of files a process can have open. Its default value may not be changed.
This macro defines the maximum number of arguments that the C preprocessor can accept for macro definitions. Its default value may not be changed.
Used to override the minimum tile size in module_tile. Default=1.
This macro is set unconditionally in the WRF source code and may not be set or unset explicitly.
Added for MAM7 compliance
Enable the nested move routines.
Add diagnositc messages to the moving routines.
Add for MPI2 specific options. Not used in SPEC CPU.
Enable MPI2 thread support when using both MPI2 and OpenMP.
These macros define constants used when reading the namelist. Their default values may not be changed.
This macro indicates that a value for NaN is available. Its default value may not be changed.
If not defined, use internally defined routines instead of the IBM libmassv routines.
Enable debug information.
Enable debug information.
This macro holds the size (in elements) that arrays in NetCDF should be grown at one time. Its default value may not be changed.
These macros contain the values of return codes used internally by NetCDF. Their default values may not be changed.
Use integers instead of characters for the MPI Buffer array.
NEC SX specific work-around in source.
Stubs for diffwrf routines called by module_wrf_error. (used by netcdf implementation of IO api)
These macros are used by NetCDF to determine which native C types fit which native Fortran types. Their default values may not be changed directly.
Implicitly set to get the NL_get_ROUTINES.
Implicitly set to get the NL_get_ROUTINES.
Debugging code to find MPI load imbalances.
This macro should be set if the system does not use IEEE floating point representation. It may not be set for CPU2017.
Set to enable each pft on vegetated landunit has its own column.
Set the fire area to 0.
Enables the use of the non-standard "system" function.
Enables the use of the non-standard "system" subroutine.
Set if there is no day length vcmax.
Use when the "setinitval_in" argument shouldn't be use to set the inital values in "alloc.inc".
When defined, i1_decl.inc "old" variables are not defined.
Define if the compiler does not support the IEEE Arithmatic module. Note that IEEE_SET_FLAG is required for 621.wrf_s andthe NO_IEEE_MODULE is always overridden in the SPEC version.
When defined, Feburary is set to 28 days, and not adjusted for leap years.
This flag turns off backward compatibility definitions in NetCDF. Its default value may not be changed.
This macro indicates that the strerror function is not available. Its default value may not be changed.
Use offline mode.
Use old data types for the REG_GEOM structure.
Use the system clock instead of system specific high resolution timers. Implicity defined in the SPEC version.
Enable code optimized for vectorization on a Xeon Phi processor.
Enable the output full geopotential height instead of the two fields of base-state geopotential and perturbation geopotential.
Enable the output full pressure instead of the two fields of base-state geopotential and perturbation geopotential.
Add padding when calling an rsl_malloc.
When writing to restart files, use the values of the instantaneous time for determining the values of JULYR, JULDAY, and GMT. If the original values in config_flags are used, this assumes that the restart simulation will start with an itimestep NE 0. If we use the instantaneous time, we can start a restart simulation with a different value of delta-t for timestep and still get the clocks calendars (and orbital information!) correct.
Define when using Parllel NetCDF.
If we've been built with PNETCDF_QUILT defined then we use parallel I/O within the group of I/O servers rather than gathering the data onto the root I/O server. Unfortunately, this approach means that we can no-longer select different I/O layers for use with quilting at run time. ARPDBG. This code is sufficiently different that it is kept in the separate quilt_pnc() routine.
Set the WRF_FLOAT parameter to be WRF_DOUBLE instead of WRF_REAL.
Enable the use of protoypes.
Use the first user in the parameter table.
This macro holds the default page size that pagesize() will return when neither sysconf() nor POSIX getpagesize() is not available. Its default value may not be changed for CPU2017.
Collect terrain array HT into a global array HTIJ
Enable the reg test.
Revert an array back to it original value.
This macro indicates that the RSL communications package is being used for communication in a parallelized WRF run. It is not used and may not be set for CPU2017.
Only use the rsl9 file.
Use the RTM river routing model.
Run the WSMD5 and WSMD3 cloud physics solvers on a GPU.
Disable the nested move routines if running on an SGI Altix system.
Ignore. Unreachable.
Add a temporary snow melt variable.
Adds in the mpishorthand module (disabled in orginal code) and include the "mpif.h" header file.
Define STUG to enable tracking of allocs and frees (performance and space penalty)
Ignore. Unreachable in SPEC version.
Ignore. Unreachable in SPEC version.
This code block controls the addition of N to sminn pool to eliminate any N limitation, when SUPLN is set. This lets the model behave essentially as a carbon-only model, but with the benefit of keeping trrack of the N additions needed to eliminate N limitations, so there is still a diagnostic quantity that describes the degree of N limitation at steady-state.
Ignore. Header file guard.
Defined to include errno.h.
Ignore. Header file guard.
Load the terrain and landuse from a file.
Get the terranin data from TBASE.
Create a stand-alone test in gribmap.c.
Disable error check that urban parameterization is not yet finished.
These macros are used internally by cfortran.h to determine what native C types to use to hold various types and sizes of data. Their default values may not be changed.
These macros define the size (in bytes) of various native data types. Their default values may not be changed.
Compute additional solar radiation data.
This macro enables stubbing out of the nests_to_open function in WRF. It may not be set for CPU2017.
Defined when adjusting the date format for Titan.
Compute the gamma function in module_cam_cldwat.
For the gen_alloc code generator, use allocatables.
Use the high resolution timer.
Ignore. Not used in SPEC CPU version.
This flag enables a touch of the last page allocated when growing a file with NetCDF. It's the default value may not be changed.
This macro indicates that new and delete should be used instead of malloc() and free() in C++ codes that use cfortran.h. It is not used and may not be set for CPU2017.
This flag indicates that the benchmark is being built on a big-endian system. It is on by default. Please use you're compiler's "convert" flag to convert the big-endian input data set on little-endian systems.
Select different error message routines.
Enables a main program for a small unit test for the vertical interpolation.
Enable debug output in NetCDF.
Determine the new enter of a huricane's vortex.
Use a different temperature range.
Use a different temperature range.
Redefine "malloc" to an interal wrapper function which calls posix_memalign.
Ignore. Implicitly set the word bit count to 32.
Alignment value when calling posix_memalign. Not used in 621.wrf_s.
Enable when using the WRF Chem package.
Enable the radar DFI package.
Enable the Hydro package.
Ignore. Header file guard.
LOGICAL buffered -- if TRUE, messages are buffered via clog_write. Once the buffer is full, messages are sent to stdout. This does not apply to WRF_MESSAGE2, WRF_ERROR_FATAL, or anything sent to write or print. The buffering implementation will not write partial lines, and buffer size is specified via namelist (see init_module_wrf_error). If FALSE, messages are send directly to WRITE.
Ignore. Implicitly defined.
Use CLM coupling.
Use an version of WSMD5 that is optimized for a Xeon Phi.
Add a simd directive.
Enabled internally by default.
These macros set the sizes, ranges, or other attributes of various data types used in NetCDF's XDR implementation. They are not relevant to CPU2017 and may not be changed from their default values.
This macro is used to indicate to cfortran.h that ARGS can hold Pvariables. It may not be set for CPU2017.
Enable PGI Accelerator Model specific code.
Enable PGI Accelerator Model specific profiling code.
Use AIX specific "alloca" pragma.
This macro defines a method of rounding up to the nearest whole number. Changing its default value is forbidden.
This macro is used to tell NetCDF that the compilation system's "char" type is unsigned by default.
If you need to set this flag in order to build and run 621.wrf_s, please notify cpu2017support@spec.org.
This defines a compatibilty name for the ncvarcopy() function. Its default value may not be changed.
In theory, this flag supplies information to NetCDF's cfortran.h about use of the Absoft Pro Fortran compiler. In practice, it shouldn't be necessary, and setting it explicitly is not allowed.
In theory, this flag supplies information to NetCDF's cfortran.h about use of the Absoft UNIX F77 compiler. In practice, it shouldn't be necessary, and setting it explicitly is not allowed.
In theory, this flag supplies information to NetCDF's cfortran.h about use of the Portland Group Fortran compiler. In practice, it shouldn't be necessary, and setting it explicitly is not allowed.
In theory, this flag supplies information to NetCDF's cfortran.h about use of the Pathscale Fortran compiler. In practice, it shouldn't be necessary, and setting it explicitly is not allowed.
In theory, this flag supplies information to NetCDF's cfortran.h about use of the NAG Fortran-90 compiler. In practice, it shouldn't be necessary, and setting it explicitly is not allowed.
In theory, this flag supplies information to NetCDF's cfortran.h about use of the f2c. In practice, 621.wrf_s can't be built with f2c, so setting it explicitly is not allowed.
Have a "date" as part of the bdy_inname.
These macros are used internally by cfortran.h and may not be set explicitly.
These macros are used to prevent multiple header inclusion; setting them explicitly is forbidden.
These flags are set implicitly by the compilation system and may not be set explicitly.
These flags are used to enable I/O modules in WRF. They may not be set.