Perth, Western Australia - 6th to 10th January 2014
Companies (such as nCore) are using clusters of DSPs to revolutionise energy efficient High Performance Computing. A programmers view of these platforms may consist of using OpenMP to specify regions of code for execution on each DSP whilst using MPI to orchestrate work across all nodes in the cluster. Intel's Xeon Phi a better known contender for energy efficient HPC and can be programmed using OpenMP or Cilk Plus. CUDA is the first goto language for a majority of GPU programmers. Development for further unorthodox platforms like Adapteva's Parallella introduce even more exotic programming models & languages.
But why bother? From a programmers perspective the problem is the same, every application has computationally intensive regions to be run on [insert alien architecture here], and normal tasks suitable for serial execution. Nothing is more painful than rewriting the same code just to migrate it to a new platform (you could almost train monkeys to do it)! Well thankfully an open standard emerged years ago known as OpenCL (Open Computing Language) to address this problem, and now, it's supported on all these awesome platforms!
I will discuss how to leverage this hardware agnostic language (from a programmers perspective) and provide some tips on how to write flexible kernels once with OpenCL, and have them run efficiently on all these platforms. All the while only making slight changes to the host program. I will be drawing on all the mistakes I made as a first year PHD student writing code to model ultrasound, on a variety of awesome hardware, whilst still being as lazy as possible.
OpenCL is a major step in taking power from hardware vendors locking us into platforms and third party APIs. It provides an Open Standard for heterogenous computing and finally gives us, the developers, some freedom. Let's stop fragmenting the software development process with a separate language for each new platform, and get our hands dirty with some open source, open standard, OpenCL!
Beau is a PhD Candidate at the Australian National University and freelance code-monkey. He has an interest in OpenCL, OpenGL, OpenCV, creative naming conventions and image processing. He has developed for iOS, Android, OSX, Linux and a micro-CT machine. In his free time he likes to develop statistical imaging software for soil scientists