为了统一标准和方便理解,opencl 架构定义了四种模型:平台模型、执行模型、内存模型和编程模型。这4个模型分别描述了系统的不同方面。

 首先介绍平台模型。

 平台模型定义了系统的结构,反映的是主机和设备之间的关系。

OpenCL平台通常包括一个主机(Host)和多个OpenCL设备(device)。主机一般是CPU,并且只能存在一个主机。 OpenCL设备是指与CPU形成异构平台的其他处理器,如GPU、FPGA、DSP等,OpenCL设备主要进行数据运算操作,作为从设备接收主机的指令。

每个OpenCL设备包括一个或多个计算单元(Compute Unit,CU),每个计算单元又包括一个或多个处理单元(Processing Element,PE)。

所有的OpenCL执行命令都是从主机上发出的,然后传送到各个OpenCL设备,然后分配到每个处理单元,每个处理单元都是执行相同的kernel程序。等OpenCL设备完成计算,主机将会读回计算结果,并结束该计算任务。

不同厂商的OpenCL实现定义了不同的OpenCL平台。通过OpenCL平台,主机能够和OpenCL设备之间进行交互操作。现在主要的OpenCL平台有AMD、Nvida,Intel等。