PyCUDA 文档对我们这些“非大师”类中的示例有点轻,但我想知道 gpuarrays 上的数组操作可用的操作,即。如果我想 gpuarray 这个循环;
m=np.random.random((K,N,N))
a=np.zeros_like(m)
b=np.random.random(N) #example
for k in range(K):
for x in range(N):
for y in range(N):
a[k,x,y]=m[k,x,y]*b[y]
为此,常规的第一站 python 减少将类似于
for k in range(K):
for x in range(N):
a[k,x,:]=m[k,x,:]*b
但是我看不到使用 GPUArray 执行此操作的任何简单方法,除了编写自定义元素内核之外,即使遇到这个问题,内核中也必须有循环结构,在那个复杂点上,我可能会更好只写我自己成熟的 SourceModule 内核。
任何人都可以提示我吗?