我想使用一些 cula 功能,如 LU 分解或矩阵逆,但我对指针输入有一些问题。例如,使用 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: only length-1 arrays can be convert to Python scalars
当我尝试
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() argument must be a string or a number, not 'GPUArray'
任何解决方案?