【问题标题】:Running cupy on TX2在 TX2 上运行 cupy
【发布时间】:2019-12-31 03:28:21
【问题描述】:

最近我在我的 tx2 上安装了 CUDA 10.0 和 cupy。 我在一篇文章中读到,它说 cupy 比 numpy 快 10 倍。 所以我运行了这个程序:

### Numpy and CPU
s = time.time()
x_cpu = np.ones((100,100,100))
e = time.time()
print(e - s)
### CuPy and GPU
s = time.time()
x_gpu = cp.ones((100,100,100))
cp.cuda.Stream.null.synchronize()
e = time.time()
print(e - s)

我得到的结果非常不同。 Numpy 只用了 0.00273,而 Cupy 用了 0.6795s。 是什么让cupy这么慢。我通过以下方式安装了cupy:

sudo pip3 install cupy -vvv 

任何线索都会有所帮助。 提前致谢!

【问题讨论】:

    标签: cupy


    【解决方案1】:

    矩阵大小非常小。 CuPy 设计用于处理大型矩阵,其中 CPU 和 GPU 之间的数据移动开销可以有效地与实际 GPU 计算重叠。

    cupy.ones 在 GPU 中的执行时间非常快,在您的示例中,内核启动开销和设备同步需要比实际计算更多的时间。如果将矩阵大小增加到1000, 1000, 1000,您将能够看到 numpy 的实际加速。或者,您可以多次重复计算以隐藏内核启动开销。

    ### Numpy and CPU
    s = time.time()
    for i in range(10000):
        x_cpu = np.ones((100,100,100))
    e = time.time()
    print(e - s)
    ### CuPy and GPU
    s = time.time()
    for i in range(10000):
        x_gpu = cp.ones((100,100,100))
    cp.cuda.Stream.null.synchronize()
    e = time.time()
    print(e - s)
    

    结果是

    3.421783447265625
    0.7292115688323975
    

    【讨论】:

    • 谢谢,你是对的。我不得不使用 Numba 来强制它更快地工作。
    猜你喜欢
    • 2020-05-18
    • 2020-04-14
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多