Numpy 会自动检测并使用 GPU 吗?

问题描述 投票:0回答:5

我有一些关于将 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 的)的好教程/介绍材料吗?

非常感谢!

python numpy gpu
5个回答
67
投票

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

没有。

或者我是否有特定方式的代码来利用 GPU 来实现快速 计算?

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


17
投票

不,您也可以使用 CuPy,它与 numpy 具有类似的接口。 https://cupy.chainer.org/


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


7
投票

JAX 使用 XLA 编译 NumPy 代码以在 GPU/TPU 上运行:https://github.com/google/jax


0
投票

不需要CUDA

如果你的GPU不支持CUDA,似乎可以使用PyOpenCL

据了解,其与 NumPy 完全兼容的语法的工作原理如下:

import pyopencl as cl
import pyopencl.array as cl_array
import numpy as np

platform = cl.get_platforms()[0]
device = platform.get_devices()[0]
context = cl.Context([device])
queue = cl.CommandQueue(context)

N = 10000 # array size

# Create array in main memory
a_cpu = np.random.rand(N,N).astype(np.float32)

# Compute on CPU: slow
result_from_cpu = a_cpu**100

# Copy to GPU, compute on GPU, fetch result from GPU: fast
a_gpu = cl_array.to_device(queue, a_cpu)
result_from_gpu = a_gpu**100
result_from_gpu_copied_to_main_memory = result_from_gpu.get()
© www.soinside.com 2019 - 2024. All rights reserved.