Installing SPEC CPU®2026 on *nix Systems
Including: AIX, Linux, macOS, and similar systems

Latest: www.spec.org/cpu2026/Docs/

Summary

Verify the ISO
Mount it
cd /mnt
./install.sh

Contents

Prepare for the Installation

1. Review Prerequisites

2. Verify the download (optional, recommended)

3. Mount the ISO image

Install it

4. Set your directory to the mounted image

5. Use install.sh

5.a. Select Destination

5.b. The toolset is selected (usually automatic)

5.c. The files are unpacked and tested

Test your installed copy

6. Source shrc or cshrc

7. Select a config file and try to build one benchmark

8. Try compiling an entire suite, and run the test workload

9. Try a full (reportable) run

Appendix 1: Uninstalling SPEC CPU 2026 Benchmark Suite

Appendix 2: Installing from a tarfile

This document describes how to install the SPEC CPU®2026 benchmark suites on Unix and Unix-like systems, including AIX, Linux, macOS, and similar systems. (If you want to install under Microsoft Windows, you need the other install guide.) The SPEC CPU 2026 benchmark suite is a product of the SPEC® non-profit corporation (about SPEC).

Reminder: SPEC benchmarks are licensed software.

Prepare for the Installation

To prepare for the installation, please follow these steps:

1. Review Prerequisites

Review the System Requirements. Please particularly notice the requirements for:

If you haven't already done so, start a terminal window now.

2. Verify the download (optional, recommended)

SPEC CPU is distributed as an ISO image. The file is large; therefore it is recommended (though not required) that you verify that the download is correct before continuing.

If you have the sha512sum or sha256sum utility, use it to calculate a checksum for your download. Compare the checksum to the posted value at www.spec.org/cpu2026/releases.

q. Is it ok to skip doing this verification? I trust my network and I don't feel like hunting for a SHA-256 tool just now.
a. It's always safer to verify downloads.
However, if you skip this step, you will probably be ok, because the installation procedure will verify the individual files within the distribution.

3. Mount the ISO image

Mount the image, using the methods appropriate for your operating system. The following examples are not intended to be comprehensive, but may get you started, or at least give you clues which manpages to read:

AIX Become root. (*) Then:
# loopmount -i cpu2026.iso -o "-V cdrfs -o ro" -m /mnt
Linux On Linux, you can try clicking on an ISO image;
but a GUI "mount" might be only a file browser.
You may need to become root. (*)
# mount -t iso9660 -o ro,exec,loop cpu2026.iso /mnt
macOS As an ordinary, non-privileged user:
$ open cpu2026.iso
  (*) Can't be root? See the tarfile option.

As noted above, for some operating systems you may need root privileges to mount the image. You should not need root privileges at any other time during this installation procedure, nor when running SPEC CPU benchmarks. In general, it is recommended that you use an ordinary user account for SPEC CPU.

Install it

Now that the distribution is mounted, you can use the installer.
If you prefer a non-interactive installation, see ./install.sh -h
Most users will probably prefer to use the steps below:

4. Set your directory to the mounted image

If you had privileges enabled for the portion above, you can turn them off now.

Set your current working directory to the directory where the image is mounted. The exact command will vary depending on how you mounted it, the label on the image, and the operating system. It might look something like one of these:

$ cd /Volumes/CPU2026v1.0.0
$ cd /media/CPU2026v1.0.0
$ cd /mnt

5. Use install.sh

Type:

./install.sh

If you already have the environment variable $SPEC defined, you will see a warning similar to the following.
Just say "no".

SPEC CPU 2026 Installation

The SPEC environment variable is already set to "/Users/Daniel/0.88.0",
which does not match the current directory ("/Volumes/CPU2026v0.91.1").
If you continue with the installation, the tools will be installed
from "/Users/Daniel/0.88.0" and possibly also into that directory.
Is this the desired behavior? (Please enter 'yes' or 'no')
no

Okay, ignoring your environment setting of $SPEC.

5.a. Select Destination

You will be prompted for a destination directory. You may need to avoid using environment variables (such as $HOME) and the tilde symbol (~). Please do not put any spaces in the path, because many programs use space as an argument delimiter.

Might fail: $HOME/Benchmarks/SPEC/CPU2026/
~/Benchmarks/SPEC/CPU2026/
$SCRATCH/cpu2026
Definitely Bad: /home/daniel/My Benchmarks/SPEC CPU2026/
Good: /Users/Stefan/Benchmarks/SPEC/CPU2026/
/scratch/cpu2026

The example below specifies a full path to a directory underneath the user's home directory.

$ ./install.sh

SPEC CPU2026 Installation

Top of the CPU2026 tree is '/Volumes/CPU2026v0.904.0'
Enter the directory you wish to install to (e.g. /usr/cpu2026)
/Volumes/ScratchVolume/spec/cpu2026/rc4/

Installing FROM /Volumes/CPU2026v0.904.0
Installing TO /Volumes/ScratchVolume/spec/cpu2026/rc4/

Is this correct? (Please enter 'yes' or 'no')
yes

Notice above that you will be asked to confirm your choice. If you enter "no", the procedure will exit, and you can try again.

Note: You can also specify the destination directory in the command line, using the -d flag, for example, like this:
./install.sh -d /Users/Yash/cpu2026

5.b. The toolset is selected (usually automatically)

