预计加速Numba / CUDA与Numpy的对比

时间:2016-09-06 22:14:53

标签: python cuda numba

我是Numba和CUDA的新手,并做了一些测量,以便在几个基本示例中将cuda jitted函数与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。

1 个答案:

答案 0 :(得分:2)

GTX 775M的双精度算术吞吐量为1/24th of the single precision throughput。 由于Python没有单一的精度类型,您需要使用Numba types将数据明确标记为单精度。

不幸的是,除了使用不同的GPU(特斯拉阵容或原版,现在已经停产的GTX Titan)之外,没有办法加速双精度计算。