我在使用CUDA处理图像的项目中。该项目只是一个增加或减少图像。使用CUDA实现,python(pycuda)或C++处理图像?
请问你的专业意见,哪个最好,哪两个的优缺点?
我很感谢大家的意见和/或建议,因为这个项目对我来说非常重要。
我在使用CUDA处理图像的项目中。该项目只是一个增加或减少图像。使用CUDA实现,python(pycuda)或C++处理图像?
请问你的专业意见,哪个最好,哪两个的优缺点?
我很感谢大家的意见和/或建议,因为这个项目对我来说非常重要。
一般回答:没关系。使用你更熟悉的语言。
请记住,但是,pycuda仅仅是围绕着CUDA C接口的包装,所以它可能不会始终保持最新,也是它增加了错误的另一潜在来源,...
Python是擅长快速原型设计,所以我亲自去Python。如果需要,您可以在以后随时切换到C++。
如果你的管道的其余部分是Python,并且你已经在使用Numpy来加快速度,pyCUDA是加速昂贵操作的一个很好的补充。但是,根据图像大小和程序流的大小,使用pyCUDA可能不会获得太多的加速。在数据量较大的PCI总线上来回传输数据时存在延迟。
在你的情况下(加法和减法),在pyCUDA中有内置的操作,你可以使用你的优势。然而,根据我的经验,将pyCUDA用于非重要的事情需要了解CUDA的工作原理。对于从没有CUDA知识开始的人来说,pyCUDA可能是一个陡峭的学习曲线。
Alex的回答是对的。包装中消耗的时间量很小。请注意,PyCUDA有一些很好的元编程构造,用于生成可能有用的内核。
如果您所做的只是添加或减少图像的元素,您可能完全不应该使用CUDA。通过PCI-E总线来回传输所花费的时间将会大大节省您从并行性中获得的节省量。当你处理CUDA时,考虑CGMA比率(计算全局内存访问比率)是有用的。对于2次存储器访问(1次读取和1次写入),您的加/减操作只有1次浮点操作。从CUDA的角度来看,这最终是非常糟糕的。
非常感谢你的启发! – ardiyu07 2011-02-11 15:48:38