前面說過使用cython來加速python程式的執行速度,但是相對來說程式改動較大,這次就說一種簡單的方式來加速python計算速度的方法,就是使用numba庫來進行,numba庫可以使用jit技術即時編譯,達到高效能,另外也可以使用cuda gpu的計算能力來加速,對python來說是乙個提速非常好的工具庫,使用簡單,但是安裝稍微複雜一些,具體過程如下:
安裝numba需要的依賴如下:
python依賴有(按順序):
setuptools
上面這些python依賴的安裝很簡單,都是解壓完然後執行python setup.py install即可
llvm-3.9.1.src.tar.xz
cfe-3.9.1.src.tar.xz
clang-tools-extra-3.9.1.src.tar.xz
compiler-rt-3.9.1.src.tar.xz
依次執行如下命令解壓並操作:
xz -d llvm-3.9.1.src.tar.xzxz -d cfe-3.9.1.src.tar
.xzxz -d clang-tools-extra-3.9.1.src.tar
.xzxz -d compiler-rt-3.9.1.src.tar
.xztar -xvf llvm-3.9.1.src.tar
tar -xvf cfe-3.9.1.src.tar
tar -xvf clang-tools-extra-3.9.1.src.tar
tar -xvf compiler-rt-3.9.1.src.tar
mv cfe-3.9.1
.src clang
mv clang llvm-3.9.1.src/tools/
mv clang-tools-extra-3.9.1
.src extra
mv extra/ llvm-3.9.1.src/tools/clang/
mv compiler-rt-3.9.1.src compiler-rt
mv compiler-rt llvm-3.9.1.src/projects/
放好之後開始編譯源**,編譯需要使用cmake 如果沒有安裝需要安裝,下面開始編譯,編譯過程非常長,64g伺服器還得半個小時左右,並且編譯出來的檔案有20多g大小,硬碟也要留夠,為防止編譯過程中斷,盡量使用screen會話執行:
mkdir build-3.9cmake -g "
unix makefiles
" ../llvm-3.9.1
.src
make -j4
make
install
完了之後可以刪除原來的**目錄
然後如果接下來再安裝llvmlite的話,如果報cannot find -lstdc++的錯誤的話那麼是缺少下面的包,可以使用yum安裝:
yum -y install glibc-staticyum -y install libstdc++-devel
yum -y install libstdc++-static
#!/usr/bin/env python
#coding=utf-8
from numba import
jitfrom numpy import
arange
import
time
@jit
defsum2d(arr):
m, n =arr.shape
result = 0.0
for i in
range(m):
for j in
range(n):
result +=arr[i,j]
return
result
a = arange(9).reshape(3,3)
start_time =time.time()
for i in range(10000000):
sum2d(a)
end_time =time.time()
print (end_time - start_time)
這裡使用numpy生成三行三列的矩陣,[[0,1,2],[3,4,5],[6,7,8]]然後做二維累加計算,值顯然應該是36,這裡做了10000000次這樣的計算,使用@jit註解可以直接的使用numba jit技術實時編譯,從而提高速度,最終執行時間大約是3.86s,如果去掉註解的話那麼執行時間大約是25.45s從這裡可以看出來大約有6.6倍的效能提公升,所以使用numba加速python程式確實是方便簡單
numba 利用numba加速python
importtime fromnumpyimportarange fromnumbaimportjit jit defz num 2147483647 質數大於 1 ifnum 1 檢視因子 foriinrange 2,num if num i 0 print num,不是質數 print i,乘於...
python加速模組 numba
numba的使用比較簡單,它不需要更換python的直譯器,只需要將numba的裝飾器寫在python方法上,當這個帶有numba裝飾器的方法被呼叫時,就會被just in time即時編譯為機器 然後執行。使用numba之前,我們需要安裝這個庫 trusted host mirrors.aliyu...
cuda入門 numba加速和pycuda加速
本專案旨在研究gpu混合計算框架對spark分布式計算進行加速,以下為研究測試 目錄結構 batch numba方式的批處理 cuda pycuda方式的批處理 data 測試資料 select ul data as jiakuan dns 001,dl data as jiakuan dns 00...