
    ǄgS                     T   d dl Z d dlZg dZe j                  d        Zd Zddej                  fdZddej                  fdZddej                  fdZ	ddej                  fd	Z
dej                  fd
Zddej                  fdZddej                  fdZddej                  fdZy)    N)	fallback_dispatchersemi_sparse_valuessemi_sparse_indicessemi_sparse_tsemi_sparse_viewsemi_sparse_detachsemi_sparse_mmsemi_sparse_addmmsemi_sparse_linearc               #   `   K   t         j                  j                         } 	 d  ~ y # ~ w xY wwN)torch_C_DisableTorchDispatch)guards    i/home/mcse/projects/flask_80/flask-venv/lib/python3.12/site-packages/torch/sparse/_semi_structured_ops.pyno_dispatchr      s&     HH**,EEs   .( .+.c                 L    t               5   | | cd d d        S # 1 sw Y   y xY wr   )r   )functypesargskwargss       r   r   r      s#    	 T{  s   #returnc                 L   t        |      dk(  sJ |d   }t        |t        j                  j                        sJ |j
                  J |j                  6|j                  \  }}||z  dz  }|j
                  d | j                  |d      S |j
                  j                         S N   r      )
len
isinstancer   sparseSparseSemiStructuredTensorpackedmetashapeviewdetach)r   r   r   r   Amknum_kept_elementss           r   r   r   "   s    t9>>QAa@@AAA88vv~ww1EQJxx+*,11!R88xx      c                    t        |      dk(  sJ |d   }t        |t        j                  j                        sJ |j
                  J |j                  |j                  \  }}||z  dz  }|j
                  |d  j                  |d      }|j                  |j                  t        j                  k(  rt        j                        S t        j                        S |j                  S r   )r   r    r   r!   r"   r#   r$   r%   r&   dtypeint32int16)	r   r   r   r   r(   r)   r*   r+   metadatas	            r   r   r   /   s    t9>>QAa@@AAA88vv~ww1EQJ88-./44Q;}}AGGu{{,BU[[TTTTvvr,   c                    t        |      dk(  sJ |d   }t        |t        j                  j                        sJ t        |j
                        dk(  sJ |j                  t        j                  |j
                  d   |j
                  d   g      |j                  |j                  |j                  |j                  |j                  |j                  j                  dd      nd |d   j                  |d   j                        S )Nr   r   r   r   )r#   r$   packed_tmeta_tcompressed_swizzled_bitmaskfuse_transpose_cusparseltalg_id_cusparselt)r   r    r   r!   r"   r%   	__class__Sizer3   r4   r#   r$   r5   	transposer6   r7   r   r   r   r   selfs        r   r   r   =   s    t9>>7DdELLCCDDDtzz?a >>

DJJrNDJJqM23}}[[yy++7 %)$D$D$N$NqRS$T"&q'"C"Cq'33   r,   c                 ~    t        |      dk(  sJ |\  }}t        |      |j                  k7  rt        d| d      |S )Nr   z[`view` is not implemented for SparseSemiStructuredTensor, except for the dummy case (shape=))r   tupler%   NotImplementedError)r   r   r   r   r<   r%   s         r   r   r   S   sN    t9>>KD%U|tzz!!ijoippqr
 	
 Kr,   c           	          t        |      dk(  sJ |d   }|j                  |j                  |j                  |j                  |j
                  |j                  |j                  d      S )Nr   r   F)r%   r#   r$   r3   r4   r5   requires_grad)r   r8   r%   r#   r$   r3   r4   r5   r;   s        r   r   r   ]   s`    t9>>7D>>jj{{YY{{$($D$D   r,   c                 Z   t        |      dk(  sJ |\  }}|j                  dk7  s|j                  dk7  rt        d      t        |t        j
                  j                        r<|j                  \  }}|j                  |      }|j                  |      }	|	d d d |f   S |j                         }
t        |
t        j
                  j                        sJ |j                  \  }}|j                  |      }|
j                  |j                               j                         }	|	d |d d f   S )Nr   D`SparseSemiStructuredTensor` matmul: Broadcasting is not implemented)r   ndimr@   r    r   r!   r"   r%   _pad_dense_input_mmt)r   r   r   r   r(   BrowcolB_paddedresB_tA_paddeds               r   r	   r	   k   s   t9>>DAqvv{affk!R
 	
 !U\\<<=77S%%a(eeHo1dsd7|cce#u||FFGGG77S%%a(gghjjl#%%'4C47|r,   c                 L   t        |      dk(  sJ |\  }}}|j                  dk7  s|j                  dk7  rt        d      |j                  dk7  rt        d|j                         t	        |t
        j                  j                        rt        d      |j                         }t	        |t
        j                  j                        sJ |j                  \  }}	|j                  |      }
|j                  |
j                         |      j                         }|d |d d f   S )N   r   rD   r   zF`SparseSemiStructuredTensor` matmul: only bias dim=1 supported. Shape=zL`SparseSemiStructuredTensor` matmul: only operand B of `addmm` can be sparse)bias)r   rE   r@   r%   r    r   r!   r"   rH   rF   rG   )r   r   r   r   rR   r(   rI   rN   rJ   rK   rO   results               r   r
   r
      s   t9>>JD!Qvv{affk!R
 	
 yyA~!TUYU_U_T`a
 	
 !U\\<<=!Z
 	
 ##%Cc5<<BBCCCwwHC##A&HWWXZZ\W-//1F$3$'?r,   c                 4   t        |      dv sJ |d d \  }}t        |      dk(  r|d   nd }|j                  }|j                  d|d         }|||j                         z  }	nt	        d d |||j                         g      }	 |	j                  g |d d d S )N)r   rQ   r   rQ   r   )r   r   r   )r   r%   r&   rH   r
   )
r   r   r   r   r(   rI   rR   r%   A_2drM   s
             r   r   r      s    t98DAq$i1n47$DGGE66"eBi D|QSSUlacce$
 388$U3BZ$$$r,   ) N)
contextlibr   __all__contextmanagerr   r   Tensorr   r   r   r   r   r	   r
   r   rV   r,   r   <module>r[      s     
  

!U\\ 
!ell  ,5<< U\\  *ELL .%U\\ %r,   