惊呆了!这样可以将Numpy加速700倍!

pnumpy:并行NumPy可以无缝加速大型数组(64K +元素)的NumPy,而无需更改现有代码 PNumPy 并行NumPy可以无缝加速大型数组(64K +元素)的NumPy,而无需更改现有NumPy代码。 对于python 3.6、3.7、3.8和3.9,NumPy> = 1.18的PNumPy支持Linux,Windows和MacOS。 此第一个版本加快了NumPy二进制和一元ufunc的速度,例如加,乘,isnan,abs,sin,log,sum,min等。 加速功能还包括: sort,argsort,lexsort,arange,boolean indexing和fancy indexing 。 在不久的将来,我们将加快: astype,where,putmask和searchsorted的速度。 其他使用numpy的软件包,例如或 ,也将加快大型阵列的使用。 安装 pip install pnumpy 您也可以通过以下方式安装最新的开发版本: pip inst 立即下载

选自 | towardsdatascience  作者 | George Seif

来自 | 机器之心

本文介绍了如何利用 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 倍。

现在尝试使用更多数组并执行以下三种运算:

  1. 数组乘以 5

  2. 数组本身相乘

  3. 数组添加到其自身

### 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 所需要处理的数据。

原文链接:https://towardsdatascience.com/heres-how-to-use-cupy-to-make-numpy-700x-faster-4b920dda1f56

—完—

EfficientNet中的MBConv模块详解:为什么它能如此高效? 本文深度解析了EfficientNet中的MBConv模块,详细介绍了其核心设计理念、效率优化技术和复合缩放理论。MBConv通过深度可分离卷积、倒残差结构和注意力机制三大关键技术,实现了计算效率与模型性能的平衡,成为高效网络结构设计的典范。 阅读详情

相关推荐

树莓派与无人机协同实战:基于OpenCV的地标识别优化策略

本文深入探讨了基于树莓派与无人机的协同系统,重点分享了利用OpenCV优化地标识别以实现精准降落的实战策略。内容涵盖从应对复杂光照的图像预处理、鲁棒的轮廓几何过滤,到通过ROS进行稳定通信,以及实现分层控制与状态机设计,旨在提升系统在真实环境中的可靠性与性能。

y2z3a4b5c的博客 1086

(转)Numpy 的效率问题

转自:为什么用 Numpy 还是慢, 你用对了吗? https://morvanzhou.github.io/tutorials/data-manipulation/np-pd/4-1-speed-up-numpy/

shaozhenghan的博客 2066

MIA文献阅读 —— 深度学习在医学图像分析中的最新进展及临床应用【2024】_再现性;深度学习

coderVAEVAEVAE) (Kingma威林,2014)在概率性的工作方式学习观测数据之间的映射空间x∈Rmx∈R^mx∈Rm 和潜在的空间z∈Rnmnz∈Rn(m>>n)。作为一个潜变量模型,VAEVAEVAE制定这个问题作为观察样品的最大化对数似logpxlog∫px∣zpzdzpx∣zp (x | z)p(x∣z)可以很容易地使用神经网络建模,和pzp (z)

2401_84181704的博客 1243

CuPy | 教你一招将Numpy加速700倍?

本文转自『机器之心编译』就其自身来说,Numpy 的速度已经较 Python 有了很大的提升。当你发现 Python 代码运行较慢,尤其出现大量的 for-loops 循...

机器学习算法与Python学习 644

【有啥问啥】智能座舱CPD技术:毫米波雷达如何守护儿童安全?

本文深入探讨了智能座舱中CPD(Child Presence Detection)技术如何通过毫米波雷达保障儿童安全。毫米波雷达凭借其穿透性检测、微动感知等优势,成为儿童遗留车内的有效解决方案。文章详细解析了技术原理、系统集成方案及安装指南,为智能座舱安全技术提供了实用参考。

weixin_29193259的博客 359

网易 广州 梦幻西游端游 客户端社招笔试题 2024

4道算法题,时间2小时,牛客网笔试注:采用OJ模式,需要自己处理输入、输出。

z2014z的博客 1813

Python 性能优化:加快 Pandas、Numpy 数据处理速度的方法汇总

