OpenCL产业开发链

OpenCL产业开发链

OPEN STANDARD FOR PARALLEL PROGRAMMING OF HETEROGENEOUS SYSTEMS

OpenCL™ (Open Computing Language,开放计算语言)是一种开放、免版税的标准,适用于超级计算机、云服务器、个人计算机、移动设备和嵌入式平台中各种加速器的跨平台并行编程。OpenCL极大地提高了众多市场类别中各种应用程序的速度和响应能力,包括专业创意工具、科学和医疗软件、视觉处理以及神经网络训练和推理。

OpenCL is Widely Deployed and Used

 

 

 OpenCL for Low-level Parallel Programing

OpenCL通过将计算最密集的代码卸载到加速器处理器或设备上,加速应用程序。OpenCL开发人员使用基于C或C++的内核语言编写程序,这些程序通过设备编译器在加速器设备上并行执行。

 

 

 How OpenCL Relates to Other Khronos Parallel Acceleration Standards

OpenCL为业界提供了最低的“close-to-metal”处理器敏捷执行层,用于加速应用程序、库和引擎,还为编译器提供了代码生成目标。与Vulkan等“GPU-only”API不同,OpenCL支持使用多种加速器,包括多核CPU、GPU、DSP、FPGA和专用硬件,如推理引擎。  

 

 

 OpenCL Deployment Flexibility

随着平台和设备的工业应用场景变得越来越复杂,各种工具正在发展,使OpenCL应用程序能够部署到没有可用的本机OpenCL驱动程序的平台上。例如,开源clspv编译器和clvk API转换器,使OpenCL应用程序能够在Vulkan Runtime上运行。这为OpenCL开发人员在何处部署,如何部署OpenCL应用程序,提供了极大的灵活性。

 

 

 Open source software tools enable OpenCL kernels to be executed over multiple target APIs

OpenCL Programming Model

OpenCL应用程序分成主机和设备部分,主机代码使用通用编程语言如C或C++编写,由传统编译器编译,在主机CPU上执行。

设备编译阶段可以在线完成,即在使用特殊API调用执行应用程序期间。也可以在执行应用程序前编译成机器二进制或由Khronos定义的特殊可移植中间表示形式(称为SPIR-V)。有一些特定于领域的语言和框架,可以使用source-to-source的翻译,或生成二进制/SPIR-V(例如Halide),编译成OpenCL。

 

 

 Traditional vs OpenCL programming paradigm

应用程序宿主代码经常用C或C++编写,但是其它语言的绑定也可用,如Python。内核程序可以用C语言(OpenCL C)或C++(OpenCL的C++)编写,使得开发人员能够在内核程序中编程计算密集型应用程序的部分。OpenCLC语言的所有版本都基于C99。社区驱动的OpenCL语言的C++,将OpenCL和C++ 17的能力结合。

C++ for OpenCL Kernel Language

OpenCL工作组已经从OpenCL 2.0中定义的最初OpenCL C++内核向C++ C++过渡,为开源社区开发的OpenCL提供了改进的特性,并与OpenCL兼容。OpenCL的C++是由CLAN支持的。使开发人员能够在OpenCL内核中,使用大多数C++17特性。在很大程度上与OpenCL C 2.0向后兼容,能够使用OpenCL 2.0或更高版本编程加速器,具有支持SPIR-V的一致性驱动程序。可以通过OpenCL支持页面跟踪,在Clang中的实现。

 

 

 

 

参考链接:

https://www.khronos.org/api/opencl

posted @ 2021-12-11 06:31  吴建明wujianming  阅读(142)  评论(0编辑  收藏  举报