【发布时间】:2010-06-24 20:09:06
【问题描述】:
我正在设计一个 CUDA 应用来处理一些视频。我正在使用的算法调用填充空白像素的方式与康威的生活游戏没有什么不同:如果另一个像素周围的像素都被填充并且所有类似的值,则特定像素会被周围的值填充。这会迭代,直到所有要修复的像素数等于上一次迭代中要修复的像素数(即,当其他任何事情都无法完成时)。
我的困惑是:处理管道的上一部分和下一部分都是在 GPU 上的 CUDA 中实现的。将整个图像传回 RAM,在 CPU 上处理,然后再传回 GPU 会很昂贵。即使速度较慢,我也想在 CUDA 中实现算法。
但是,这个问题的本质要求所有线程之间同步,以在每次迭代之间更新全局图像。我曾考虑多次为每次迭代调用内核,但我无法确定该过程何时“完成”,除非我在每次迭代之间将数据传输回 CPU,由于内存传输延迟通过PCI-e 接口。
有一些并行算法经验的人有什么建议吗?提前致谢。
【问题讨论】:
标签: algorithm cuda parallel-processing