0

最近我在我的 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 

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

4

1 回答 1

1

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

cupy.onesGPU 中的执行时间非常快,在您的示例中,内核启动开销和设备同步比实际计算花费更多时间。如果您将矩阵大小增加到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
于 2020-01-06T01:38:37.110 回答