用 CuPy 将Numpy加速700倍?
就其自身来说,将y加Numpy 的速倍速度已经较 Python 有了很大的提升。当你发现 Python 代码运行较慢,将y加尤其出现大量的速倍 for-loops 循环时,通常可以将数据处理移入 Numpy 并实现其向量化最高速度处理。将y加
但有一点,速倍上述 Numpy 加速只是将y加在 CPU 上实现的。由于消费级 CPU 通常只有 8 个核心或更少,速倍所以并行处理数量以及可以实现的将y加加速是有限的。
这就催生了新的速倍加速工具——CuPy 库。
何为 CuPy?将y加

CuPy 是一个借助 CUDA GPU 库在英伟达 GPU 上实现 Numpy 数组的库。基于 Numpy 数组的速倍实现,GPU 自身具有的将y加多个 CUDA 核心可以促成更好的并行加速。
CuPy 接口是速倍 Numpy 的一个镜像,并且在大多情况下,将y加它可以直接替换 Numpy 使用。只要用兼容的 CuPy 代码替换 Numpy 代码,云南idc服务商用户就可以实现 GPU 加速。
CuPy 支持 Numpy 的大多数数组运算,包括索引、广播、数组数学以及各种矩阵变换。
如果遇到一些不支持的特殊情况,用户也可以编写自定义 Python 代码,这些代码会利用到 CUDA 和 GPU 加速。整个过程只需要 C++格式的一小段代码,然后 CuPy 就可以自动进行 GPU 转换,这与使用 Cython 非常相似。
在开始使用 CuPy 之前,用户可以通过 pip 安装 CuPy 库:
pip install cupy使用 CuPy 在 GPU 上运行
为符合相应基准测试,PC 配置如下:
i7–8700k CPU 1080 Ti GPU 32 GB of DDR4 3000MHz RAM CUDA 9.0CuPy 安装之后,用户可以像导入 Numpy 一样导入 CuPy:
import numpy as np import cupy as cp import time在接下来的编码中,Numpy 和 CuPy 之间的切换就像用 CuPy 的 cp 替换 Numpy 的 np 一样简单。如下代码为 Numpy 和 CuPy 创建了一个具有 10 亿 1』s 的 3D 数组。为了测量创建数组的速度,用户可以使用 Python 的原生 time 库:
### Numpy and CPU s = time.time() *x_cpu = np.ones((1000,1000,1000))* e = time.time() print(e - s)### CuPy and GPU s = time.time() *x_gpu = cp.ones((1000,1000,1000))* e = time.time() print(e - s)这很简单!
令人难以置信的是,即使以上只是源码库创建了一个数组,CuPy 的速度依然快得多。Numpy 创建一个具有 10 亿 1』s 的数组用了 1.68 秒,而 CuPy 仅用了 0.16 秒,实现了 10.5 倍的加速。
但 CuPy 能做到的还不止于此。
比如在数组中做一些数学运算。这次将整个数组乘以 5,并再次检查 Numpy 和 CuPy 的速度。
### Numpy and CPU s = time.time() *x_cpu *= 5* e = time.time() print(e - s)### CuPy and GPU s = time.time() *x_gpu *= 5* e = time.time() print(e - s)果不其然,CuPy 再次胜过 Numpy。Numpy 用了 0.507 秒,而 CuPy 仅用了 0.000710 秒,速度整整提升了 714.1 倍。
现在尝试使用更多数组并执行以下三种运算:
数组乘以 5 数组本身相乘 数组添加到其自身 ### Numpy and CPU s = time.time() *x_cpu *= 5 x_cpu *= x_cpu x_cpu += x_cpu* e = time.time() print(e - s)### CuPy and GPU s = time.time() *x_gpu *= 5 x_gpu *= x_gpu x_gpu += x_gpu* e = time.time() print(e - s)结果显示,Numpy 在 CPU 上执行整个运算过程用了 1.49 秒,而 CuPy 在 GPU 上仅用了 0.0922 秒,速度提升了 16.16 倍。
数组大小(数据点)达到 1000 万,运算速度大幅度提升
使用 CuPy 能够在 GPU 上实现 Numpy 和矩阵运算的多倍加速。值得注意的是,用户所能实现的加速高度依赖于自身正在处理的数组大小。下表显示了不同数组大小(数据点)的服务器托管加速差异:

数据点一旦达到 1000 万,速度将会猛然提升;超过 1 亿,速度提升极为明显。Numpy 在数据点低于 1000 万时实际运行更快。此外,GPU 内存越大,处理的数据也就更多。所以用户应当注意,GPU 内存是否足以应对 CuPy 所需要处理的数据。
相关文章
利用灯泡测试教程,轻松了解电脑的工作原理(通过灯泡测试教程,揭秘电脑内部的神秘世界)
摘要:在数字时代的今天,电脑已经成为我们生活中不可或缺的一部分。然而,对于普通用户来说,电脑的内部结构和工作原理可能依然充满了神秘感。本文将介绍一种简单且有趣的方法——灯泡测试教程,通过...2025-11-05
TIOBE 4 月榜单:Fortran 挤掉 Objective-C 重回前 20
TIOBE 公布了 2021 年 4 月的编程语言排行榜。编程语言 Objective-C 在本月跌出了 TIOBE 指数前 20 名。TIOBE 方面认为,Objective-C 在短期内重回榜单的2025-11-05
本文经AI新媒体量子位公众号ID:QbitAI)授权转载,转载请联系出处。年近40岁的C++,已经Out了?甚至还有种观点说:大部分写工程不用C++,学习这个语言只是为了竞赛……话题一出,便在网上引发2025-11-05
Git 提供了几种方式可以帮你快速查看提交中哪些文件被改变。如果你每天使用 Git,应该会提交不少改动。如果你每天和其他人在一个项目中使用 Git,假设每个人每天的提交都是安全的,你会意识到 Git2025-11-05- 摘要:在现代社会,手游已经成为人们生活中不可或缺的一部分,然而有些人希望能够同时运行多个游戏账号或进行多项操作,这就需要双开手游。本文将详细介绍如何在平板电脑上实现双开手游,并提供实用技...2025-11-05
图片来自 Pexels本文记录一下测试结果,有做超大数据量分析技术选型需求的朋友可以参考下。服务器信息如下:CPU:Intel Xeon Gold 6240 @ 8x 2.594GHz2025-11-05

最新评论