【发布时间】:2021-12-18 14:23:58
【问题描述】:
如果我在 GPU 上有一个数组,那么复制回一个形状数组 (20, 256, 256) 真的很慢(数百秒)。
我的代码如下:
import cupy as cp
from cupyx.scipy.ndimage import convolve
import numpy as np
# Fast...
xt = np.random.randint(0, 255, (20, 256, 256)).astype(np.float32)
xt_gpu = cp.asarray(xt)
# Also very fast...
result_gpu = convolve(xt_gpu, xt_gpu, mode='constant')
# Very very very very very slow....
result_cpu = cp.asnumpy(result_gpu)
我使用cp.cuda.Event() 与record 和synchronize 来测量时间以避免测量任何随机时间,但结果仍然相同,GPU->CPU 传输速度非常慢。但是,使用 PyTorch 或 TensorFlow 时并非如此(对于类似的数据大小/形状没有经验)......我做错了什么?
【问题讨论】:
标签: python numpy tensorflow pytorch cupy