我是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
与单螺纹相比
^{pr2}$与
n=1000000
array = np.linspace(0, 100, num=n, dtype=np.float32)
threads per block = 32
blocks per grid = 31250
我用GPU可以得到3倍的加速。这也是我在执行矩阵乘法时得到的结果(在Numba文档中可以找到basic和smart版本)。通过复制到/从设备进行优化没有帮助。在
这是预期的加速吗?我预计会有一个数量级。我的机器:MacOSX,带有GeForce GTX 775M 2048 MB和CUDA 7.5.30。在
您的GTX775M的双精度算术吞吐量是1/24th of the single precision throughput。 由于Python没有单一精度类型,因此需要使用Numba types将数据显式标记为单精度。在
不幸的是,除了使用不同的GPU(特斯拉阵容或最初的,现已停产的GTX泰坦)之外,没有其他方法可以加快双精度计算。在
相关问题 更多 >
编程相关推荐