This result has been formatted using multiple flags files. The "default header section" from each of them appears next.
Note: The GNU Compiler Collection provides a wide array of compiler options, described in detail and readily available at https://gcc.gnu.org/onlinedocs/gcc/Option-Index.html#Option-Index and https://gcc.gnu.org/onlinedocs/gfortran/. This SPEC CPU flags file contains excerpts from and brief summaries of portions of that documentation.
SPEC's modifications are:
Copyright (C) 2006-2017 Standard Performance Evaluation Corporation
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being "Funding Free Software", the Front-Cover Texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in your SPEC CPU kit at $SPEC/Docs/licenses/FDL.v1.3 and on the web at http://www.spec.org/cpu2017/Docs/licenses/FDL.v1.3. A copy of "Funding Free Software" is on your SPEC CPU kit at $SPEC/Docs/licenses/FundingFreeSW and on the web at http://www.spec.org/cpu2017/Docs/licenses/FundingFreeSW.
(a) The FSF's Front-Cover Text is:
A GNU Manual
(b) The FSF's Back-Cover Text is:
You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development.
clang is a C compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
clang++ C++ compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
clang is a C compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
Invokes the GNU Fortran compiler.
clang is a C compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
Invokes the GNU Fortran compiler.
clang++ C++ compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
clang is a C compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
clang++ C++ compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
clang is a C compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
Invokes the GNU Fortran compiler.
clang is a C compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
clang++ C++ compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
clang is a C compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
Invokes the GNU Fortran compiler.
clang is a C compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
Invokes the GNU Fortran compiler.
clang++ C++ compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
clang is a C compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
clang++ C++ compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
clang is a C compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
Invokes the GNU Fortran compiler.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This macro indicates that Fortran functions called from C should have their names lower-cased.
Use big-endian representation for unformatted files. This is important when reading 521.wrf_r, 621.wrf_s, and 628.pop2_s data files that were originally generated in big-endian format.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
Let the type "char" be unsigned, like "unsigned char".
Note: this particular portability flag is included for 526.blender_r per the recommendation in its documentation - see http://www.spec.org/cpu2017/Docs/benchmarks/526.blender_r.html.
Some systems need to see alternate definitions for boolean types. This flag enables their use.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
Fortran to C symbol naming. C symbol names are lower case with one underscore. _symbol
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This macro indicates that Fortran functions called from C should have their names lower-cased.
Use big-endian representation for unformatted files. This is important when reading 521.wrf_r, 621.wrf_s, and 628.pop2_s data files that were originally generated in big-endian format.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
Let the type "char" be unsigned, like "unsigned char".
Note: this particular portability flag is included for 526.blender_r per the recommendation in its documentation - see http://www.spec.org/cpu2017/Docs/benchmarks/526.blender_r.html.
Some systems need to see alternate definitions for boolean types. This flag enables their use.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
Fortran to C symbol naming. C symbol names are lower case with one underscore. _symbol
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
Generate output files in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files (which may be passed to the linker depending on the stage selection options).
This optimization merges duplicate constant uses into a register to reduce instruction width.
Enables loop strength reduction for nested loop structures. By default, the compiler will do loop strength reduction only for the innermost loop.
Certain loops with breaks may be vectorized by default at -O2 and above. In some extreme situations this may result in unsafe behavior. Use this option to disable vectorization of such loops.
Like -O2, except that it enables optimizations that take longer to perform or that may generate larger code (in an attempt to make the program run faster).
If multiple "O" options are used, with or without level numbers, the last such option is the one that is effective.
Enables a range of optimizations that provide faster, though sometimes less precise, mathematical operations.
On x86 systems, allows use of instructions that require the listed architecture.
This option restricts the optimization and code generation to first-generation AVX instructions.
This option enables transformation of the layout of arrays of structure types and their fields to improve the cache locality. Aggressive analysis and transformations are performed at higher levels. This option is effective only with -flto as whole program analysis is required to perform this optimization.
Possible values:
Sets the limit at which loops will be unrolled. For example, if unroll threshold is set to 100 then only loops with 100 or fewer instructions will be unrolled.
This option enables an optimization that transforms the data layout of a single dimensional array to provide better cache locality by analyzing the access patterns.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
This option enables an optimization that generates and calls specialized function versions when the loops inside function are vectorizable and the arguments are not aliased with each other. This optimization helps in function inlining and vectorization.
This option enables the GVN hoist pass, which is used to hoist computations from branches.
This option enables an optimization that generates and calls specialized function versions when they are called with constant arguments. This optimization helps in function inlining.
Allows links to proceed even if there are multiple definitions of some symbols. This switch may resolve duplicate symbol errors, as noted in the 502.gcc_r benchmark description.
Instructs the compiler to link with AMD-supported optimized math library.
This option instructs the linker to link the executable with the pthread library.
This option instructs the linker to link the executable with libdl, the interface to the dynamic loader.
Use the jemalloc library, which is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
Selects the C++ language dialect.
Generate output files in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files (which may be passed to the linker depending on the stage selection options).
This optimization merges duplicate constant uses into a register to reduce instruction width.
Enables loop strength reduction for nested loop structures. By default, the compiler will do loop strength reduction only for the innermost loop.
Certain loops with breaks may be vectorized by default at -O2 and above. In some extreme situations this may result in unsafe behavior. Use this option to disable vectorization of such loops.
Like -O2, except that it enables optimizations that take longer to perform or that may generate larger code (in an attempt to make the program run faster).
If multiple "O" options are used, with or without level numbers, the last such option is the one that is effective.
On x86 systems, allows use of instructions that require the listed architecture.
Sets the limit at which loops will be unrolled. For example, if unroll threshold is set to 100 then only loops with 100 or fewer instructions will be unrolled.
Sets the compiler's inlining heuristics to an aggressive level by increasing the inline thresholds.
This option enables an optimization that transforms the data layout of a single dimensional array to provide better cache locality by analyzing the access patterns.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
Certain loops with breaks may be vectorized by default at -O2 and above. In some extreme situations this may result in unsafe behavior. Use this option to disable vectorization of such loops.
Allows links to proceed even if there are multiple definitions of some symbols. This switch may resolve duplicate symbol errors, as noted in the 502.gcc_r benchmark description.
This option instructs the linker to link the executable with the pthread library.
This option instructs the linker to link the executable with libdl, the interface to the dynamic loader.
Use the jemalloc library, which is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
Generate output files in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files (which may be passed to the linker depending on the stage selection options).
This optimization merges duplicate constant uses into a register to reduce instruction width.
Enables loop strength reduction for nested loop structures. By default, the compiler will do loop strength reduction only for the innermost loop.
Certain loops with breaks may be vectorized by default at -O2 and above. In some extreme situations this may result in unsafe behavior. Use this option to disable vectorization of such loops.
Increases optimization levels: the higher the number, the more optimization is done. Higher levels of optimization may
require additional compilation time, in the hopes of reducing execution time. At -O, basic optimizations are performed,
such as constant merging and elimination of dead code. At -O2, additional optimizations are added, such as common
subexpression elimination and strict aliasing. At -O3, even more optimizations are performed, such as function inlining and
vectorization.
Many more details are available.
Like -O2, except that it enables optimizations that take longer to perform or that may generate larger code (in an attempt to make the program run faster).
If multiple "O" options are used, with or without level numbers, the last such option is the one that is effective.
Generate code for processors that include the AVX extensions.
This option enables generation of the adx instruction.
Tells the optimizer to unroll loops whose number of iterations can be determined at compile time or upon entry to the loop.
Enables a range of optimizations that provide faster, though sometimes less precise, mathematical operations.
Allows links to proceed even if there are multiple definitions of some symbols. This switch may resolve duplicate symbol errors, as noted in the 502.gcc_r benchmark description.
Load compiler plugin code from the dragonegg.so file.
This optimization merges duplicate constant uses into a register to reduce instruction width.
Certain loops with breaks may be vectorized by default at -O2 and above. In some extreme situations this may result in unsafe behavior. Use this option to disable vectorization of such loops.
This option instructs the linker to link the executable with the pthread library.
This option instructs the linker to link the executable with libdl, the interface to the dynamic loader.
Use the jemalloc library, which is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
Instructs the compiler to link with the gfortran Fortran runtime libraries.
Instructs the compiler to link with AMD-supported optimized math library.
Generate output files in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files (which may be passed to the linker depending on the stage selection options).
This optimization merges duplicate constant uses into a register to reduce instruction width.
Enables loop strength reduction for nested loop structures. By default, the compiler will do loop strength reduction only for the innermost loop.
Certain loops with breaks may be vectorized by default at -O2 and above. In some extreme situations this may result in unsafe behavior. Use this option to disable vectorization of such loops.
Like -O2, except that it enables optimizations that take longer to perform or that may generate larger code (in an attempt to make the program run faster).
If multiple "O" options are used, with or without level numbers, the last such option is the one that is effective.
Enables a range of optimizations that provide faster, though sometimes less precise, mathematical operations.
On x86 systems, allows use of instructions that require the listed architecture.
This option restricts the optimization and code generation to first-generation AVX instructions.
This option enables transformation of the layout of arrays of structure types and their fields to improve the cache locality. Aggressive analysis and transformations are performed at higher levels. This option is effective only with -flto as whole program analysis is required to perform this optimization.
Possible values:
Sets the limit at which loops will be unrolled. For example, if unroll threshold is set to 100 then only loops with 100 or fewer instructions will be unrolled.
This option enables an optimization that transforms the data layout of a single dimensional array to provide better cache locality by analyzing the access patterns.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
This option enables an optimization that generates and calls specialized function versions when the loops inside function are vectorizable and the arguments are not aliased with each other. This optimization helps in function inlining and vectorization.
This option enables the GVN hoist pass, which is used to hoist computations from branches.
This option enables an optimization that generates and calls specialized function versions when they are called with constant arguments. This optimization helps in function inlining.
Increases optimization levels: the higher the number, the more optimization is done. Higher levels of optimization may
require additional compilation time, in the hopes of reducing execution time. At -O, basic optimizations are performed,
such as constant merging and elimination of dead code. At -O2, additional optimizations are added, such as common
subexpression elimination and strict aliasing. At -O3, even more optimizations are performed, such as function inlining and
vectorization.
Many more details are available.
Generate code for processors that include the AVX extensions.
This option enables generation of the adx instruction.
Tells the optimizer to unroll loops whose number of iterations can be determined at compile time or upon entry to the loop.
Allows links to proceed even if there are multiple definitions of some symbols. This switch may resolve duplicate symbol errors, as noted in the 502.gcc_r benchmark description.
Load compiler plugin code from the dragonegg.so file.
This optimization merges duplicate constant uses into a register to reduce instruction width.
Certain loops with breaks may be vectorized by default at -O2 and above. In some extreme situations this may result in unsafe behavior. Use this option to disable vectorization of such loops.
This option instructs the linker to link the executable with the pthread library.
This option instructs the linker to link the executable with libdl, the interface to the dynamic loader.
Use the jemalloc library, which is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
Instructs the compiler to link with the gfortran Fortran runtime libraries.
Instructs the compiler to link with AMD-supported optimized math library.
Selects the C++ language dialect.
Generate output files in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files (which may be passed to the linker depending on the stage selection options).
This optimization merges duplicate constant uses into a register to reduce instruction width.
Enables loop strength reduction for nested loop structures. By default, the compiler will do loop strength reduction only for the innermost loop.
Certain loops with breaks may be vectorized by default at -O2 and above. In some extreme situations this may result in unsafe behavior. Use this option to disable vectorization of such loops.
Like -O2, except that it enables optimizations that take longer to perform or that may generate larger code (in an attempt to make the program run faster).
If multiple "O" options are used, with or without level numbers, the last such option is the one that is effective.
Enables a range of optimizations that provide faster, though sometimes less precise, mathematical operations.
On x86 systems, allows use of instructions that require the listed architecture.
This option restricts the optimization and code generation to first-generation AVX instructions.
This option enables transformation of the layout of arrays of structure types and their fields to improve the cache locality. Aggressive analysis and transformations are performed at higher levels. This option is effective only with -flto as whole program analysis is required to perform this optimization.
Possible values:
Sets the limit at which loops will be unrolled. For example, if unroll threshold is set to 100 then only loops with 100 or fewer instructions will be unrolled.
This option enables an optimization that transforms the data layout of a single dimensional array to provide better cache locality by analyzing the access patterns.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
This option enables an optimization that generates and calls specialized function versions when the loops inside function are vectorizable and the arguments are not aliased with each other. This optimization helps in function inlining and vectorization.
This option enables the GVN hoist pass, which is used to hoist computations from branches.
This option enables an optimization that generates and calls specialized function versions when they are called with constant arguments. This optimization helps in function inlining.
Sets the limit at which loops will be unrolled. For example, if unroll threshold is set to 100 then only loops with 100 or fewer instructions will be unrolled.
Sets the compiler's inlining heuristics to an aggressive level by increasing the inline thresholds.
Certain loops with breaks may be vectorized by default at -O2 and above. In some extreme situations this may result in unsafe behavior. Use this option to disable vectorization of such loops.
Allows links to proceed even if there are multiple definitions of some symbols. This switch may resolve duplicate symbol errors, as noted in the 502.gcc_r benchmark description.
This option instructs the linker to link the executable with the pthread library.
This option instructs the linker to link the executable with libdl, the interface to the dynamic loader.
Use the jemalloc library, which is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
Selects the C++ language dialect.
Generate output files in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files (which may be passed to the linker depending on the stage selection options).
This optimization merges duplicate constant uses into a register to reduce instruction width.
Enables loop strength reduction for nested loop structures. By default, the compiler will do loop strength reduction only for the innermost loop.
Certain loops with breaks may be vectorized by default at -O2 and above. In some extreme situations this may result in unsafe behavior. Use this option to disable vectorization of such loops.
Like -O2, except that it enables optimizations that take longer to perform or that may generate larger code (in an attempt to make the program run faster).
If multiple "O" options are used, with or without level numbers, the last such option is the one that is effective.
Enables a range of optimizations that provide faster, though sometimes less precise, mathematical operations.
On x86 systems, allows use of instructions that require the listed architecture.
This option restricts the optimization and code generation to first-generation AVX instructions.
This option enables transformation of the layout of arrays of structure types and their fields to improve the cache locality. Aggressive analysis and transformations are performed at higher levels. This option is effective only with -flto as whole program analysis is required to perform this optimization.
Possible values:
Sets the limit at which loops will be unrolled. For example, if unroll threshold is set to 100 then only loops with 100 or fewer instructions will be unrolled.
This option enables an optimization that transforms the data layout of a single dimensional array to provide better cache locality by analyzing the access patterns.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
This option enables an optimization that generates and calls specialized function versions when the loops inside function are vectorizable and the arguments are not aliased with each other. This optimization helps in function inlining and vectorization.
This option enables the GVN hoist pass, which is used to hoist computations from branches.
This option enables an optimization that generates and calls specialized function versions when they are called with constant arguments. This optimization helps in function inlining.
Sets the limit at which loops will be unrolled. For example, if unroll threshold is set to 100 then only loops with 100 or fewer instructions will be unrolled.
Sets the compiler's inlining heuristics to an aggressive level by increasing the inline thresholds.
Certain loops with breaks may be vectorized by default at -O2 and above. In some extreme situations this may result in unsafe behavior. Use this option to disable vectorization of such loops.
Increases optimization levels: the higher the number, the more optimization is done. Higher levels of optimization may
require additional compilation time, in the hopes of reducing execution time. At -O, basic optimizations are performed,
such as constant merging and elimination of dead code. At -O2, additional optimizations are added, such as common
subexpression elimination and strict aliasing. At -O3, even more optimizations are performed, such as function inlining and
vectorization.
Many more details are available.
Generate code for processors that include the AVX extensions.
This option enables generation of the adx instruction.
Tells the optimizer to unroll loops whose number of iterations can be determined at compile time or upon entry to the loop.
Allows links to proceed even if there are multiple definitions of some symbols. This switch may resolve duplicate symbol errors, as noted in the 502.gcc_r benchmark description.
Load compiler plugin code from the dragonegg.so file.
This optimization merges duplicate constant uses into a register to reduce instruction width.
Certain loops with breaks may be vectorized by default at -O2 and above. In some extreme situations this may result in unsafe behavior. Use this option to disable vectorization of such loops.
This option instructs the linker to link the executable with the pthread library.
This option instructs the linker to link the executable with libdl, the interface to the dynamic loader.
Use the jemalloc library, which is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
Generate output files in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files (which may be passed to the linker depending on the stage selection options).
This optimization merges duplicate constant uses into a register to reduce instruction width.
Enables loop strength reduction for nested loop structures. By default, the compiler will do loop strength reduction only for the innermost loop.
Enable all optimizations of -O3 plus optimizations that are not valid for standard-compliant programs, such as re-ordering
operations without regard to parentheses.
Many more details are available.
On x86 systems, allows use of instructions that require the listed architecture.
This option enables transformation of the layout of arrays of structure types and their fields to improve the cache locality. Aggressive analysis and transformations are performed at higher levels. This option is effective only with -flto as whole program analysis is required to perform this optimization.
Possible values:
This option avoids runtime memory dependency checks to enable aggressive vectorization.
This option restricts the optimization and code generation to first-generation AVX instructions.
Sets the limit at which loops will be unrolled. For example, if unroll threshold is set to 100 then only loops with 100 or fewer instructions will be unrolled.
This option enables an optimization that transforms the data layout of a single dimensional array to provide better cache locality by analyzing the access patterns.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
This option instructs the linker to link the executable with the pthread library.
This option instructs the linker to link the executable with libdl, the interface to the dynamic loader.
Use the jemalloc library, which is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
Selects the C++ language dialect.
Generate output files in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files (which may be passed to the linker depending on the stage selection options).
This optimization merges duplicate constant uses into a register to reduce instruction width.
Enables loop strength reduction for nested loop structures. By default, the compiler will do loop strength reduction only for the innermost loop.
Enable all optimizations of -O3 plus optimizations that are not valid for standard-compliant programs, such as re-ordering
operations without regard to parentheses.
Many more details are available.
On x86 systems, allows use of instructions that require the listed architecture.
Sets the compiler's inlining heuristics to an aggressive level by increasing the inline thresholds.
Sets the limit at which loops will be unrolled. For example, if unroll threshold is set to 100 then only loops with 100 or fewer instructions will be unrolled.
This option enables an optimization that transforms the data layout of a single dimensional array to provide better cache locality by analyzing the access patterns.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
This option instructs the linker to link the executable with the pthread library.
This option instructs the linker to link the executable with libdl, the interface to the dynamic loader.
Use the jemalloc library, which is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
Generate output files in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files (which may be passed to the linker depending on the stage selection options).
This optimization merges duplicate constant uses into a register to reduce instruction width.
Enables loop strength reduction for nested loop structures. By default, the compiler will do loop strength reduction only for the innermost loop.
Increases optimization levels: the higher the number, the more optimization is done. Higher levels of optimization may
require additional compilation time, in the hopes of reducing execution time. At -O, basic optimizations are performed,
such as constant merging and elimination of dead code. At -O2, additional optimizations are added, such as common
subexpression elimination and strict aliasing. At -O3, even more optimizations are performed, such as function inlining and
vectorization.
Many more details are available.
Like -O2, except that it enables optimizations that take longer to perform or that may generate larger code (in an attempt to make the program run faster).
If multiple "O" options are used, with or without level numbers, the last such option is the one that is effective.
This option enables AVX2 (Advanced Vector Extensions, 2nd generation) support.
This option enables generation of the adx instruction.
Tells the optimizer to unroll loops whose number of iterations can be determined at compile time or upon entry to the loop.
Enables a range of optimizations that provide faster, though sometimes less precise, mathematical operations.
Load compiler plugin code from the dragonegg.so file.
This optimization merges duplicate constant uses into a register to reduce instruction width.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
This option instructs the linker to link the executable with the pthread library.
This option instructs the linker to link the executable with libdl, the interface to the dynamic loader.
Use the jemalloc library, which is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
Instructs the compiler to link with the gfortran Fortran runtime libraries.
Instructs the compiler to link with AMD-supported optimized math library.
Generate output files in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files (which may be passed to the linker depending on the stage selection options).
This optimization merges duplicate constant uses into a register to reduce instruction width.
Enables loop strength reduction for nested loop structures. By default, the compiler will do loop strength reduction only for the innermost loop.
Like -O2, except that it enables optimizations that take longer to perform or that may generate larger code (in an attempt to make the program run faster).
If multiple "O" options are used, with or without level numbers, the last such option is the one that is effective.
Generate code for processors that include the AVX extensions.
Enables a range of optimizations that provide faster, though sometimes less precise, mathematical operations.
Increases optimization levels: the higher the number, the more optimization is done. Higher levels of optimization may
require additional compilation time, in the hopes of reducing execution time. At -O, basic optimizations are performed,
such as constant merging and elimination of dead code. At -O2, additional optimizations are added, such as common
subexpression elimination and strict aliasing. At -O3, even more optimizations are performed, such as function inlining and
vectorization.
Many more details are available.
Tells the optimizer to unroll loops whose number of iterations can be determined at compile time or upon entry to the loop.
Load compiler plugin code from the dragonegg.so file.
This optimization merges duplicate constant uses into a register to reduce instruction width.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
This option instructs the linker to link the executable with the pthread library.
This option instructs the linker to link the executable with libdl, the interface to the dynamic loader.
Use the jemalloc library, which is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
Instructs the compiler to link with the gfortran Fortran runtime libraries.
Instructs the compiler to link with AMD-supported optimized math library.
Generate output files in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files (which may be passed to the linker depending on the stage selection options).
This optimization merges duplicate constant uses into a register to reduce instruction width.
Enables loop strength reduction for nested loop structures. By default, the compiler will do loop strength reduction only for the innermost loop.
Enable all optimizations of -O3 plus optimizations that are not valid for standard-compliant programs, such as re-ordering
operations without regard to parentheses.
Many more details are available.
On x86 systems, allows use of instructions that require the listed architecture.
This option enables transformation of the layout of arrays of structure types and their fields to improve the cache locality. Aggressive analysis and transformations are performed at higher levels. This option is effective only with -flto as whole program analysis is required to perform this optimization.
Possible values:
This option avoids runtime memory dependency checks to enable aggressive vectorization.
This option restricts the optimization and code generation to first-generation AVX instructions.
Sets the limit at which loops will be unrolled. For example, if unroll threshold is set to 100 then only loops with 100 or fewer instructions will be unrolled.
This option enables an optimization that transforms the data layout of a single dimensional array to provide better cache locality by analyzing the access patterns.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
Increases optimization levels: the higher the number, the more optimization is done. Higher levels of optimization may
require additional compilation time, in the hopes of reducing execution time. At -O, basic optimizations are performed,
such as constant merging and elimination of dead code. At -O2, additional optimizations are added, such as common
subexpression elimination and strict aliasing. At -O3, even more optimizations are performed, such as function inlining and
vectorization.
Many more details are available.
Like -O2, except that it enables optimizations that take longer to perform or that may generate larger code (in an attempt to make the program run faster).
If multiple "O" options are used, with or without level numbers, the last such option is the one that is effective.
This option enables AVX2 (Advanced Vector Extensions, 2nd generation) support.
This option enables generation of the adx instruction.
Tells the optimizer to unroll loops whose number of iterations can be determined at compile time or upon entry to the loop.
Enables a range of optimizations that provide faster, though sometimes less precise, mathematical operations.
Load compiler plugin code from the dragonegg.so file.
This optimization merges duplicate constant uses into a register to reduce instruction width.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
This option instructs the linker to link the executable with the pthread library.
This option instructs the linker to link the executable with libdl, the interface to the dynamic loader.
Use the jemalloc library, which is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
Instructs the compiler to link with the gfortran Fortran runtime libraries.
Instructs the compiler to link with AMD-supported optimized math library.
Selects the C++ language dialect.
Generate output files in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files (which may be passed to the linker depending on the stage selection options).
This optimization merges duplicate constant uses into a register to reduce instruction width.
Enables loop strength reduction for nested loop structures. By default, the compiler will do loop strength reduction only for the innermost loop.
Enable all optimizations of -O3 plus optimizations that are not valid for standard-compliant programs, such as re-ordering
operations without regard to parentheses.
Many more details are available.
On x86 systems, allows use of instructions that require the listed architecture.
This option enables transformation of the layout of arrays of structure types and their fields to improve the cache locality. Aggressive analysis and transformations are performed at higher levels. This option is effective only with -flto as whole program analysis is required to perform this optimization.
Possible values:
This option avoids runtime memory dependency checks to enable aggressive vectorization.
This option restricts the optimization and code generation to first-generation AVX instructions.
Sets the limit at which loops will be unrolled. For example, if unroll threshold is set to 100 then only loops with 100 or fewer instructions will be unrolled.
This option enables an optimization that transforms the data layout of a single dimensional array to provide better cache locality by analyzing the access patterns.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
Sets the compiler's inlining heuristics to an aggressive level by increasing the inline thresholds.
This option instructs the linker to link the executable with the pthread library.
This option instructs the linker to link the executable with libdl, the interface to the dynamic loader.
Use the jemalloc library, which is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
Selects the C++ language dialect.
Generate output files in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files (which may be passed to the linker depending on the stage selection options).
This optimization merges duplicate constant uses into a register to reduce instruction width.
Enables loop strength reduction for nested loop structures. By default, the compiler will do loop strength reduction only for the innermost loop.
Enable all optimizations of -O3 plus optimizations that are not valid for standard-compliant programs, such as re-ordering
operations without regard to parentheses.
Many more details are available.
On x86 systems, allows use of instructions that require the listed architecture.
This option enables transformation of the layout of arrays of structure types and their fields to improve the cache locality. Aggressive analysis and transformations are performed at higher levels. This option is effective only with -flto as whole program analysis is required to perform this optimization.
Possible values:
This option avoids runtime memory dependency checks to enable aggressive vectorization.
This option restricts the optimization and code generation to first-generation AVX instructions.
Sets the limit at which loops will be unrolled. For example, if unroll threshold is set to 100 then only loops with 100 or fewer instructions will be unrolled.
This option enables an optimization that transforms the data layout of a single dimensional array to provide better cache locality by analyzing the access patterns.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
Sets the compiler's inlining heuristics to an aggressive level by increasing the inline thresholds.
Increases optimization levels: the higher the number, the more optimization is done. Higher levels of optimization may
require additional compilation time, in the hopes of reducing execution time. At -O, basic optimizations are performed,
such as constant merging and elimination of dead code. At -O2, additional optimizations are added, such as common
subexpression elimination and strict aliasing. At -O3, even more optimizations are performed, such as function inlining and
vectorization.
Many more details are available.
This option enables AVX2 (Advanced Vector Extensions, 2nd generation) support.
This option enables generation of the adx instruction.
Tells the optimizer to unroll loops whose number of iterations can be determined at compile time or upon entry to the loop.
Enables a range of optimizations that provide faster, though sometimes less precise, mathematical operations.
Load compiler plugin code from the dragonegg.so file.
This optimization merges duplicate constant uses into a register to reduce instruction width.
Sets the compiler's inlining threshold level to the value passed. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
This option instructs the linker to link the executable with the pthread library.
This option instructs the linker to link the executable with libdl, the interface to the dynamic loader.
Use the jemalloc library, which is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
This section contains descriptions of flags that were included implicitly by other flags, but which do not have a permanent home at SPEC.
Somewhere between -O0 and -O2.
If multiple "O" options are used, with or without level numbers, the last such option is the one that is effective.
This result has been formatted using multiple flags files. The "submit command" from each of them appears next.
SPECrate runs might use one of these methods to bind processes to specific processors, depending on the config file.
Linux systems: the numactl command is commonly used. Here is a brief guide to understanding the specific command which will be found in the config file:
Solaris systems: The pbind command is commonly used, via
submit=echo 'pbind -b...' > dobmk; sh dobmk
The specific command may be found in the config file; here is a brief guide to understanding that command:
pbind -b causes this copy's processes to be bound to the CPU specified by the expression that follows it. See the config file used in the run for the exact syntax, which tends to be cumbersome because of the need to carefully quote parts of the expression. When all expressions are evaluated, the jobs are typically distributed evenly across the system, with each chip running the same number of jobs as all other chips, and each core running the same number of jobs as all other cores.
The pbind expression may include various elements from the SPEC toolset and from standard Unix commands, such as:
Using numactl
to bind processes and memory to cores
For multi-copy runs or single copy runs on systems with multiple sockets, it is advantageous to bind a process to a
particular core. Otherwise, the OS may arbitrarily move your process from one core to another. This can affect
performance. To help, SPEC allows the use of a "submit" command where users can specify a utility to use to bind
processes. We have found the utility 'numactl
' to be the best choice.
numactl
runs processes with a specific NUMA scheduling or memory placement policy. The policy is set for a
command and inherited by all of its children. The numactl
flag "--physcpubind
" specifies
which core(s) to bind the process. "-l
" instructs numactl
to keep a process's memory on the
local node while "-m
" specifies which node(s) to place a process's memory. For full details on using
numactl
, please refer to your Linux documentation, 'man numactl
'
Note that some older versions of numactl
incorrectly interpret application arguments as its own. For
example, with the command "numactl --physcpubind=0 -l a.out -m a
", numactl
will interpret
a.out
's "-m
" option as its own "-m
" option. To work around this problem, we put
the command to be run in a shell script and then run the shell script using numactl
. For example:
"echo 'a.out -m a' > run.sh ; numactl --physcpubind=0 bash run.sh
"
No special commands are needed for feedback-directed optimization, other than the compiler profile flags.
This result has been formatted using multiple flags files. The "sw environment" from each of them appears next.
One or more of the following may have been used in the run. If so, it will be listed in the notes sections. Here is a brief guide to understanding them:
LD_LIBRARY_PATH=<directories> (set via config file preENV)
LD_LIBRARY_PATH controls the search order for libraries. Often, it can be defaulted. Sometimes, it is
explicitly set (as documented in the notes in the submission), in order to ensure that the correct versions of
libraries are picked up.
OMP_STACKSIZE=N (set via config file preENV)
Set the stack size for subordinate threads.
ulimit -s N
ulimit -s unlimited
'ulimit' is a Unix commands, entered prior to the run. It sets the stack size for the main process, either
to N kbytes or to no limit.
Transparent Huge Pages (THP)
THP is an abstraction layer that automates most aspects of creating, managing, and using huge pages. THP is designed to hide much of the complexity in using huge pages from system administrators and developers, as normal huge pages must be assigned at boot time, can be difficult to manage manually, and often require significant changes to code in order to be used effectively. Most recent Linux OS releases have THP enabled by default.
Linux Huge Page settings
If you need finer control you can manually set huge pages using the following steps:
mkdir /mnt/hugepages
mount -t hugetlbfs nodev /mnt/hugepages
vm/nr_hugepages=N
in /etc/sysctl.conf
where N is the maximum number of pages the
system may allocate.Note that further information about huge pages may be found in the Linux kernel documentation file
hugetlbpage.txt
.
ulimit -s <n>
Sets the stack size to n kbytes, or unlimited to allow the stack size to grow without limit.
ulimit -l <n>
Sets the maximum size of memory that may be locked into physical memory.
cpupower frequency-set -r -g performance
(on Ubuntu, SLES, RHEL)
Sets the CPU governor to "performance" to enable the highest supported performance state for all cores.
powersave -f
(on SuSE)
Makes the powersave daemon set the CPUs to the highest supported frequency.
/etc/init.d/cpuspeed stop
(on Red Hat)
Disables the cpu frequency scaling program in order to set the CPUs to the highest supported frequency.
OMP_NUM_THREADS
Sets the maximum number of OpenMP parallel threads applications based on OpenMP may use.
LD_LIBRARY_PATH
An environment variable that indicates the location in the filesystem of bundled libraries to use when running the benchmark binaries.
kernel/randomize_va_space
This option can be used to select the type of process address space randomization that is used in the system, for architectures that support this feature.
norandmaps
" parameter.CONFIG_COMPAT_BRK
option is enabled.CONFIG_COMPAT_BRK
is
disabled.MALLOC_CONF
An environment variable set to tune the jemalloc allocation strategy during the execution of the binaries. This environment variable setting is not needed when building the binaries on the system under test.
C States:
C States allow the processor to enter lower power states when idle. When set to Enabled (OS controlled) or when set to Autonomous (if Hardware controlled is supported), the processor can operate in all available Power States to save power, but my increase memory latency and frequency jitter.
Determinism Slider:
It controls whether BIOS will enable determinism to control performance. Performance: BIOS will enable 100% deterministic performance control. Power: BIOS will not enable deterministic performance control.
Adaptive Double DRAM Device Correction (ADDDC):
When Adaptive Double DRAM Device Correction (ADDDC) is enabled, failing DRAM’s are dynamically mapped out. When set to enabled, it can have some impact to system performance under certain workloads. This feature is applicable for x4 DIMMs only.
DCU Streamer Prefetcher:
Enables or disables Data Cache Unit (DCU) Streamer Prefetcher. This setting can affect performance, depending on the application running on the server. Recommended for High Performance Computing applications.
Memory Frequency:
Governs the BIOS memory frequency. The variables that govern maximum memory frequency include the maximum rated frequency of the DIMMs, the DIMMs per channel population, the processor choice, and this BIOS option. Additional power savings can be achieved by reducing the memory frequency, at the expense of reduced performance.
Turbo Boost:
Governs the Boost Technology. This feature allows teh processor cores to be automatically clocked up in frequency beyond the advertised processor speed. The amount of increased frequency (or 'turbo upside') one can expect from an EPYC processor depends on the fewer cores being exercised with work the higher the potential turbo upside. The potential drawback for Boost are mainly centered on increased power consumption and possible frequency jitter that can affect a small minority of latency-sensitive environments.
C1E:
When set to Enabled, the processor is allowed to switch to minimum performance state when idle.
CPU Interconnect Bus Link Power Management:
When Enabled, CPU interconnect bus link power management can reduce overall system power a bit while slightly reducing system performance.
CPU Performance:
Maximum Performance is typically selected for performance-centric workloads where it is acceptable to consume additional power to achieve the highest possible performance for the computing environment. This mode drives processor frequency to the maximum across all cores (although idled cores can still be frequency reduced by C-state enforcement through BIOS or OS mechanisms if enabled). This mode also offers the lowest latency of the CPU Power Management Mode options, so is always preferred.
Energy Efficient Policy:
The CPU uses the setting to manipulate the internal behavior of the processor and determines
whether to target higher performance or better power savings. The possible settings are: Performance, Balanced Performance, Balanced Energy, Energy Efficient.
Energy Efficient Turbo:
Permits Energy Efficient Turbo to be Enabled or Disabled.
Energy Efficient Turbo (EET) is a mode of operation where a processor's core frequency is adjusted within the turbo range based on workload.
Logical Processor:
Each processor core supports up to two logical processors. When set to Enabled, the BIOS reports all logical processors. When set to Disabled, the BIOS only reports one logical processor per core. Generally, higher processor count results in increased performance for most multi-threaded workloads and the recommendation is to keep this enabled. However, there are some floating point/scientific workloads, including HPC workloads, where disabling this feature may result in higher performance.
Memory Patrol Scrub:
Patrol Scrubbing searches the memory for errors and repairs correctable errors to prevent the accumulation of memory errors. When set to Disabled, no patrol scrubbing will occur. When set to Standard Mode, the entire memory array will be scrubbed once in a 24 hour period. When set to Extended Mode, the entire memory array will be scrubbed more frequently to further increase system reliability.
Memory Refresh Rate:
The memory controller will periodically refresh the data in memory. The frequency at which memory is normally refreshed is referred to as 1X refresh rate. When memory modules are operating at a higher than normal temperature or to further increase system reliability, the refresh rate can be set to 2X, but may have a negative impact on memory subsystem performance under some circumstances.
PCI ASPM L1 Link Power Management:
When Enabled, PCIe Advanced State Power Management (ASPM) can reduce overall system power
a bit while slightly reducing system performance.
NOTE: Some devices may not perform properly (they may hang or cause the system to hang)
when ASPM is enabled, for this reason L1 will only be enabled for validated qualified cards.
System Profile:
When set to Custom, you can change setting of each option. Under Custom mode when C States is enabled, Monitor/Mwait should also be Enabled.
Monitor/Mwait:
Specifies whether Monitor/Mwait instructions are enabled. Monitor/Mwait is only active when C States is set to Disabled.
Sub NUMA Cluster:
When Enabled, Sub NUMA Clustering (SNC) is a feature for breaking up the LLC into disjoint clusters based on address range, with each cluster bound to a subset of the memory controllers in the system. It improves average latency to the LLC.
Uncore Frequency:
Selects the Processor Uncore Frequency.
Dynamic mode allows processor to optimize power resources across the cores and uncore during runtime.
The optimization of the uncore frequency to either save power or optimize performance is influenced
by the setting of the Energy Efficient Policy.
Virtualization technology:
When set to Enabled, the BIOS will enable processor Virtualization features and provide the virtualization support to the Operating System (OS) through the DMAR table. In general, only virtualized environments such as VMware(r) ESX (tm), Microsoft Hyper-V(r) , Red Hat(r) KVM, and other virtualized operating systems will take advantage of these features. Disabling this feature is not known to significantly alter the performance or power characteristics of the system, so leaving this option Enabled is advised for most cases.
nohz_full:
This kernel option sets adaptive tick mode (NOHZ_FULL) to specified processors. Since the number of interrupts is reduced to ones per second, latency-sensitive applications can take advantage of it.
Memory Interleaving:
When Enabled, memory interleaving is supported if a symmetric memory configuration is installed. When set to Disabled, the system supports Non-Uniform Memory Access (NUMA) (asymmetric) memory configurations. Channel interleaving is available with all configurations and is the intra-die memory interleave option. With channel interleaving the memory behind each UMC will be interleaved and seen as 1 NUMA domain per die.
Flag description origin markings:
For questions about the meanings of these flags, please contact the tester.
For other inquiries, please contact info@spec.org
Copyright 2017-2019 Standard Performance Evaluation Corporation
Tested with SPEC CPU2017 v1.0.5.
Report generated on 2019-04-16 17:18:31 by SPEC CPU2017 flags formatter v5178.