OpenCL概念基础
面向异构平台的应用都必须完成以下步骤:
1)发现构成异构系统的组件。
2)探查这些组件的特征,使软件能够适应不同硬件单元的特定特性。
3)创建将在平台上运行的指令块(内核)。
4)建立并管理计算中涉及的内存对象。
5)在系统中正确的组件上按正确的顺序执行内核。
6)收集最终结果。
这些步骤通过OpenCL中的一系列API再加上一个面向内核的编程环境来完成。我们将采用一种“分而治之”的策略解释以上步骤的所有工作。我们把问题分解为以下模型:
1)平台模型 (platform model):异构系统的高层描述。
2)执行模型 (execution model):指令流在异构平台上执行的抽象表示。
3)内存模型 (memory model):OpenCL中的内存区域集合以及一个OpenCL计算期间这些内存区域如何交互。
4)编程模型( programming model):程序员设计算法来实现一个应用时使用的高层抽象。
平台模型
OpenCL平台模型定义了使用OpenCL的异构平台的一个高层表示。这个模型如图1-6所示。
OpenCL平台总是包括一个宿主机 (host)。宿主机与OpenCL程序外部的环境交互,包括V/О或与程序用户的交互。