Hardware Interaction Model
It is not yet clear to me whether whether specific NVidia hardware makes a lot of difference. More on this later. In the mean time, here’s a library that claims to need Fermi/Tesla or equivalent (“Fermi-generation GPU (GTX 4xx, GTX 5xx, or Tesla equivalent required.”) What the reason is, I can only guess.
http://deeplearning.net/software/theano/tutorial/using_gpu.html (mentioned in the second half of the page)
More on this later
GPU Use with Neural Networks (Other Sources)
The following is written assuming the computer has Intel CPU:
3rd Generation Intel Core Processors
Intel “Bay Trail” platforms with Intel HD Graphics
4th Generation Intel Core Processors, need kernel patch currently, see the “Known Issues” section.
5th Generation Intel Core Processors “Broadwell”.
To start programming right away, do the following:
1. Get Beignet. https://wiki.freedesktop.org/www/Software/Beignet/
Beignet is an open source implementation of the OpenCL specification – a generic compute oriented API. This code base contains the code to run OpenCL programs on Intel GPUs which basically defines and implements the OpenCL host functions required to initialize the device, create the command queues, the kernels and the programs and run them on the GPU.
In terms of the OpenCL 1.2 spec, beignet is quite complete now (at the time of writing, 28/03/2015).
2. Get OpenCL Studio http://opencldev.com/
The OpenCL Programming Book
Eclipse: prepare for OpenCL programming
1. IRC channel #opencl at freenode network
3. Reference on installing pre-requisites (hardware drivers)
CUDA vs OpenCL
ArrayFire (open source) http://arrayfire.com/
“ArrayFire supports both CUDA-capable NVIDIA GPUs and most OpenCL devices, including AMD GPUs/APUs and Intel Xeon Phi co-processors. It also supports mobile OpenCL devices from ARM, Qualcomm, and others. We want your code to run as fast as possible, regardless of the hardware.”
“ArrayFire is a blazing fast software library for GPU computing. Its easy-to-use API and array-based function set make GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.”
(written prior to being open-source): http://blog.accelereyes.com/blog/2013/03/04/arrayfire-examples-part-1-of-8-getting-started/
Overview by NVidia: http://devblogs.nvidia.com/parallelforall/arrayfire-portable-open-source-accelerated-computing-library/
* Download here
http://arrayfire.com/download/ & install, and append “%AF_PATH%/lib;” to your PATH env.variable
* Files required to use ArrayFire from R (prerequisites: source files above)