Translation(s): English - Français - Italiano


ATI Stream is the OpenCL library for AMD/ATI graphics cards. It is now marketed as APP (accelerated parallel processing).1 This uses the GPU of your graphics card to perform highly parallel computations. The OpenCL code to address that hardware is however functional also without the right hardware and also development is possible, say, on a many years old laptop with Intel graphics.

Installation

The AMD SDK is non-free. amd64 and i386 binaries are provided directly from upstream, which can be installed tediously but easily. The libraries to execute the OpenCL binaries are now (i.e. since version 11.11 of Catalyst / fglrx) distributed also with the vendor's regular graphics cards' driver. Debian offers all of AMD's driver in its typical manner a series of packages, separated for its technology. The APP/Stream library ships as amd-libopencl1. So, for getting OpenCL to run for your machine, a mere

sudo apt-get install amd-libopencl1

should get you going. For the fully accelerated experience, one just needs to also install the non-free fglrx graphics driver of AMD, as described on this Wiki's ATIProprietary page.

For earlier releases of fglrx, some good soul named 'nou' once prepared external Debian packages called amd-app to provide the AMD Stream libraries and their API.2 Those had an edge in that they install both 32 and 64 bit libraries, while the Debian's amd-libopencl1 only does the library of the respective platform. This advantage has now gone away with the arrival of multi-arch technology in the dpkg package of the experimental section.

If you are using a custom Linux kernel for 64-bit PC and want to run 32-bit programs, then you have to set the CONFIG_IA32_EMULATION Linux build configuration option, otherwise you won't be able to run 32-bit binaries.

For running 32bit OpenCL libraries on a 64bit platform, do

sudo apt-get install multiarch-support fglrx-glx-ia32
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install amd-libopencl1:i386

Some additional life-time-saving bits are found in the unofficial Wiki for AMD Linux drivers.3

Development

When developing your own OpenCL applications, the former external amd-app packages4 had their own -dev package. This is not required for the Debian packages. Here you can share the package opencl-headers with the prior mentioned libraries. No separate -dev needed. It is a standard after all.

When contributing to BOINC

When running BOINC (or any external binary) with your exciting hardware, and if it is only for testing the setup, please know that e.g. the Primegrid project gives you a true 64bit OpenCL binary. Albert is 32bit and consequently will fail on amd64 with Debian's 64bit library with a "file not found" error message. You can test the platform by executing ldd /var/lib/boinc/project/projectname/binary name, which should find the OpenCL binary.

References