
    ti!                     v   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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_linearsemi_sparse_scaled_mmc               #   `   K   t         j                  j                         } 	 d  ~ y # ~ w xY wwN)torch_C_DisableTorchDispatch)guards    g/home/ubuntu/crypto_trading_bot/.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                 h   t        |      dk(  sJ |d   }t        |t        j                  j                        sJ |j
                  J |j                  D|j                  \  }}||z  dz  }|j
                  j                         d | j                  |d      S |j
                  j                         S N   r      )len
isinstancer   sparseSparseSemiStructuredTensorpackedmetashaperavel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~~ 3!2499!R@@xx      c                    t        |      dk(  sJ |d   }t        |t        j                  j                        sJ |j
                  J |j                  |j                  \  }}||z  dz  }|j
                  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'   r(   dtypeint32int16)	r   r   r   r   r*   r+   r,   r-   metadatas	            r   r   r   0   s    t9>>QAa@@AAA88vv~ww1EQJ88>>#$5$67<<QC}}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__Sizer5   r6   r$   r%   r7   	transposer8   r9   r   r   r   r   selfs        r   r   r   >   s    t9>>7DdELLCCDDDtzz?a
 >>

DJJrNDJJqM23}}[[yy //; ,,66q!<"&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   W   sN    t9>>KD%U|tzz!!ijoippqr
 	
 Kr.   c                     t        |      dk(  sJ |d   }|j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  d	      S )Nr   r   F)	r&   r$   r%   r5   r6   r7   r8   r9   requires_grad)
r    r:   r&   r$   r%   r5   r6   r7   r8   r9   r=   s        r   r   r   a   sr    t9>>7D>>jj{{YY{{$($D$D"&"@"@00  
 
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    ndimrB   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	   q   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   rF   r   zF`SparseSemiStructuredTensor` matmul: only bias dim=1 supported. Shape=zL`SparseSemiStructuredTensor` matmul: only operand B of `addmm` can be sparse)bias)r    rG   rB   r&   r!   r   r"   r#   rJ   rH   rI   )r   r   r   r   rT   r*   rK   rP   rL   _colrQ   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IC##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   rS   r   rS   r   )r   r   r   )r    r&   r(   rJ   r
   )
r   r   r   r   r*   rK   rT   r&   A_2drO   s
             r   r   r      s    t98DAq$i1n47$DGGE66"eBi D|QSSUlacce$
 388$U3BZ$$$r.   c                    |d d \  }}}}}}	}
|j                   t        j                  k(  sJ |j                   t        j                  k(  sJ t        |t        j                  j
                        sJ |j                  J |j                         dk(  r|j                         dk(  sJ |j                   t        j                  k(  r|j                   t        j                  k(  sJ t        j                  |j                  |||z  |
      }|S )N   r   )alpha	out_dtype)
r0   r   float8_e4m3fnr!   r"   $SparseSemiStructuredTensorCUSPARSELTr$   numelfloat32_cslt_sparse_mm)r   r   r   r   r*   rK   A_scaleB_scalerT   scale_resultr\   sparse_results               r   r   r      s    <@!H9Aq'7D,	77e)))))77e)))))aJJKKK88==?aGMMOq$888==EMM)gmmu}}.LLL ))			M r.   ) N)
contextlibr   __all__contextmanagerr   r   Tensorr   r   r   r   r   r	   r
   r   r   rf   r.   r   <module>rk      s       

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