来源:http://blog.csdn.net/songzitea/article/details/12260659
介绍
对于OpenCL来说,它的执行过程可以这样理解:一段代码,.cpp的那个是在host上面执行的,也就是那段非kernel的代码。而kernel的那段代码来说,是在设备上执行的。对于平台,设备,上下文什么的都是一些比较抽象的概念。
首先要想执行一段代码,首先就是在host上找一个可用的平台,然后找一个可用的设备。通过设备去建立上下文。通过上下文来创建命令队列。要是想执行程序的话是要在这个抽象的设备里面执行kernel之后把执行的结果在放回到host里面。
总结
1. 在平台模型中,一个主机协调在一个或多个OpenCL设备上的程序执行,平台可以看作是厂商特定的API实现的。因此,平台是上的设备只局限于厂商知晓如何进行交互的设备。如果选择A公司的平台是无法与B公司的GPU进行通信的。
2. AMD的平台不仅支持AMD自己的设备,还支持Intel的CPU。
3. host和设备之间是通过内存进行转换的。