
    Wh&                     `   d dl mZ d dlZd dlmc mZ d dlmc mc mZ	 d dl
Zd dlmZ ddlmZmZ 	 ddlmZ n2# e$ r* dD ]$Z	  ej        e d          Z n# e$ r dZY !w xY wY nw xY wer: ej                                                    D ]\  ZZ ej        eed	
           dD ]&Z	  ej        e dd          Z n# e$ r dZY #w xY werYe                                                                D ]2\  ZZe                    d          rdnd Z ej        eed	e           3dD ]&Z	  ej        e dd          Z n# e$ r dZY #w xY wer@e                                                                D ]\  ZZ ej        eed	d           	 ddl mZ! n.# e$ r& dD ] Z"	  ej        e" d          Z! n	#  dZ!Y xY wY nw xY we!r: e!j                                                    D ]\  ZZ ej        eed
           dD ]&Z"	  ej        e" dd          Z# n# e$ r dZ#Y #w xY we#rYe#                                                                D ]2\  ZZe                    d          rdnd Z ej        eede           3dD ]&Z"	  ej        e" dd          Z$ n# e$ r dZ$Y #w xY we$r@e$                                                                D ]\  ZZ ej        eedd           d Z%d Z&d Z'd Z( ee(de          Z)d Z* ee*de          Z+ ee*de#          Z,dS )    )partialN)
xla_client   )custom_calldense_int_array)_blas)jax_cuda12_pluginz._blasCUDA)platform)z.cudar	   z._solverjaxlib)package_ffi)r   api_versionz._hybrid)jax_rocm60_pluginROCM)z.rocmr   c                      t           rt                                            t          rt                                           d S d S N)	_cuhybrid
initialize
_hiphybrid     W/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/jaxlib/gpu_solver.pyinitialize_hybrid_kernelsr   y   sF       r   c                      t           rt                                           S t          rt                                          S dS )NF)r   	has_magmar   r   r   r   r   r      s;     !    "!!!	r   c                 4    t          j        |           j        S )z'Returns the real equivalent of 'dtype'.)npfinfodtype)r    s    r   
_real_typer!      s    	%	r   c	                 H   t          j        |j                  }	t          j        |j                  }
|	j        d         }|
j        d         }|                    t          j        |          ||||          }t          |  d|j        g||||g|g ddg          j        }|S )z.Sparse solver via QR decomposition. CUDA only.r   solver_csrlsvqr)r   r$   r$   r$   r$   )result_typesoperandsbackend_configoperand_layoutsresult_layouts)	irRankedTensorTypetypeshapebuild_csrlsvqr_descriptorr   r    r   results)r   
gpu_solverr    dataindicesindptrbtolreorderb_type	data_typennnzopaqueouts                  r   _csrlsvqr_hlor=      s     qv&&&!$),,)l1o!#//huooq#w & 		"""F8fgq)...V	 	 	   
*r   cuc                   t          j        |j                  }|j        }t	          |          dk    sJ |dd         \  }}||k    sJ ||f            t          |dd                   }	t	          |	          }
d}|	D ]}||z  }|                    ||||          \  }}t          j        |t          j	                  r|j
        }np|t          j        k    rt           j                                        }nA|t          j        k    rt           j                                        }nt!          d|           |
|
dz   ft          t#          |
dz
  dd                    z   }t           j                            d          }t)          |  d|j        t           j                            |	|fz   |          t           j                            |	|dz
  fz   |          t           j                            |	|dz
  fz   |j
                  t           j                            |	|          t           j                            |g|j
                  g|g||g||
ft          t#          |
dz
  dd                    z   |
ft          t#          |
dz
  dd                    z   |
ft          t#          |
dz
  dd                    z   t          t#          |
dz
  dd                    d	ggd	d	i
          j        \  }}}}}}d d }|sK| dk    rD|dk    r=dt	          |	          z  dz   }|	dz   }t-          j        | ||           ||           |dgt	          |          z                      }t           j                            |	dz   |          }t-          j        || |t#          t	          |          dz
                                }t-          j        t           j                            |j        |j
                  |          }t          fddt	          |	          z  dz   D                       }t-          j        |||          }|||||fS )zGsytrd: Reduction of a symmetric (Hermitian) matrix to tridiagonal form.   Nr   zUnsupported dtype     solver_sytrdr   )r%   r&   r'   r(   r)   operand_output_aliasesc                 z    t           j                            t          j        | t          j                            S r   )r*   DenseIntElementsAttrgetr   asarrayint64xss    r   <lambda>z_sytrd_hlo.<locals>.<lambda>   s%    r.222:b"(3K3KLL r   c                 Z    t          t          j        | t          j                            S r   )r   r   rI   rJ   rK   s    r   rM   z_sytrd_hlo.<locals>.<lambda>   s    /"*R*B*BCC r   r>   r$   )r   )r   r   c              3   R   K   | ]!}t          j         |                    V  "d S r   )hloconstant).0iintattrs     r   	<genexpr>z_sytrd_hlo.<locals>.<genexpr>   sQ       @ @ L,, @ @ @ @ @ @r   )r   r   )r*   r+   r,   r-   lentuplebuild_sytrd_descriptorr   
issubdtypefloatingelement_type	complex64F32TyperH   
complex128F64TypeNotImplementedErrorrangeIntegerTypeget_signlessr   r/   rP   slicebroadcast_in_dimconvertdynamic_update_slice)r   r0   r    alowera_typedimsmr9   
batch_dimsnum_bdr4   dlworkr;   	diag_typelayouti32_typeetausinfo_
intarrattrstartendss_typeoffsetsrT   s                               @r   
_sytrd_hlor~      sb   qv&&&	$	Ta	bcc$!Q	
a!QT#2#Y*z??&!  aFAA33E5!QGG-%]5"+&& <#II
  II
  II
:5::
;
;;FQJ%fqj"b(A(A"B"BB&^((,,(&		

aT 19==

a!eX 5yAA

a!eX 5v7JKK

H55
)<== sh		E%
B33444		E%
B33444		E%
B33444eFQJB''((	
  V+  , - !Q4q6 ML'CC*	 08t##A3z??"T)E
t
C		::ejjoozz1#E

:J/K/K	M 	MA $$Z&%8)DDFVQ

5TQ3G3G(H(HIIA
f.ABBA	G 	GA @ @ @ @"S__4v=@ @ @ @ @G Aw//A	
Aq$	r   hip)-	functoolsr   	importlibjaxlib.mlir.irmlirr*   jaxlib.mlir.dialects.stablehlodialects	stablehlorP   numpyr   r   r   hlo_helpersr   r   cudar   _cublasImportErrorcuda_module_nameimport_moduleregistrationsitems_name_valueregister_custom_call_target	_cusolverendswithr   r   rocm_hipblasrocm_module_name
_hipsolverr   r   r   r!   r=   cuda_csrlsvqrr~   
cuda_sytrd
rocm_sytrdr   r   r   <module>r      sP                      , , , , , , , , , , , ,           5 5 5 5 5 5 5 5	$$$$$$$   /  '	'+;(C(C(CDDg e    ggg	  K,w,..4466 K KmeV*J*5&6JJJJJ6 
 

'	'%%%x  I 
E 
   III
  D ..006688 D DmeV~~f--4!!1K*J*5&67BD D D D D 7 
 

'	'%%%x  I 
E 
   III
  : ..006688 : :meV*J*5&678: : : : :	%%%%%%%   /  ((,<)D)D)DEEh ehhh  K-x-//5577 K KmeV*J*5&6JJJJJ6 
 

((%%%x  J 
E 
   JJJ
  D!//117799 D DmeV~~f--4!!1K*J*5&67BD D D D D 7 
 

((%%%x  J 
E 
   JJJ
  :!//117799 : :meV*J*5&678: : : : :      
  , tY77D D DL WZy11
WZ
33


s   : 	A)AA)A# A)"A##A)(A)-CCC1EEEF 	G
)F><G
>GG
	G
H%%H/.H/J))J32J3