The SPEC CPU 2026 benchmark suite includes a set of pre-compiled binary tools. The installation procedure tries to select a set that matches your hardware and operating system.

Usually, you should not worry about whether the toolset is an exact match to your current environment, because the toolset selection does not affect your benchmark scores, and because the installation procedure does a series of tests to ensure that the selected tools work on your system.

If at least one candidate match is found, you will see a message such as:


The following toolset is expected to work on your platform.  If the
automatically installed one does not work, please re-run install.sh and
exclude that toolset using the '-e' switch.

The toolset selected will not affect your benchmark scores.

macos-arm64                   For systems running macOS 13+ on Apple Silicon.
                              Built on macOS 26.1 with Apple clang
                              17.0.0 (clang-1700.4.4.1) using the 26.1 SDK.

If the installation procedure is unable to determine your system architecture, you will see a message such as:

We do not appear to have working vendor-supplied binaries for your
architecture.  You will have to compile the tool binaries by
yourself.  Please read the file

    /mnt/Docs/tools-build.html

for instructions on how you might be able to build them.

Please only attempt this as a last resort.

If you see that message, please stop here, and examine the file tools-build.html

Note: If the tools that are automatically installed on your system do not work, but you know that another set of tools distributed with the SPEC CPU 2026 benchmark suite will work, you can exclude the ones that do not work. You may be instructed to do this during the first installation. Use the -e flag for install.sh, for example:

./install.sh -e linux-x86_64

The above will cause the tools for linux-x86_64 to be excluded from consideration, and the installation procedure will check whether one of the other toolsets works on this system.

Alternatively, you can explicitly direct which toolset is to be used with the -u flag for install.sh, for example:

./install.sh -u aix-ppc

The above will cause the installer to try to use the aix-ppc toolset. If you specify tools that do not work on your system, the installation procedure will stop immediately, without installing anything.

5.c. The files are unpacked and tested

No more questions are asked. The script unpacks the files, and tests them.

=================================================================
Attempting to install the macos-arm64 toolset... <<-- or whatever toolset was selected

Unpacking CPU2026 base files (167.9 MB)
Unpacking CPU2026 tools binary files (89.7 MB)
Unpacking 706.stockfish_r benchmark and data files (45.7 MB)
Unpacking 707.ntest_r benchmark and data files (50.5 MB)
Unpacking 708.sqlite_r benchmark and data files (8.9 MB)
Unpacking 709.cactus_r benchmark and data files (9.1 MB)
.
.     (lines omitted) 
.
Unpacking 881.neutron_s benchmark and data files (2.1 MB)
Unpacking 998.specrand_s benchmark and data files (0.1 MB)
Unpacking 999.specrand_r benchmark and data files (12.7 MB)

Checking the integrity of your source tree...

Checksums are all okay.

Unpacking binary tools for macos-arm64...

Checking the integrity of your binary tools...

Checksums are all okay.

Testing the tools installation (this may take a minute)

...............................................................................
...............................................................................
..........................-....................................................
...............................................................................
.........-...........

Installation successful.  Source the shrc or cshrc in
/Volumes/ScratchVolume/spec/cpu2026/rc4/
to set up your environment for the benchmark.
$
$ cd /Volumes/ScratchVolume/spec/cpu2026/rc4/
$ source shrc

Note 1: The testing phase (the dots above) may take more time than it does to do the unpacking. This is normal.

Note 2:Immediately after the installation completed, the user obeyed the instruction to source the shrc file. See below.

At this point, the installation has consumed about 18 GB of disk space on the destination drive.

Test your installed copy

From this point forward, this Installation Guide walks you through basic testing of the installed copy, including compiling benchmarks and running them.

If you prefer to skip this part, perhaps because someone else has given you pre-compiled binaries, please note that you remain responsible for compliance with SPEC's Fair Use rule and the CPU 2026 run rules.

6. Set paths, using shrc or cshrc

Set paths: Use a path command from the table below. On Unix systems, determine whether you are using a C-compatible-shell (such as csh, tcsh) or a Bourne-compatible shell (such as sh, bash, ksh, zsh).

System shell Example Instructions
Unix C-shell
compatible
% cd /Users/Daniel/cpu2026
% source cshrc
cd to the directory where you installed your copy of SPEC CPU 2026 and say:
   source cshrc
Bourne
compatible
$ cd /Users/Daniel/cpu2026
$ source shrc

cd to the directory where you installed SPEC CPU 2026 and try:
    source shrc
If your shell is sufficiently old that it responds source: not found then try:

 . ./shrc     <--that's dot-space-dot-slash-shrc

7. Select a config file and try to build one benchmark

Find a Config File: You will need to select a config file. Config files contain details such as portability and optimization options. If you are a beginner, you will probably start with an existing config file. You can find one:

  1. In your installed copy of SPEC CPU 2026:

    $SPEC/config/Example*        (Unix) or
    %SPEC%\config\Example*       (Windows)
  2. At www.spec.org/cpu2026/results. Look for a system similar to yours, click the 'config' link.
  3. Or, write your own.

Name it:   Copy your selection to a new file in the config directory. Give it a name that does not use blanks. Hint: make the name something useful to *you*, for example:

$SPEC/config/SundarWantsYetAnotherTest.cfg

Edit the label:    Usually it is a good idea to edit the file and change the line that says:

label = something

