python调用gpu运算_使用GPU加速numpy运算
自2012年AlexNet横空出世以来,GPU用于为矩阵运算进行加速开始在工业界和研究人员中获得了广泛关注。尤其是近来推出的各种深度学习框架,如mxnet、TensorFlow等,GPU加速更是不可或缺,成了提升运算速度的法宝。 然而,作为在Python中占据基础地位的numpy却始终没能提供这一功能,我们无法灵活地使用GPU为numpy的矩阵运算进行加速。不过,近来,作为mxnet的开发者,dmlc在mxnet的基础上,进一步开发了minpy,其为矩阵运算提供了GPU加速,而且可以做到与numpy近乎完美兼容;甚至有时,不需改动一行代码,只需在程序的开头将import numpy as np改为import minpy.numpy as np即可实现GPU加速,可谓十分省事儿方便。
首先需要注意的是,以下内容是基于Ubuntu进行描述的,如果是其他操作系统,可能需要作相应的修改。 其次,因为要用GPU加速运算,自然要确保你的计算机上有NVIDIA的GPU,而且安装好GPU的诸如CUDA和cudnn驱动。 minpy是基于mxnet进行运算的,所以它离不开mxnet。安装minpy之前,需要先安装mxnet。现在的深度学习框架,再也不像早期的caffe那样毫无人性了,安装都十分方便快捷。具体来说,只需首先执行如下命令进行编译:
sudo apt-get update
sudo apt-get install -y build-essential git libatlas-base-dev libopencv-dev
git clone –recursive -b engine https://github.com/apache/incubator-mxnet
cd mxnet;
cp make/config.mk .
echo “USE_CUDA=1” >>config.mk
echo “USE_CUDA_PATH=/usr/local/cuda” >>config.mk
echo “USE_CUDNN=1” >>config.mk
make -j$(nproc)
编译完mxnet之后,可以直接设置一下路径(假设mxnet在home目录~下):export PYTHONPATH=~/mxnet/python:$PYTHONPATH,即可使用。 当然,也可以在编译完之后,cd到mxnet目录的python目录下,运行sudo python setup.py install将mxnet安装到系统目录下,这跟使用pip安装其他包的方式一样,安装完,即可以直接使用了。 安装完mxnet之后,再安装minpy则是极其简单的事情了,只需sudo pip install minpy即可。
2. 使用minpy
相比安装时的简单方便来说,使用minpy可能更为简单。无非如前所述,在程序的最开头将import numpy as np替换为import minpy.numpy as np。 下面以一个例子来说明一下。
使用numpy:
import numpy as np
import numpy.random as random
import time
x= random.rand(1024, 1024)
y= random.rand(1024, 1024)
st = time.time()
for i in xrange(10):
z= np.dot(x, y)
print(‘time: {:.3f}.’.format(time.time()-st))
使用minpy:
import minpy.numpy as np
import minpy.numpy.random as random
import time
x= random.rand(1024, 1024)
y= random.rand(1024, 1024)
st = time.time()
for i in xrange(10):
z= np.dot(x, y)
z.asnumpy()
print(‘time: {:.3f}.’.format(time.time()-st))
两个例子在我的计算机(GPU为Titan X)的运行时间对比: 直接使用numpy,即CPU进行运算,时间为:0.350s左右; 使用minpy,即GPU进行加速,时间为:0.040s左右。 从上对比可以看到使用minpy时,GPU对矩阵运算的加速效果。
3. 不足之处和注意事项
虽然使用minpy.numpy取代numpy可以灵活地在有GPU时实现加速,无GPU时正常使用CPU进行计算,但它也有自己的不足之处,具体来说,包括以下几点:
1. 不支持inplace操作
比如对minpy的ndarray a:a.transpose()会报错;但可以使用a = a.transpose()来实现。 另,如a[1, 2] = 12这样的操作虽然可以运行,但作为深度学习的autograd对这种操作将不能正常运行。
2. 使用numpy或minpy要保持连续性
即最好不要同时在一个程序的一部分使用numpy,另一部分又使用minpy,这可能会导致你得到预期之外的结果。
3. minpy支持的功能仍然有限
因为numpy的庞杂,minpy暂时还不能支持numpy的所有子模块。
参考文献
python调用gpu运算_使用GPU加速numpy运算相关推荐
- python如何使用gpu_如何使用GPU加速numpy运算
GPU用于为矩阵运算进行加速开始在工业界和研究人员中获得了广泛关注.尤其是近来推出的各种深度学习框架,如mxnet.TensorFlow等,GPU加速更是不可或缺,成了提升运算速度的法宝. 然而,作为 ...
- python计算密集型提速_利用Cython加速计算密集型python任务
何为计算密集型任务 下面贴上网上找到的描述计算密集型任务的特点是要进行大量的计算,消耗CPU资源,比如计算圆周率.对视频进行高清解码等等,全靠CPU的运算能力.这种计算密集型任务虽然也可以用多任务完成 ...
- python调用dll函数_从Python调用DLL函数
我想从Python调用DLL中的函数.但我有个错误:"Attribute Error function not found" 这是我的代码:import os import cty ...
- python调用摄像头转向_教你如何利用python调用摄像头
这篇文章主要介绍了python调用摄像头的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一.打开摄像头 import cv2 import numpy as np def v ...
- python调用matlab函数_从 Python 调用 MATLAB 函数的三种方法
0. 实验环境Ubuntu 16.04 Matlab R2015b 1. 借助于 mlab 库 安装方法非常简单,只需一行命令 sudo pip install mlab 即可. import num ...
- python 有限域函数库_深入比特币之有限域运算
这是深入比特币系列文章,主要是面向想深入理解比特币原理的开发者. 椭圆曲线加密(elliptic curve cryptography)是比特币交易工作的核心.比特币交易的签名验证离不开椭圆曲线加密. ...
- python调用手机摄像头_教你如何利用python调用摄像头
这篇文章主要介绍了python调用摄像头的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一.打开摄像头 import cv2 import numpy as np def v ...
- python调用js接口_最全总结!聊聊 Python 调用 JS 的几种方式
原标题:最全总结!聊聊 Python 调用 JS 的几种方式 作者 | 星安果 来源 | AirPython 1. 前言 日常 Web 端爬虫过程中,经常会遇到参数被加密的场景,因此,我们需要分析网页 ...
- python科学计算三剑客_机器学习三剑客之Numpy
NumpyNumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好 ...
最新文章
- 拥有“上帝视角”是怎样的体验?高分多模卫星首批影像成果发布
- Windows 8.1 重复数据删除
- chrome无法登陆账号,显示操作超时的解决方案
- ubuntu 14.04使用devstack安装openstack mitaka版本
- sql 注入神器sqlmap 源码分析之调试sqlmap
- swift解析html数据类型,ios-Swift:以标签或textVi显示HTML数据
- 操作系统——文件基本概念
- Activity生命周期方法的调用顺序project与測试日志
- python 清华镜像pip install
- 高通:2 亿像素手机 2020 年诞生!
- 记录一次使用ghidra逆向分析斐讯K3官改固件web登录验证的经历
- 前端安全机制集合(不定期更新) -- 戴向天
- 利用python requests库在百度图库上下载图片
- 通过一个大型项目来学习分布式算法(3)
- mqtt 传文件断开连接的原因_MQTT系列 | MQTT的连接和断开
- Solr6适配自定义升级版mmseg4j
- PPT文件带有打开密码怎么解决
- 小米手机彻底关闭广告经验分享
- 2022年宜昌市高新技术企业申报奖励政策以及认定条件要求汇总!
- ssh登录windows