如何使用cupy循环numpy ndarray?真的会提高执行时间吗?

Posted

技术标签:

【中文标题】如何使用cupy循环numpy ndarray?真的会提高执行时间吗?【英文标题】:How to loop numpy ndarray by using cupy? Is will really improve execution time? 【发布时间】:2019-04-26 02:38:59 【问题描述】:

我有两个相同大小的 numpy ndarray [512 X 512]。我想根据其他数组值更改一个数组。但是执行时间真的很长。所以,我想将 numpy ndarray 更改为 cupy ndarray 并希望在 GPU 中执行。是否可以?是否会缩短执行时间?这是我当前的一段代码。

for n,val in enumerate(array_A.flat):
    if val < 200:
        Array_B.flat[n] = -1000

【问题讨论】:

【参考方案1】:

如果您使用 NumPy 的内置函数对选项进行矢量化,您将体验到性能的巨大提升:

Array_B[array_A < 200] = -1000

这会将操作推到较低的级别,避免在 Python 中执行循环。

【讨论】:

非常感谢。我体验到了性能的巨大提升。

以上是关于如何使用cupy循环numpy ndarray?真的会提高执行时间吗?的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:参数“x”的类型不正确(预期为cupy.core.core.ndarray,得到了numpy.ndarray)

基于唯一值对 2D Numpy/CuPy 数组进行更快的迭代

如何子类化 CuPy 数组?

将数组的列作为向量执行“for循环”时,Cupy 比 numpy 慢

如何将numpy.ndarray分配给cython中nogil循环下的临时变量?

多数组计算中的cupy执行错误