
    Vpf                        d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlZej        ej        ej        ej        gZej        gZ ej        d          Zd	 Zd
 Ze                    e            ej        e           e
j        r" ej        e eee
j                  d           e
j        r" ej        e eee
j                  d            ej        d          Zd Z d Z!e                    e             ej        e           e
j        r" ej        e ee!e
j"                  d           e
j        r" ej        e ee!e
j#                  d            ej        d          Z$d Z%d Z&e$                    e%            ej        e$           e
j        r" ej        e$ ee&e
j'                  d           e
j        r" ej        e$ ee&e
j(                  d            ej        d          Z)d Z*d Z+e)                    e*            ej        e)           e
j        r" ej        e) ee+e
j,                  d           e
j        r$ ej        e) ee+e
j-                  d           dS dS )zPrimitives for calling out to cusparse.

In general, these primitives are not meant to be used directly, but rather
are used internally in GPU translation rules of higher-level primitives.
    )partial)core)dispatch)mlir)
gpu_sparseNcoo_spmvc                   | j         |j         cxk    r|j         k    sn J |j        dk    sJ |j        dk    sJ |j        |j        k    sJ |j        t          v sJ | j        |j        k    sJ |j        t          v sJ t          |          dk    sJ |j         d         |r|d         n|d         k    sJ t          j        |r
|dd          n	|d d         |j                  S N      r   shapedtyper   ndimr   SUPPORTED_INDEX_DTYPESSUPPORTED_DATA_DTYPESlenr   ShapedArraydatarowcolx	transposer   s         b/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/jax/experimental/sparse/_lowerings.py_coo_spmv_abstract_evalr   &   s   	sy	-	-	-	-CI	-	-	-	-	-	-	Q	
1	ci					,	,	,	,	,	qw					
)	)	)	)	)	Uq	
I;a58	<	<	<	<		 
/%))eBQBi
'
 
 
     c                b    |j         \  }}	}
} | |||||||j        |	j        |j        	  	        gS N)r   r   
data_dtypeindex_dtypex_dtypeavals_inr   )coo_spmv_hloctxr   r   r   r   r   r   	data_avalrow_aval_x_avals               r   _coo_spmv_gpu_loweringr,   9   N    #&< )Xq&
,#sA  L" " " 
# #r   cuda)platformrocmcoo_spmmc                   | j         |j         cxk    r|j         k    sn J |j        dk    sJ |j        dk    sJ |j        |j        k    sJ |j        t          v sJ | j        |j        k    sJ |j        t          v sJ t          |          dk    sJ |j         d         |r|d         n|d         k    sJ t          j        |r|d         n|d         |j         d         f|j                  S r
   r   r   s         r   _coo_spmm_abstract_evalr3   W   s   	sy	-	-	-	-CI	-	-	-	-	-	-	Q	
1	ci					,	,	,	,	,	qw					
)	)	)	)	)	Uq	
I;a58	<	<	<	<		 .588eAh

;
'
 
 
 r   c                b    |j         \  }}	}
} | |||||||j        |	j        |j        	  	        gS r    r$   )coo_spmm_hlor'   r   r   r   r   r   r   r(   r)   r*   r+   s               r   _coo_spmm_gpu_loweringr6   j   r-   r   csr_spmvc                   | j         |j         cxk    r|j         cxk    rdk    sn J | j        |j        k    sJ |j        d         |d         dz   k    sJ |j         dk    sJ |j        |j        k    sJ |j        t          v sJ | j        |j        k    sJ |j        t          v sJ t          |          dk    sJ |j        d         |r|d         n|d         k    sJ t          j        |r
|dd          n	|d d         |j                  S Nr   r   r   r   r   r   r   r   r   r   r   r   r   indicesindptrr   r   r   s         r   _csr_spmv_abstract_evalr>      sF   	gl	6	6	6	6fk	6	6	6	6Q	6	6	6	6	6	6	w}	$	$	$	$	aE!HqL	(	(	(	(	
1	&,	&	&	&	&	0	0	0	0	0	qw					
)	)	)	)	)	Uq	
I;a58	<	<	<	<		 
/%))eBQBi
'
 
 
 r   c                b    |j         \  }}	}
} | |||||||j        |	j        |j        	  	        gS r    r$   )csr_spmv_hlor'   r   r<   r=   r   r   r   r(   indices_avalr*   r+   s               r   _csr_spmv_gpu_loweringrB      O    '*|$)\1f
,'61 $*L" " " 
# #r   csr_spmmc                .   | j         |j         cxk    r|j         cxk    rdk    sn J | j        |j        k    sJ |j        d         |d         dz   k    sJ |j         dk    sJ |j        |j        k    sJ |j        t          v sJ | j        |j        k    sJ |j        t          v sJ t          |          dk    sJ |j        d         |r|d         n|d         k    sJ t          j        |r|d         n|d         |j        d         f|j                  S r9   r:   r;   s         r   _csr_spmm_abstract_evalrF      sI   	gl	6	6	6	6fk	6	6	6	6Q	6	6	6	6	6	6	w}	$	$	$	$	aE!HqL	(	(	(	(	
1	&,	&	&	&	&	0	0	0	0	0	qw					
)	)	)	)	)	Uq	
I;a58	<	<	<	<		 .588eAh

;
'
 
 
 r   c                b    |j         \  }}	}
} | |||||||j        |	j        |j        	  	        gS )N)r   r   r!   r"   B_dtyper$   )csr_spmm_hlor'   r   r<   r=   r   r   r   r(   rA   r*   r+   s               r   _csr_spmm_gpu_loweringrJ      rC   r   ).__doc__	functoolsr   jaxr   jax._srcr   jax._src.interpretersr   jax._src.libr   numpynpfloat32float64	complex64
complex128r   int32r   	Primitive
coo_spmv_pr   r,   def_abstract_evalsimple_implcuda_is_supportedregister_loweringcuda_coo_matvecrocm_is_supportedrocm_coo_matvec
coo_spmm_pr3   r6   cuda_coo_matmatrocm_coo_matmat
csr_spmv_pr>   rB   cuda_csr_matvecrocm_csr_matvec
csr_spmm_prF   rJ   cuda_csr_matmatrocm_csr_matmat r   r   <module>rk      s"                      & & & & & & # # # # # #     RZr}M (  T^J''
  &# # #   4 5 5 5  Z       $G"J$>??     $G"J$>??    T^J''
  &# # #   4 5 5 5  Z       $G"J$>??     $G"J$>??    T^J''
  &# # #   4 5 5 5  Z       $G"J$>??     $G"J$>??    T^J''
  &# # #   4 5 5 5  Z       $G"J$>??     $G"J$>??      r   