
    3j                        S SK Jr  S SKrS SKJr  \R
                  " \R                  R                  S5      S    5      r\R
                  " S5      r	\
" \R                  R                  S5      r\(       a	  S SKJrJr  O " S S	5      r " S
 S5      rS\4S jrSS\R&                  \R&                  \R(                  \R(                  4S\R*                  S\R*                  S\R*                  S\R*                  S\R*                  S-  S\R,                  S-  S\S   S\S   S\R*                  4S jjrS\\\\-  4   4S jrg)    )OptionalN)version+z2.10.0	scaled_mm)ScalingTypeSwizzleTypec                        \ rS rSrSrSrSrSrg)r      
TensorWiseBlockWise1x16BlockWise1x32 N)__name__
__module____qualname____firstlineno__r   r   r   __static_attributes__r       T/home/wildlama/miniconda3/lib/python3.13/site-packages/comfy_kitchen/scaled_mm_v2.pyr   r      s    !
''r   r   c                       \ rS rSrSrSrSrg)r      
NO_SWIZZLESWIZZLE_32_4_4r   N)r   r   r   r   r   r   r   r   r   r   r   r      s    !
)r   r   returnc                      [         $ )N)_HAS_SCALED_MM_V2r   r   r   has_scaled_mm_v2r      s    r   inputweightscale_ascale_bbias	out_dtype	swizzle_a	swizzle_bc
                    [        5       (       a1  [        R                  R                  R	                  U UUUUUUU	UUSS9$ Sn
S n[        U[        5      (       a  Uu  pUu  pX-  nUS Ln
OUnUn[        R                  " U UUUUU
(       a  S OUS9n[        U[        5      (       a  US   nUb  UUR                  UR                  5      -  nU
(       a  UU-   nU$ )NF)	r    scale_recipe_ar!   scale_recipe_br$   r%   r"   output_dtypeuse_fast_accum)r    r!   r#   r"   r   )r   torchnn
functionalr   
isinstancelist
_scaled_mmtupletodtype)r   r   r    r!   r"   r#   r'   r(   r$   r%   add_bias_separatealphascale_a_for_mmtensor_scale_ascale_b_for_mmtensor_scale_boutputs                    r   scaled_mm_v2r;      s    xx"",,))"  - 
 	
 "gt$$-4*N-4*N"3E $D 0$N$N!!"",4$
 fe$$AYFehhv||44Fd]Fr   c                     [         R                  [        [        5      [	        5       [         R
                  R                  5       [         R
                  R                  5       (       a  [         R                  R
                  S.$ SS.$ )zlGet PyTorch version information for debugging.

Returns:
    Dictionary with version info and feature flags
N)torch_versionparsed_versionr   cuda_availablecuda_version)r+   __version__str_TORCH_VERSIONr   cudais_availabler   r   r   r   get_pytorch_version_inforF   W   se     **n-,.**113.3jj.E.E.G.G** 
 NR r   )typingr   r+   	packagingr   parserA   splitrC   
TORCH_2_10hasattrr,   r-   r   torch.nn.functionalr   r   boolr   r   r   Tensorr3   r;   dictrB   rF   r   r   r   <module>rQ      sQ     u0066s;A>?]]8$
EHH//= <<( (
* *
$  !%$( ++ ++)4)?)?)4)?)?9<<9LL9 \\9 \\	9
 ,,
9 {{T!9 &9 &9 \\9x$sC$J"7 r   