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 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章