并行化 numpy 数组中每个单元格的操作

Parallelize operations for each cell in a numpy array

我试图弄清楚哪种方法是并行执行 2D numpy 数组中每个单元格的单个操作的最佳方法。

特别是,我需要对数组中的每个单元格进行按位运算。

这是我使用单个 for 周期所做的:

for x in range(M):
    for y in range(N):
        v[x][y] = (v[x][y] >> 7) & 255

我找到了一种使用 vectorize 方法执行上述相同操作的方法:

def f(x):
    return (x >> 7) & 255
f = numpy.vectorize(f)

v = f(v)

但是,使用矢量化似乎并没有提高性能。

我在 this answer on Whosebug 中读到了 numexpr,其中还有 TheanoCython 被引用。 Theano 似乎是一个很好的解决方案,但我找不到适合我的例子。

所以我的问题是:使用并行化和可能的 GPU 计算,改进上述代码的最佳方法是什么?有人可以 post 一些示例代码来执行此操作吗?

我不熟悉按位运算,但这里给出的结果与您的代码相同,并且是矢量化的。

import numpy as np

# make sure it is a numpy.array
v = np.array(v)

# vectorized computation
N = (v >> 7) & 255