【发布时间】:2020-05-02 21:24:46
【问题描述】:
我正在尝试对大小为 16000 的大型 cupy 数组执行操作。我发现诸如加法之类的数学运算非常快,但使用布尔掩码进行索引相对较慢。例如以下代码:
import cupy as cp
arr = cp.random.normal(0, 1, 16000)
%timeit arr * 5
%timeit arr > 0.4
%timeit arr[arr > 0.4] = 0
给我输出:
28 µs ± 950 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
26.5 µs ± 1.61 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
104 µs ± 2.6 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
为什么最终索引速度至少慢了一倍?我假设乘法应该比设置数组元素慢。
更新:这不适用于 numpy 索引。将cupy数组改为numpy,我得到:
6.71 µs ± 373 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
4.42 µs ± 56.5 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
5.39 µs ± 29.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
【问题讨论】:
标签: python-3.x performance cupy