第一章 简介
Last updated
Was this helpful?
Last updated
Was this helpful?
现代处理器体系结构已将并行性视为提高性能的重要途径。面对在固定功率范围内获取更高时钟速度的技术挑战,中央处理器(CPU)现在通过增加多个核来提高性能。图形处理单元(GPU)也已经从固定功能的渲染设备发展成为可编程的并行处理器。由于当今的计算机系统通常包括高度并行的CPU,GPU和其他类型的处理器,因此使软件开发人员充分利用这些异构处理平台非常重要。
与用于多核CPU和GPU的传统编程方法大不相同,为异构并行处理平台创建应用程序具有非常大的挑战性。基于CPU的并行编程模型通常基于标准,但是通常假定是共享地址空间,并且不包含向量运算。通用GPU编程模型可编址复杂的内存层次结构和向量操作,但传统上是基于特定平台、特定供应商和特定硬件的。这些限制使开发人员难从单个、多平台源代码库访问异构CPU,GPU和其他类型的处理器的计算能力。比以往任何时候都需要使软件开发人员能够有效地充分利用异构处理平台的性能,从高性能计算服务器到台式计算机系统,再到手持设备-包括并行CPU,GPU和其他处理器(例如, DSP和Cell/B.E.处理器)。
OpenCL(开放计算语言,Open Computing Language) 是一种开放的免版税标准,用于跨CPU, GPU 和其他处理器的通用并行编程,从而使软件开发人员可以方便有效地访问这些异构处理平台的功能。
OpenCL通过低级、高性能、可移植的抽象支持广泛的应用程序,包括从嵌入式、消费软件到HPC解决方案。通过创建高效、接近裸机的编程接口,OpenCL将形成独立于平台的工具、中间件和应用程序的并行计算生态系统的基础层。 OpenCL特别适合在新兴的交互式图形应用程序中扮演越来越重要的角色,这些应用程序将常规并行计算算法与图形渲染管线结合在一起。
OpenCL包含一个用于协调异构处理器之间并行计算的API,以及具有良好指定计算环境的跨平台中间语言。 OpenCL标准包含如下:
支持基于数据和基于任务的并行编程模型
利用可移植且独立的中间表示形式并支持并行执行
根据IEEE 754定义一致的数值要求
定义手持设备和嵌入式设备的配置文件
与OpenGL,OpenGL ES和其他图形API有效地互操作
本文档首先概述了OpenCL的基本概念和体系结构,随后详细介绍了其执行模型,内存模型和同步支持。然后讨论了OpenCL平台和运行时API。给出了一些示例,描述了示例计算用例以及如何在OpenCL中编写它们。该规范分为任何符合OpenCL的实现都必须支持的核心规范。手持/嵌入式模式,放宽了对手持和嵌入式设备的OpenCL合规性要求;以及一组可选扩展,这些扩展可能会在以后的OpenCL规范修订版中纳入核心规范。
规范性引用是对外部文档或OpenCL的实施者必须遵循的所有或特定部分的遵照,如本规范中所述。
ISO/IEC 9899:2011 - Information technology - Programming languages - C, (final specification), (last public draft).
OpenCL版本号遵循major.minor-revision方案。在API中使用此版本号时,它通常仅包含版本号的major.minor组件。
主版本号或次版本号的不同表示该规范中已添加了一些新功能,并且还可能包括行为更改和错误修复。当主要版本或次要版本更改时,功能可能也已被弃用或删除。
修订版本号上的差异表示对规范的较小更改,通常是为了修复错误或澄清语言。当修订版本号更改时,可能会影响现有功能的行为,但这不应影响向后兼容性。修订版本号更改时,不应添加或删除功能。