诚如之前说的,我们需要异构计算,这也是目前APU正在做的,在讲解这个之前,我们先来了解一下什么是Open CL技术!
Open CL技术,主要是一个为异构平台编写程序的框架,此异构平台可由CPU、GPU或者其他类 型的处理器组成。Open CL技术由用于编写kernels的语言和一组用于定义并控制平台的API组成。在计算机控制方面,OpenCL提供了基于任务分割和数据分割的并行计算机制。
在框架组成方面,Open CL技术由以下几个方面组成:Open CL平台API、OpenCL运行API、Open CL编程语言。在计算程序方面,Open CL采用了如下的方式:即首先定义上下文的宿主机程序,即分配CPU与GPU两个Open CL设备。接下来计算定义了命令队列,一个是面向GPU的有序命令队列,另一个是面向CPU的乱序命令队列。然而宿主机程序定义一个程序对象,经过编译后将为两个OpenCL设备生成内核,并最后将命令放入命令队列来执行这些内核。
在全新的OpenCL 1.1标准中,提供了更多的新功能,并且对性能进行了大幅度的改善。比如说:1、支持新数据类型,如3D矢量和新增图像格式;2、支持处理多Host指令以及跨设备Buffer处理;3、改进驱动和控制指令执行的实践应用;4、通过连接Open CL和OpenGL事件,高效共享图像和Buffer,改进与OpenGL的互操作性。
因此我们通俗来讲,Open CL技术就是通过将数据进行分离,让数据分别由GPU与CPU一起负责运算,从而达到加速通用计算的目的。而Open CL技术,则主要针对了APU等处理器内置融合GPU核心设计的产品进行优化,对硬件的支持度也非常不错。