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:
- Download the latest beta-version from http://www.phoronix-test-suite.com/?k=downloads
- Extract. Can be anywehre. I chose /opt/phoronix-test-suite
- Install. Just type ./phoronix-test-suite in a terminal
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 pts/opencl - OpenCL System 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.
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.