2011-02-11 111 views

回答

6

一般回答:没关系。使用你更熟悉的语言。

请记住,但是,pycuda仅仅是围绕着CUDA C接口的包装,所以它可能不会始终保持最新,也是它增加了错误的另一潜在来源,...

Python是擅长快速原型设计,所以我亲自去Python。如果需要,您可以在以后随时切换到C++。

+0

非常感谢你的启发! – ardiyu07 2011-02-11 15:48:38

3

如果你的管道的其余部分是Python,并且你已经在使用Numpy来加快速度,pyCUDA是加速昂贵操作的一个很好的补充。但是,根据图像大小和程序流的大小,使用pyCUDA可能不会获得太多的加速。在数据量较大的PCI总线上来回传输数据时存在延迟。

在你的情况下(加法和减法),在pyCUDA中有内置的操作,你可以使用你的优势。然而,根据我的经验,将pyCUDA用于非重要的事情需要了解CUDA的工作原理。对于从没有CUDA知识开始的人来说,pyCUDA可能是一个陡峭的学习曲线。

2

看看openCV,它包含了大量的图像处理功能和所有助手来加载/保存/显示图像和操作相机。

它现在还支持CUDA,一些图像处理功能已在CUDA中重新实现,并为您提供了一个很好的框架。

+0

一个惊人的参考!谢谢! – ardiyu07 2011-02-11 18:50:32

0

Alex的回答是对的。包装中消耗的时间量很小。请注意,PyCUDA有一些很好的元编程构造,用于生成可能有用的内核。

如果您所做的只是添加或减少图像的元素,您可能完全不应该使用CUDA。通过PCI-E总线来回传输所花费的时间将会大大节省您从并行性中获得的节省量。当你处理CUDA时,考虑CGMA比率(计算全局内存访问比率)是有用的。对于2次存储器访问(1次读取和1次写入),您的加/减操作只有1次浮点操作。从CUDA的角度来看,这最终是非常糟糕的。