or if there is no such line, then add one at the top. The label is an arbitrary tag that is added to your binaries and directories, which can come in very handy when you need to (for example) find your run directories, analyze a problem, and clean disk space. As with the config file name, make it something meaningful to *you*. No blanks are allowed.

Other Edits:

  1. Look for any locations marked EDIT and make changes as needed.
  2. Look for paths and adjust if needed (example: your compiler is in /opt/bin but the config file uses /usr/bin).
  3. Look for any commands in the config file, and verify that they will not cause surprises.

    Warning: SPEC CPU config files can execute arbitrary shell commands.
    Read a config file before using it.
    Don't be root. Don't run as Administrator. Turn privileges off.

Example: The go command is a handy utility for moving around in the installed tree. It is set up by shrc (or cshrc).

$ cd /Users/Daniel/0.91.1
$ source ./shrc
$ go config
/Users/Daniel/0.91.1/config
$ ls Example*
  [...many listed...]
$ cp Example-gcc-macos.cfg Galaga-1.cfg
   .
   . Use your favorite editor.  Look for places marked 'EDIT'.
   .
$ diff Example-gcc-macos.cfg Galaga-1.cfg
45c45
<    label   = mytest # EDIT
---
>    label   = Galaga_part1
$ 

You can see in the diff command above that the tester has chosen to tag binaries with the label Galaga_part1. You can set whatever string makes sense to you, to help you keep track of your work. You should consider all locations marked EDIT; some especially useful items include:

Try to build a single benchmark. Begin with a benchmark that compiles quickly, such as 706.stockfish_r.

$ runcpu --config=Galaga-1.cfg --action=build 706.stockfish_r
SPEC CPU 2026 Benchmark Suites
Copyright 1995-2026 Standard Performance Evaluation Corporation (SPEC)

runcpu (71193871)
Using 'macos-arm64' tools
Reading file manifests... read 64940 entries from 2 files in 0.06s (1024987 files/s)
Loading runcpu modules.................
Locating benchmarks...found 54 benchmarks in 82 benchsets.
Reading config file '/Volumes/ScratchVolume/spec/cpu2026/rc4/config/Galaga-1.cfg'
1 configuration selected:

Action   Benchmarks
------   ----------------------------------------------------------------------
build    706.stockfish_r
-------------------------------------------------------------------------------

Setting up environment for running 706.stockfish_r...
Starting runcpu for 706.stockfish_r...
Running "specperl /Volumes/ScratchVolume/spec/cpu2026/rc4/bin/sysinfo" to gather system information.
sysinfo: sysinfo 779ab21020787073335a329f3a45e2cd
sysinfo: ...getting basic information about kernel, users, and limits
sysinfo: Getting system information for macOS...
sysinfo: ...getting system info from system profiler
sysinfo: ...getting system info from sysctl
sysinfo: ...getting disk info
Retrieving flags file (/Volumes/ScratchVolume/spec/cpu2026/rc4/config/flags/gcc.xml)...
Benchmarks selected: 706.stockfish_r
Compiling Binaries
  Building 706.stockfish_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 14:45:43]

Build successes for intrate: 706.stockfish_r(base)
Build errors for intrate: None

Build Complete
The log for this run is in /Volumes/ScratchVolume/spec/cpu2026/rc4/result/CPU2026.002.log

runcpu finished at 2026-03-19 14:45:49; 7 total seconds elapsed
$

Did it work? Compare your output to the above.

If
the
above
succeeds

You have established that the SPEC CPU 2026 benchmark suite is installed and the tools can use your config file to find a "C++" compiler. Let us take a brief look (with go) at what the above command did:

$ go stockfish_r exe
/Users/Daniel/0.91.1/benchspec/CPU/706.stockfish_r/exe
$ ls
stockfish_base.Galaga_part1
$ go result
/Users/Daniel/0.91.1/result
$ ls *log
CPU2026.001.log
$ grep success CPU2026.001.log
Build successes for intrate: 706.stockfish_r(base)
$

Notice that:

  • An executable file has been created, using a label that was specified by the config file (Galaga-1.cfg). The label is just an arbitrary tag that you can use to help you keep track of your builds.
  • A log file is available: CPU2026.001.log
If
the
above
fails

Usually, failures happen if you start with a config file that is not intended for your operating system and compiler (About Config Files),
or if you have not installed the compiler,
or have not edited the config file to point to the compiler location.

If a file is mentioned with more information, please carefully examine it. Look on your screen for messages of the form
Error ... check file: /path/to/file.

You can use commands such as go to locate the log file and the build directory, and useful files within the build:

$ go result
/Users/Daniel/0.91.1/result
$ ls *log
CPU2026.001.log
$ go stockfish_r build
/Users/Daniel/0.91.1/benchspec/CPU/706.stockfish_r/build
$ ls
build_base_Galaga_part1.0000	list
$ cd build_base_Galaga_part1.0000/
$ ls *err *out
compiler-version.err	make.clean.out		options.err
compiler-version.out	make.out		options.out
$

8. Try compiling an entire suite, and run the test workload

The SPEC CPU 2026 benchmark suite contains 52 benchmarks which are divided into 4 suites:

