c - pyCUDA vs C 性能差异?

标签 c cuda pycuda

我是 CUDA 编程的新手,我想知道 pyCUDA 的性能与用普通 C 实现的程序相比如何。 性能会大致相同吗?有没有我应该注意的瓶颈?

编辑: 我显然首先尝试用谷歌搜索这个问题,但很惊讶没有找到任何信息。即我会排除 pyCUDA 人员在他们的常见问题解答中回答了这个问题。

最佳答案

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

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

事实上,如果计算的 Python 部分确实会损害应用程序的性能,那么开始在 pyCUDA 中进行开发可能仍然是一个很好的入门方式,因为开发要容易得多,而且您可以始终在直接 C 中重新实现那些在 Python 中速度太慢的代码部分,并从 Python 中调用它们,获得两全其美的一些好处。

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

相关文章:

c++ - 数组结构和结构数组 - 性能差异

c++ - 如何调试 win 32 进程以查找内存访问冲突?

c - 为什么 linux 上的 fallocate() 在空间不足时会创建一个非空文件?

c++ - 使用 nvcc (CUDA-RINSIDE) 正确链接目标文件

linux - 如何在 Linux Debian 中使用 Cuda-Aware MPI 安装 Open MPI

python - pycuda.debug 实际上做了什么?

c++ - 为什么 memcpy() 和 memmove() 比指针增量快?

opencv - 如何在CUDA文件(.cu)中包含和使用OpenCv3.1.0库?

pycuda共享内存达到设备硬限制

python - PyCUDA:C/C++ 包括?