2016-09-06 78 views
-2

我是新來Numba和CUDA,也做了測量,CUDA即時編譯功能比較numpy的對一些基本的例子。例如,有望加速Numba/CUDA與numpy的

@cuda.jit("void(float32[:])") 
def gpu_computation(array): 
    pos = cuda.grid(1) 
    if pos < array.size: 
     array[pos] = array[pos] ** 2.6 

相比單線程

def cpu_computation(array): 
    array = array ** 2.6 
    return array 

n=1000000 
array = np.linspace(0, 100, num=n, dtype=np.float32) 
threads per block = 32 
blocks per grid = 31250 

我獲得與GPU約3倍的速度提升。這也是我在執行矩陣乘法(在Numba文檔中找到的基本版本和智能版本)時所獲得的結果。優化複製到/從設備沒有幫助。

是這種加速預期?我預計會有更多的數量級。我的機器:帶有GeForce GTX 775M 2048 MB和CUDA 7.5.30的Mac OSX。

回答

2

的雙精度運算吞吐量的GTX 775M是1/24th of the single precision throughput。 由於Python沒有單精度類型,因此需要使用Numba types將數據顯式標記爲單精度。

不幸的是沒有辦法加快比使用不同的GPU其他雙精度計算(特斯拉陣容還是原來的,現在外的生產GTX泰坦)。

+0

謝謝,看起來很重要。我更新了上面的代碼片段,以顯示我現在正在測量的內容,但到目前爲止我沒有看到任何區別。 – jam123