根据前面异构计算的概念我们知道异构计算其实是利用与主控机(一般是CPU)不同架构的其他处理器实现计算加速,减轻主机端工作负载,最终提升系统性能。而OpenCL的使命则是为了桥接系统中各个不同的处理器。
OpenCL 是Open Computing Language的缩写,也就是开放计算语言,它为异构平台提供一个统一的编写并行程序的开放框架(API),它支持混合设备的并行计算,所支持的异构平台可以是多核CPU、GPU、FPGA或者是其他的处理器,而且代码可以自由移植。
这里有几个关键词跟大家强调一下:
开放,不用说,就是开放免费的意思。
统一,OpenCL提供了一个统一的编程架构(API),也就是说不同的硬件架构,不管你是 GPU, FPGA等,都可以使用相同的OpenCL 编程语言去设计,为不同的硬件平台设计的OpenCL代码还能相互移植。这样通用性就很好了嘛。
并行,Opencl语言是用于编写并行程序, 那么尽管它是基于标准C(C99标准),但是还是区别于标准C的(向C添加了并行性),具体的区别我们在后面的Host程序设计的时候会跟大家说明。
OpenCL是2008年由Apple公司首次提出,目前由NVIDIA, Intel, Broadcom, Khronos, AMD, ARM, Ti, Samsung, IBM, Google, Fujitsu等维护与支持。
http://www.khronos.org
理解OpenCL架构,先搞定OpenCL四个模型的定义:
- 平台模型(Platform Model)
- 执行模型(Execution Model)
- 内存模型(Memory Model)
- 编程模型(Programming Model)
下一讲,我们介绍OpenCL架构的平台模型。