Stream HPC

Phoronix OpenCL Benchmark 3.0 beta

So you want OpenCL-benchmarks? Phoronix is a benchmark for OSX and Linux, created by Michael Larabel, Matthew Tippett (http://en.wikipedia.org/wiki/Phoronix_Test_Suite). On Ubuntu Phoronix version 2.8 is in the Ubuntu “app store” (Synaptic), but 3.0 has those nice OpenCL-tests. The tests are based on David Bucciarelli‘s OpenCL demos. Starting to use Phonornix 3.0 (beta 1) is done in 4 easy steps:

  1. Download the latest beta-version from http://www.phoronix-test-suite.com/?k=downloads
  2. Extract. Can be anywehre. I chose /opt/phoronix-test-suite
  3. Install. Just type ./phoronix-test-suite in a terminal
  4. Use.

WARNING: It is beta-software and the following might not work on your machine! If you have problems with this tutorial and want or found a fix, post a reply.

Let’s start with listing all tests:

./phoronix-test-suite list-available-suites

Generating this takes a while, so here are the results for the impatient:

Phoronix Test Suite v3.0.0b1
Available Suites

pts/audio-encoding               - Audio Encoding                   System
pts/chess                        - Chess Test Suite                 Processor
pts/compilation                  - Timed Code Compilation           Processor
pts/compiler                     - Compiler                         Processor
pts/compression                  - Timed File Compression           Processor
pts/computational                - Computational Test Suite         System
pts/computational-biology        - Computational Biology Test Suite Processor
pts/cpu                          - CPU / Processor Suite            Processor
pts/cryptography                 - Cryptography                     Processor
pts/daily-kernel-tracker         - Daily Kernel Tracker             System
pts/daily-system-tracker         - Daily System Tracker             System
pts/database                     - Database Test Suite              System
pts/desktop-graphics             - Desktop Graphics                 System
pts/disk                         - Disk Test Suite                  Disk
pts/encoding                     - Encoding                         System
pts/favorites                    - Favorites                        System
pts/gaming                       - Gaming                           System
pts/gaming-closed                - Closed-Source Gaming             System
pts/gaming-free                  - Free Software Gaming             System
pts/gui-toolkits                 - GUI Toolkits                     Graphics
pts/ioquake3-games               - Games Using The ioquake3 Engine  System
pts/iqc                          - Image Quality Comparison Suite   Graphics
pts/java                         - Java                             System
pts/java-opengl                  - Java OpenGL                      System
pts/kernel                       - Kernel                           System
pts/linux-system                 - Linux System                     System
pts/memory                       - Memory Test Suite                Memory
pts/mesa                         - Mesa Test Suite                  Graphics
pts/motherboard                  - Motherboard                      System
pts/multicore                    - Multi-Core                       Processor
pts/netbook                      - Netbook Test Suite               System
pts/network                      - Networking Test Suite            Network
pts/nevada                       - OpenSolaris Nevada Test Suite    System
<strong>pts/opencl                       - OpenCL                           System</strong>
pts/opengl-demos                 - OpenGL Demos Test Suite          System
pts/opengl-workstation           - OpenGL Workstation Test Suite    System
pts/pts-desktop-live             - PTS Desktop Live                 System
pts/ray-tracing                  - Ray-Tracing Test Suite           System
pts/server                       - Server Motherboard               System
pts/unigine                      - Unigine Test Suite               Graphics
pts/universe                     - Universe Test Suite              System
pts/universe-cli                 - Universe CLI Test Suite          System
pts/universe-x                   - Universe X Test Suite            System
pts/video-encoding               - Video Encoding                   System
pts/workstation                  - Workstation                      System
pts/workstation-graphics         - Workstation Graphics             Graphics
pts/xrender                      - X Render Extension Testing       Graphics

OpenCL

You saw the bold-printed “OpenCL”. We can start the test with:

./phoronix-test-suite benchmark pts/opencl

In my case I got a message

The following dependencies are needed and will be installed:

- libsdl1.2-dev
- libsdl-gfx1.2-dev
- libsdl-net1.2-dev
- libsdl-image1.2-dev
- libsdl-ttf2.0-dev
- lib3ds-dev

It was automatically installed, so very user-friendly. So it *seems* to work well, but then the error-messages pop up.

Fixing the tests

The tests are made for 64-bit Linux with an AMD/ATI GPU. You might not have it.

Go to ~/.phoronix-test-suite/installed-tests/pts/juliagpu-1.1.0 and open the zip-file. In the zip-file you need to edit “Makefile”, which looks like this:

(...)
ATISTREAMSDKROOT=/home/david/src/ati-stream-sdk-v2.0-lnx64

CC=gcc
CCFLAGS=-O3 -msse2 -mfpmath=sse -ftree-vectorize -funroll-loops -Wall 
-I$(ATISTREAMSDKROOT)/include -L$(ATISTREAMSDKROOT)/lib/x86_64 -lglut -lglut -lOpenCL

# Jens's patch for MacOS, comment the 2 lines above and un-comment the lines below
#CCFLAGS=-O3 -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller 
#    -cl-fast-relaxed-math -cl-mad-enable -Wall -framework OpenCL -framework OpenGl -framework Glut
(...)

So there is a patch to get it working on Apple (you lucky folks!). For BSD/Linux we need to patch this, to get it also working with NVIDIA-32, NVIDIA-64 and AMD-32 from the right directory. Just edit the Makefile from the zip as below (uncomment the right driver and fix the location).

# NVIDIA 32
#OPENCLLIB=/usr/local/cuda/lib/
#OPENCLINC=/usr/local/cuda/include/

# NVIDIA 64
#OPENCLLIB=/usr/local/cuda/lib64/
#OPENCLINC=/usr/local/cuda/include/

# AMD 32
#OPENCLLIB=/opt/ati-stream-sdk-v2.0-lnx32/lib/x86
#OPENCLINC=/opt/ati-stream-sdk-v2.0-lnx32/include

# AMD 64
#OPENCLLIB=/opt/ati-stream-sdk-v2.0-lnx64/lib/x86_64
#OPENCLINC=/opt/ati-stream-sdk-v2.0-lnx64/include

CC=gcc
CCFLAGS=-O3 -msse2 -mfpmath=sse -ftree-vectorize -funroll-loops -Wall 
-I$(OPENCLINC) -L$(OPENCLLIB) -lglut -lglut -lOpenCL

# Jens's patch for MacOS, comment the 2 lines above and un-comment the lines below
#CCFLAGS=-O3 -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller 
#    -cl-fast-relaxed-math -cl-mad-enable -Wall -framework OpenCL -framework OpenGl -framework Glut
(...)

Save the file and say yes to update the zip-file. We can test the fix with:
> ./phoronix-test-suite benchmark pts/juliagpu-1.1.0

If it works, you can make the same changes for pts/mandelbulbgpu-1.1.0, pts/smallpt-gpu-1.1.0 and pts/mandelgpu-1.1.0

Bad luck? Try your luck with the originals of these tests.