Skip to content

Run SPEC CPU2006 on Linux with either an Intel, ARM, or PowerPC processors.

Notifications You must be signed in to change notification settings

sjp38/CPU2006-Express

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Benchmarking

This harness performs SPEC CPU2006 benchmarking using GCC. Capabilities include in installing prerequisites, building and installing SPEC CPU2006, and running reportable integer and floating-point runs.

Contents:

Download:

To download these files, first install git:

sudo yum install git

Or if you are using a Debian-based distribution:

sudo apt-get install git

Clone this repository:

sudo git clone https://github.com/ryanspoone/cpu2006-express.git

Change directories and run this script:

cd cpu2006-express/
sudo chmod +x cpu2006express.sh
sudo ./cpu2006express.sh

Usage:

Change to directory where files are, then start benchmarking by issuing the following command:

For a full run:

sudo ./cpu2006express.sh -c

Customized run:

sudo ./cpu2006express.sh [OPTIONS]

Where the options are:

Option          GNU long option         Meaning
   -h             --help                  Show this message
   -r             --rebuild               Force SPEC CPU2006 rebuild and installation
   -o             --onecopy               Do a single copy run
   -i             --int                   Run integer
   -f             --fp                    Run floating-point
   -c             --complete              Do a complete run (int and fp) with defaults
   -p             --prereq                Install prerequisites
   -q             --quiet                 Show less detailed information

Supported Systems:

Intel

  • core2
  • nehalem
  • westmere
  • sandybridge
  • ivybridge
  • haswell
  • broadwell
  • bonnell
  • silvermont
  • corei7
  • corei7-avx
  • core-avx-i
  • core-avx2
  • atom

ARM

  • armv8-a
  • armv7-a
  • cortex-a9
  • cortex-a15
  • marvell-pj4
  • generic
  • xgene1
  • thunderx
  • cortex-a72
  • cortex-a57
  • cortex-a53

PowerPC

  • power8
  • power7
  • powerpc
  • powerpc64
  • rs64

Tested Systems:

  • ARM
    • 64-bit
      • X-Gene 1
    • 32-bit
      • Cortex-a15
  • Intel
    • 64-bit
      • Ivybridge
      • Haswell
      • Broadwell
  • PowerPC
    • 64-bit
      • Power8

Required file tree:

|-- config
|   |-- linux32-arm32-gcc.cfg
|   |-- linux32-intel32-gcc.cfg
|   |-- linux64-arm64-gcc.cfg
|   |-- linux64-intel64-gcc.cfg
|   `-- linux64-powerpc-gcc.cfg
|
|-- bin
|   |-- setup.sh
|   |-- spinner.sh
|   `-- user_input.sh
|
|-- cpu2006-*.tar* (You provide this file)
|
 `-- cpu2006express.sh

TODO:

  1. Add ICC support
  2. Add flags

Adding Additional Systems:

If your system isn't being detected:

  1. Add something simpler to this below line 174 in the cpu2006express.sh file:

    • Change YOUR_SYSTEM_KEYWORD to the keyword infront of your processor name in the /proc/cpuinfo file.

############################################################

If CPU is still empty

This is mainly for X systems

Example: X

############################################################ if [ -z "$CPU" ]; then CPU=$(grep 'YOUR_SYSTEM_KEYWORD' /proc/cpuinfo | uniq | sed 's/YOUR_SYSTEM_KEYWORD\s*:\s//g') fi

2. Add something simpler to this below line **`287`** in the **`cpu2006express.sh`** file:
+ Change ***`YOUR_SYSTEM`*** to your processor name in the **`/proc/cpuinfo`** file.
+ Change ***`YOUR_SYSTEM_CONFIG`*** to your config file name.

```bash
elif [[ $CPU == *'YOUR_SYSTEM'* ]]; then
 export GCC_CONFIG='YOUR_SYSTEM_CONFIG'
  1. Add your machine information to user_input.sh.
  2. Make sure your system is using the -march= flag, otherwise you might want to add a case to line 260 in the /proc/cpuinfo file.
    • I had to add PowerPC this way because they use -mcpu instead.

Runspec Errors:

/usr/bin/ld: cannot find -lm and/or /usr/bin/ld: cannot find -lc

  • RHEL: remove -static from the compiler flags in the config file.

copy 0 non-zero return code or other build errors.

Change the portability options for that benchmark. Here are some options:

  • -DSPEC_CPU_LP64
    • This macro specifies that the target system uses the LP64 data model; specifically, that integers are 32 bits, while longs and pointers are 64 bits.
  • -DSPEC_CPU_Linux
    • This macro indicates that the benchmark is being compiled on a system running Linux.
  • -DSPEC_CPU_Linux_X64
    • This macro indicates that the benchmark is being compiled on an AMD64-compatible system running the Linux operating system.
  • -DSPEC_CPU_Linux_IA32
    • This macro indicates that the benchmark is being compiled on an Intel IA32-compatible system running the Linux operating system.

Some more helpful portability flags are located here: http://www.spec.org/auto/cpu2006/flags/400.perlbench.flags.html

About

Run SPEC CPU2006 on Linux with either an Intel, ARM, or PowerPC processors.

Resources

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages