将 cupy 转换为 numpy 非常慢
Posted
技术标签:
【中文标题】将 cupy 转换为 numpy 非常慢【英文标题】:convert cupy to numpy is very slow 【发布时间】:2020-01-03 12:40:57 【问题描述】:条件
CuPy 版本 7.0.0 操作系统/平台 Ubuntu 18.04 CUDA 版本 10.1重现代码
import cupy as np
import time
size = 60000000
tag = np.zeros(size)
#np.random.shuffle(tag)
value = np.random.random(size)
starttime = time.perf_counter()
for i in range(100):
tag +=(value> 0.3)*100
print (time.perf_counter() - starttime)
starttime = time.perf_counter()
cpu_value = np.asnumpy(value)
print (time.perf_counter() - starttime)
结果是
0.02095769099832978 6.170492547998947
【问题讨论】:
【参考方案1】:从 CuPy 转换为 NumPy 需要从 GPU 内存复制到 CPU。 此操作很昂贵,并且预计会很慢。理想情况下,您希望数据尽可能长时间地保存在 GPU 中,并且仅在绝对必要时才将其移至 CPU。
【讨论】:
以上是关于将 cupy 转换为 numpy 非常慢的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:不允许隐式转换为 NumPy 数组。请使用 `.get()` 显式构造 NumPy 数组。 -CuPy
将数组的列作为向量执行“for循环”时,Cupy 比 numpy 慢