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:
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
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.
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.