Short
Tag
Suite Contents Metrics How many copies?
What do Higher Scores Mean?
intspeed SPECspeed®2026 Integer 13 integer benchmarks SPECspeed2026_int_base
SPECspeed2026_int_peak
SPECspeed suites always run one copy of each benchmark.
Higher scores indicate that less time is needed.
fpspeed SPECspeed®2026 Floating Point 13 floating point benchmarks SPECspeed2026_fp_base
SPECspeed2026_fp_peak
intrate SPECrate®2026 Integer 14 integer benchmarks SPECrate2026_int_base
SPECrate2026_int_peak
SPECrate suites run multiple concurrent copies of each benchmark.
The tester selects how many.
Higher scores indicate more throughput (work per unit of time).
fprate SPECrate®2026 Floating Point 12 floating point benchmarks SPECrate2026_fp_base
SPECrate2026_fp_peak
The "Short Tag" is the canonical abbreviation for use with runcpu, where context is defined by the tools. In a published document, context may not be clear.
To avoid ambiguity in published documents, the Suite Name or the Metrics should be spelled as shown above.

Let's pick a suite and build all the benchmarks in that suite. The command below,

$ runcpu --config=Galaga-1.cfg --size=test --copies=1 --noreportable  --iterations=1 intrate
SPEC CPU 2026 Benchmark Suites
Copyright 1995-2026 Standard Performance Evaluation Corporation (SPEC)

runcpu (71193871)
Using 'macos-arm64' tools
Reading file manifests... read 64940 entries from 2 files in 0.07s (992631 files/s)
Loading runcpu modules.................
Locating benchmarks...found 54 benchmarks in 82 benchsets.
Reading config file '/Volumes/ScratchVolume/spec/cpu2026/rc4/config/Galaga-1.cfg'
1 configuration selected:

 Action    Run Mode   Workload     Report Type      Benchmarks
--------   --------   --------   ----------------   ---------------------------
validate   rate       test       SPECrate2026_int   intrate
-------------------------------------------------------------------------------

Setting up environment for running intrate...
Starting runcpu for intrate...
Running "specperl /Volumes/ScratchVolume/spec/cpu2026/rc4/bin/sysinfo" to gather system information.
sysinfo: sysinfo 779ab21020787073335a329f3a45e2cd
sysinfo: ...getting basic information about kernel, users, and limits
sysinfo: Getting system information for macOS...
sysinfo: ...getting system info from system profiler
sysinfo: ...getting system info from sysctl
sysinfo: ...getting disk info
Retrieving flags file (/Volumes/ScratchVolume/spec/cpu2026/rc4/config/flags/gcc.xml)...
Benchmarks selected: 706.stockfish_r, 707.ntest_r, 708.sqlite_r, 710.omnetpp_r, 714.cpython_r, 721.gcc_r, 723.llvm_r, 727.cppcheck_r, 729.abc_r, 734.vpr_r, 735.gem5_r, 750.sealcrypto_r, 753.ns3_r, 777.zstd_r, 999.specrand_r
Compiling Binaries
  Up to date 706.stockfish_r base Galaga_part1 ...........706.stockfish_r was built previously; the others are buit now....................
  Building 707.ntest_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 14:47:08]
  Building 708.sqlite_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 14:47:11]
  Building 710.omnetpp_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 14:47:30]
  Building 714.cpython_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 14:48:07]
  Building 721.gcc_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 14:48:23]
  Building 723.llvm_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 14:50:12]
  Building 727.cppcheck_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 14:56:42]
  Building 729.abc_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 14:57:55]
  Building 734.vpr_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 14:59:02]
  Building 735.gem5_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 15:00:06]
  Building 750.sealcrypto_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 15:05:34]
  Building 753.ns3_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 15:05:41]
  Building 777.zstd_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 15:07:53]
  Building 999.specrand_r base Galaga_part1: (build_base_Galaga_part1.0000) [2026-03-19 15:07:57]

Build successes for intrate: 707.ntest_r(base), 708.sqlite_r(base), 710.omnetpp_r(base), 714.cpython_r(base), 721.gcc_r(base), 723.llvm_r(base), 727.cppcheck_r(base), 729.abc_r(base), 734.vpr_r(base), 735.gem5_r(base), 750.sealcrypto_r(base), 753.ns3_r(base), 777.zstd_r(base), 999.specrand_r(base)
Build errors for intrate: None

Setting Up Run Directories  ...................Each gets its own run directory....................
  Setting up 706.stockfish_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 707.ntest_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 708.sqlite_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 710.omnetpp_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 714.cpython_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 721.gcc_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 723.llvm_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 727.cppcheck_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 729.abc_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 734.vpr_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 735.gem5_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 750.sealcrypto_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 753.ns3_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 777.zstd_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
  Setting up 999.specrand_r test base Galaga_part1 (1 copy): run_base_test_Galaga_part1.0000
Running Benchmarks ....................Build and setup are complete; the runs begin....................
  Running 706.stockfish_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:06]
  Running 707.ntest_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:08]
  Running 708.sqlite_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:09]
  Running 710.omnetpp_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:10]
  Running 714.cpython_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:11]
  Running 721.gcc_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:12]
  Running 723.llvm_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:13]
  Running 727.cppcheck_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:14]
  Running 729.abc_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:24]
  Running 734.vpr_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:25]
  Running 735.gem5_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:34]
  Running 750.sealcrypto_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:36]
  Running 753.ns3_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:40]
  Running 777.zstd_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:42]
  Running 999.specrand_r test base Galaga_part1 (1 copy) [2026-03-19 15:08:43]
