cupy,一个神奇的 python 库

本文介绍了CuPy,一个专为GPU加速设计的Python库,兼容NumPy和SciPy,通过CuPy可以轻松在NVIDIACUDA或AMDROCm平台上加速矩阵运算。文章演示了安装步骤、基本用法比较和性能提升实例,展示了CuPy在大规模并行处理中的优势。
摘要由CSDN通过智能技术生成

大家好,我是小敢。

今天给大家分享一个神奇的 python 库,cupy

https://github.com/cupy/cupy

CuPy 是一个与 NumPy 和 SciPy 数组兼容的 Python 库,专为 GPU 加速计算而设计

通过将 NumPy 替换为 CuPy 语法,你可以在 NVIDIA CUDA 或 AMD ROCm 平台上运行代码。

这允许你使用 GPU 加速执行与矩阵相关的任务,从而更快地处理更大的矩阵。

只需更换几行代码,你就可以利用 GPU 的大规模并行处理能力来显着加快索引、归一化和矩阵乘法等数组操作。

初体验

库的安装

你可以使用 pip 安装 CuPy,但在此之前你必须安装 cuda。

你可以使用以下命令来查看你安装的 cuda 版本。

!nvcc --version

可以看到我们这里使用的 cuda 版本是 11.8,因此,我们将继续安装 cupy-cuda11x 版本。

如果你运行的是较旧的 CUDA 版本,可以通过下表来查看对应要安装的 CuPy 软件包。

选择正确的版本后,我们将使用 pip 进行安装。

pip install cupy-cuda11x
CuPy 基础知识

这里,我们将比较 CuPy 和 Numpy 的语法,它们有 95% 的相似度。

首先使用 Python 列表创建 NumPy 和 CuPy 数组。之后,我们将计算向量的范数。

import cupy as cp  
import numpy as np  
  
x = [3, 4, 5]  
   
x_np = np.array(x)  
x_cp = cp.array(x)  
   
l2_np = np.linalg.norm(x_np)  
l2_cp = cp.linalg.norm(x_cp)  
   
print("Numpy: ", l2_np)  
print("Cupy: ", l2_cp)

正如我们所看到的,我们得到了类似的结果。

要将 NumPy 转换为 CuPy 数组,你只需使用 cp.asarray(X)

x_array = np.array([10, 22, 30])  
x_cp_array = cp.asarray(x_array)  
type(x_cp_array)  
#cupy.ndarray

或者,使用.get(), 将 CuPy 转换为 Numpy 数组。

x_np_array = x_cp_array.get()  
type(x_np_array)  
#numpy.ndarray
性能比较

我们将用 time.time() 计算代码执行时间。

这里我们将创建一个 3D NumPy 数组并执行一些数学函数。

import time  
  
# NumPy and CPU Runtime  
s = time.time()  
x_cpu = np.ones((1000, 100, 1000))  
np_result = np.sqrt(np.sum(x_cpu**2, axis=-1))  
e = time.time()  
np_time = e - s  
print("Time consumed by NumPy: ", np_time)  
  
#output   
#Time consumed by NumPy:  0.4807569980621338  

同样,我们将创建一个 3D CuPy 数组,执行数学运算,并对其性能进行计时。

# CuPy and GPU Runtime  
s = time.time()  
x_gpu = cp.ones((1000, 100, 1000))  
cp_result = cp.sqrt(cp.sum(x_gpu**2, axis=-1))  
e = time.time()  
cp_time = e - s  
print("\nTime consumed by CuPy: ", cp_time)  
  
#output  
#Time consumed by CuPy:  0.001682281494140625

为了计算差异,我们将 NumPy 时间除以 CuPy 时间,看起来我们在使用 CuPy 时获得了快 300 倍的性能提升。

diff = np_time/cp_time  
print(f'\nCuPy is {diff: .2f} X time faster than NumPy')

除了速度优势之外,CuPy 还提供卓越的多 GPU 支持,从而能够利用多个 GPU 的集群能力。

CuPy 提供了一种在 NVIDIA GPU 上加速 NumPy 代码的简单方法。只需进行一些修改,将 NumPy 替换为 CuPy,你就可以体验到数组计算的数量级加速。

最后

今天的分享就到这里。如果觉得不错,点赞,转发安排起来吧。

接下来我会分享更多的 「深度学习案例以及python相关的技术」,欢迎大家关注。

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

若有侵权,请联系删除

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值