您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

快来试试加速numpy的矩阵运算

时间:2020-08-04 11:17:29  来源:  作者:

numpyPython中常用的一个矩阵运算库,而且numpy的底层都是采用c实现的,所以执行效率和速度也是很快的,但numpy是利用CPU来进行矩阵运算的,如果遇到大数据的矩阵运算,你会发现numpy真的很慢。那有没有什么办法来加速呢?想到大矩阵的运算肯定会想多使用GPU来计算,就让我们来看看numpy的GPU版本cupy

快来试试加速numpy的矩阵运算

 

环境要求

操作系统

官方推荐安装环境是在linux操作系统下安装:

  • Ubuntu 16.04 / 18.04 LTS (64-bit)
  • centos 7 (64-bit)
    不确保能够在windowsmac OS下正常运行

其他

  • python版本:3.5.1+, 3.6.0+, 3.7.0+ 和 3.8.0+
  • cuda版本:8.0, 9.0, 9.1, 9.2, 10.0, 10.1 and 10.2
  • cudnn版本:v5, v5.1, v6, v7, v7.1, v7.2, v7.3, v7.4 和v7.5

安装cupy

  • 源码安装

pip install cupy

  • 从git安装最新版本

git clone https://github.com/cupy/cupy.git

cd cupy

pip install .

  • 直接通过whl文件安装

在安装之前需要先确定cuda的版本,以安装对应的版本,否则在后面使用cupy的是会出现一些错误

#查看cuda的版本

nvcc -V

#输出信息

#nvcc: NVIDIA (R) Cuda compiler driver

#Copyright (c) 2005-2017 NVIDIA Corporation

#Built on Fri_Sep__1_21:08:03_CDT_2017

#Cuda compilation tools, release 9.0, V9.0.176

#通过上面的信息,可以看出cuda的版本是9.0

#安装cuda为9.0版本的cupy

pip install cupy-cuda90

速度对比

下面我们通过一些例子来对比一下numpycupy的执行效率,cupy的函数接口和numpy基本上都是一样的

  • 矩阵点积运算

我们定义一个函数来统计numpy和cupy的矩阵运算时间

快来试试加速numpy的矩阵运算

 

对比100000×1024矩阵和1024×1矩阵的点积运算的消耗时间,计算10次统计最终的平均时间

num = 100000

test_dot_time(True,num)

#a time consume 0.18 sec

test_dot_time(False,num)

#a time consume 5.48 sec

通过对比可以发现,cupy要比numpy节省30倍的时间消耗,这里只是展示了一种运算,如果你的矩阵运算越多,矩阵越大使用cupy运算节省的时间会更加明显。

那么是不是以后我们可以使用cupy来替代numpy了呢?这也不一定,我们来看看当num较小时的情况,当num为10的时候会怎么样呢?

num = 10

test_dot_time(True,num,times=10)

# a time consume 0.20425036 sec

test_dot_time(False,num,times=10)

#a time consume 0.00120769 sec

这时候居然numpy要比cupy更快?这是为什么呢?

一方面是因为CPU<->GPU这里有一个数据传输,而且CPU中还有一个cache可以用来计算,这个计算速度要比GPU快,不过这个大小有限大概几十M。这就是为什么小数据CPU要比GPU快的原因。



Tags:numpy   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
导读:在数据分析当中,Python用到最多的第三方库就是Numpy。本文内容是「大数据DT」内容合伙人王皓阅读学习《Python 3智能数据分析快速入门》过后的思考和补充,结合这本书一起...【详细内容】
2020-09-02  Tags: numpy  点击:(43)  评论:(0)  加入收藏
本文的主要学习目标: 熟练的掌握 numpy 数组相关的运算; 熟练的使用 numpy 创建矩阵; 理解矩阵转置和乘法; 熟练的计算数据的相关系数、方差、协方差、标准差; 理解并能够计算特...【详细内容】
2020-08-11  Tags: numpy  点击:(48)  评论:(0)  加入收藏
numpy是python中常用的一个矩阵运算库,而且numpy的底层都是采用c实现的,所以执行效率和速度也是很快的,但numpy是利用CPU来进行矩阵运算的,如果遇到大数据的矩阵运算,你会发现num...【详细内容】
2020-08-04  Tags: numpy  点击:(82)  评论:(0)  加入收藏
 好程序员Python培训分享numpy简介:一、numpy简介:NumPy是一个功能强大的Python库,主要用于对多维数组执行计算。NumPy这个词来源于两个单词-- Numerical和Python。NumPy提供...【详细内容】
2020-07-17  Tags: numpy  点击:(55)  评论:(0)  加入收藏
一起学习,一起成长!Numpy数组的索引是一个内容丰富的主题,因为选取数据子集或单个元素的方式有很多。 一维数组In[13]:arr=np.arange(10)In[14]:arrOut[14]: array([0, 1, 2, 3,...【详细内容】
2019-11-13  Tags: numpy  点击:(70)  评论:(0)  加入收藏
一起学习,一起成长!Numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包。 ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。 用于对整...【详细内容】
2019-11-13  Tags: numpy  点击:(103)  评论:(0)  加入收藏
▌简易百科推荐
Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使...【详细内容】
2021-12-27  IT资料库    Tags:Python 库   点击:(1)  评论:(0)  加入收藏
菜单驱动程序简介菜单驱动程序是通过显示选项列表从用户那里获取输入并允许用户从选项列表中选择输入的程序。菜单驱动程序的一个简单示例是 ATM(自动取款机)。在交易的情况下...【详细内容】
2021-12-27  子冉爱python    Tags:Python   点击:(4)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  程序汪小成    Tags:Python入门   点击:(32)  评论:(0)  加入收藏
Verilog是由一个个module组成的,下面是其中一个module在网表中的样子,我只需要提取module名字、实例化关系。module rst_filter ( ...); 端口声明... wire定义......【详细内容】
2021-12-22  编程啊青    Tags:Verilog   点击:(7)  评论:(0)  加入收藏
运行环境 如何从 MP4 视频中提取帧 将帧变成 GIF 创建 MP4 到 GIF GUI ...【详细内容】
2021-12-22  修道猿    Tags:Python   点击:(5)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  我头秃了    Tags:python   点击:(9)  评论:(0)  加入收藏
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常...【详细内容】
2021-12-21  程序员小新ds    Tags:python初   点击:(5)  评论:(0)  加入收藏
Hi,大家好。我们在接口自动化测试项目中,有时候需要一些加密。今天给大伙介绍Python实现各种 加密 ,接口加解密再也不愁。目录一、项目加解密需求分析六、Python加密库PyCrypto...【详细内容】
2021-12-21  Python可乐    Tags:Python   点击:(7)  评论:(0)  加入收藏
借助pyautogui库,我们可以轻松地控制鼠标、键盘以及进行图像识别,实现自动抢课的功能1.准备工作我们在仓库里提供了2个必须的文件,包括: auto_get_lesson_pic_recognize.py:脚本...【详细内容】
2021-12-17  程序员道道    Tags:python   点击:(13)  评论:(0)  加入收藏
前言越来越多开发者表示,自从用了Python/Pandas,Excel都没有打开过了,用Python来处理与可视化表格就是四个字&mdash;&mdash;非常快速!下面我来举几个明显的例子1.删除重复行和空...【详细内容】
2021-12-16  查理不是猹    Tags:Python   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条