(一)openCL基本思想
一、opencl面对异构平台需要完成的几个步骤:
1、发现构成异构系统的组件
2、探查这些组件的特征,使软件能够适应不同硬件单元的特定特征
3、创建将在平台上运行的指令块(kernel)
4、建立并管理计算中涉及的内存对象
5、在系统中正确的组件上按照正确的顺序执行kernel
6、收集最终结果
二、kernel在openCL设置上执行的流程
kernel函数,在主机上调用,在设备上执行
1、host提出一条指令,提交一条kernel在一个opencl设备上执行;
2、host发出指令同时,openCL系统创建一个整数索引空间,每个索引对应的点将分别执行kernel的一个实例,这个点是opencl的最新计算单元,称之为work_item(工作项);
3、每个工作项都有一个对应的ID并且执行相同的指令序列,但是由于数据不同,所以工作项的行为可能会不同;
4、N多工作集合到一起构成一个work_group(工作组),每个工作组也有一个对应的ID以及内部工作项的局部ID,故work_item可以由全局ID或者工作组ID+局部ID进行确定;
5、★给定工作组的工作项会在一个计算单元的处理单元上并行处理,但是opencl也只能保证一个工作组的工作项并发执行;不同kernel