| Latest: www.spec.org/cpu2026/Docs/ |
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.
To prepare for the installation, please follow these steps:
Review the System Requirements. Please particularly notice the requirements for:
If you haven't already done so, start a terminal window now.
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. |
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.
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:
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
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.
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
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.
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.
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.
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:
. ./shrc <--that's dot-space-dot-slash-shrc
|
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:
In your installed copy of SPEC CPU 2026:
$SPEC/config/Example* (Unix) or %SPEC%\config\Example* (Windows)
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:
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:
|
| 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),
If a file is mentioned with more information, please carefully examine it. Look on your screen for messages of
the form 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 $ |
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.
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).
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.
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.
Do one of these two:
Retrieve 5 things from the image:
Copy the above 5 to the system where you wish to install the SPEC CPU 2026 benchmark suite. Be sure that your copy method does not change the files (for example, you might need to select a binary transmission mode.)
Use specsha256sum to verify the checksum of the large archive and then use specxz and spectar to unpack it. NOTE that you should not use your own system tar unless you are sure that it can handle long directory paths.
Then, start install.shas described in Step 5, above.
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®)