Making code run fast on all the things (with OpenCL)
|Project:||not publicly available yet :(|
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 provide some tips on how to write flexible
kernels once and have them run efficiently on all platforms. I also hope to
demonstrate my extension to the OpenCL framework that allows autonomous
selection of device(s) according to an Optimal Setting (usually energy
efficiency or computed in a shorter length of time). This setting is specified
by the user and is targeted to my benchmarking application, but will
be generic enough to be useful.
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.