为什么在CUDA和OpenCL GPU线程在一个网格分配呢?
-
20-09-2019 - |
解决方案
这是一种常用方法,这是在CUDA,OpenCL的使用,并且我认为ATI流。
网格背后的思想是提供被处理的数据和执行数据处理的线程之间的简单,但是柔性的,映射。在GPGPU执行模型的简单的版本中,一个GPU线程“已分配”用于在一维,二维或每个输出元件数据的3D网格。为了处理这个输出元件,该线程将读取的相应位置或输入数据中的网格(或多个)相邻位置处的一个(或多个)元件。通过在网格组织线程,它更容易为线程找出哪些输入数据元素来读取和在何处存储所述输出的数据元素。
这与其中一个线程每个CPU核心分配的共同多芯,CPU线程模型和每个线程处理许多输入和输出元件(例如1/4英寸四核系统中的数据的)。
其他提示
在简单的答案是GPU被设计成处理是像素的2D网格图像和纹理。当渲染在DirectX或OpenGL三角形,硬件对其进行光栅处理成像素的网格。
我将调用把方钉在圆形孔的经典类比。那么,在这种情况下,GPU是一个非常方孔和没有得到很好的四舍五入GP(一般用途)建议。
在上述说明提出2D纹理等GPU的体系结构是使得所有处理是在与管道每个流中是相同的流完成的想法,所以该数据被处理需要被分段像
原因之一,这是一个很好的API,通常您正在使用有几个嵌套循环的算法工作。如果有一个,两个或三个环,然后一个,两个或三个维度上的网格很好地映射到该问题,为您提供各指标的值的线。
让你在你的内核(指数值)需要值在API中自然表达。
不隶属于 StackOverflow