当前位置:首页 > 科技  > 软件

借助Python库CuPy,发掘GPU的威力

来源: 责编: 时间:2023-11-07 09:13:05 341观看
导读译者 | 布加迪审校 | 重楼CuPy简介CuPy是一个Python库,与NumPy和SciPy数组兼容,为GPU加速计算而设计。通过将NumPy换成CuPy语法,您可以在英伟达CUDA或AMD ROCm平台上运行代码。这让您可以使用GPU加速执行与数组相关的任

译者 | 布加迪Fiq28资讯网——每日最新资讯28at.com

审校 | 重楼Fiq28资讯网——每日最新资讯28at.com

CuPy简介

CuPy是一个Python库,与NumPy和SciPy数组兼容,为GPU加速计算而设计。通过将NumPy换CuPy语法,您可以在英伟达CUDA或AMD ROCm平台上运行代码。这可以使用GPU加速执行与数组相关的任务,从而更快地处理更庞大的数组。Fiq28资讯网——每日最新资讯28at.com

只需换掉几行代码,就可以利用GPU的大规模并行处理能力来显著加快索引、规范化和矩阵乘法等数组操作。Fiq28资讯网——每日最新资讯28at.com

CuPy还支持访问低级CUDA功能。它允许使用RawKernels将ndarray传递给现有的CUDA C/ C++程序,借助Streams简化性能,并允许直接调用CUDA Runtime API。Fiq28资讯网——每日最新资讯28at.com

安装CuPy

您可以使用pip安装CuPy,但在此之前,您必须使用以下命令找到正确的CUDA版本。Fiq28资讯网——每日最新资讯28at.com

Fiq28资讯网——每日最新资讯28at.com

!nvcc --versionnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2022 NVIDIA CorporationBuilt on Wed_Sep_21_10:33:58_PDT_2022Cuda compilation tools, release 11.8, V11.8.89Build cuda_11.8.r11.8/compiler.31833905_0

谷歌Colab的当前版本似乎使用CUDA版本11.8。因此,我们将继续安装cupy-cuda11x版本。Fiq28资讯网——每日最新资讯28at.com

如果您使用较旧的CUDA版本,我提供了下面的表格来帮助您确定要安装的合适的CuPy软件包。Fiq28资讯网——每日最新资讯28at.com

Fiq28资讯网——每日最新资讯28at.com

选择正确的版本后,我们将使用pip安装Python软件包。Fiq28资讯网——每日最新资讯28at.com

Fiq28资讯网——每日最新资讯28at.com

pip install cupy-cuda11x

如果您已安装了Anaconda,还可以使用conda命令自动检测并安装CuPy软件的正确版本Fiq28资讯网——每日最新资讯28at.com

Fiq28资讯网——每日最新资讯28at.com

conda install -c conda-forge cupy

CuPy基础知识

在本节中,我们将比较CuPy和Numpy的语法,它们相似度为95%。不是使用np,而是用cp代替它。Fiq28资讯网——每日最新资讯28at.com

我们将先使用Python列表创建NumPy和CuPy数组。之后,我们将计算向量的范数。Fiq28资讯网——每日最新资讯28at.com

import cupy as cpimport numpy as npx = [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)

正如我们所,我们得到了类似的结果。Fiq28资讯网——每日最新资讯28at.com

Fiq28资讯网——每日最新资讯28at.com

Numpy: 7.0710678118654755Fiq28资讯网——每日最新资讯28at.com

Cupy: 7.0710678118654755Fiq28资讯网——每日最新资讯28at.com

为了将NumPy转换CuPy数组,只需使用cp.asarray(X)。Fiq28资讯网——每日最新资讯28at.com

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

或者,使用.get()将CuPy转换Numpy数组。Fiq28资讯网——每日最新资讯28at.com

x_np_array = x_cp_array.get()type(x_np_array)numpy.ndarray

性能比较

在本节中,我们将比较NumPy和CuPy的性能。Fiq28资讯网——每日最新资讯28at.com

