韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > 头条 > 如何将Numpy加速700倍?用 CuPy 呀

如何将Numpy加速700倍?用 CuPy 呀

头像

silencement

2019-08-31 13:17:374330浏览 · 0收藏 · 0评论

作为 Python 语言的一个扩展程序库,Numpy 支持大量的维度数组与矩阵运算,为 Python 社区带来了很多帮助。借助于 Numpy,数据科学家、机器学习实践者和统计学家能够以一种简单高效的方式处理大量的矩阵数据。那么 Numpy 速度还能提升吗?本文介绍了如何利用 CuPy 库来加速 Numpy 运算速度。

就其自身来说,Numpy 的速度已经较 Python 有了很大的提升。当你发现 Python 代码运行较慢,尤其出现大量的 for-loops 循环时,通??梢越荽硪迫?Numpy 并实现其向量化最高速度处理。

但有一点,上述 Numpy 加速只是在 CPU 上实现的。由于消费级 CPU 通常只有 8 个核心或更少,所以并行处理数量以及可以实现的加速是有限的。

这就催生了新的加速工具——CuPy 库。

何为 CuPy?

CuPy 是一个借助 CUDA GPU 库在英伟达 GPU 上实现 Numpy 数组的库?;?Numpy 数组的实现,GPU 自身具有的多个 CUDA 核心可以促成更好的并行加速。

CuPy 接口是 Numpy 的一个镜像,并且在大多情况下,它可以直接替换 Numpy 使用。只要用兼容的 CuPy 代码替换 Numpy 代码,用户就可以实现 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.0

CuPy 安装之后,用户可以像导入 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)

数组大?。ㄊ莸悖┐锏?1000 万,运算速度大幅度提升

使用 CuPy 能够在 GPU 上实现 Numpy 和矩阵运算的多倍加速。值得注意的是,用户所能实现的加速高度依赖于自身正在处理的数组大小。下表显示了不同数组大小(数据点)的加速差异:

数据点一旦达到 1000 万,速度将会猛然提升;超过 1 亿,速度提升极为明显。Numpy 在数据点低于 1000 万时实际运行更快。此外,GPU 内存越大,处理的数据也就更多。所以用户应当注意,GPU 内存是否足以应对 CuPy 所需要处理的数据。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

一天下课几个男生把我拉到| 同学的母亲中字ID| 三个老头拥着躁我一晚| 女生把QQ放在一起的头像| 漫蛙漫画(网页入口)| 吃瓜网热门事件| 免费观看B站刺激战场2023| 欧美大片推荐| 《军舰上的女兵》法国版完整版 | 成全在线观看免费全集高清完整版 | 同学的母亲中字ID| 一家乱战60集全播放免费观看| YSL蜜桃色6696是纯还是仿| 摸摸大扔子是讽刺人还是夸人| 麻豆传媒| 当着老公的面被维修工欺负| 18岁的少女与狗高清电视剧| 我被5个男人躁一夜不收我怎么办 两男吮她的花蒂和奶水视频 | 暴躁少女CSGO免费观看| 成全视频观看免费高清中国电视剧| 成全在线观看免费高清电视剧| 教官掀起衣服含着奶头H渺渺视频| 春闺艳妇(古言)作者:年富一年| 下面的嘴可比上面的诚实| 女子蹲坑排尿全过程| 姐妹花齐飞| 公翁挺进小玲的小流| 男人添女人荫道口视频| 年经母年经3的| 局长边摸边吃奶边做爰| 《特殊的家政服务》| 《再来一次好吗》动漫观看 | 《性爽2》电影| 女性左腿又开腿肚子视频大全| 善良的公与媳HD中字| 妈妈的闺蜜| 猛烈顶弄H禁欲医生H怀孕| 禁忌:家庭密码| 长江三峡游轮订票官网| 扌击辶鬲的小说父女| 《特殊的补课方式》