news 2026/10/27 1:19:49

从 NumPy 到 CuPy:轻松实现计算 GPU 性能加速

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从 NumPy 到 CuPy:轻松实现计算 GPU 性能加速

一、CuPy 介绍

NumPy作为Python科学计算生态的基石,凭借其简洁和丰富的数学函数库以及高效的C语言底层实现,已成为数据科学、机器学习领域不可或缺的工具。然而,NumPy的主要局限在于其计算完全依赖CPU,当面对大规模数据集和高维矩阵运算时,性能瓶颈日益凸显。

而CuPy的出现,几乎可以让用户无感的前提下完成性能的提升,CuPy是一个开源的高性能计算库,旨在利用GPU加速科学计算,作为NumPy的GPU加速替代方案,几乎完整复刻了NumPy的API设计,允许开发者在不修改现有代码的情况下,将计算任务迁移到GPU上执行。甚至用户只需将import numpy as np改为import cupy as cp,即可直接使用GPU加速执行。CuPy不仅支持基础的数组操作,还扩展实现了SciPy中的稀疏矩阵、信号处理等模块,并且还允许用户自定义CUDA内核以应对特定计算需求。

官方文档地址:https://docs.cupy.dev/en/stable/index.html

CuPy 安装

CuPy 版本与 CUDA 的版本对应:

CUDACuPy 版本
v11.2 ~ 11.8 (x86_64 / aarch64)cupy-cuda11x
v12.x (x86_64 / aarch64)cupy-cuda12x
v13.x (x86_64 / aarch64)cupy-cuda13x

我的电脑是11.6,这里安装cupy-cuda11x进行测试:

二、Numpy VS CuPy 计算速度对比

Numpy 测试

importtimeimportnumpyasnp# 测试不同规模的矩阵乘法sizes=[10,100,500,1000,2000,5000,8000,10000]forsizeinsizes:a=np.random.randn(size,size)b=np.random.randn(size,size)start=time.time()c=np.dot(a,b)use_time=time.time()-startprint(f"Size{size}x{size}: Use Time:{use_time}s")

运行结果:

Numpy 随着计算量的增多耗时逐渐增多。

Cupy 测试

使用相同的代码,将import numpy as np替换为import cupy as np:

importtimeimportcupyasnp## cupy 先预热, 让后续时间计算更准确dummy=np.ones((100,100))_=np.dot(dummy,dummy)# 测试不同规模的矩阵乘法sizes=[10,100,500,1000,2000,5000,8000,10000]forsizeinsizes:a=np.random.randn(size,size)b=np.random.randn(size,size)start=time.time()c=np.dot(a,b)use_time=time.time()-startprint(f"Size{size}x{size}: Use Time:{use_time}s")

CuPy 随着计算量的增多,耗时提升不明显。对比 Numpy 速度提升非常明显。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 1:18:51

Muse Spark多代理并行架构解析:如何跑赢Gemini

1. 从"跑赢Gemini"这个结果说起:Muse Spark到底赢在哪一层先把结论摆在前面:Muse Spark 能在评测里压过 Gemini,靠的不是模型参数堆得多、也不是单点能力有多炸裂,而是它把"多代理并行"这件事做成了架构级的设…

作者头像 李华
网站建设 2026/10/27 1:18:26

08:石头剪刀布

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/27 1:17:57

【Linux基础回顾与总结】

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/27 1:17:00

数字IC前端学习笔记:脉动阵列的设计方法学(二)

相关阅读 数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 引言 脉动结构(也称为脉动阵列)表示一种有节奏地计算并通过系统传输数据的处理单元(PEs)网络。这些处理单元有规律地泵入泵出数据以保持规则…

作者头像 李华
网站建设 2026/10/27 1:15:01

Rope 换脸GUI:三步部署,10秒视频最快4.4秒出片

Rope 换脸GUI:三步部署,10秒视频最快4.4秒出片 【免费下载链接】Rope GUI-focused roop 项目地址: https://gitcode.com/GitHub_Trending/ro/Rope 想把视频里的人物换成另一张脸,不想折腾命令行?Rope 把 InsightFace 的 in…

作者头像 李华
网站建设 2026/10/27 1:15:01

YOLO-V8 通过英特尔 OpenVINO 提高 CPU 推理速度

一、OpenVINO 加速 YOLO-V8 CPU 推理 在本专栏的前面几篇文章我们使用 YOLO-V8 进行了各种任务的实验,但是针对与推理速度一直使用的 PyTorch 的格式,并且很多情况下也是在 CPU 上推理的,实际运行速度其实不是非常的理想。而OpenVINO 是一款…

作者头像 李华