【发布时间】:2012-10-08 18:06:31
【问题描述】:
我正在做一个学校项目,我们在 cuda 中运行 sift 算法。我有一点要根据其邻居(A,B,C,D)的值来计算图像的每个像素(X)的幅度值:
A
B X C
D
我设法通过使用全局内存来实现它,因为我可以轻松地从输入数组中获取我想要的值。
但是现在我想通过首先将输入数组放入共享内存来实现它,但是我很难让线程将正确的像素放在共享内存上。我必须考虑图像边界上的填充。
我知道我需要比我想要放入其中的图像部分更多的共享内存,以便包含填充,但我不知道我的线程块是否应该包含比共享内存空间更多或更少的线程以及如何指定要阅读的内容。 如果有人可以就如何思考这个问题给我一个大致的想法,我可以从那里得到它......
谢谢!
【问题讨论】:
-
对于图像处理应用程序,共享内存的使用有点复杂。我建议您使用 CUDA 纹理。纹理读取被缓存,处理边界情况非常容易。纹理最适合邻域操作。
-
您的图形设备具备哪种计算能力?
标签: cuda shared-memory sift