Success: 1x706.stockfish_r 1x707.ntest_r 1x708.sqlite_r 1x710.omnetpp_r 1x714.cpython_r 1x721.gcc_r 1x723.llvm_r 1x727.cppcheck_r 1x729.abc_r 1x734.vpr_r 1x735.gem5_r 1x750.sealcrypto_r 1x753.ns3_r 1x777.zstd_r 1x999.specrand_r
Producing Raw Reports
 label: Galaga_part1
  workload: test
   metric: SPECrate2026_int_base
    format: raw -> /Volumes/ScratchVolume/spec/cpu2026/rc4/result/CPU2026.003.intrate.test.rsf
     The above file contains the "raw" results. It is the most important output file.
     The reporter now produces human-readable results (which can be easily re-generated anytime without re-running tests).
     The process begins by recognizing the compiler options ("flags") for each benchmark.
Parsing flags for 706.stockfish_r base: done
Parsing flags for 707.ntest_r base: done
Parsing flags for 708.sqlite_r base: done
Parsing flags for 710.omnetpp_r base: done
Parsing flags for 714.cpython_r base: done
Parsing flags for 721.gcc_r base: done
Parsing flags for 723.llvm_r base: done
Parsing flags for 727.cppcheck_r base: done
Parsing flags for 729.abc_r base: done
Parsing flags for 734.vpr_r base: done
Parsing flags for 735.gem5_r base: done
Parsing flags for 750.sealcrypto_r base: done
Parsing flags for 753.ns3_r base: done
Parsing flags for 777.zstd_r base: done
Doing flag reduction: done
    format: flags -> /Volumes/ScratchVolume/spec/cpu2026/rc4/result/CPU2026.003.intrate.test.flags.html
    format: cfg -> /Volumes/ScratchVolume/spec/cpu2026/rc4/result/CPU2026.003.intrate.test.cfg
    format: CSV -> /Volumes/ScratchVolume/spec/cpu2026/rc4/result/CPU2026.003.intrate.test.csv
    format: PDF -> /Volumes/ScratchVolume/spec/cpu2026/rc4/result/CPU2026.003.intrate.test.pdf
    format: HTML -> /Volumes/ScratchVolume/spec/cpu2026/rc4/result/CPU2026.003.intrate.test.html, /Volumes/ScratchVolume/spec/cpu2026/rc4/result/invalid.gif
    format: Text -> /Volumes/ScratchVolume/spec/cpu2026/rc4/result/CPU2026.003.intrate.test.txt
The log for this run is in /Volumes/ScratchVolume/spec/cpu2026/rc4/result/CPU2026.003.log

runcpu finished at 2026-03-19 15:08:51; 1304 total seconds elapsed
$ 

Note above that compiling the SPECrate®2026 Integer benchmarks and running the brief test workload took about 1.5 hours (4906 seconds) on the tested system, which is a 6-year-old laptop with 6 cores. By contrast, doing the same thing on a Linux server system with 16 cores required 22 minutes.

Your time may be considerably different, depending on your available resources. The time required to do a build also depends directly upon the config file optimization selections.

9. Try a full (reportable) run

If everything has worked up to this point, you may want to start a reportable run, perhaps leaving your computer to run overnight. Important: review how many CPUs are used by the config file, and adjust as needed. As explained in the System Requirements, both SPECrate® and SPECspeed® can test multiple chips / cores / hardware threads:

Check how many processors are on your system; also check the memory requirements (which differ depending on what you are testing).

Example 1: A macOS laptop has 6 cores:

$ /usr/sbin/system_profiler SPHardwareDataType | grep Cores
      Total Number of Cores: 6

Example 2: A Linux server has 2 chips, 96 cores, and 192 hardware threads:

$ lscpu | grep NUMA
NUMA node(s):                 2
NUMA node0 CPU(s):            0-47,96-143
NUMA node1 CPU(s):            48-95,144-191

The tester decides to run 4 copies for a SPECrate Integer test. (Note: the tested system in this case differs from the system in the previous sections.)

$ diff Example-gcc-linux-x86.cfg mahesh-try1.cfg | grep copies
<    copies        = 1       # EDIT to change number of copies (see above)
>    copies        = 4       # EDIT to change number of copies (see above) 

If you have not already done so, you should also edit your config file to describe the system under test. See config.html for information on the various fields for the human who reads your results. The Example config files have a section to get you started.

The run is started, using the reportable option:

$ runcpu -c mahesh-try1.cfg --reportable intrate

SPEC CPU 2026 Benchmark Suites
Copyright 1995-2025 Standard Performance Evaluation Corporation (SPEC)

runcpu (8e797ad4)
Using 'macos-arm64' tools
Reading file manifests... read 63673 entries from 2 files in 0.14s (468259 files/s)
Loading runcpu modules.................
Locating benchmarks...found 55 benchmarks in 101 benchsets.
Reading config file '/spec/0.91.1/config/mahesh-try1.cfg'
1 configuration selected:

 Action    Run Mode   Workload     Report Type       Benchmarks
--------   --------   --------   -----------------   ----------------------------
validate   rate       refrate    SPECrate_2026_int   intrate
Downloading update information for version check...
NOTICE: Could not retrieve update metadata;got
  Not Found

