本篇结构:
- 前言
- 平台模型
- 执行模型
- 内存模型
- 编程模型
- 参考资料
一、前言
“模型”是对现实世界的一个抽象,它对现实世界的进行简化,把不关心的,或者不影响所关注部分的内容,都从模型去掉。模型有助于理解它反映的那部分世界的规律。
OPenCL作为开放性的异构计算的标准,支持的平台有CPU、GPU、DSP、FPGA等。为了把各个厂家、各个平台的各种概念和术语都统一到一个标准的环境下,OpenCL定义了若干个模型。这对于OpenCL这种本来就定义在异构平台的标准尤其重要,通过这些模型,可以使用相同的语言/语义来描述不同环境下的并行计算。
OpenCL定义了平台模型(Platform Model)、执行模型(Execution Model)、内存模型(Memory Model)、编程模型(Programming Model)。
二、平台模型
不同厂商的OpenCL实施定义了不同的OpenCL平台,通过OpenCL平台,主机能够和OpenCL设备之间进行交互操作。
OpenCL使用了一种InstallableClient Driver模型,这样不同厂商的平台就能够在系统中共存(例如:在一个系统中可以既有AMD的平台和Intel的平台)。现在的OpenCL driver模型不允许不同厂商的GPU同时运行。
OpenCL平台需要包含一个主处理器和一个或多个OpenCL设备。平台模型定义了host和device的角色,并且为device提供了一种抽象的硬件模型。一个device可以被划分成一个或多个计算单元,这些计算单元在之后能被分成一个或多个“处理单元”(processing elements)。