以下文章来源于气海同途 ,作者气海同途
Numpy一直是Python社区的礼物。它允许数据科学家,机器学习从业者和统计学家以简单有效的方式处理矩阵格式的大量数据。
就速度而言,Numpy本身就是Python的重要一步。每当你发现你的Python代码运行缓慢时,特别是如果你看到很多for循环,那么将数据处理转移到Numpy并让它的矢量化以最快的速度完成工作总是一个好主意!
尽管如此,即使加速,Numpy也只能在CPU上运行。由于CPU通常具有8个核心或更少,因此并行处理量以及因此可以实现的加速量是有限的。而cupy则可以调用GPU进行计算加速(因此,要想使用cupy库,请确保你的设备上配备了GPU卡)。
1.安装
使用conda安装(pip安装见文末)
代码语言:javascript复制conda install -c conda-forge cupy
2.使用
Cupy使用非常简单,只需将numpy替换成cupy即可,以下面代码为例,创建一个数组,对它进行简单的乘除加减,测试cupy和numpy运行速度:
测试代码
代码语言:javascript复制import numpy as np
import cupy as cp
import time
start_time = time.time()
x = np.ones((1000,1000,1000))
x= 5*x
X2*= x*x
end_time = time.time()
print(end_time - start_time)
测试numpy的速度
测试cupy的速度(只需改import numpy as np为cupy即可)
总结
我们发现用时得到了大大的减少;是原来的0.4869s/0.001174s=415倍。
当然在实际运用过程中,cupy加速可能不会达到这么多倍,这取决于你代码里面矩阵运算的多少,如果numpy矩阵运算较少,那加速比自然就低,因此在写python脚本的时候应尽量多用矩阵运算,方便提速。
附:如何利用pip安装cupy
代码语言:javascript复制pip install cupy-cuda101
如果使用pip安装cupy的话,请注意选择自己的对应的cuda版本的cupy(用conda的话则无需担忧,具体原因可见:pip和conda,你会选择谁)。如何查看自己的cuda版本?
anaconda中输入conda list cudatoolkit:
对此,我们安装cuda10.1版本的cupy。
如果我们安装cupy-cuda116则导入会出现错误ImportError: DLL load failed while importing runtime: 找不到指定的模块。或者使用出现错误,例如AttributeError: module 'cupy' has no attribute 'arange',因此需要装对应版本的cupy。
更多安装问题可以参考
https://docs.cupy.dev/en/latest/install.html#installing-cupy-from-conda-forge