Installing and running the SPEC CPU®2026 benchmark suite on Android Systems

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

Contents

1. Review Prerequisites

2. Test Android Debug Bridge (adb)

3. Install the SPEC CPU 2026 benchmark suite on the host development machine

4. Build the SPEC CPU 2026 Android binaries on the host development machine

5. Copy the SPEC CPU 2026 software to the target Android device

6. Install the SPEC CPU 2026 benchmark suite on the target Android device

7. Run the SPEC CPU 2026 benchmark suite on the target Android device

This document describes how to install and run SPEC CPU®2026 benchmark suite on Android systems. SPEC CPU 2026 benchmark is a product of the SPEC® non-profit corporation (about SPEC).

Reminder: SPEC benchmarks are licensed software.

1. Review Prerequisites

Two different systems are required:

Android Debug Bridge is required (see Test Android Debug Bridge section).

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

As of early 2026, Android devices with 16 GB of memory and 128 GB of storage are able to run the SPEC CPU 2026 intrate suite with 1 or more copies.

2. Test Android Debug Bridge (adb)

Android Debug Bridge (adb) is required.

  1. On the host development machine, install adb - using your usual package manager. For example, a Debian user might use:
    devhost ~ % apt-get install adb 
  2. On the target Android device, enable adb - click in developer options, enable USB debugging

  3. Physically connect the host development machine and the target Android device, for example via USB.

  4. Test adb

  5. Check Android documentation: https://developer.android.com/tools/adb

3. Install the SPEC CPU 2026 benchmark suite on the host development machine

See the install guide for Linux/Unix: install-guide-unix.html

4. Build the SPEC CPU 2026 Android binaries on the host development machine

  1. Download Android NDK on the host development machine: https://developer.android.com/ndk
    This install guide assumes that the host development machine is an x86 Linux machine.

  2. On the host development machine, copy the example config file. Search it for all instances of "EDIT" and adjust as needed. In particular please take note and consider adjusting:

    devhost ~/cpu2026 % cd config
    devhost ~/cpu2026/config % cp Example-android-ndk-aarch64.cfg android-ndk-aarch64.cfg
    devhost ~/cpu2026/config % vi android-ndk-aarch64.cfg # Search for all lines marked EDIT 
  3. Build the SPEC CPU 2026 Android binaries using the SPEC CPU installation on the host development machine:
    devhost ~/cpu2026 % source shrc
    devhost ~/cpu2026 % runcpu --action=build --config=android-ndk-aarch64 --tune=base intrate 
    Expand example output
    SPEC CPU 2026 Benchmark Suites
    Copyright 1995-2026 Standard Performance Evaluation Corporation (SPEC)
    
    runcpu (020914af)
    Using 'linux-x86_64' tools
    
    Loading runcpu modules.................
    Locating benchmarks...found 54 benchmarks in 82 benchsets.
    Reading config file '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1/config/android-ndk-aarch64.cfg'
    Running "specperl /home/ajay/SPEC/CPUv8/cpu2026-0.902.1/bin/sysinfo -f" to gather system information.
    sysinfo: sysinfo 069f95da7e7f5d81b2ce48a82150e54f
    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 disk info
    sysinfo: ...getting info from /sys/devices/virtual/dmi/id
    sysinfo: ...getting info from dmidecode
    Retrieving flags file (/home/ajay/SPEC/CPUv8/cpu2026-0.902.1/config/flags/llvm.xml)...
    1 configuration selected:
    
    Action   Benchmarks
    ------   ----------------------------------------------------------------------
    build    intrate
    -------------------------------------------------------------------------------
    
    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
      Building 706.stockfish_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 16:52:20]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/706.stockfish_r/build/build_base_android-ndk.0000' after successful build of 706.stockfish_r base android-ndk
      Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/706.stockfish_r/build/build_base_android-ndk.0000' after successful build of 706.stockfish_r base android-ndk
      Building 707.ntest_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 16:52:25]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/707.ntest_r/build/build_base_android-ndk.0000' after successful build of 707.ntest_r base android-ndk
      Building 708.sqlite_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 16:52:30]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/708.sqlite_r/build/build_base_android-ndk.0000' after successful build of 708.sqlite_r base android-ndk
      Building 710.omnetpp_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 16:52:47]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/710.omnetpp_r/build/build_base_android-ndk.0000' after successful build of 710.omnetpp_r base android-ndk
      Building 714.cpython_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 16:53:35]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/714.cpython_r/build/build_base_android-ndk.0000' after successful build of 714.cpython_r base android-ndk
      Building 721.gcc_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 16:54:11]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/721.gcc_r/build/build_base_android-ndk.0000' after successful build of 721.gcc_r base android-ndk
      Building 723.llvm_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 16:59:21]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/723.llvm_r/build/build_base_android-ndk.0000' after successful build of 723.llvm_r base android-ndk
      Building 727.cppcheck_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 17:11:05]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/727.cppcheck_r/build/build_base_android-ndk.0000' after successful build of 727.cppcheck_r base android-ndk
      Building 729.abc_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 17:14:15]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/729.abc_r/build/build_base_android-ndk.0000' after successful build of 729.abc_r base android-ndk
      Building 734.vpr_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 17:16:19]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/734.vpr_r/build/build_base_android-ndk.0000' after successful build of 734.vpr_r base android-ndk
      Building 735.gem5_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 17:17:52]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/735.gem5_r/build/build_base_android-ndk.0000' after successful build of735.gem5_r base android-ndk
      Building 750.sealcrypto_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 17:23:28]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/750.sealcrypto_r/build/build_base_android-ndk.0000' after successful build of 750.sealcrypto_r base android-ndk
      Building 753.ns3_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 17:23:37]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/753.ns3_r/build/build_base_android-ndk.0000' after successful build of 753.ns3_r base android-ndk
      Building 777.zstd_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 17:28:09]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/777.zstd_r/build/build_base_android-ndk.0000' after successful build of 777.zstd_r base android-ndk
      Building 999.specrand_r base android-ndk: (build_base_android-ndk.0000) [2026-02-17 17:28:14]
       Clearing directory '/home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/benchspec/CPU/999.specrand_r/build/build_base_android-ndk.0000' after successful build of 999.specrand_r base android-ndk
    
    Build successes for fprate: 706.stockfish_r(base), 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 fprate: None
    
    Build Complete
    The log for this run is in /home/ajay/SPEC/CPUv8/cpu2026-0.902.1-android-ndk/result/CPU2026.001.log
    
    runcpu finished at 2026-02-17 17:28:17; 2160 total seconds elapsed
        
  4. Check the content of the output_root directory named cpu2026-android-ndk on the host development machine:

