2016-09-06 43 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