OpenCL 2.0 and drivers from AMD and Intel

    Unbeknownst to Haber was the news of the appearance of OpenCL 2.0 drivers from AMD and Intel .

    It seems to many that such an API is just another marketing buzzword. This is partly because almost all modern hardware products come with the OpenCL item in the list of supported technologies and advertising: the latest CPUs, GPUs, APUs (CPU + GPU) , FPGA, CPU + FPGA . And many in the field of enterprise software development want to disown these "fashionable" names, but this will soon become impossible through the efforts of Oracle and AMD .

    Massive hardware parallelism has long been present in servers, personal computers, phones and tabletsspecialized hardware accelerators. OpenCL in the field of FPGA is considered as a way to simplify, reduce the cost and popularize development. At the same time, the use of the advantages provided by the hardware still requires the programmer to use such APIs as OpenCL, CUDA, OpenMP. But there are attempts to hide this complexity from application programmers such as Project Sumatra and ScalaCL .

    OpenCL has already optimized the performance of Photoshop CC 2014 and GIMP 2.8 RC 1 graphics editors . The renderers LuxRender and Cycles from the Blender project also benefit from the use of this API. And even the LibreOffice office suiteuses OpenCL. It was very unexpected for me to learn from the news that my former employer excelled at optimizing VP9 video encoder using OpenCL.

    OpenCL 2.0 was approved as a standard almost a year ago. This standard supports technologies available in modern hardware: Shared Virtual Memory allows you to avoid unnecessary / explicit copying of data between memory areas, nested parallelism allows you to schedule kernel functions on a device without turning host programs, reducing latency, pipe as an additional way to exchange data between kernel functions also extended support for atomic operations.

    Most of all my soul warms that now I don’t need “crutches”to implement atomic operations with floating point data in OpenCL. Oddly enough, this problem with atomic cmpxchg volatile led a lot of people to my blog and the same approach was used by other developers until this feature appeared in the latest standard.

    You can continue to ignore the advantages provided by the hardware ... Or try to use modern hardware with greater efficiency and make a proof of concept for your project, if it is possible to parallelize the algorithm and the amount of computation in the project is large enough.

    What do you think about the prospects for using OpenCL in enterprise software or your project?

    Also popular now: