pyCUDA与C的性能差异?

mem*_*elf 17 c cuda pycuda

我是CUDA编程的新手,我想知道如何将pyCUDA的性能与普通C中实现的程序进行比较.性能大致相同吗?我应该注意哪些瓶颈?

编辑: 我显然首先试图谷歌这个问题,并惊讶于没有找到任何信息.即我会排除pyCUDA人在他们的常见问题解答中回答这个问题.

Jon*_*rsi 17

如果您正在使用CUDA - 无论是直接通过C还是使用pyCUDA - 您正在执行的所有繁重的数字工作都是在gpu上执行的内核中完成的,并且是用CUDA C编写的(直接由您编写,或者间接使用elementwise编写)内核).因此,代码的这些部分的性能应该没有真正的区别.

现在,如果你使用pyCUDA,那么数组的初始化和任何后期工作分析都将在python中完成(可能是numpy),并且通常比直接用编译语言做得慢得多(尽管如果你有的话)以这样一种方式构建你的numpy/scipy,它直接链接到高性能库,然后这些调用至少会在任何一种语言中执行相同的操作).但是,希望您的初始化和最终化只是您必须完成的工作量的一小部分,因此即使存在大量开销,它仍然希望不会对整体运行时产生巨大影响.

事实上,如果事实证明计算的python部分确实损害了应用程序的性能,那么开始在pyCUDA中进行开发可能仍然是一种很好的入门方式,因为开发非常简单,并且您可以随时重新开始在C语言中实现那些在Python中速度太慢的代码部分,并从python中调用那些部分,获得两个世界中最好的部分.

  • 是的,是的。事实上,根据我的基准测试,速度慢了一个数量级。对于实际 GPU 处理速度非常快的迭代算法来说,性能会受到很大影响。 (2认同)

Pet*_*ich 5

如果您想通过不同方式使用pyCUDA来了解性能差异,请参阅pyCUDA Wiki示例中包含的SimpleSpeedTest.py.它基于pyCUDA中封装的CUDA C内核完成的相同任务,以及pyCUDA设计人员创建的几个抽象基准.有性能差异.