最近,我在tx2上安装了CUDA10.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.6795。是什么让cupy变得这么慢。我通过以下方式安装了cupy:
sudo pip3 install cupy -vvv 任何线索都会有帮助。提前感谢!
发布于 2020-01-06 09:38:37
矩阵的大小非常小。CuPy被设计用于处理大型矩阵,其中中央处理器和图形处理器之间的数据移动的开销可以有效地与实际图形处理器计算重叠。
cupy.ones在图形处理器中的执行时间非常快,在您的示例中,内核启动开销和设备同步花费的时间比实际计算更多。如果将矩阵大小增加到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.7292115688323975https://stackoverflow.com/questions/59539240
复制相似问题