OpenCL™(开放计算语言)概述

OpenCL™(开放计算语言)概述

异构系统并行编程的开准

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

OpenCL 3.0 最终版来了!

OpenCL 3.0 最终规范于 2020 年 9 月 30 日发布。

OpenCL 3.0 重新调整了 OpenCL 路线图,使硬件供应商能够广泛部署开发人员要求的功能,并通过使符合标准的 OpenCL 实施,能够专注于与其目标市场相关的功能,显着提高部署灵活性。OpenCL 3.0 还将子组功能集成到核心规范中,随附了新的统一 API 和 OpenCL C 3.0 语言规范,并引入了异步数据复制的扩展,以支持新型嵌入式处理。

对 OpenCL 的行业支持

NVIDIA 欢迎 OpenCL 3.0 专注于定义基线,以使开发关键功能,能够在规范的未来版本中得到广泛采用。NVIDIA 将在规范最终确定后,发布符合标准的 OpenCL 3.0,正在努力定义 Vulkan® 互操作扩展,扩展与分层 OpenCL 实现结合,将提高 OpenCL 开发人员的部署灵活性。

 OpenCL™(开放计算语言)概述

用于低级并行编程的 OpenCL

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

 OpenCL™(开放计算语言)概述

OpenCL 与 Khronos 并行加速标准的关系

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

 OpenCL™(开放计算语言)概述

OpenCL 部署灵活性

随着平台和设备的行业格局变得越来越复杂,工具正在不断发展,OpenCL 应用程序能够部署到本地 OpenCL 驱动程序的平台上。例如,开源clspv 编译器clvk API 转换器,使 OpenCL 应用程序能够在 Vulkan 运行时上运行。这为 OpenCL 开发人员部署 OpenCL 应用程序,提供了极大的灵活性。

 OpenCL™(开放计算语言)概述

开源软件工具,使 OpenCL 内核能够在多个目标 API 上执行。

OpenCL 编程模型

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

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

 OpenCL™(开放计算语言)概述

应用程序主机代码,通常用 C 或 C++ 编写,可以使用其它语言的绑定,例如 Python。内核程序可以用 C (OpenCL C) 或 C++ (C++ for OpenCL) 的语言编写,使开发人员能够在内核程序中,编写其应用程序的计算密集型部分。OpenCL C 语言的所有版本都基于 C99。社区驱动的 OpenCL 语言 C++, 汇集了 OpenCL 和 C++17 的功能。

用于 OpenCL 内核语言的 C++

OpenCL的工作组,已经从OpenCL中2.0第一定义为C ++,针对OpenCL开发由开源社区提供改进的功能,并与OpenCL的C,C++兼容,针对OpenCL被支持的原始的OpenCL C ++内核语言,转换Clang 及其文档。使开发人员能够使用 OpenCL 内核中的大多数 C++17 功能。在很大程度上与 OpenCL C 2.0 向后兼容,使其可用于使用 OpenCL 2.0 或更高版本,以及支持 SPIR-V加速器进行编程的驱动程序。可以通过OpenCL 支持页面进行跟踪,在 Clang 中实现。

 OpenCL™(开放计算语言)概述

内核语言扩展

一些扩展可用于现有已发布的内核语言标准。此类扩展有完整列表记录。符合标准的编译器和驱动程序,可以选择支持扩展,因此,有一种机制可以在编译时检测支持。开发人员应注意,并非所有设备都支持所有扩展。

符合 OpenCL 的实现

可以查看符合 OpenCL 实施的硬件供应商列表。

 

参考链接:

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

 

上一篇:MobaXterm之取消自动关闭连接 Network error :Connection timed out


下一篇:OpenCL产业开发链