pandas、numpy是Python数据科学中非常常用的库,numpy是Python的数值计算扩展,专门用来处理矩阵,它的运算效率比列表更高效。pandas是基于numpy的数据处理工具,能更方便的操作大型表格类型的数据集。但是,随着数据量的剧增,有时numpy和pandas的速度就成瓶颈。 如下我们会介绍一些优化秘籍:里面包含了 代码层面的优化,以及可以无脑使用的性能优化扩展包。喜欢记得收藏、关注、点赞。 注:完整代码、数据、技术交流,文末获取 1、NumExpr NumExpr 是一个对NumPy计算

Python数据挖掘 1万+

BES (恒玄)HFP通话笔记

1.audio_developer 调试:SDK 需要打开某个算法,需要原厂打开对应宏定义编译出新的SDK,只要涉及到lib库里的功能都需要原厂手动修改编译。开发商和原厂FAE做起来都会比较累。如果没有原厂支持根本没法做,很少文档,SDK也很多问题,没法开箱即用如果要支持audio_developer上位机调试,还需改代码,如果对整个原理不清楚就没法做,没文档只能啃代码调试工具设计的也有待加强,串口通讯调试对耳机这类产品非常麻烦,本来板子就不大,还要焊接一堆线,调试还要拖着串口线。

飞天鱼 689

【Python数据科学】之Numpy

1. Numpy介绍和运行速度的比较 Numpy是Python的一个库,提供了Python高性能的数组与矩阵运算处理的能力。本身是将Python的运算,放到了C语言上运算。 import numpy as np def squares(values): result = [] for v in values: result.append(v * v) ...

Bonstoppo 270

程序化广告行业(2/89):从程序化广告深挖数据处理技巧

大家好!我一直希望能和大家在技术学习的道路上携手共进,这也是我写这一系列博客的初衷。上次我们一起学习了Python基础的数据处理知识,这次咱们借助一本程序化广告手册,深入挖掘数据处理的更多技巧。这本手册涵盖了程序化广告从概念到技术实现的诸多方面,而其中处处都涉及到数据处理,相信会给我们带来不少收获

yyy173611的博客 4572

父子Agent架构:解决AI系统上下文污染的技术方案

在AI系统设计中,上下文管理是核心挑战之一。传统单Agent架构在处理复杂任务时,常面临上下文无限膨胀导致的信息淹没和性能下降问题。父子Agent架构通过职责分离和上下文隔离机制,采用分而治之的思想,将大任务拆解为多个子任务由专门子Agent处理。该架构中父Agent负责任务规划和结果汇总,子Agent执行具体任务后立即销毁中间状态,通过精炼摘要进行通信。这种设计不仅能有效控制上下文长度,还能提升系统稳定性和执行效率,特别适用于编程辅助、自动化测试等需要多步骤处理的场景。父子Agent架构体现了计算机科学中

weixin_42531710的博客 353

spark SQL入门指南《读书笔记》

spark SQL入门指南 第一章 ETL (数据仓库技术) ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。 ...

Tesi1a的充电桩 996

华为OD机考双机位C卷 - 简单的解压缩算法 (Java & Python & JS & GO & C++ & C)

华为OD机考双机位C卷 - 简单的解压缩算法 , 提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 130

numpy如何直接在数组上进行添加_惊呆了!这样可以将Numpy加速700倍!

选自towardsdatascience,作者:George Seif本文转自机器之心(nearhuman2014)本文介绍了如何利用 CuPy 库来加速 Numpy 运算速度。就其自身来说,Numpy 的速度已经较 Python 有了很大的提升。当你发现 Python 代码运行较慢,尤其出现大量的 for-loops 循环时,通常可以将数据处理移入 Numpy 并实现其向量化最高速度...

weixin_39872123的博客 134

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

numpy将所有数据变为0和1_惊呆了!这样可以将Numpy加速700倍!

点击上方Python知识圈,设为星标回复1024获取Python资料阅读文本大概需要 5分钟近期精彩文章:Python100例(附PDF下载地址)选自towardsdatascience,作者:George Seif本文转自机器之心(nearhuman2014)本文介绍了如何利用 CuPy 库来加速 Numpy 运算速度。就其自身来说,Numpy 的速度已经较 Python 有了很大...

