PyCUDAのドキュメントは、「非達人」クラスの例を少し紹介していますが、gpuarrayの配列操作に使用できる操作について疑問に思っています。このループを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カーネルを書くだけです。
誰かが私を手がかりにできますか?