Gallium compute tools are constantly improving… So much… At a point that if you have an AMD graphic card you should consider stop using Catalyst (or even Crimson), and move to the free driver:
- It is very competitive (in “gaming” performance terms)
- It is much more robust (just check it with Plasma 5)
- It is able to work with OpenCL right now!
OpenCL man!!!
Of course AQUAgpusph must not be unaware of this revolution. In the branch 2.2 I adapted the OpenCL tools to work smoothly with LLVM-CLang and libclc… Here what I get with my AMD R9 290:
In the previous image the performance for the 2D TLD example is shown. The grey line is the instantaneous time consumed per time step, the black solid line is the average value, while the dashed lines are denoting its variance.
I also added a red dashed line to represent the point of the simulation where I modified the working profile of the graphic card, an awesome superpower of the Open Source drivers:
echo "performance" > \ /sys/class/drm/card0/device/power_dpm_state echo "high" > \ /sys/class/drm/card0/device/power_dpm_force_performance_level
As far as I know, this is the very first SPH simulation, accelerated with a GPU, carried out without a single line of non-free software!!! (not even the OS, the framework, the driver, or the ICD loader!!!)
In Ubuntu 15.10, If you have a relatively old hardware, you may use the launchpad repository of Oibaf, purging fglrx and installing LLVM, CLang, libclc (with libclc-r600), and mesa-opencl-icd. Otherwise you should manually download and install them, something that can be done with the following bash script:
# ============================================================= #!/bin/bash git clone http://llvm.org/git/llvm.git cd llvm/tools git clone http://llvm.org/git/clang.git cd ../.. git clone http://llvm.org/git/libclc.git git clone git://anongit.freedesktop.org/mesa/mesa cd llvm/ mkdir build cd build/ ../configure --enable-targets=x86,amdgpu,r600 --enable-shared \ --enable-optimized --prefix=/usr make -j4 sudo make install cd ../../ cd libclc/ ./configure.py --prefix=/usr \ --pkgconfigdir=/usr/share/pkgconfig/ make clean make -j4 sudo make install cd .. cd mesa PKG_CONFIG_PATH=/usr/share/pkgconfig/ ./autogen.sh \ --prefix=/usr --with-dri-drivers="" \ --with-gallium-drivers=r600,radeonsi \ --with-egl-platforms=drm --enable-opencl \ --enable-opencl-icd --disable-dri3 make -j4 sudo make install # =============================================================
Probably several dependencies will be required to be installed during the process (all of them available trough apt-get).
In Ubuntu 16.04 all this process is probably becoming unnecessary, working “out of the box” with the packages included in the default repositories (it’s something to hope for).