weixin_39876282的博客 203

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【我要偷偷学Python,然后惊呆所有人】专栏导航

文章目录全文导读我要偷偷的学Python,然后惊呆所有人Python爬虫自学系列Python数据分析打开我的Python收藏夹系列Python其他部分 全文导读 “我要偷偷学Python,然后惊呆所有人”系列完更已经有一段时间了,但是我一直觉得缺少一点啥。 直到看了橡皮檫大佬的爬虫百例教程,我知道,我的这个专栏却一份目录、 本专栏尽可能包含从Python小白入门,到爬虫数据采集、数据清洗、数据存储、数据分析、数据可视化等一系列内容, 帮助各位初学Python初学的小伙伴不至于从入门到出门。 此外,我们还有.

看,未来的博客 3058

Numpy tips: numpy.r_, numpy.c_, numpy.s_使用方法详解

目录 1. 前言 2.numpy.r_ 3. 不是函数! 4. Why not just use numpy.concatenate()? 1. 前言 在读代码过程中看到np.r_[...],惊呆了!是不是写错了?一运行还真能运行,还有这样的函数啊(笑哭)。。。 以下简单列举一些搜索到的信息和例子。想要更多更深地了解的小伙伴们自行查看以下连接吧。生命苦短,学海无涯。。。 2.numpy.r_ According to numpy document...

chenxy_bwave的专栏 1891

震惊!!Numpy数组竟然对推导式做出这种事情,隔壁def都惊呆了(pyhton运行效率验证对比)

代码运行的效率验证 定义2个函数,一个返回0-2百万的平方,一个返回0-2百万的立方来测试 def 方法调用 # 测试一段代码: # 定义2个函数,一个返回0-n的平方,一个返回0-n的立方 def square(n): data = [] for i in range(n): data.append(i**2) return data def cube(n): data = [] for i in range(n): data

渊溯的博客 552

用 Python 和 Numpy 实现音频数字指纹特征识别

本文讲的是用 Python 和 Numpy 实现音频数字指纹特征识别, 我第一次用 Shazam 的时候,简直惊呆了。除了 GPS 功能和从楼梯摔下仍然没坏之外,能用一段音频片段识别歌曲是我所见过我手机能做到的最不可思议的事了。识别是通过一个叫音频特征识别的过程来实现的,例子包括: Shazam SoundHound / Midomi Chroma...

weixin_33843947的博客 1992

惊呆了!在 Jupyter 中用鼠标“画”出数据集

你是否曾在数据科学项目中为生成一个符合需求的数据集而头疼?比如,当你需要演示一个清晰的聚类算法时,却发现随机生成的数据点杂乱无章;或者当你试图展示一个非线性决策边界时,手动调整参数却始终无法达到理想效果。传统的数据生成方法往往需要编写冗长的代码、反复调试分布参数,甚至还要依赖运气才能得到满意的结果。直到我发现了——这个神奇的 Python 库彻底改变了我的数据生成方式。它允许你像在白板上作画一样,用鼠标直接绘制数据集,几秒钟内就能得到符合你预期的数据分布。

weixin_53707653的博客 878

Python入门代码示例:一行代码把列表变元组,面试官都惊呆了

本文介绍了16个Python基础知识点及常见面试问题,涵盖数据类型转换(列表转元组)、NumPy数组创建、负索引、集合(set)使用、1-100求和、列表与元组的区别、Python语言特性解释、PEP8规范、装饰器概念、常用内置数据类型(数字/列表/元组/字符串/集合/字典)、self关键字作用、循环控制语句(break/pass/continue)以及字符串大小写转换方法(lower())。通过具体代码示例演示了各知识点的实际应用,这些内容既是Python入门基础,也是技术面试中的高频考点。

2603_96171993的博客 218

重磅!首批基础学科拔尖学生培养计划2.0基地公布,北大最多!

(给机器学习算法与Python学习加星标,提升AI技能)本文转自教育部、青塔9月17日,教育部公布了首批基础学科拔尖学生培养计划2.0基地,本次共遴选基地104个,落户33所高校,均为“...

机器学习算法与Python学习 493
上一篇: 人脑是怎么防止梯度消失和梯度爆炸的?
下一篇: 机器视觉尺寸检测基础介绍
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值