首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对齐图像卷积(OpenCL/CUDA)内核的GPU内存访问

对齐图像卷积(OpenCL/CUDA)内核的GPU内存访问
EN

Stack Overflow用户
提问于 2012-10-22 09:08:58
回答 1查看 3.7K关注 0票数 12

为了了解如何确保满足对齐需求,我多次阅读了“使用OpenCL p.no的异构计算: 157”一书中的以下段落。这说明了如何在图像卷积中放置填充(假设16x16工作组大小)。

对齐内存访问

NVIDIA和AMD GPU的性能都得益于全球内存中的数据对齐。特别是对NVIDIA来说,在128个字节的边界上对齐访问和访问128个字节段将理想地映射到内存hardware.However,在本例中,16宽的工作组将只访问64字节段,因此数据应该对齐到64字节地址。这意味着每个工作组访问的第一列应该以64字节对齐地址开始。在本例中,选择不生成值的边框像素确定所有工作组的偏移量将是工作组尺寸的倍数(即对于16x16工作组,工作组将开始访问N* 16列的数据)。为了确保每个工作组正确地对齐,唯一的要求是用额外的列填充输入数据,使其宽度成为工作组X维的倍数。

1-有人能帮助我理解在填充每个工作组访问的第一列后是如何从64字节对齐地址开始的(上述段落中提到的要求,对吗?)

同样,wrt图是正确的:对于一个16x16工作组,工作组将开始访问N*16列的数据。

如果它是正确的,则如图所示,工作组1,2应该在第1x16列开始访问数据,这与图中所示相反。我完全糊涂了!

更新: Q-2现在对我来说已经很清楚了。实际上,图中显示的工作组是2,1 (在opencl惯例中,第一列),所以它是完全正确的: 2x16=32,而不是我所想的1x16。

,但1号问题仍未得到回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-01 05:09:07

对于卷积核,每个区域(例如区域(0,1)或区域(2,1)等等)还必须包括它周围的“光环”数据,以便当卷积核在区域边缘的数据元素上操作时,它有一个合适的邻域集来计算该数据点的卷积。这意味着对于左上角有数据元素(0,0)的区域(0, 0),我需要元素(-1,0),(-2,0)等来计算元素(0,0)的卷积。

现在,如果我正常地存储图像,使该元素( 0,0)位于内存位置0(或其他64字节对齐地址),那么当我在卷积之前访问元素时,我将访问64字节对齐区域之外的数据。因此,我们可以用额外的数据元素“向左”,即在地址中“优先”地“填充”图像的最左边的列,这样卷积内核就可以获取64字节对齐区域内的值,而我没有跨越64字节的边界。我们没有在内存位置0启动图像存储,而是在内存位置为零启动晕存储,第一个图像数据元素从位置0+晕宽开始。该填充还可以影响对齐其他区域的晕边界,如图像中红色虚线的相交所示,假设该区域的x和y维数是工作组x和y维数的倍数,如图所示。

现在,让我们也假设图像是一些非功率的2宽(例如,192个像素宽的高清图像)。如果我们只是包括光环宽度作为填充在右边的图像(即。在像素行的末尾),然后紧接着开始下一个像素行的晕区,我们也不太可能有一个正确对齐的区域从下一个像素行(包括晕)开始。因此,我们将额外的填充放在每一行的末尾(这不受任何卷积操作的影响,只是浪费了空间),这样当我们开始下一个像素行的晕区时,它就开始于一个正确对齐的地址上。

这个讨论和方法(以及问题,我相信)实际上只关注于确保每个工作组数据访问的起始地址是对齐的。只要第一工作组的起始地址对齐(通过适当的填充和调整内存中的图像存储),并且工作组具有适当的尺寸(例如,16宽,每个工作人员4字节),那么下一个工作组的起始地址也将被对齐。当然,相邻工作组的数据访问之间会有重叠,因为相邻工作组的晕区是重叠的。

我在这里使用的对齐有一个相当简单的定义。内存中的地址是2**n字节对齐,如果地址的最小有效n位都为零。因此,64字节对齐区域具有一个起始地址,其6个最小位均为零。这对于满足体系结构的内存负载和存储需求,特别是它们所包含的DRAM子系统来说,通常是有用的。现代的DRAM内存库访问总是返回多个字节,因此,如果我们同时使用所有这些字节,在代码中的同一位置使用这些字节,则可以对传输进行最有效地利用。对于关于对齐的额外覆盖率以及它对合并和改进数据访问的影响,您可能对来自这次网络研讨会 (和幻灯片)的nvidia网页感兴趣。为了快速查看,幻灯片26-33的这份报告涵盖了基本的想法。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13008096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档