La función getrs de cuSolver sobre pycuda no funciona correctamente

Estoy tratando de hacer un envoltorio de pycuda inspirado en la biblioteca scikits-cuda para algunas operaciones proporcionadas en la nueva biblioteca cuSolver de Nvidia. Quiero resolver un sistema lineal de la forma AX = B por factorización LU, para realizar eso primero use elcublasSgetrfBatched método de scikits-cuda, que me da la factorización LU; entonces con esa factorización quiero resolver el sistema usandocusolverDnSgetrs desde cuSolve que quiero ajustar, cuando realizo el estado de retorno de cálculo 3, las matrices que suponen darme la respuesta no cambian, PERO el * devInfo es cero, mirando en la documentación del cliente dice:

CUSOLVER_STATUS_INVALID_VALUE = Se pasó un valor o parámetro no admitido a la función (un tamaño de vector negativo, por ejemplo).

libcusolver.cusolverDnSgetrs.restype=int
libcusolver.cusolverDnSgetrs.argtypes=[_types.handle,
                                   ctypes.c_char,
                                   ctypes.c_int,
                                   ctypes.c_int,
                                   ctypes.c_void_p,
                                   ctypes.c_int,
                                   ctypes.c_void_p,
                                   ctypes.c_void_p,
                                   ctypes.c_int,
                                   ctypes.c_void_p]

"""
handle is the handle pointer given by calling cusolverDnCreate() from cuSolver
LU is the LU factoriced matrix given by cublasSgetrfBatched() from scikits
P is the pivots matrix given by cublasSgetrfBatched()
B is the right hand matix from AX=B
"""
def cusolverSolveLU(handle,LU,P,B):
   rows_LU ,cols_LU = LU.shape
   rows_B, cols_B = B.shape
   B_gpu = gpuarray.to_gpu(B.astype('float32'))
   info_gpu = gpuarray.zeros(1, np.int32)

   status=libcusolver.cusolverDnSgetrs(
               handle, 'n', rows_LU, cols_B,
               int(LU.gpudata), cols_LU,
               int(P.gpudata), int(B_gpu.gpudata),
               cols_B, int(info_gpu.gpudata))
   print info_gpu   
   print status

handle= cusolverCreate() #get the initialization of cusolver
LU, P = cublasLUFactorization(...)
B = np.asarray(np.random.rand(3, 3), np.float32)
cusolverSolveLU(handle,LU,P,B)

La salida:

[0]

3

¿Qué estoy haciendo mal?

Respuestas a la pregunta(1)

Su respuesta a la pregunta