NumPy自动检测并使用GPU吗?

74

我对使用Numpy和GPU(nvidia GTX 1080 Ti)有一些基本问题。我是GPU的新手,希望确保我正确地使用GPU来加速Numpy/Python。我在互联网上搜索了一段时间,但没有找到简单的教程来解决我的问题。如果有人能给我一些指导,我将不胜感激:

1)Numpy/Python是否自动检测GPU的存在并利用它来加速矩阵计算(例如numpy.multiply、numpy.linalg.inv等)?还是我需要以特定方式编写代码来利用GPU进行快速计算?

2)是否有人可以推荐一个关于如何使用Numpy/Python与GPU(nvidia的)的好教程/入门资料?

非常感谢!


4
你可能可以使用能够检测GPU的数学库编译numpy,但我认为这不是numpy本身提供的功能。 - Mad Physicist
2
不,它不会。 - juanpa.arrivillaga
4个回答

64

Numpy/Python会自动检测GPU的存在并利用它来加速矩阵计算吗?(如numpy.multiply,numpy.linalg.inv等)

不会。

还是我需要以特定方式编写代码才能利用GPU进行快速计算?

是的。搜索Numba、CuPy、Theano、PyTorch或PyCUDA以了解不同的Python与GPU加速范例。


3
作为参考,https://stsievert.com/blog/2016/07/01/numpy-gpu/ 是一篇来自古老时代(2016年)的博客条目,但是一直在更新。 - Charles Merriam
我很好奇,picamera2可以将图像转换为np数组。使用像您提到的启用了GPU的库,直接比较包含RGB_A数据的3D np数组是否简单?还是会涉及中间转换? - undefined

17

11

不,NumPy不使用GPU。但是你可以使用CuPy。CuPy的语法与NumPy非常兼容。因此,要使用GPU,您只需要将代码中以下行替换为

 import numpy as np

使用

import cupy as np

就这些。请继续运行您的代码。我认为我应该在这里提到的另一件事是,要安装CuPy,您首先需要安装CUDA。由于您的问题的目标是通过利用GPU使计算更快,我建议您尝试使用PyTorch。使用PyTorch,您可以做几乎所有使用NumPy可以做的事情以及更多。如果您已经熟悉NumPy,学习曲线也会相当平滑。您可以在此处找到有关使用PyTorch替换NumPy的更多详细信息:https://www.youtube.com/watch?v=p3iYN-2XL8w


顺便提一下,它们并不完全等价,而且Cupy仅在CUDA上运行良好,不能保证在其他GPU上的表现。 - Alberto Sinigaglia

7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接