PyCUDA 和 NumbaPro CUDA Python 有啥区别?

Posted

技术标签:

【中文标题】PyCUDA 和 NumbaPro CUDA Python 有啥区别?【英文标题】:What is the difference between PyCUDA and NumbaPro CUDA Python?PyCUDA 和 NumbaPro CUDA Python 有什么区别? 【发布时间】:2017-12-23 04:25:49 【问题描述】:

我是 CUDA 的新手,我想弄清楚 PyCUDA (free) 还是 NumbaPro CUDA Python(不是免费的)对我来说会更好(假设图书馆费用不是问题)。

两者似乎都要求您使用它们各自的 Python 方言。但是,PyCUDA 似乎要求您在C 代码中编写内核函数,这比使用 NumbaPro 更麻烦,NumbaPro 似乎为您完成了所有艰苦的工作。

真的是这样吗?会有显着的性能差异吗?

【问题讨论】:

numbapro 现在是 BSD 许可证上的 numba,它也是免费的。 Numba 是 Nvidia 合作的项目。 Numba 不直接提供 cuBLAS 访问,由accelerate.cuda.blas 启用。 【参考方案1】:

numbapro 现在是 BSD 许可证上的 numba,也是免费的。

据this报道pyOpenCL和pyCUDA比numba快5倍

【讨论】:

【参考方案2】:

让我们来谈谈这些库中的每一个:

PyCUDA:

PyCUDA 是一个用于 CUDA 的 Python 编程环境,它使您可以从 Python 访问 Nvidia 的 CUDA 并行计算 API。 PyCUDA 是用 C++(基础层)和 Python 编写的,C++ 代码将在 NVIDIA 芯片上执行,Python 代码编译、执行并获取 C++ 代码的结果并自动管理资源使其成为一体强大的库 CUDA。

PyCUDA 与 PyOpenCl 略有不同,可用于在各种平台上运行代码,包括 Intel、AMD、NVIDIA 和 ATI 芯片。不像 PyCUDA 只能在 NVIDIA 芯片上运行:

Python + CUDA = PyCUDA

Python + OpenCL = PyOpenCL

NUMBA/NumbaPro:

NUMBA:NumbaPro 或最近的 Numba(NumbaPro 已被弃用,其代码生成功能已移入开源 Numba。)是由 Anaconda, Inc. 赞助的 Python 的开源 NumPy 感知优化编译器。使用卓越的 LLVM 编译器基础架构将 Python 语法编译为机器代码。 Numba 支持编译 Python 以在 CPU 或 GPU 硬件上运行,它基本上是用 Python 编写的。它易于安装和实施。

正如@Wang 所说,Pycuda 比 Numba 快。

【讨论】:

以上是关于PyCUDA 和 NumbaPro CUDA Python 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在这个例子中 PyCUDA 比 C CUDA 快

使用pycuda替换字符串,使用cuda替换字符串

jetson nano安装pycuda

实验室中搭建Spark集群和PyCUDA开发环境

使用PyCUDA和固定内存的dot产品

GPU加速系列PyCUDA:上手简单操作