我是cuda编程新手,我想知道pycuda的性能与用纯c实现的程序相比如何。
表演会大致相同吗?有什么瓶颈需要我注意吗?
编辑:
很明显,我试图先在谷歌上搜索这个问题,却意外地没有找到任何信息。也就是说,我本可以排除pycuda人在他们的faq中回答了这个问题。

最佳答案

如果您使用的是cuda——无论是直接通过c还是pycuda——那么您所做的所有繁重的数值工作都是在gpu上执行的内核中完成的,并且是用cuda c编写的(直接由您编写,或者间接使用elementwise内核)。因此,在代码的这些部分中,性能应该没有真正的差别。
现在,如果您使用pycuda,数组的初始化和任何后期分析都将在python中完成(可能是用numpy),并且这通常比直接用编译语言完成要慢得多(不过,如果您构建的numpy/scipy直接链接到高性能库,那么至少在两种语言中都有相同的表现)。但是,希望您的初始化和终结只是您必须完成的工作总量的一小部分,因此即使有大量的开销,它仍然希望不会对整个运行时产生巨大的影响。
事实上,如果发现计算中的python部分确实影响了应用程序的性能,那么开始使用pycuda进行开发可能仍然是一个很好的开始方式,因为开发要容易得多,而且您总是可以用纯c语言重新实现python中速度太慢的代码部分,并且从python中调用它们,获得两个世界中最好的一些。

关于c - pyCUDA与C的性能差异?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7931314/

10-11 18:27