Skip to content
Set of guidelines for porting OpenCL™ C to OpenCL C++
Branch: master
Clone or download
Jakub Szuppe
Jakub Szuppe Fix typos
Latest commit 6ee7615 May 21, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information. Update and May 12, 2017
LICENSE.txt Use MIT license May 3, 2017 Fix typos May 21, 2017 Add TM to first instance of OpenCL May 17, 2017

OpenCL C to OpenCL C++ Porting Guidelines

This document is a set of guidelines for developers who know OpenCL™ C and plan to port their kernels to OpenCL C++, and therefore they need to know the main differences between those two kernel languages.

The main focus is on exposing the most important differences between OpenCL C++ and OpenCL C, and also those which may cause hard-to-detect bugs when porting to OpenCL C++. Developers who are familiar with OpenCL C and C++ should find OpenCL C++ easy to learn.


On May 16, 2017, OpenCL 2.2 was released by Khronos Group (release note). The most important part of new OpenCL version is support for OpenCL C++ kernel language, which is defined as a static subset of the C++14 standard. OpenCL C++ introduces the long-awaited features like classes, templates, lambda expressions, function and operator overloads, and many other constructs which increase parallel programing productivity through generic programming.

The aim of the Porting Guidelines is to help people who are familiar with OpenCL C and C++ to switch to OpenCL C++. The focus is not on highlighting all the differences between those two kernel languages, but rather on exposing and explaining those that are the most important, and those that may cause hard-to-detect bugs when porting from OpenCL C to OpenCL C++. In the future the guidelines may also provide chapters or sections about new features introduced in OpenCL 2.2 and OpenCL C++.

Contributions and LICENSE

Comments, suggestions for improvements, and contributions are most welcome. More details are found at CONTRIBUTING and LICENSE.


OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos. Other names are for informational purposes only and may be trademarks of their respective owners.

You can’t perform that action at this time.