minpy使用GPU加速Numpy科學(xué)計(jì)算方式
minpy使用GPU加速Numpy科學(xué)計(jì)算
minpy是一個(gè)基于MXNet的支持GPU的加速Numpy計(jì)算的庫(kù),用法和Numpy幾乎一樣,使用:
import scipy.io as sio import matplotlib as plt import minpy.numpy as np
使用時(shí)只需要在Numpy前面加上minpy,就可以像Numpy一樣使用它進(jìn)行矩陣運(yùn)算。
minpy安裝起來(lái)也很簡(jiǎn)單:
先安裝MXNet依賴
# 安裝cuda10.1版本的MXNet pip install mxnet-cu101 ?? # 如果你的cuda版本為10.0,則執(zhí)行下面的命令,其他版本同理 pip install mxnet-cu100
然后安裝minpy:
pip install minpy
然后就可以正常使用了。
Install mxnet and install minpy
make sure the things below.
- 1.your machine has a nvidia gpu.
- 2.installed gpu cuda and cudnn.
how to install mxnet?
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ? ? --upgrade mxnet-cu90
use cu90 because my cuda version is 9.0
then install minpy
pip install minpy
then is a demo to test minpy gpu acceleration.
import time
import numpy as np
import numpy.random as random
import minpy.numpy as mnp
def main():
random.seed(0)
X = random.randn(10000, 16000)
A = np.array(X,dtype=np.float32)
Y = random.randn(16000, 5000)
B = np.array(Y,dtype=np.float32)
print("A.shape:%s" ,A.shape)
print("B.shape:%s" ,B.shape)
start = time.time()
C = mnp.dot(A,B)
d1 = time.time() - start
print('minpy numpy:', d1)
print(C)
start = time.time()
C = np.dot(A,B)
d2 = time.time() - start
print('numpy:', d2)
print(C)
print("%s" , d2/d1)
if __name__ == '__main__':
main()
output
A.shape:%s (10000, 16000)
B.shape:%s (16000, 5000)
minpy numpy: 0.3046295642852783
[[-129.23964 34.24473 205.77763 ... 64.57458 -134.04288
-282.5226 ]
[ 56.055874 151.66455 4.534541 ... -59.855354 77.807755
102.97847 ]
[ 53.7853 -133.20685 -114.16803 ... -78.15841 -22.429447
-100.71634 ]
...
[ 18.944311 -179.30074 -114.42271 ... -22.20309 -29.131681
16.166618 ]
[ -5.1453457 -11.761197 -28.63139 ... -236.34016 -67.44423
-50.811813 ]
[ 137.46251 -77.67743 -74.262535 ... -25.249132 83.94517
-14.008699 ]]
numpy: 3.323066234588623
[[-129.23964 34.24473 205.77763 ... 64.57458 -134.04288
-282.5226 ]
[ 56.055874 151.66455 4.534541 ... -59.855354 77.807755
102.97847 ]
[ 53.7853 -133.20685 -114.16803 ... -78.15841 -22.429447
-100.71634 ]
...
[ 18.944311 -179.30074 -114.42271 ... -22.20309 -29.131681
16.166618 ]
[ -5.1453457 -11.761197 -28.63139 ... -236.34016 -67.44423
-50.811813 ]
[ 137.46251 -77.67743 -74.262535 ... -25.249132 83.94517
-14.008699 ]]
%s 10.908548034020265
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python functools模塊學(xué)習(xí)總結(jié)
這篇文章主要介紹了Python functools模塊學(xué)習(xí)總結(jié),本文講解了functools.partial、functool.update_wrapper、functool.wraps、functools.reduce、functools.cmp_to_key、functools.total_ordering等方法的使用實(shí)例,需要的朋友可以參考下2015-05-05
python中字符串比較使用is、==和cmp()總結(jié)
在Python中比較字符串最好是使用簡(jiǎn)單邏輯操作符,今天為大家講解一下is、==和cmp()使用總結(jié)2018-03-03
Python利用PyQt5制作一個(gè)獲取網(wǎng)絡(luò)實(shí)時(shí)NBA數(shù)據(jù)并播報(bào)的GUI程序
現(xiàn)在NBA聯(lián)賽也進(jìn)行到半決賽了,我們?cè)趺礃硬拍芤愿斓姆椒ǐ@取NBA的數(shù)據(jù)呢?這里我們就自己來(lái)做一個(gè)數(shù)據(jù)播報(bào)的程序,需要的朋友可以參考下2021-06-06
Python使用Selenium抓取動(dòng)態(tài)網(wǎng)頁(yè)的方法步驟
在如今的網(wǎng)絡(luò)中,許多網(wǎng)站是“動(dòng)態(tài)”的,即網(wǎng)頁(yè)內(nèi)容不是靜態(tài)的 HTML 文件,而是由 JavaScript 動(dòng)態(tài)生成的,這種動(dòng)態(tài)網(wǎng)頁(yè)在數(shù)據(jù)抓取中帶來(lái)了一些挑戰(zhàn),在本教程中,我們將詳細(xì)介紹如何使用 Python 抓取動(dòng)態(tài)網(wǎng)頁(yè),需要的朋友可以參考下2024-11-11
python使用xlrd實(shí)現(xiàn)檢索excel中某列含有指定字符串記錄的方法
這篇文章主要介紹了python使用xlrd實(shí)現(xiàn)檢索excel中某列含有指定字符串記錄的方法,涉及Python使用xlrd模塊檢索Excel的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05
基于Python實(shí)現(xiàn)圖像文字識(shí)別OCR工具
在工作、生活中常常會(huì)用到,比如票據(jù)、漫畫、掃描件、照片的文本提取。本文主要介紹了基于PyQt + PaddleOCR實(shí)現(xiàn)的一個(gè)桌面端的OCR工具,用于快速實(shí)現(xiàn)圖片中文本區(qū)域自動(dòng)檢測(cè)+文本自動(dòng)識(shí)別,需要的朋友可以參考一下2021-12-12

