Building SPEC CPU2006

This file documents the use of the x86 Open64 Compiler Suite.

© 2009 Advanced Micro Devices, Inc.


Building SPEC CPU2006

CPU2006 is SPEC's current-generation processor benchmark suite that stresses a system's processor, memory subsystem and compiler. SPEC designed CPU2006 to provide a comparative measure of compute-intensive performance across the widest practical range of hardware using workloads developed from real user applications. These benchmarks are provided as source code and require the user to be comfortable using compiler commands as well as other commands via a command interpreter using a console or command prompt window in order to generate executable binaries. The current version of the benchmark suite is V1.1, released in June 2008. In order to build and run SPEC CPU2006, you will need to download the benchmark kit, install it, then build and test the component programs. These steps, and any known limitations, are described in the sections below.

The URL for the home page for this benchmark suite is SPEC CPU2006.  

Download: In order to download the SPEC CPU2006 benchmarks, a license is required.  An online order form can be found here.  Once SPEC membership has been acquired, the benchmark kit can be downloaded from  This site is password protected.

Installing the Kit

By convention, create a local directory on the system where you will build the benchmarks and run them called “CPU2006”.  In that directory, excute the following commands:

               >bzcat cpu2006-1.1.tar.bz2 | tar xvf



Enter “yes” to the prompt.  Once complete, see the “Docs” subdirectory, which includes html format documentation on the SPEC harness and how to use it.

Building SPEC CPU2006

Building SPEC benchmarks is done using the SPEC harness.  The first command to execute in the CPU2006 directory is:

        >. ./shrc

This will set the value of the $SPEC environment variable to the directory CPU2006.  The commands provided by the SPEC harness can be found in $SPEC/bin.  Example configuration files can be found in $SPEC/config.

The configuration file is used to specify the compiler invocation command, libraries to be used, compiler flags for each benchmark, etc.  This “config” file is also updated with MD5 checksums so that flag changes can be detected by the harness and benchmarks rebuilt only as needed.  More information on how the MD5 checksums are used can be found in the SPEC documentation.

The documentation also describes the SPEC run and reporting rules.  A “reportable” SPEC run is one that is suitable for submission to SPEC and eligible to be displayed on their results web pages.  Reportable runs must follow strict requirements for documentation, MD5 checksums, and must run each individual benchmark program three times.  However, it is also possible to do a non-reportable run with much less time and effort.

An example configuration file for building and running the SPEC benchmarks can be found in Example-open64.cfg.  This file assumes the Barcelona microarchitecture and is configured for a single-core target run with no auto-parallelization.  However, it is very similar to actual configuration files used for published SPEC results.  You can issue the following command to build and run all of the SPEC benchmarks using this configuration file:

     >runspec --loose --size=ref --iterations=1 --config=Example-open64 all

See the SPEC documentation for more details on the “runspec” command.  Below is a variation of the above command which limits the building and running to a single named benchmark, and only using the BASE flags.

     >runspec --loose --size=ref --iterations=1 --config=Example-open64 --tune=base perlbench

It is also possible to build the SPEC benchmarks without running them. Adding the option “—action=build” will build but not run the specified benchmarks.

It is also possible to “bundle” the resulting benchmark binaries and configuration file so they can be transported to a second system and executed there.

Please see the SPEC documentation for more details on these advanced features.

Known Limitations

There are no known limitations.