国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > 头条 > 如何将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 所需要处理的数据。

关注

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

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

父女一起到达巅峰的小说| 荒井小姐的秘密生活日剧免费观看| 7777影院免费观看电视剧大全| 金瓶第1回双乳被吸| 国内免费LOGO网站| 女兒亂倫在线观看| 年轻的女学生| 15岁的少女与狗高清电视| 《工地夫妻》原声版| 他扒开我小滨添我三男一女视频| 黄文| 女人乱子伦xXX沧州| 老公不在家憋不住了该怎么办| 《喂奶人妻厨房HD》| 暴躁少女BGM在线观看| 美国禁忌2在线观看电视剧| 女人高潮后要禁欲多久才能恢复| EXO妈妈MV高清在线观看| 录像狗配女人| 欧美VOCAL的RAPPER| 公与媳中文字幕乱码的预防方法| 壁咚是什么意思啊?| 小泽玛利亚| 性感的英文| 麻花传MV在线看免费观看电视剧| 《性爽2》电影| 公交车被上高湖了还能坐吗小说| CSGO未满十八岁能玩多久| 爸爸经常出差妈妈给我生孩子| 禁忌| 公么无耻要求中韩双字的意思| 乱肉辣伦短文(全肉)| 每日大赛| 妈妈叫我戴上避孕套是什么歌| 高压监狱免费观看完整版在线播放| 欧美叔叔别撩我免费观看电视剧| 女性扒开大腿内侧小肚子痒| 三个轮换C1个侯门闺房HLH笔趣阁在线阅读免. | CSGO网站开箱推荐| 女生到达巅峰时的声音音频 | 艳妇乳肉豪妇荡乳XXXOO图片