【发布时间】:2017-12-11 20:15:37
【问题描述】:
我正在尝试为 CUDA 设计卷积核代码。它将拍摄相对较小的图片(对于我的应用程序通常是 19 * 19 的图片)
在我的研究中,我发现最值得注意的是这篇论文:https://www.evl.uic.edu/sjames/cs525/final.html
我理解它的概念,但我想知道,对于小图像,使用 原始图像的逐个像素块,并使用该块的线程作为要获取的像素,然后进行块宽缩减,足够快吗?我做了一个基本的实现,使全局内存访问合并,那么,它是小图片的好设计吗?还是我应该遵循“传统”的方法?
【问题讨论】:
-
内核有多大?
-
内核为 15 * 15 或 31 * 31 个细胞。我将它们填充到 2 的幂,这就是我试图使全局内存访问合并
-
它看起来足够小,您可以将内核和映像加载到共享内存中,并留出空间。
-
这是我采用的方法,对不可分割的图像尺寸进行了一些调整(例如 9 * 9,内核半径 = 8,您需要加载 (9 + 2 * 8)² px 的图片,或 25²,因此您需要在线程之间进行划分(也许我应该使用“虚拟”扭曲,以便每个线程加载 1 个像素?)