1.基本信息
OpenCL(全称为Open Computing Langugae,开放运算语言)是第一个面向异构系统(此系统中可由CPU,GPU或其它类型的处理器架构组成)的并行编程的开放式。OpenCL是一个统一的编程环境也是一个软件架构,其主要由一门用于编写kernels(在OpenCL设备上运行的函数)的语言和一组用于定义并控制平台的API(函数)组成。OpenCL提供了基于任务分割和数据分割的并行计算机制,便于软件开发人员为高性能计算服务器、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其它并行处理器。简单来说就是主机发布控制、协调等命令,设备就只单独负责执行。
2.框架组成
OpenCL平台API:平台API定义了宿主机程序发现OpenCL设备所用的函数以及这些函数的功能,另外还定义为OpenCL应用创建上下文(上下文表示的是程序运行时所拥有的所有软硬件资源->内存+处理器)的函数。这里的平台指的是宿主机、OpenCL设备和OpenCL框架的组合。程序员需要一种方法查询系统中可用的OpenCL框架。他们需要查找哪些OpenCL设备可用,这些OpenCL设备有什么特性。另外,他们还需要控制这些框架和设备的哪个子集构成给定OpenCL应用中使用的平台。
OpenCL运行时API:平台API主要用来创建上下文,运行时API则强调使用这个上下文满足应用需求的函数集,用来管理上下文来创建命令队列以及运行时发生的其它操作。例如,将命令提交到命令队列的函数。运行时API的第一个任务是建立命令队列,可以将命令队列关联到一个设备,上下文中可以同时有多个活动的命