...Version check failed.
          A connection to the internet is useful, but is NOT required
          in order to run CPU 2026.  If one is available, several
          components will be checked to see if they are current.  If
          you need to use an HTTP proxy to access the Internet, please
          see the 'http_proxy' entry in config.html.

                       ----------------------------------
                       The run will continue in 5 seconds
                       ----------------------------------
            The above message is normal if you do not have an internet connection. 
Reportable runs must include a 'test' run; adding to run list
Reportable runs must include a 'train' run; adding to run list
-------------------------------------------------------------------------------

Setting up environment for running intrate...
Starting runcpu for intrate...
Running "specperl /spec/mahesh/0.91.1/bin/sysinfo" to gather system information.
sysinfo: sysinfo d5f8a7f8757b5a16c0a7cf097db6c5f6
sysinfo: ...getting basic information about kernel, users, and limits
sysinfo: Getting system information for Linux...
sysinfo: ...getting CPU info
sysinfo: ...getting info from numactl
sysinfo: ...getting memory info
sysinfo: ...getting info from systemd
sysinfo: ...getting power info
sysinfo: ...getting system tuning info
sysinfo: ...getting OS info
sysinfo: ...getting CPU vulnerability status from the kernel
sysinfo: ...getting disk info
sysinfo: ...getting info from /sys/devices/virtual/dmi/id
sysinfo: ...getting info from dmidecode
Retrieving flags file (/spec/mahesh/0.91.1/config/flags/gcc.xml)...
Reportable runs must include a 'test' run; adding to run list
Reportable runs must include a 'train' run; adding to run list
Benchmarks selected: 706.stockfish_r, 707.ntest_r, 708.sqlite_r, 710.omnetpp_r, 714.cpython_r, 721.gcc_r, 723.llvm
_r, 727.cppcheck_r, 729.abc_r, 734.vpr_r, 735.gem5_r, 750.sealcrypto_r, 753.ns3_r, 760.rocksdb_r, 777.zstd_r
Notice: Errors may not be ignored for reportable runs.
Compiling Binaries
  Up to date 706.stockfish_r base mahesh_1
  Up to date 707.ntest_r base mahesh_1
  Up to date 708.sqlite_r base mahesh_1
  Up to date 710.omnetpp_r base mahesh_1
  Up to date 714.cpython_r base mahesh_1
  Up to date 721.gcc_r base mahesh_1
  Up to date 723.llvm_r base mahesh_1
  Up to date 727.cppcheck_r base mahesh_1
  Up to date 729.abc_r base mahesh_1
  Up to date 734.vpr_r base mahesh_1
  Up to date 735.gem5_r base mahesh_1
  Up to date 750.sealcrypto_r base mahesh_1
  Up to date 753.ns3_r base mahesh_1
  Up to date 760.rocksdb_r base mahesh_1
  Up to date 777.zstd_r base mahesh_1

 ................Note that reportable runs use all three sizes.....................
Running Benchmarks (up to 4 concurrent processes)
  Starting runcpu for 706.stockfish_r test base mahesh_1
  Starting runcpu for 707.ntest_r test base mahesh_1
  Starting runcpu for 708.sqlite_r test base mahesh_1
  Starting runcpu for 710.omnetpp_r test base mahesh_1
  Starting runcpu for 714.cpython_r test base mahesh_1
  Starting runcpu for 721.gcc_r test base mahesh_1
  Starting runcpu for 723.llvm_r test base mahesh_1
  Starting runcpu for 727.cppcheck_r test base mahesh_1
  Starting runcpu for 729.abc_r test base mahesh_1
  Starting runcpu for 734.vpr_r test base mahesh_1
  Starting runcpu for 735.gem5_r test base mahesh_1
  Starting runcpu for 750.sealcrypto_r test base mahesh_1
  Starting runcpu for 753.ns3_r test base mahesh_1
  Starting runcpu for 760.rocksdb_r test base mahesh_1
  Starting runcpu for 777.zstd_r test base mahesh_1
Waiting for running processes to finish...

Benchmarks selected: 706.stockfish_r, 707.ntest_r, 708.sqlite_r, 710.omnetpp_r, 714.cpython_r, 721.gcc_r, 723.llvm
_r, 727.cppcheck_r, 729.abc_r, 734.vpr_r, 735.gem5_r, 750.sealcrypto_r, 753.ns3_r, 760.rocksdb_r, 777.zstd_r
Notice: Errors may not be ignored for reportable runs.
Compiling Binaries
  Up to date 706.stockfish_r base mahesh_1
  Up to date 707.ntest_r base mahesh_1
  Up to date 708.sqlite_r base mahesh_1
  Up to date 710.omnetpp_r base mahesh_1
  Up to date 714.cpython_r base mahesh_1
  Up to date 721.gcc_r base mahesh_1
  Up to date 723.llvm_r base mahesh_1
  Up to date 727.cppcheck_r base mahesh_1
  Up to date 729.abc_r base mahesh_1
  Up to date 734.vpr_r base mahesh_1
  Up to date 735.gem5_r base mahesh_1
  Up to date 750.sealcrypto_r base mahesh_1
  Up to date 753.ns3_r base mahesh_1
  Up to date 760.rocksdb_r base mahesh_1
  Up to date 777.zstd_r base mahesh_1


