LU 因数分解や逆行列などの cula 機能を使用したいのですが、ポインター入力に関して問題があります。たとえば、 scikits.cuda.cula.culaDeviceSgetrf(m, n, a, lda, ipiv) で LU 因数分解を行うには、ポインター f "a" 引数を使用する必要がありますが、Python には明示的にポインターがありません (すべての変数を知っています)。 pythonはrefによるものです)。では、この場合はどうすればよいのでしょうか。ctype ライブラリを使用して Python を作成する必要がありますか?
これは私がやろうとしていることです:
import numpy as np
import scikits.cuda.cula as cula
import pycuda.gpuarray as gpuarray
cula.culaInitialize()
//I create a square matrix for simplicity
a=np.array([[1,2,3,4],[6,7,8,9],[7,2,3,5],[2,4,5,6]])
n=b.shape[0]
ida=ipv=m
scikits.cuda.cula.culaDeviceSgetrf(m,n,a,n,n)
status = _libcula.culaDeviceSgetrf(m, n, int(a), lda, int(ipiv)) TypeError: 長さ 1 の配列のみを Python スカラーに変換できます
そして試してみると
a_gpu = gpuarray.to_gpu(a)
scikits.cuda.cula.culaDeviceSgetrf(m,n,a_gpu,n,n) :
トレースバック (最新の呼び出しが最後): ファイル ""、1 行目、ファイル "/usr/local/lib/python2.7/dist-packages/scikits.cuda-0.042-py2.7.egg/scikits/cuda/cula 内.py"、329 行目、culaDeviceSgetrf status = _libcula.culaDeviceSgetrf(m, n, int(a), lda, int(ipiv)) TypeError: int() 引数は、'GPUArray' ではなく、文字列または数値でなければなりません
解決策はありますか?