5. Copy the SPEC CPU 2026 software to the target Android device

The SPEC CPU 2026 benchmark suite can be installed from a tar file, as described in Appendix 2 of the Unix installation guide. That tar file will be used for the installation on the Android device.

  1. On the host development machine terminal, open a remote shell to the target Android device and create a working directory on the target Android device:
    devhost ~ % adb shell
    DEVICENAME $ mkdir -p /data/local/tmp/spec 
  2. On the host development machine, find your copy of the SPEC CPU 2026 tar file from your ISO image. For example, if you have mounted the ISO image at /mnt/ then you should find it at /mnt/install_archives/cpu2026.tar.xz.

  3. Push the tar file to the working directory in the target Android device:
    devhost ~ % cd /mnt
    devhost /mnt % adb push install_archives/cpu2026.tar.xz /data/local/tmp/spec/ 
  4. Push the Android-compatible specxz tool to the working directory in the target Android device:
    devhost /mnt % adb push tools/bin/linux-aarch64-static/specxz /data/local/tmp/spec/ 
  5. Check the content of your working directory on the target Android device:
    devhost ~ % adb shell
    DEVICENAME $ ls /data/local/tmp/spec
    cpu2026.tar.xz
    specxz 

6. Install the SPEC CPU 2026 benchmark suite on the target Android device

  1. Connect to the target Android device using adb and go to your working directory:
    devhost ~ % adb shell
    DEVICENAME $ cd /data/local/tmp/spec
    DEVICENAME:/data/local/tmp/spec $
          
  2. Extract the software from the SPEC CPU 2026 tar file on the target Android device:
    DEVICENAME:/data/local/tmp/spec $ chmod u+x specxz
    DEVICENAME:/data/local/tmp/spec $ mkdir cpu2026
    DEVICENAME:/data/local/tmp/spec $ cd cpu2026
    DEVICENAME:/data/local/tmp/spec $ ../specxz -dc ../cpu2026.tar.xz | tar xf -
          
  3. Run the installer on the target Android device:
    DEVICENAME:/data/local/tmp/spec/cpu2026 $ ./install.sh -u linux-aarch64-static
          
    Note: The toolset must be explicitly named. Running install.sh in auto mode will not find the Android-compatible tools.
  4. Check the installation of the SPEC CPU 2026 suite on the target Android device:
    DEVICENAME:/data/local/tmp/spec/cpu2026 $ source shrc
    DEVICENAME:/data/local/tmp/spec/cpu2026 $ runcpu -V
          

7. Run the SPEC CPU 2026 benchmark suite on the target Android device

  1. From the host development machine, push the SPEC CPU 2026 binaries stored in the output_root (in this example, named cpu2026-android-ndk) to the working directory on the target Android device:
    devhost ~ % adb push cpu2026-android-ndk /data/local/tmp/spec/ 
  2. From the host development machine, push the android-ndk-aarch64.cfg config file used to build the binaries to the installed SPEC CPU directory on target Android device:
    devhost ~ % adb push cpu2026/config/android-ndk-aarch64.cfg  /data/local/tmp/spec/cpu2026/config/ 
  3. On the target Android device, run the SPEC CPU 2026 benchmark suite:
    DEVICENAME:/data/local/tmp/spec/cpu2026 $ source shrc
    DEVICENAME:/data/local/tmp/spec/cpu2026 $ runcpu --nobuild --config=android-ndk-aarch64 --copies=1 intrate 
    Notice above that it is suggested that you specify --nobuild because that will ensure that the runcpu command will exit immediately if it does not find your benchmark binaries. If that happens, check your paths and verify that the binaries are located where the config file expects to find them. For example, if the config file specifies output_root=X, then directories of the form X/benchspec/CPU/nnn.benchmark/exe/ should contain your binaries.

Installing SPEC CPU®2026 on Android Systems: Copyright © 2026 Standard Performance Evaluation Corporation (SPEC®)