Running Benchmarks (up to 4 concurrent processes)
  Starting runcpu for 706.stockfish_r train base mahesh_1
  Starting runcpu for 707.ntest_r train base mahesh_1
  Starting runcpu for 708.sqlite_r train base mahesh_1
  Starting runcpu for 710.omnetpp_r train base mahesh_1
  Starting runcpu for 714.cpython_r train base mahesh_1
  Starting runcpu for 721.gcc_r train base mahesh_1
  Starting runcpu for 723.llvm_r train base mahesh_1
  Starting runcpu for 727.cppcheck_r train base mahesh_1
  Starting runcpu for 729.abc_r train base mahesh_1
  Starting runcpu for 734.vpr_r train base mahesh_1
  Starting runcpu for 735.gem5_r train base mahesh_1
  Starting runcpu for 750.sealcrypto_r train base mahesh_1
  Starting runcpu for 753.ns3_r train base mahesh_1
  Starting runcpu for 760.rocksdb_r train base mahesh_1
  Starting runcpu for 777.zstd_r train base mahesh_1
Waiting for running processes to finish...

Benchmarks selected: 706.stockfish_r, 707.ntest_r, 708.sqlite_r, 710.omnetpp_r, 714.cpython_r, 721.gcc_r, 723.llvm
_r, 727.cppcheck_r, 729.abc_r, 734.vpr_r, 735.gem5_r, 750.sealcrypto_r, 753.ns3_r, 760.rocksdb_r, 777.zstd_r
Notice: 706.stockfish_r has 1 iteration.
        This is not correct for a reportable run.  Changing iterations to 2
        for ALL benchmarks.
Notice: Errors may not be ignored for reportable runs.
Compiling Binaries
  Up to date 706.stockfish_r base mahesh_1
  Up to date 707.ntest_r base mahesh_1
  Up to date 708.sqlite_r base mahesh_1
  Up to date 710.omnetpp_r base mahesh_1
  Up to date 714.cpython_r base mahesh_1
  Up to date 721.gcc_r base mahesh_1
  Up to date 723.llvm_r base mahesh_1
  Up to date 727.cppcheck_r base mahesh_1
  Up to date 729.abc_r base mahesh_1
  Up to date 734.vpr_r base mahesh_1
  Up to date 735.gem5_r base mahesh_1
  Up to date 750.sealcrypto_r base mahesh_1
  Up to date 753.ns3_r base mahesh_1
  Up to date 760.rocksdb_r base mahesh_1
  Up to date 777.zstd_r base mahesh_1


Setting Up Run Directories ......................Note that 4 directories are set up for each benchmark, one per copy......................
  Setting up 706.stockfish_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 707.ntest_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 708.sqlite_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 710.omnetpp_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 714.cpython_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 721.gcc_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 723.llvm_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 727.cppcheck_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 729.abc_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 734.vpr_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 735.gem5_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 750.sealcrypto_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 753.ns3_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 760.rocksdb_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
  Setting up 777.zstd_r refrate (ref) base mahesh_1 (4 copies): run_base_refrate_mahesh_1.0000-0003
