Making code run fast on all the things (with OpenCL)
Modern computer systems are becoming more heterogenous. This can be seen with
the increased use of accelerator devices and co-processors for both industrial
and personal use. Devices such as Graphical Processing Units (GPUs) offer
improved performance (both in taking a shorter duration to compute and
energy efficiency) for a range of applications. Other tasks are better suited
to the Digital Signal Processor (DSP), Field Programmable Gate Array (FPGA),
another Central Processor Unit (CPU) or any alternative co-processor. All of
these devices are significantly different in architecture and programming
language support. Developing an application for all of these devices results in
much redundancy, fragmentation and frustration by requiring the developer to
write potentially several alternative implementations. This fragmentation can
be really bad for programmers and the Open Source community in general as each
vendor provides their own API's, proprietary tools and restrict our freedoms by
locking us into a third party ecosystem.
Thankfully a language and Open Source standard exists to save us from vendor
hell, the answer is Open Computing Language (OpenCL)!
During this talk I will discuss how to leverage this hardware agnostic language
(from a programmers perspective) and recap on some tips on how to write flexible
kernels once and have them run efficiently on all platforms. Additionally I'll focus on proper utilisation of time... our time (as developers) and the clients. Too often do we put off learning a new language or standard because of the initial time we need to sink into it before we have working code. I'll do this work for you, namely by comparing a few different language implementations of OpenCL with a major emphasis being placed on development time and comparing it against execution time (and what cost does it have your sanity). You'll also be given some running OpenCL boilerplate code in each of these languages, so you can hit the ground running!
Please attend my talk, as I need your help in increasing it's adoption which
will in turn increase vendor support for the lastest, greatest and more
flexible versions of the OpenCL standard.
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 play boardgames, lawn
bowls and badminton.