
    +j                        d dl mZ d dlZd dlmZ  ej        ej                            d          d                    Z ej        d          Z	 e
ej        j        d          Zer	d dlmZmZ n G d d	          Z G d
 d          ZdefdZddej        ej        ej        ej        fdej        dej        dej        dej        dej        dz  dej        dz  ded         ded         dej        fdZdeeeez  f         fdZdS )    )OptionalN)version+z2.10.0	scaled_mm)ScalingTypeSwizzleTypec                       e Zd ZdZdZdZdS )r   
TensorWiseBlockWise1x16BlockWise1x32N)__name__
__module____qualname__r
   r   r        ]/home/wildlama/comfy/ComfyUI/.venv/lib/python3.11/site-packages/comfy_kitchen/scaled_mm_v2.pyr   r      s        !
''r   r   c                       e Zd ZdZdZdS )r   
NO_SWIZZLESWIZZLE_32_4_4N)r   r   r   r   r   r   r   r   r   r      s        !
)r   r   returnc                      t           S )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
                    t                      r/t          j        j                            | |||||||	||d          S d}
d }t          |t                    r|\  }}|\  }}||z  }|d u}
n|}|}t          j        | |||||
rd n|          }t          |t                    r|d         }|||	                    |j
                  z  }|
r||z   }|S )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_v2r7      s-     ,x",,))"  - 
 
 	
 "gt$$ 	%-4*NN-4*NN"^3E $D 0$N$N!"",644$
 
 
 fe$$ 	AYFehhv|444F 	#d]Fr   c                      t           j        t          t                    t	                      t           j                                        t           j                                        rt           j        j        nddS )zxGet 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_inforB   W   s^     *n--,..*1133.3j.E.E.G.GQ**T  r   )typingr   r'   	packagingr   parser=   splitr?   
TORCH_2_10hasattrr(   r)   r   torch.nn.functionalr   r   boolr   r
   r   Tensorr/   r7   dictr>   rB   r   r   r   <module>rM      s               u066s;;A>??W]8$$
GEH/==  *<<<<<<<<<( ( ( ( ( ( ( (
* * * * * * * *
$     !%$( + +)4)?)4)?9 9<9L9 \9 \	9
 ,
9 {T!9 &9 &9 \9 9 9 9x$sC$J"7      r   