【发布时间】:2020-03-31 17:48:08
【问题描述】:
我的代码涉及对 432x432x400 数组进行总计约 1000 万次切片,以生成用于神经网络训练的批量数据。由于这些是相当大的数组(9200 万数据点/300MB),我希望使用 CuPy 来加快速度(甚至可能通过在与训练相同的 GPU 上生成数据来加速训练),但发现它实际上使代码慢 5 倍。
这是由于 CuPy 开销导致的预期行为还是我遗漏了什么?
要重现的代码:
import cupy as cp
import numpy as np
import timeit
cp_arr = cp.zeros((432, 432, 400), dtype=cp.float32)
np_arr = np.zeros((432, 432, 400), dtype=np.float32)
# numbers below are representative of my code
cp_code = 'arr2 = cp_arr[100:120, 100:120, 100:120]'
np_code = 'arr2 = np_arr[100:120, 100:120, 100:120]'
timeit.timeit(cp_code, number=8192*4, globals=globals()) # prints 0.122
timeit.timeit(np_code, number=8192*4, globals=globals()) # prints 0.027
设置:
GPU:NVIDIA Quadro P4000
CuPy 版本:7.3.0
操作系统:CentOS Linux 7
CUDA 版本:10.1
cuDNN 版本:7.6.5
【问题讨论】:
标签: cupy