初次尝试GUP运行python,测试代码时发现结果不好

EarAST。 EarAST。 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

使用的时pycharm,显卡为nvidia 2060

运行网上别人写的测试代码,据他所说gpu运行速度应当比cpu快很多

 

结果我自己运行时刚好相反,我是gpu设置出错了,还是代码有问题?请大佬指点!!! 

from numba import cuda
import numpy as np
import math
from time import time


@cuda.jit
def gpu_add(a, b, result, n):
    idx = cuda.threadIdx.x + cuda.blockDim.x * cuda.blockIdx.x
    if idx < n:
        result[idx] = a[idx] + b[idx]


def main():
    n = 20000000
    x = np.arange(n).astype(np.int32)
    y = 2 * x
    # 拷贝数据到设备端
    x_device = cuda.to_device(x)
    y_device = cuda.to_device(y)
    # 在显卡设备上初始化一块用于存放GPU计算结果的空间
    gpu_result = cuda.device_array(n)
    cpu_result = np.empty(n)
    threads_per_block = 1024
    blocks_per_grid = math.ceil(n / threads_per_block)
    start = time()
    gpu_add[blocks_per_grid, threads_per_block](x_device, y_device, gpu_result, n)
    cuda.synchronize()
    print("gpu vector add time " + str(time() - start))
    start = time()
    cpu_result = np.add(x, y)
    print("cpu vector add time " + str(time() - start))
    if np.array_equal(cpu_result, gpu_result.copy_to_host()):
        print("result correct!")


if __name__ == "__main__":
    main()

 

...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
EarAST。
CUDA 591 成员 2,925 内容