https://sanwen8.cn/p/1e4WSsv.html
Qualcomm(高通)的Adreno、苹果的PowerVR、ARM的Mali。
应用程序->几何处理->光栅处理
在没有图形芯片(显卡)之前,几何处理、光栅处理都是由 CPU 或者 FPU(浮点单元)、SIMD (单指令多数据)单元协助来完成,随着芯片技术的进步,其中的几何处理、光栅处理开始逐步放到专门的芯片上执行,之后这些专用芯片又被集成到一块,逐渐形成了现在的 GPU
应用程序把需要进行三维渲染或者计算的数据和指令递交给 GPU,由GPU来执行几何处理以及光栅处理,这样的处理方式被称作流水线(pipeline)。
GPU上相对严格的“内核”概念单元, 在OpenCL中,这个层级的单元集合被称作Compute Unit(计算单元,简称CU),而GPU厂商的行销术语 “内核” 或者“core” 在OpenCL中被称作Process Element,简称PE。
现在的GPU都采用了多层次线程技术,按照硬件开发商提供的文档,对应SIMD Lane,OpenCL中称作work-item,在图形渲染的时候你可以将其看作是屏幕上的一个像素,是最小的线程单位;
Workgroup的对应GPU硬件关系是Compute Unit,同一时间里Compute Unit跑的都是一个workgroup,而Grid则对应GPU的一个partition(分区,在设备或者说加速器允许的情况下,OpenCL可以把一个设备分成若干个分区来使用)。
=================================================================================================
http://blog.csdn.net/c_ray/article/details/44278677
在GPU上,一般通过循环展开(Loopstrip mining 技术),来把串行代码改成并行执行的。
GPU的程序一般称作Kernel程序,它是一种SPMD的编程模型。SPMD执行同一段代码的多个实例,每个实例对数据的不同部分进行操作。
SIMD 指单指令多数据流模型 single instruction stream, multiple data stream; 由单一指令部件同时控制多个重复设置的处理单元, 执行同一指令下不同数据的操作。 MIMD 指多指令多数据流模型 multiple instruction stream, multiple data stream; 多个独立或相对独立的处理机分别执行各自的程序、作业或进程。 SPMD 指单程序多数据流模型 Single program multiple data。
在数据并行应用中,用loop stripmining来实现SPMD是最常用的方法:
- 在分布式系统中,我们用MessagePassing Interface (MPI)来实现SPMD。
- 在共享内存并行系统中,我们用POSIX线程来实现SPMD。
- 在GPU中,我们就是用Kernel来实现SPMD。
OpenCL平台通常包括一个主机(Host)和多个OpenCL设备(device),每个OpenCL设备包括一个或多个CU(computeunits),每个CU包括又一个或多个PE(process element)。每个PE都有自己的程序计数器(PC)。主机就是OpenCL运行库宿主设备,在AMD和Nvida的OpenCL平台中,主机一般都指x86 CPU。
A work-item is an instance of a kernel (see paragraph 2 of section 3.2 of the standard).
Processing Element: A virtual scalar processor. See also the definition of processing element from the standard:
A work-item may execute on one or more processing elements.
https://www.mql5.com/zh/articles/405
https://www.mql5.com/zh/articles/407
https://www.mql5.com/en/articles/407
http://stackoverflow.com/questions/21221834/opencl-work-items-processing-elements-ndrange
http://stackoverflow.com/questions/38233168/opencl-maximum-work-items-per-compute-unit?rq=1
http://www.drdobbs.com/parallel/a-gentle-introduction-to-opencl/231002854?pgno=3