中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
如何用CuPy來對Numpy進(jìn)行700倍加速

作者:George Seif

編譯:ronghuaiyang

導(dǎo)讀

給大家試試GPU的威力!

Numpy是Python社區(qū)的一份大禮。它允許數(shù)據(jù)科學(xué)家、機(jī)器學(xué)習(xí)使用者和統(tǒng)計(jì)學(xué)家以一種簡單有效的方式處理矩陣格式的大量數(shù)據(jù)。

即使就其本身而言,Numpy在速度方面已經(jīng)比Python有了很大的提升。當(dāng)你發(fā)現(xiàn)自己Python代碼運(yùn)行緩慢,尤其是如果你看到很多的for循環(huán),使用Numpy總是一個好主意,將數(shù)據(jù)處理成Numpy并讓其向量化工作,可以得到最高速度!

盡管如此,Numpy只在CPU上運(yùn)行。對于通常只有8個或更少內(nèi)核的消費(fèi)級cpu,并行處理的數(shù)量以及因此可以達(dá)到的加速速度是有限的。

這時候,該我們的新朋友CuPy出場了!

什么是CuPy?

CuPy是一個庫,它利用CUDA GPU庫在Nvidia GPU上實(shí)現(xiàn)Numpy數(shù)組的運(yùn)算功能。有了這個實(shí)現(xiàn),由于gpu的CUDA核有很多,可以實(shí)現(xiàn)更好的并行加速。

CuPy的接口是Numpy的鏡像,在大多數(shù)情況下,它可以作為直接的替代。只要用兼容的CuPy代碼替換你的Numpy代碼,你就可以加使用GPU加速了。CuPy支持Numpy的大多數(shù)數(shù)組操作,包括索引、廣播、數(shù)組上的數(shù)學(xué)運(yùn)算和各種矩陣轉(zhuǎn)換。

你也可以編寫自定義的Python代碼,利用CUDA和GPU加速,如果你有一些具體的東西還不支持。所需要的只是c++格式的一小段代碼,CuPy將自動執(zhí)行GPU轉(zhuǎn)換,非常類似于使用Cython。

要開始與CuPy,我們可以通過pip安裝庫:

pip install cupy

使用CuPy跑在GPU上

對于這些基準(zhǔn)測試,我將使用以下配置的PC機(jī)進(jìn)行測試:

  • i7-8700k的CPU
  • 1080 Ti GPU
  • 32gb的DDR4 3000MHz內(nèi)存
  • CUDA 9.0

一旦安裝了CuPy,我們可以像Numpy一樣導(dǎo)入它:

 import numpy as np import cupy as cp import time

對于剩下的代碼,在Numpy和CuPy之間切換就像用CuPy的cp替換Numpy的np一樣簡單。下面的代碼為Numpy和CuPy創(chuàng)建了一個包含10億個1的3D數(shù)組。為了測量創(chuàng)建數(shù)組的速度,我使用了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)

非常容易!

令人難以置信的是,即使這只是一個數(shù)組創(chuàng)建,CuPy仍然要快得多。Numpy在1.68秒內(nèi)創(chuàng)建了包含10億個1的數(shù)組,而CuPy只花了0.16秒,這是10.5倍的加速!

但我們還可以做得更多。

讓我們試著對數(shù)組做一些數(shù)學(xué)運(yùn)算。這次我們將整個數(shù)組乘以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.507s,CuPy只花了0.000710s,這是714.1倍的加速!

現(xiàn)在讓我們嘗試使用多個數(shù)組并執(zhí)行一些操作。下面的代碼將做以下工作:

  1. 將數(shù)組乘以5
  2. 將數(shù)組與本身相乘
  3. 將數(shù)組加上自己
### 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秒的時間執(zhí)行完該進(jìn)程,而CuPy在GPU上以0.0922秒的時間執(zhí)行完該進(jìn)程,仍然有16.16倍加速!

是不是超級快?

使用CuPy是在GPU上多次加速Numpy和矩陣運(yùn)算的好方法。需要注意的是,你將獲得的加速高度依賴于你正在處理的數(shù)組的大小。下表顯示了我們改變數(shù)組大小時的速度差異:

一旦我們達(dá)到大約1000萬個數(shù)據(jù)點(diǎn),速度就會大大加快,而一旦超過1億個數(shù)據(jù)點(diǎn),速度就會大大加快。在此之下,Numpy實(shí)際上更快。此外,請記住,更多的GPU內(nèi)存將幫助你處理更多的數(shù)據(jù),所以很重要的是看看你的GPU是否有足夠的內(nèi)存,以適應(yīng)足夠的數(shù)據(jù),CuPy是值得的。

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

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
CuPy | 教你一招將Numpy加速700倍?
CuPy:將 NumPy 數(shù)組調(diào)度到 GPU 上運(yùn)行
超原版速度110倍,針對PyTorch的CPU到GPU張量遷移工具開源
GPU 編程:CUDA 和 Python 中的實(shí)際示例
Numba:基于CUDA加速的高性能Python
PyTorch 基礎(chǔ)操作
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服