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

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

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

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

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

CuPy简介

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

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

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

安装CuPy

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

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

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

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

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

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

pip install cupy-cuda11x

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

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

conda install -c conda-forge cupy

CuPy基础知识

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

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

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

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

Numpy: 7.07106781186547555Jf28资讯网——每日最新资讯28at.com

Cupy: 7.07106781186547555Jf28资讯网——每日最新资讯28at.com

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

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

性能比较

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

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

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

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

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

结论

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

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


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

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

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

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

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

标签:
  • 热门焦点
  • 让我们一起聊聊文件的操作

    让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 之家push系统迭代之路

    之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 使用LLM插件从命令行访问Llama 2

    使用LLM插件从命令行访问Llama 2

    最近的一个大新闻是Meta AI推出了新的开源授权的大型语言模型Llama 2。这是一项非常重要的进展:Llama 2可免费用于研究和商业用途。(几小时前,swyy发现它已从LLaMA 2更名为Lla
  • 这款新兴工具平台,让你的电脑效率翻倍

    这款新兴工具平台,让你的电脑效率翻倍

    随着信息技术的发展,我们获取信息的渠道越来越多,但是处理信息的效率却成为一个瓶颈。于是各种工具应运而生,都在争相解决我们的工作效率问题。今天我要给大家介绍一款效率
  • 虚拟键盘 API 的妙用

    虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 一个注解实现接口幂等,这样才优雅!

    一个注解实现接口幂等,这样才优雅!

    场景码猿慢病云管理系统中其实高并发的场景不是很多,没有必要每个接口都去考虑并发高的场景,比如添加住院患者的这个接口,具体的业务代码就不贴了,业务伪代码如下:图片上述代码有
  • 品牌洞察丨服务本地,美团直播成效几何?

    品牌洞察丨服务本地,美团直播成效几何?

    来源:17PR7月11日,美团App首页推荐位出现“美团直播”的固定入口。在直播聚合页面,外卖“神枪手”直播间、美团旅行直播间、美团买菜直播间等均已上线,同时
  • 小米公益基金会捐赠2500万元驰援北京、河北暴雨救灾

    小米公益基金会捐赠2500万元驰援北京、河北暴雨救灾

    8月2日消息,今日小米科技创始人雷军在其微博上发布消息称,小米公益基金会宣布捐赠2500万元驰援北京、河北暴雨救灾。携手抗灾,京冀安康!以下为公告原文
  • 2299元起!iQOO Pad开启预售:性能最强天玑平板

    2299元起!iQOO Pad开启预售:性能最强天玑平板

    5月23日,iQOO如期举行了新品发布会,除了首发安卓最强旗舰处理器的iQOO Neo8系列新机外,还在发布会上推出了旗下首款平板电脑——iQOO Pad,其搭载了天玑
Top
Baidu
map