在 TX2 上运行 cupy
Posted
技术标签:
【中文标题】在 TX2 上运行 cupy【英文标题】:Running cupy on TX2 【发布时间】: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
任何线索都会有所帮助。 提前致谢!
【问题讨论】:
【参考方案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 来强制它更快地工作。以上是关于在 TX2 上运行 cupy的主要内容,如果未能解决你的问题,请参考以下文章
DJI Manifold 2(在 nvidia jetson tx2 上运行)USB 设备在使用 Ubuntu 的软件更新更新后无法工作