o
    X۷i2                     @  sL   d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 dd Z
dS )    )annotationsN)device)_util)sparsec                 C  s  ddl m} t| st| } t|  t| | jd }|j	dks*t
||kr.td| jdks8| jdkr<| j}nt| jd}t }| j}d}d}tj||d}	tdtj}
|dkrd|j}n|j}||||| jj| jjj| jjj| jjj|jj|||	jj|
jj |	tj}	|	S )	aE  Solves linear system with cholesky decomposition.

    Find the solution to a large, sparse, linear system of equations.
    The function solves ``Ax = b``. Given two-dimensional matrix ``A`` is
    decomposed into ``L * L^*``.

    Args:
        A (cupy.ndarray or cupyx.scipy.sparse.csr_matrix): The input matrix
            with dimension ``(N, N)``. Must be positive-definite input matrix.
            Only symmetric real matrix is supported currently.
        b (cupy.ndarray): Right-hand side vector.

    Returns:
        ret (cupy.ndarray): The solution vector ``x``.

    r   )cusolver   z+b must be 1-d array whose size is same as Afdg      ?)dtype) cupy_backends.cuda.libsr   r   isspmatrix_csr
csr_matrixr   _assert_stacked_square_assert_cupy_arrayshapendimlen
ValueErrorr
   numpypromote_typesr   get_cusolver_sp_handlennzcupyemptyint32scsrlsvcholdcsrlsvchol_descr
descriptordataptrindptrindicesctypesastypefloat64)Abr   mr
   handler   tolreorderxsingularity
csrlsvchol r/   P/home/ubuntu/vllm_env/lib/python3.10/site-packages/cupyx/linalg/sparse/_solve.pylschol   s6   




r1   )
__future__r   r   r   	cupy.cudar   cupy.linalgr   cupyx.scipyr   r1   r/   r/   r/   r0   <module>   s    