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:
NOPERFLIB selects code that does not use perflib. Not defining this macro will break the benchmark build, so this macro is defined automatically and may not be undefined.
This macro causes atoms to be sorted by number, and is set within the code itself. It cannot be un-set.
This macro causes atom pairs to be sorted using the heapsort algorithm, and is set within the code itself. It cannot be un-set.
Setting these macros causes four-cycle signalling to be used when synchronizing OpenMP threads. They are set in the code and may not be un-set.
This macro indicates that NAB will use double-precision floating point math. It is set by default in the code and may not be unset.
This flag instructs the compiler to look in the regex-alpha/ subdirectory for the include files used by the regular expression engine.
Setting this macro will cause vector reduction with OpenMP to be single- threaded (as it is when using MPI and ScaLAPACK).
To use OpenMP with the SPEC version of the benchmark, set SPEC_OPENMP It automatically sets the internal definition OPENMP; it is forbidden for a user config file to do so.
Definition of this macro enables parallelization with MPI. It is forbidden for the SPEC CPU version of NAB.
Definition of the macro enables parallelization with MPI using the ScaLAPACK libraries. It is forbidden for the SPEC CPU version of NAB.
Setting this macro will disable parallelization in some cases under OpenMP. It is forbidden for the SPEC CPU version of NAB.
Setting this macro enables some extra output which will cause the benchmark to not validate. Because of that, it may not be set for a reportable run.
Setting this macro enables output of less important variables which will cause the benchmark to not validate. Because of that, it may not be set for a reportable run.
This macro has no effect in the SPEC CPU version of NAB. Regardless, it may not be set.
Setting this macro would cause several functions to not be defined, thus breaking the build. It may not be used.
This macro indicates that logarithmic reduction should be used to reduce sumdeijda. Because changing this would change the code path used by default, setting it is forbidden.
This macro indicates that logarithmic reduction should be used to reduce the gradient vector. This macro is undefined in the code itself and may not be defined by hand.
This macro controls inclusion of a header file that is not supplied with the benchmark. Defining it would break the benchmark build, so it may not be used.
This macro controls inclusion of a source file that is not supplied with the benchmark. Defining it would break the benchmark build, so it may not be used.
These macros enable extra output about the problems being solved. Because setting them would cause the benchmark to not validate (and in some cases not build), setting any of them for a reportable run is not allowed.
This macro defines a constant value for the mathematical constant Pi. It may not be set to other than its default value.
The value of this macro is used as a generic truth value. It is set automatically, and may not be set by hand.
The value of this macro is used as a generic false value. It is set automatically, and may not be set by hand.
This macro causes the regular expression engine to use bcopy() instead of memcpy(). This should not be needed on any system that satisfies the requirements to run CPU2017.
This macro causes the regular expression engine to emit debug output on stdout, which will cause benchmark validation to fail.
This macro disables the "mistake" in the POSIX 1003.2 standard that allows an unmatches right parenthesis to represent itself in a regular expression. The benchmark does not depend on this behavior being present or absent, so for consistency this macro may not be defined.