Running Benchmarks ......................The timed portion begins.......................
  Running (#1) 706.stockfish_r refrate (ref) base mahesh_1 (4 copies) [2025-10-15 23:42:58]
  Running (#1) 707.ntest_r refrate (ref) base mahesh_1 (4 copies) [2025-10-15 23:45:49]
  Running (#1) 708.sqlite_r refrate (ref) base mahesh_1 (4 copies) [2025-10-15 23:49:05]
  Running (#1) 710.omnetpp_r refrate (ref) base mahesh_1 (4 copies) [2025-10-15 23:53:00]
  Running (#1) 714.cpython_r refrate (ref) base mahesh_1 (4 copies) [2025-10-15 23:55:40]
  Running (#1) 721.gcc_r refrate (ref) base mahesh_1 (4 copies) [2025-10-15 23:57:55]
  Running (#1) 723.llvm_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:02:16]
  Running (#1) 727.cppcheck_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:05:45]
  Running (#1) 729.abc_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:08:17]
  Running (#1) 734.vpr_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:11:01]
  Running (#1) 735.gem5_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:13:55]
  Running (#1) 750.sealcrypto_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:16:19]
  Running (#1) 753.ns3_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:19:40]
  Running (#1) 760.rocksdb_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:22:45]
  Running (#1) 777.zstd_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:26:19]
  ......................Reportable runs must run either 2 or 3 times. The second run begins......................
  Running (#2) 706.stockfish_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:30:54]
  Running (#2) 707.ntest_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:33:41]
  Running (#2) 708.sqlite_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:36:58]
  Running (#2) 710.omnetpp_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:40:49]
  Running (#2) 714.cpython_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:43:30]
  Running (#2) 721.gcc_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:45:43]
  Running (#2) 723.llvm_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:49:57]
  Running (#2) 727.cppcheck_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:53:25]
  Running (#2) 729.abc_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:55:56]
  Running (#2) 734.vpr_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 00:58:43]
  Running (#2) 735.gem5_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 01:01:41]
  Running (#2) 750.sealcrypto_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 01:04:06]
  Running (#2) 753.ns3_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 01:07:27]
  Running (#2) 760.rocksdb_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 01:10:31]
  Running (#2) 777.zstd_r refrate (ref) base mahesh_1 (4 copies) [2025-10-16 01:14:07]
Success: 2x706.stockfish_r 2x707.ntest_r 2x708.sqlite_r 2x710.omnetpp_r 2x714.cpython_r 2x721.gcc_r 2x723.llvm_r 2
x727.cppcheck_r 2x729.abc_r 2x734.vpr_r 2x735.gem5_r 2x750.sealcrypto_r 2x753.ns3_r 2x760.rocksdb_r 2x777.zstd_r
Producing Raw Reports
 label: mahesh_1
  workload: refrate (ref)
   metric: SPECrate_2026_int_base
    format: raw -> /spec/mahesh/0.91.1/result/CPU2026.007.intrate.rsf
Parsing flags for 706.stockfish_r base: done
Parsing flags for 707.ntest_r base: done
Parsing flags for 708.sqlite_r base: done
Parsing flags for 710.omnetpp_r base: done
Parsing flags for 714.cpython_r base: done
Parsing flags for 721.gcc_r base: done
Parsing flags for 723.llvm_r base: done
Parsing flags for 727.cppcheck_r base: done
Parsing flags for 729.abc_r base: done
Parsing flags for 734.vpr_r base: done
Parsing flags for 735.gem5_r base: done
Parsing flags for 750.sealcrypto_r base: done
Parsing flags for 753.ns3_r base: done
Parsing flags for 760.rocksdb_r base: done
Parsing flags for 777.zstd_r base: done
Doing flag reduction: done
    format: flags -> /spec/mahesh/0.91.1/result/CPU2026.007.intrate.flags.html
    format: cfg -> /spec/mahesh/0.91.1/result/CPU2026.007.intrate.cfg
    format: CSV -> /spec/mahesh/0.91.1/result/CPU2026.007.intrate.csv
    format: PDF -> /spec/mahesh/0.91.1/result/CPU2026.007.intrate.pdf
    format: HTML -> /spec/mahesh/0.91.1/result/CPU2026.007.intrate.html
    format: Text -> /spec/mahesh/0.91.1/result/CPU2026.007.intrate.txt

The log for this run is in /spec/mahesh/0.91.1/result/CPU2026.007.log

runcpu finished at 2025-10-16 01:18:55; 6143 total seconds elapsed
$

The run completed successfully. On this particular system, a 4-copy reportable intrate run, using base-only tuning, required about 1.7 hours (6143 seconds). More time would be needed if the run used both base and peak tuning, or used more copies, or asked for additional suites (fprate, intspeed, or fpspeed).

Appendix 1: Uninstalling SPEC CPU 2026 Benchmark Suite

At this time, SPEC does not provide an uninstall utility for the SPEC CPU 2026 benchmark suite. Confusingly, there is a file named uninstall.sh in the top directory, but it does not remove the whole product; it only removes the SPEC CPU tool set, and does not affect the benchmarks (which consume the bulk of the disk space).

To remove SPEC CPU 2026 on Windows systems, select the top directory in Windows Explorer and delete it.

To remove SPEC CPU 2026 on *nix systems, use rm -Rf on the directory where you installed the suite, for example:

  rm -Rf /home/klaus/spec/cpu2026

If you have been using the output_root feature, you will have to track those down separately. Therefore, prior to removing the tree, you might want to look for mentions of output root, for example:

Windows:
    cd %SPEC%\config
    findstr output_root *cfg

Unix:
    cd $SPEC/config
    grep output_root *cfg

Note: instead of deleting the entire directory tree, some users find it useful to keep the config and result subdirectories, while deleting everything else.

Appendix 2: Installing from a tarfile

If you are unable to mount the ISO image on the system where you want to install the SPEC CPU 2026 benchmark suite (perhaps because you lack root privileges), you may use the following alternative.

Example: In this example, the ISO image is mounted on a macOS laptop. The destination system for the SPEC CPU 2026 benchmark suite is a Linux system.

mac$ open cpu2026.iso
mac$ cd /Volumes/SPEC_CPU2026/
mac$ scp install_archives/cpu2026.tar.xz* agjay07: 
james@agjay07's password:
cpu2026.tar.xz                              100% 1161MB   4.0MB/s   04:48
cpu2026.tar.xz.sha256                       100%  143     0.1KB/s   00:00

mac$ scp tools/bin/linux-x86_64/spec* agjay07: 
james@agjay07's password:
specsha256sum                               100%   71KB  71.5KB/s   00:00
spectar                                     100%  503KB 502.7KB/s   00:00
specxz                                      100%  219KB 219.5KB/s   00:00
mac$
mac$ ssh agjay07
james@agjay07's password:
Last login: Fri Jul 15 13:56:27 2016
lx>
lx> specsha256sum -c cpu2026.tar.xz.sha256 
cpu2026.tar.xz: OK
lx> mkdir cpu2026
lx> cd cpu2026
lx> ../specxz -dc ../cpu2026.tar.xz | ../spectar -xf -
lx> ./install.sh 

SPEC CPU2026 Installation

Top of the CPU2026 tree is '/home/james/cpu2026'

Installing FROM /home/james/cpu2026
Installing TO /home/james/cpu2026

Is this correct? (Please enter 'yes' or 'no')
yes

... and so forth, as described in Step 5, above.

Installing SPEC CPU®2026 on Unix Systems Including: AIX, Linux, macOS, and similar systems: Copyright © 2017-2026 Standard Performance Evaluation Corporation (SPEC®)