我们将使用time.time()对代码执行时间进行计时。然后,我们将创建一个3D NumPy数组并执行一些数学函数。Fiq28资讯网——每日最新资讯28at.com

import time# NumPy and CPU Runtimes = 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 - sprint("Time consumed by NumPy: ", np_time)Time consumed by NumPy: 0.5474584102630615

类似地,我们将创建一个3D CuPy数组,执行数学运算,并进行计时以评测性能Fiq28资讯网——每日最新资讯28at.com

# CuPy and GPU Runtimes = 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 - sprint("/nTime consumed by CuPy: ", cp_time)Time consumed by CuPy: 0.001028299331665039

为了计算差异,我们将NumPy时间除以CuPy时间,我们使用CuPy获得了500倍以上的性能提升。Fiq28资讯网——每日最新资讯28at.com

diff = np_time/cp_timeprint(f'/nCuPy is {diff: .2f} X time faster than NumPy')CuPy is 532.39 X time faster than NumPy

注意为了达到更好的效果,建议进行一番预热运行,以尽量减少时间波动。Fiq28资讯网——每日最新资讯28at.com

除了速度优势外,CuPy还提供了出色的多GPU支持,可以充分利用多个GPU的集体计算能力。Fiq28资讯网——每日最新资讯28at.com

此外,如果您想比较结果,可以看看我的Colab笔记本。Fiq28资讯网——每日最新资讯28at.com

结论

总之,CuPy提供了一种在英伟达GPU上加速NumPy代码的简单方法。只需做几个修改,将NumPy替换CuPy,就可以体验到数组计算在速度上有数量级的提升。这种性能提升使您可以处理庞大得多的数据集和模型,从而实现更先进的机器学习和科学计算。Fiq28资讯网——每日最新资讯28at.com

相关资源:Fiq28资讯网——每日最新资讯28at.com

  • 说明文档:https://docs.cupy.dev/en/stable/index.html
  • GitHubhttps://github.com/cupy/cupy
  • 示例:https://github.com/cupy/cupy/tree/main/examples
  • APIhttps://docs.cupy.dev/en/stable/reference/

原文标题:Leveraging the Power of GPUs with CuPy in Python,作者:Abid Ali AwanFiq28资讯网——每日最新资讯28at.com


Fiq28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-17375-0.html借助Python库CuPy,发掘GPU的威力

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Golang 中的 Bytes 包详解之Bytes.Buffer

下一篇: 想快速进入人工智能领域的Java程序员?你准备好了吗?

标签:
  • 热门焦点
  • JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大“烤”之下的除了众生,还有各大企业发布的ESG报告。ESG是“环境保
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就“胡锡进炒股是否知道认真报道”展开讨论。有
  • 网传小米汽车开始筛选交付中心 建筑面积不低于3000平方米

    7月7日消息,近日有微博网友@长三角行健者爆料称,据经销商集团反馈,小米汽车目前已经开始了交付中心的筛选工作,要求候选场地至少有120个车位,建筑不能低
  • 华为HarmonyOS 4升级计划公布:首批34款机型今日开启公测

    8月4日消息,今天下午华为正式发布了HarmonyOS 4系统,在更流畅的前提下,还带来了不少新功能,UI设计也有变化,会让手机焕然一新。华为宣布,首批机型将会在
  • 苹果公司要求三星和LG Display生产「无边框」OLED iPhone显示屏

    据 The Elec 报道,苹果已要求其供应商为未来的 iPhone 型号开发「无边框」OLED 显示面板。苹果显然已要求三星和 LG Display 开发新的 OLED 显示面
  • SN570 NVMe SSD固态硬盘 价格与性能兼具

    SN570 NVMe SSD固态硬盘是西部数据发布的最新一代WD Blue系列的固态硬盘,不仅闪存技术更为精进,性能也得到了进一步的跃升。WD Blue SN570 NVMe SSD的包装外
Top