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

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

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

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

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

CuPy简介

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

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

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

安装CuPy

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

a4o28资讯网——每日最新资讯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版本。a4o28资讯网——每日最新资讯28at.com

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

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

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

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

pip install cupy-cuda11x

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

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

conda install -c conda-forge cupy

CuPy基础知识

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

我们将先使用Python列表创建NumPy和CuPy数组。之后,我们将计算向量的范数。a4o28资讯网——每日最新资讯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)

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

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

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

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

为了将NumPy转换CuPy数组,只需使用cp.asarray(X)。a4o28资讯网——每日最新资讯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数组。a4o28资讯网——每日最新资讯28at.com

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

性能比较

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

我们将使用time.time()对代码执行时间进行计时。然后,我们将创建一个3D NumPy数组并执行一些数学函数。a4o28资讯网——每日最新资讯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数组,执行数学运算,并进行计时以评测性能a4o28资讯网——每日最新资讯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倍以上的性能提升。a4o28资讯网——每日最新资讯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

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

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

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

结论

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

相关资源:a4o28资讯网——每日最新资讯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 Awana4o28资讯网——每日最新资讯28at.com


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

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

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

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

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

标签:
  • 热门焦点
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • 六大权益!华为8月服务日开启:手机免费贴膜、维修免人工费

    8月5日消息,一年一度的华为开发者大会2023(Together)日前在松山湖拉开帷幕,与此同时,华为8月服务日也式开启,到店可享六大专属权益。华为用户可在华为商城Ap
  • 把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • 三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • 共享单车的故事讲到哪了?

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

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • 华为Mate60标准版细节曝光:经典星环相机模组回归

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 半导体需求下滑 三星电子DS业务部门今年营业亏损预计超10万亿韩元

    7月17日消息,据外媒报道,去年下半年开始的半导体需求下滑,影响到了三星电子、SK海力士、英特尔等诸多厂商,营收明显下滑,部分厂商甚至出现了亏损。作为
Top