首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在TX2上运行cupy

在TX2上运行cupy
EN

Stack Overflow用户
提问于 2019-12-31 11:28:21
回答 1查看 167关注 0票数 0

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

代码语言:javascript
复制
### 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:

代码语言:javascript
复制
sudo pip3 install cupy -vvv 

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

EN

回答 1

Stack Overflow用户

发布于 2020-01-06 09:38:37

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

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

代码语言:javascript
复制
### 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)

结果是

代码语言:javascript
复制
3.421783447265625
0.7292115688323975
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59539240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档