Skip to content

Latest commit

 

History

History
executable file
·
238 lines (183 loc) · 6.03 KB

README.md

File metadata and controls

executable file
·
238 lines (183 loc) · 6.03 KB

SPEC CPU2006 Express

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.

Note: You must provide the cpu2006 tar archive.

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

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

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:

Operating Systems

  • Ubuntu 14.04+
  • CentOS 7+
  • RHEL 6.5+

Platforms

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

TODO:

  1. Add config flags xml
  2. Isolate floating-point run errors

Adding Additional Systems:

If your system isn't being detected:

  1. Add something simpler to this below line 184 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 **[296](https://github.com/ryanspoone/CPU2006-Express/blob/master/cpu2006express.sh#L296)** in the **[cpu2006express.sh](https://github.com/ryanspoone/CPU2006-Express/blob/master/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 274 in the cpu2006express.sh 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