Event image

With the success of programming models such as Khronos’ OpenCL and NVIDIA’s Cuda, Heterogeneous computing is going mainstream. However, these systems are low-level, even when considering them as systems programming models. They are effectively extended subsets of C99, limited to the type unsafe procedural abstraction that C has provided for more than 30 years.  Computer systems programming has for more than two decades been able to do a lot better. One successful case in point is the systems programming language C++, known for its strong(er) type system and template and object-oriented abstraction features. A further limitation of the OpenCL/Cuda programming models is that, while they are intended to support a selection of different devices, to date they have really reflected the GPU programming model of the previous decade, i.e. they have focused on fine grain data-parallel workloads. What about other work-loads, e.g. task-parallel workloads? In this talk we introduce a mode
l of braided parallelism and an object-oriented (based on C++11) programming model for heterogeneous computing – liberating GPGPU programming from its data-parallel bottleneck, while at the same time adopting modern programming abstractions.