opencl基础概念之并行
编程模型:
并行的模型有很多,最简单的是数据并行和任务并行,从上层来讲最容易解决
数据并行例子:输入一个数字返回其平方。。输入的数字就是并行的数据,调用同一任务计算返回。
任务并行例子:
1. 如果任务是相互独立的,那很简单
2. 如果任务是相互关系的,如一个任务的执行依赖于上个任务的完成,那就要考虑负载均衡问题
如下图,一个大工作可以分化为6个任务,但因为任务1的运行时间远远大于其他任务,所以可以将任务1运行在单独一个PE上,而另外几个合成两个PE,从而保持每个PE间的工作时间大致相同,才能发挥多任务的优势。这就是均衡问题了。
硬件模型:
本质是影射到实际硬件运行,比较复杂,以后总结