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