SPEC CPU2006 Flag Descriptions for gfortran/gcc

Flags descriptions for GCC 4.4.0

Note: The GNU Compiler Collection provides a wide array of compiler options, which are described in detail in the documentation at http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Option-Index.html#Option-Index and http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gfortran/. The descriptions contained in this SPEC flags file are not intended to replace those documents.

The experienced reader of SPEC flags files may notice that this file is somewhat less detailed than usual. The GCC documentation is (a) very detailed; (b) readily available; and (c) restricted as to requirements if re-formatted, modified, or re-packaged, per the terms of the GNU Free Documentation License. Out of an abundance of caution, and an abundance of respect, the author of this flags file prefers to provide briefer summaries here in this flags file, while providing handy links to the more detailed versions.


Sections

Selecting one of the following will take you directly to that section:


Optimization Flags


Compiler Flags


Other Flags


System and Other Tuning Information

numactl
It is advantageous to bind a process to a particular core. Otherwise, the OS may arbitrarily move your process from one core to another. To help, SPEC allows the use of a "submit" config file option where users can specify a utility to use to bind processes. This option is used with the Linux 'numactl' command to run processes with a specific NUMA scheduling or memory placement policy. The policy is set for a command and inherited by all of its children.

Large Pages
Large pages were created using this recipe, which is from the hugetlb HOWTO:

sysctl vm.nr_hugepages=512
HUGETLB_MORECORE=yes
export LD_PRELOAD=/usr/lib64/libhugetlbfs.so

Setting the sysctl vm.nr_hugepages specifies how many large pages should be reserved. As described in man libhugetlbfs, the environment variables cause large pages to be allocated for application memory.