Khronos小组于本周一(7月22日)发布了OpenCL 2.0版本,该版本可为显示芯片提供更好的独立性,以便能为通用软件计算出更大的力。OpenCL是让显示芯片也能为通用软件提供计算能力的标准,标准制定者就是 Khronos Group。Khronos此次发布的是OpenCL 2.0临时规范,预计正式版本的发布要等到6个月以后,在此期间,开发者可以进行尝试并反馈问题。更多详细内容参见:OpenCL 2.0
“OpenCL工作小组已经将开发者反馈意见和新兴的硬件功能结合在一起,用以创建先进的并行程序开发平台——OpenCL 2.0,”OpenCL主席兼显示芯片制造商Nvidia的移动副总裁以及Khronos Group的主席Neil Trevett说。“OpenCL将继续集中精力在台式机和移动设备上。另外,还可以为App开发人员提供基本的、便携式的加速引擎、中间设备库和高级编程语言,为此需要利用异构计算资源包括CPUs,GPUs,DSPs和FPGAs。”
OpenCL 2.0的更新项目和附件包括:
1. 共享虚拟内存
主机和设备内核能够直接分享像树状结构和链结串列一样复杂的指针,包括数据结构,并且能够实现更灵活的程序设计技巧,消除主机和设备之间昂贵的传输成本。
2. 动态平行
设备内核可以在没有主机交互作用的情况下,将内核有序排列到相同的设备里,支持灵活的工作调度模式,而且避免了在设备和主机之间传输执行控制和数据的必要,这就相当于解决了主处理器的瓶颈。
3. 通用地址空间
在没有为参数指定地址空间的情况下也可以编写函数,特别适合那些指针类型的参数,消除为每一个指定地址空间编写多重函数的需求。
4. 图像
改进的图像支持包括sRGB图像和3D图像,内核处理器不但能够读出这些图像,还能编写这种类型的图像。同时,用一个雾化贴图或多采样OpenGL纹理创建的OpenCL图像可以改善OpenGL交互操作。
5. C11 Atomics
C11 Atomics的一个子集和同步操作能够让同在一个工作组里的工作项与工作项之间的任务是相互可见的,通过交叉在不同工作组里的方式运行在设备上,或者是在OpenCL设备和主机之间进行数据共享。
6. 管线
管线是内存对象,用于存储数据并有序的组织成为一个FIFO(先进先出),OpenCL 2.0为内核提供了内置函数来读取数据或写入管线,OpenCL设备能够高效优化管线数据架构的简单编程。
7. 可在Android上安装的客户端驱动程序扩展
可以让OpenCL编译器在Android系统上能够被发现并加载成为一个共享对象。
原文:Khronos