OpenCL 2.0 is coming!
OpenCL 2.0 has been presented by Khronos at SIGGRAPH 2013 and has a draft specification and it has many exciting features. At this point the 2.0 spec needs some clarification in some aspects and preferably some examples.
Among the new interesting features are:
Shared virtual memory – clSVMAlloc will be the new base memory allocation function for shared memory that will remain synchronized between host and device. This is going to be a useful function when the two devices share the same physical memory, so that no copy is needed.
Dynamic parallelism – Device kernels will be able to launch its own subkernels in the device. With proper attention this should effectively enable recursive kernels.
Generic address space – At this moment, developers need to declare all buffer types in kernels and functions. If a function does the same operation to a __global or __private memory buffer it has to be duplicated. Generic address spaces should eliminate this need by accepting generic memory qualifiers.
Pipe spaces – This seems to be a pipeline with FIFO characteristics that can be used by workitems and host to allow message passing.
Of all thesen new features, dynamic parallelism seems to be the one that will affect the most how developers use OpenCL. Let’s just hope that implementations come soon!