GPU 相关概念

来源:互联网 发布:手机校色软件 编辑:程序博客网 时间:2024/04/30 01:43

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,在图形渲染的时候你可以将其看作是屏幕上的一个像素,是最小的线程单位;

往上的一层线程单位在新的OpenCL被称作sub-group,属于GPU执行调度的最小硬件线程单位。再往上就是workgroup和NDRange

Workgroup的对应GPU硬件关系是Compute Unit,同一时间里Compute Unit跑的都是一个workgroup,而Grid则对应GPU的一个partition(分区,在设备或者说加速器允许的情况下,OpenCL可以把一个设备分成若干个分区来使用)。

你可以把饭粒比作是work-item,而每一口饭则算是一个sub-group,一碗饭看作是一个 workgroup,饭煲看作是NDRange


=================================================================================================

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。
GPU上并行编程的硬件一般称作SIMD。通常,发射一条指令后,它要在多个ALU单元中执行(ALU的数量即使simd的宽度),这种设计减少了控制流单元以级ALU相关的其他硬件数量。


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



0 0
原创粉丝点击