Khronos 发布OpenCL 2.2 预测版规范 以及并行编程OpenCL C++ 核语言

SYCL 2.2 和 SPIR-V 1.1 预测版规范也同时发布,以完全并支持OpenCL C++

20164月18日 OpenCL国会,– The Khronos Group, 一个由领先硬件和软件公司组成的开源组织,宣布OpenCL™ 2.2、SYCL™ 2.2 和 SPIR-V™ 1.1预测版规范即将发布。OpenCL 2.2结合了OpenCL C++核语言,以极大地提高并行编程效率。SYCL 2.2实现了主机和设备代码可以被包含在一个单源文件中,同时具备OpenCL C++的完整功能。SPIR-V 1.1 扩展了由Khronos定义的中间表示法,通过对渲染器和计算核功能的本地支持,以完全支持OpenCL C++核语言。这些新规范已发布到www.khronos.org,并以预测版的形式让开发者和执行者在最终版推出前提出反馈意见,包括在Khronos论坛:https://forums.khronos.org/.

“OpenCL 2.2将开发者们最需要的功能带到了核心 – OpenCL C++核语言”,Khronos 主席兼OpenCL工作组主席Neil Trevett讲到。“整体而言,Khronos今天发布了三个规范,以协作的方式推动并行编程的效率:OpenCL 2.2 和 SPIR-V 1.1 同时发布,即带来了在Khronos定义的中间语言对OpenCL C++核语言的支持,同时SYCL 2.2也协助OpenCL 2.2 为单源C++编程实现更好的效果”。

关于OpenCL 2.2
OpenCL 2.2 将OpenCL C++核语言定义为一个C++ 14标准的静态子集。 OpenCL C++ 包括级别、模板、lambda表示法、功能过载和许多其他架构以通过普通和meta编程提高并行编程效率。

OpenCL库功能现在可以利用C++语言以带来更高的安全性并降低在获取性能时的未定义行为,例如原子数据类型、迭代程序、图片、实例、管线和设备队列建入式以及地址空间。

管线存储是OpenCL 2.2中一个新的设备端类型,主要用于FPGA在已知compile时间内实现连接规模和类型的执行,实现了高效的设备范围内的核之间的交流。

OpenCL 2.2还包括更强的已生成代码优化的功能:应用可以带来SPIR-V编译期间的专业化常数值,一个全新的队列可以识别程序范围全部目标的大型程序造构器和析构器,同时可以在程序发布时间内设置用户回放。

关于 SYCL 2.2
SYCL 2.2使OpenCL 2.2 保持主机和设备代码保持在同一单源文件中。SYCL随同OpenCL的C++标准方向的硬件功能,开发者可以编写C++模板库,以开拓计算设备的全部性能,从最小的OpenCL 1.2嵌入式设备到最高级的OpenCL 2.2加速器,无需编写专门的或者非标准代码。对于SYCL的开源C++ 17 并行STL,由Khronos主持,实现了未来C++标准对OpenCL 2.2功能的支持,例如共享虚拟内存、通用指针和设备端队列。

在OpenCL C++ 和 SYCL之间,现在为开发者带来了两种C++的选择。对于想要将他们设备端核源代码和主机代码区别开的开发者,C++核语言是最好的选择。这是现在OpenCL C的工作方式,也是被图形软件中渲染器广泛采用的方式。另外一种方式,一般被称为“单源”C++,是SYCL、OpenMP和C++ 17 并行STL采用的方式。通过具体化SYCL和C++核语言,Khronos为开发者们带来了最大化的选择性,同时实现两个规范,代码便很容易在这些不同的方式间共享。

“Codeplay一直支持并引领高级异构处理器解决方案的开放标准”,Codeplay公司CEO兼SYCL工作主席Andrew Richards讲到,“移动、云、IoT和汽车ADAS中的加速的视觉处理应用从Khronos的开放标准中大大获益,简化了整体并行软件开发的流程”。

关于SPIR-V 1.1
SPIR-V(标准可移植中间表示法)是第一个开放标准,跨API的中间语言,用于本地表示并行计算和图形。SPIR-V 1.1现在支持OpenCL 2.2 中所有OpenCL C++核语言功能,包括初始程序和终结程序功能执行模式,以支持造构器和析构器。SPIR-V 1.1还通过支持被命名障碍、子群执行和程序范围管线增强了核程序的表示。

专业化常数,曾经在SPIR-V 1.0的Vulkan™图形渲染器支持,现在SPIR-V 1.1在OpenCL 核程序中也支持了。这一功能通过在运行时间具体化嵌入compile时间设置,实现了单一SPIR-V模型对参数化OpenCL核程序的表示。这也去除了对执行设备程序多个变量的需要,或者以不同的compilation设置从源重新compile,这大大降低了运行程序规模或者应用启动时间。

“OpenCL C++是对这个行业的大大推动” YetiWare Inc公司始人兼首席技AJ Guillon讲到,“OpenCL工作组,在开发者的积极反馈基础上,致力于维持惯用表示和C++在OpenCL C++中的风格。这对于想要最大化性能和代码简易化的开发者是非常重要的,我们也即将其融入到YetiWare的OpenCL培训项目中”。

 

关于 Khronos Group
Khronos Group是一个行业组织,创建开放标准以实现并行计算、图形、视觉、传感处理和动态媒体在各种平台和设备上的编写和加速。Khronos标准包括 Vulkan™, OpenGL®, OpenGL® ES, WebGL™, OpenCL™, SPIR™, SYCL™, WebCL™, OpenVX™, EGL™, OpenMAX™, OpenVG™, OpenSL ES™, StreamInput™, COLLADA™ 和 glTF™.  全部Khronos会员可以为Khronos规范的开发做出贡献,并在规范公开发布之前的各阶段拥有投票权,同时通过提前获取规范草本和一致性测试,会员企业可以加速其高端媒体平台和应用的开发。更多信息请浏览www.khronos.org’。

###

Khronos Group Inc拥有Khronos, Vulkan, DevU, StreamInput, SPIR, SPIR-V, SYCL, WebGL, WebCL, COLLADA, OpenKODE, OpenVG, OpenVX, EGL, glTF, OpenSL ES 和 OpenMAX的商标。ARM Holdings PLC拥有ASTC的商标,Apple Inc拥有OpenCL的商标;OpenGL是注册商标、OpenGL ES和OpenGL SC标识归Silicon Graphics International所有,Khronos被授权使用。全部其他产品名称、商标和/或公司名称仅用于识别并归其所有者所有。