§
     ’ÞjB�  ã                  óþ  — U d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm	Z	 d dl
Z
d dlmZ 	 d dlmZ n# e$ r dZY nw xY wdZdZd	Zd
ZdZdZdadadadadadadadai ai a da!g a"da#d a$da%de&d<    eddd¬¦  «        Z' edd¬¦  «        Z(da)dZ*g a+dZ,i a-g a.dZ/i a0g a1da2da3d a4d€d„Z5e
j6        fd�d„Z7d‚dƒd"„Z8d„d#„Z9d…d&„Z:d…d'„Z;d†d‡d)„Z<dˆd+„Z=d‰dŠd-„Z>d‹d2„Z?d†d3„Z@dŒd4„ZAdŒd5„ZBd�d6„ZCdŽd8„ZDdŽd9„ZEd�d;„ZFd†d�d?„ZGd‘dB„ZHd’dL„ZId“d”dR„ZJd•dS„ZKdŒdT„ZLd–dV„ZMd—dY„ZNd˜d[„ZOd™d_„ZPd�d`„ZQdšde„ZRd›dj„ZSd†dk„ZTdl„ ZUdšdm„ZVd›dn„ZWdœdo„ZXd�dp„ZYdždq„ZZdždr„Z[dŸdu„Z\d�dv„Z]d�dw„Z^d dx„Z_d dy„Z`d†dŒdz„Zad¡dŒd{„Zbd†d¢d~„Zcd�d„Zd eje        ed¦  «         dS )£é    )ÚannotationsN)ÚSimpleNamespace)ÚOptionalÚTuple)Úfp8_backend)Úis_fakeÚWAN2GP_QUANTO_INT8_KERNELÚWAN2GP_QUANTO_INT8_DEBUGÚ(WAN2GP_QUANTO_INT8_NATIVE_FALLBACK_MAX_MÚ!WAN2GP_QUANTO_INT8_PROFILE_SHAPESÚWAN2GP_QUANTO_INT8_PROFILE_TIMETFç        úOptional[bool]Ú_DEBUG_OVERRIDE)ÚenabledÚorig_forwardÚorig_embedding_forward)r   r   Úwan2gp_int8i   Údtypeútorch.dtypeÚreturnÚintc                óN   — | t           j        k    rdS | t           j        k    rdS dS )Né   é   r   )ÚtorchÚfloat16Úfloat32©r   s    úIC:\Users\johnn\OneDrive\Documents\AI\shared\kernels\quanto_int8_inject.pyÚ_encode_dtyper!   =   s+   € Ø•”ÒÐØˆqØ•”ÒÐØˆqØˆ1ó    ÚcodeÚfallbackc                óä   — t          | ¦  «        dk    rt          j        S t          | ¦  «        dk    rt          j        S |t          j        t          j        t          j        fvrt          j        n|S )Nr   r   )r   r   r   r   Úbfloat16)r#   r$   s     r    Ú_decode_dtyper'   E   sT   € Ý
ˆ4�y„y�A‚~€~ÝŒ}ÐÝ
ˆ4�y„y�A‚~€~ÝŒ}ÐØ%­e¬n½e¼mÍUÌ]Ð-[Ð[Ð[�5Œ>ˆ>ÐaiÐir"   Ú1ÚnameÚstrÚdefaultÚboolc                ó¬   — t           j                             | |¦  «        }t          |¦  «                             ¦   «                              ¦   «         dv S )N)r(   ÚtrueÚyesÚon)ÚosÚenvironÚgetr*   ÚstripÚlower)r)   r+   Úvals      r    Ú	_env_flagr7   M   s?   € Ý
Œ*�.Š.˜˜wÑ
'Ô
'€CÝˆs‰8Œ8�>Š>ÑÔ×!Ò!Ñ#Ô#Ð'AÐAÐAr"   c                óœ   — 	 t          t          j                             | t	          |¦  «        ¦  «        ¦  «        S # t
          $ r |cY S w xY w©N)r   r1   r2   r3   r*   Ú	Exception)r)   r+   s     r    Ú_env_intr;   R   sO   € ðÝ•2”:—>’> $­¨G©¬Ñ5Ô5Ñ6Ô6Ð6øÝð ð ð Øˆˆˆðøøøs   ‚9< ¼AÁ
AÚmsgÚNonec                ó*   — t          d| › �¦  «         d S )Nz[Quanto][INT8] )Úprint)r<   s    r    Ú_logr@   Y   s   € Ý	Ð
!˜CÐ
!Ð
!Ñ"Ô"Ð"Ð"Ð"r"   c                óŽ   — t           €t          t          d¦  «        }nt          t           ¦  «        }|rt	          | ¦  «         d S d S )NÚ0)r   r7   Ú
_ENV_DEBUGr,   r@   )r<   Údebug_ons     r    Ú_debugrE   ]   sG   € ÝÐÝ�Z¨Ñ-Ô-ˆˆå�Ñ(Ô(ˆØð ÝˆS‰	Œ	ˆ	ˆ	ˆ	ðð r"   r   c                ó,   — | €d nt          | ¦  «        ad S r9   )r,   r   )r   s    r    Úset_kernel_debugrG   f   s   € à%˜o�d�dµ4¸±=´=€O€O€Or"   Údetailc                óf   — t           rd S da | rt          d¦  «         d S t          d|› �¦  «         d S )NTz.Injected int8 kernels ACTIVE (backend=triton).z Injected int8 kernels INACTIVE. )Ú_STARTUP_PRINTEDr@   )r   rH   s     r    Ú_startup_statusrK   k   sO   € åð ØˆØÐØð :ÝÐ>Ñ?Ô?Ð?Ð?Ð?åÐ8°Ð8Ð8Ñ9Ô9Ð9Ð9Ð9r"   Úreset_triton_modulec                óF   — da | rd adadadai ag ai ag ai a	i a
g adadadad S )NFr   r   )rJ   Ú_TRITON_MODULEÚ_TRITON_DIRECT_FUSED_READYÚ_TRITON_DIRECT_SCALED_READYÚ_KERNEL_USED_PRINTEDÚ_FUSED_LAUNCH_CACHEÚ_FUSED_LAUNCH_CACHE_FIFOÚ_SCALED_LAUNCH_CACHEÚ_SCALED_LAUNCH_CACHE_FIFOÚ_SHAPE_COUNTS_FUSEDÚ_SHAPE_COUNTS_SCALEDÚ_TIME_PROFILE_EVENTSÚ_TIME_PROFILE_CPU_MSÚ_TIME_PROFILE_CALLSÚ_NATIVE_FALLBACK_MAX_M©rL   s    r    Ú_reset_runtime_stater]   v   sk   € ð ÐØð ØˆØ!&ÐØ"'ÐØ ÐØÐØ!ÐØÐØ "ÐØÐØÐØÐØÐØÐØÐÐÐr"   Úoutputútorch.TensorÚbiasúOptional[torch.Tensor]c                ó‚   — |€| S |j         | j         k    s|j        | j        k    r| |z   S |                      |¦  «         | S r9   )Údevicer   Úadd_)r^   r`   s     r    Ú_add_bias_in_place_or_fallbackre   �   sJ   € Ø€|ØˆØ„{�f”mÒ#Ð# t¤z°V´\Ò'AÐ'AØ˜‰}ÐØ
‡K‚K�ÑÔÐØ€Mr"   c                ó6  — |                       ||¦  «         t          |dd¦  «        rG|j        j        j        dk    r2t          |¦  «        s#ddlm} |                     ||||j	        ¦  «        S t          |¦  «        �r	|j
        j	        |j
        j	        k    r|j
        n#|j
                             |j
        j	        ¦  «        }|j        j        dk    rz|j                             |j
        j	        ¦  «        |j
        z  }|j                             |j
        j	        ¦  «        |z  }||                     ¦   «         z  }t          ||¦  «        S t          j        j                             |j        |j        |j
        |z  ¦  «        }�nƒt$          j        dk    r5|j        j	        t$          j        v r|j        rt%          j        |||¦  «        S |j        d         }	|j        d         }
|j        d d…         |
fz   }|j
        j	        |j	        k    r|j
        n|j
                             |j	        ¦  «        }|j        j        dk    rr|j                             |j	        ¦  «        |z  }|                     d|	¦  «        |                     ¦   «         z  }|                     |¦  «        }t          ||¦  «        S t          j        j                             |                     d|	¦  «        |j        |¦  «        }|                     |¦  «        }t          ||¦  «        S )	NÚ_mm_cpu_computeFÚcpur   )Ú
cpu_linearÚmpsÚpytorchéÿÿÿÿ)Úsave_for_backwardÚgetattrÚ_datarc   ÚtypeÚ_is_qbytes_tensorÚshared.kernelsri   Úlinearr   Ú_scaleÚtoÚtre   r   ÚopsÚquantoÚ	qbytes_mmr   ÚbackendÚ
FP8_DTYPESÚis_cudaÚshapeÚreshape)ÚctxÚinputÚotherr`   ri   Úweight_scaleÚactÚwgtr^   Úin_featuresÚout_featuresÚoutput_shapes               r    Ú%_default_quanto_qbytes_linear_forwardrˆ   ˜   s°  € Ø×Ò˜% Ñ'Ô'Ð'ÝˆuÐ'¨Ñ/Ô/ð B°E´KÔ4FÔ4KÈuÒ4TÐ4TÕ]nÐotÑ]uÔ]uÐ4TØ-Ð-Ð-Ð-Ð-Ð-Ø× Ò  ¨¨t°U´[ÑAÔAÐAÝ˜ÑÔñ .ð (-¤|Ô'9¸U¼\Ô=OÒ'OÐ'O�u”|�|ÐUZÔUa×UdÒUdÐejÔeqÔewÑUxÔUxˆØŒ<Ô Ò%Ð%Ø”+—.’. ¤Ô!3Ñ4Ô4°u´|ÑCˆCØ”+—.’. ¤Ô!3Ñ4Ô4°|ÑCˆCØ˜3Ÿ5š5™7œ7‘]ˆFÝ1°&¸$Ñ?Ô?Ð?Ý”Ô!×+Ò+¨E¬K¸¼ÀeÄlÐUaÑFaÑbÔbˆ‰åÔ )Ò+Ð+°´Ô0AÅ[ÔE[Ð0[Ð0[Ð`eÔ`mÐ0[ÝÔ% e¨U°DÑ9Ô9Ð9Ø”k "”oˆØ”{ 1”~ˆØ”{ 3 B 3Ô'¨<¨/Ñ9ˆØ',¤|Ô'9¸U¼[Ò'HÐ'H�u”|�|ÈeÌlÏoÊoÐ^cÔ^iÑNjÔNjˆàŒ<Ô Ò%Ð%Ø”+—.’. ¤Ñ-Ô-°Ñ<ˆCØ—]’] 2 {Ñ3Ô3°c·e²e±g´gÑ=ˆFØ—^’^ LÑ1Ô1ˆFÝ1°&¸$Ñ?Ô?Ð?Ý”Ô!×+Ò+¨E¯MªM¸"¸kÑ,JÔ,JÈEÌKÐYeÑfÔfˆØ—’ Ñ-Ô-ˆÝ)¨&°$Ñ7Ô7Ð7r"   c                 óð   — 	 ddl m}  n# t          $ r Y dS w xY wt          ¦   «          | j        j        }t          j        s|t          _        dt          _        t          t          ¦  «        | j        _        dS )Nr   ©ÚqbytesFT)Úoptimum.quanto.tensor.weightsr‹   r:   Ú_init_quanto_tensor_typesÚWeightQBytesLinearFunctionÚforwardÚ_BASE_PATCH_STATEr   r   Ústaticmethodrˆ   )Ú_qbytesÚcurrent_forwards     r    Ú#_ensure_default_quanto_linear_patchr”   º   s‹   € ðØCÐCÐCÐCÐCÐCÐCøÝð ð ð ØˆuˆuðøøøåÑÔÐØÔ8Ô@€OÝÔ$ð )Ø)8ÕÔ&Ø$(ÕÔ!Ý1=Õ>cÑ1dÔ1d€GÔ&Ô.Øˆ4s   ‚	 ‰
–c                 ól   — t           �	t          �dS 	 ddlm}  ddlm} n# t          $ r Y dS w xY w| a |adS )NTr   )ÚQBytesTensor)ÚWeightQBytesTensorF)Ú_QBYTES_TENSOR_CLSÚ_WEIGHT_QBYTES_CLSÚoptimum.quanto.tensor.qbytesr–   Ú$optimum.quanto.tensor.weights.qbytesr—   r:   )r–   r—   s     r    r�   r�   È   sr   € åÐ%Õ*<Ð*HØˆtðØ=Ð=Ð=Ð=Ð=Ð=ØKÐKÐKÐKÐKÐKÐKøÝð ð ð Øˆuˆuðøøøà%ÐØ+ÐØˆ4s   ’ Ÿ
-¬-c                 ó^  — t           } | �t          | dd ¦  «        nd }t          | d uo#|d uot          |d¦  «        ot          | d¦  «        ¦  «        }t          |ot          | d¦  «        ¦  «        at          |ot          | d¦  «        ¦  «        at          rt          j        d¦  «        ad S d S )NÚtritonÚcdivÚ_select_triton_int8_configÚ*_fused_dynamic_int8_blockscale_gemm_kernelÚ_scaled_int8_gemm_kernelz"shared.kernels.convrot_int8_triton)	rN   rn   r,   ÚhasattrrO   rP   Ú	importlibÚimport_moduleÚ_CONVROT_MODULE)ÚmodÚ	triton_nsÚ
has_commons      r    Ú#_refresh_triton_direct_kernel_flagsr©   Ö   sß   € å
€CØ03°•˜˜X tÑ,Ô,Ð,ÀT€IÝ�c �oð  N¨)¸4Ð*?ð  NÅGÈIÐW]ÑD^ÔD^ð  NÕcjÐknð  qMñ  dNô  dNñ  Oô  O€JÝ!% jÐ&oµW¸SÐBnÑ5oÔ5oÑ!pÔ!pÐÝ"& zÐ'^µg¸cÐC]Ñ6^Ô6^Ñ"_Ô"_ÐÝ!ð XÝ#Ô1Ð2VÑWÔWˆˆˆðXð Xr"   rv   c                óL   — t          ¦   «         sdS t          | t          ¦  «        S ©NF)r�   Ú
isinstancer˜   ©rv   s    r    rq   rq   á   ó&   € Ý$Ñ&Ô&ð ØˆuÝ�aÕ+Ñ,Ô,Ð,r"   c                óL   — t          ¦   «         sdS t          | t          ¦  «        S r«   )r�   r¬   r™   r­   s    r    Ú_is_weight_qbytesr°   ç   r®   r"   Úscalec                ó¨   — | j         dk    r&| j        d         dk    r|                      d¦  «        S | j         dk    r| S |                      d¦  «        S )Nr   r   rl   )Úndimr}   Úviewr~   )r±   s    r    Ú_flatten_scalerµ   í   sO   € Ø„z�Q‚€˜5œ; qœ>¨QÒ.Ð.Ø�zŠz˜"‰~Œ~ÐØ„z�Q‚€ØˆØ�=Š=˜ÑÔÐr"   Úrowsrc   úOptional[torch.device]c                óÈ  — t          | ¦  «        } |                      ¦   «         dk    r)|                      d¦  «                             |¦  «        } n?|                      ¦   «         |k    r't	          d|› d|                      ¦   «         › �¦  «        ‚|€(|                      ¦   «                              |¬¦  «        S |                      ¦   «                              ||d¬¦  «        S )Nr   z+Activation scale length mismatch: expected z, got r   T)rc   r   Únon_blocking)rµ   Únumelr~   ÚexpandÚRuntimeErrorÚ
contiguousru   )r±   r¶   r   rc   s       r    Ú_expand_scale_to_rowsr¾   õ   sÑ   € Ý˜5Ñ!Ô!€EØ‡{‚{�}„}˜ÒÐØ—’˜aÑ Ô ×'Ò'¨Ñ-Ô-ˆˆØ	�Š‰Œ˜$Ò	Ð	ÝÐdÈÐdÐdÐUZ×U`ÒU`ÑUbÔUbÐdÐdÑeÔeÐeØ€~Ø×ÒÑ!Ô!×$Ò$¨5Ð$Ñ1Ô1Ð1Ø×ÒÑÔ× Ò ¨°eÈ$Ð ÑOÔOÐOr"   r†   útorch.devicec                ón  — t          | ¦  «        }|                     ¦   «         |k    rt          d¦  «        ‚|j        |k    r|                     |d¬¦  «        }|j        t          j        k    r|                     t          j        ¦  «        }|                     ¦   «         s| 	                    ¦   «         }|S )Nz2Weight scale length does not match output featuresT)rc   r¹   )
rµ   rº   r¼   rc   ru   r   r   r   Úis_contiguousr½   )r±   r†   rc   Ú
flat_scales       r    Ú_prepare_weight_scalerÃ      s¦   € Ý Ñ&Ô&€JØ×ÒÑÔ˜\Ò)Ð)ÝÐOÑPÔPÐPØÔ˜FÒ"Ð"Ø—]’]¨&¸t�]ÑDÔDˆ
ØÔ�5œ=Ò(Ð(Ø—]’]¥5¤=Ñ1Ô1ˆ
Ø×#Ò#Ñ%Ô%ð -Ø×*Ò*Ñ,Ô,ˆ
ØÐr"   ÚcacheÚdictÚfifoÚlistÚmax_sizeÚkeyÚtupleÚparamsú(tuple[int, int, int, int, int, int, int]c                óÎ   — || v r| |         S || |<   |                      |¦  «         t          |¦  «        |k    r+|                     d¦  «        }|                      |d ¦  «         |S ©Nr   )ÚappendÚlenÚpop)rÄ   rÆ   rÈ   rÉ   rË   Ú	stale_keys         r    Ú_cache_launch_paramsrÓ     si   € Ø
ˆe€|€|Ø�SŒzÐØ€Eˆ#�JØ‡K‚K�ÑÔÐÝ
ˆ4�y„y�8ÒÐØ—H’H˜Q‘K”Kˆ	Ø�	Š	�)˜TÑ"Ô"Ð"Ø€Mr"   ÚfusedÚmÚkÚnÚkernel_kindc                ó  — t          |j        dk    r|j        nd¦  «        }|dk    r|| ||fn|| |||f}t                               |¦  «        }|�|S t
          }|€t          d¦  «        ‚|                     | ||||¬¦  «        \  }	}
}}}|j         	                    | |	¦  «        }|j         	                    ||
¦  «        }|	|
|||||f}| 
                    ¦   «         r|S t          t          t          t          ||¦  «        S )NÚcudarl   rÔ   úTriton backend not initialized©rc   rØ   )r   rp   ÚindexrR   r3   rN   r¼   rŸ   r�   rž   Ú_autotune_is_blockedrÓ   rS   Ú_FUSED_LAUNCH_CACHE_MAX)rÕ   rÖ   r×   rc   rØ   Údevice_indexrÉ   Úcachedr¦   Úblock_mÚblock_nÚblock_kÚ	num_warpsÚ
num_stagesÚgrid_mÚgrid_nrË   s                    r    Ú_fused_launch_paramsré     s.  € Ý v¤{°fÒ'<Ð'<�v”|�|À"ÑEÔE€LØ%0°GÒ%;Ð%;ˆ<˜˜A˜qÐ
!Ð
!À,ÐPQÐSTÐVWÐYdÐAe€CÝ ×$Ò$ SÑ)Ô)€FØÐØˆÝ
€CØ
€{ÝÐ;Ñ<Ô<Ð<Ø7:×7UÒ7UÐVWÐYZÐ\]Ðflð  {FÐ7Uñ  8Gô  8GÑ4€GˆW�g˜y¨*ØŒZ�_Š_˜Q Ñ(Ô(€FØŒZ�_Š_˜Q Ñ(Ô(€FØ�w ¨°JÀÈÐO€FØ
×ÒÑ!Ô!ð ØˆÝÕ 3Õ5MÕOfÐhkÐmsÑtÔtÐtr"   c                óê  — t          |j        dk    r|j        nd¦  «        }|| ||f}t                               |¦  «        }|�|S t
          }|€t          d¦  «        ‚|                     | |||d¬¦  «        \  }}	}
}}|j         	                    | |¦  «        }|j         	                    ||	¦  «        }||	|
||||f}| 
                    ¦   «         r|S t          t          t          t          ||¦  «        S )NrÚ   rl   rÛ   ÚscaledrÜ   )r   rp   rÝ   rT   r3   rN   r¼   rŸ   r�   rž   rÞ   rÓ   rU   Ú_SCALED_LAUNCH_CACHE_MAX)rÕ   rÖ   r×   rc   rà   rÉ   rá   r¦   râ   rã   rä   rå   ræ   rç   rè   rË   s                   r    Ú_scaled_launch_paramsrí   *  s  € Ý v¤{°fÒ'<Ð'<�v”|�|À"ÑEÔE€LØ˜˜A˜qÐ
!€CÝ!×%Ò% cÑ*Ô*€FØÐØˆÝ
€CØ
€{ÝÐ;Ñ<Ô<Ð<Ø7:×7UÒ7UÐVWÐYZÐ\]Ðflð  {CÐ7Uñ  8Dô  8DÑ4€GˆW�g˜y¨*ØŒZ�_Š_˜Q Ñ(Ô(€FØŒZ�_Š_˜Q Ñ(Ô(€FØ�w ¨°JÀÈÐO€FØ
×ÒÑ!Ô!ð ØˆÝÕ 4Õ6OÕQiÐknÐpvÑwÔwÐwr"   c                 óú   — 	 t          t          j                             ¦   «         ¦  «        rdS n# t          $ r Y nw xY w	 dd lm}  t          |                      ¦   «         ¦  «        rdS n# t          $ r Y nw xY wdS )NTr   F)r,   r   ÚcompilerÚis_compilingr:   Útorch._dynamoÚ_dynamo)rò   s    r    Ú_is_compiling_graphró   <  s±   € ðÝ•”×+Ò+Ñ-Ô-Ñ.Ô.ð 	Ø�4ð	øåð ð ð ØˆðøøøðØ'Ð'Ð'Ð'Ð'Ð'å�×$Ò$Ñ&Ô&Ñ'Ô'ð 	Ø�4ð	øåð ð ð Øˆðøøøàˆ5s   ‚+0 °
=¼=Á'A+ Á+
A8Á7A8Úobjectc                óx   — t          j        | ¦  «        sdS t          �t          t          | ¦  «        ¦  «        S dS r«   )r   Ú	is_tensorÚ_torch_is_fake_tensorr,   r­   s    r    Ú_is_fake_tensorrø   L  s;   € ÝŒ?˜1ÑÔð ØˆuÝÐ(ÝÕ)¨!Ñ,Ô,Ñ-Ô-Ð-Øˆ5r"   r€   r�   c                ó&  — t          |dd ¦  «        }t          j        |¦  «        r1|j        t          j        t          j        t          j        fv r|j        S t          | ¦  «        rVt          | dd ¦  «        }t          j        |¦  «        r1|j        t          j        t          j        t          j        fv r|j        S t          | t          j	        ¦  «        r1| j        t          j        t          j        t          j        fv r| j        S t          j        S )Nrt   )
rn   r   rö   r   r&   r   r   rq   r¬   ÚTensor)r€   r�   Úother_scaleÚinput_scales       r    Ú_resolve_output_dtyperý   T  sã   € Ý˜% ¨4Ñ0Ô0€KÝ„�{Ñ#Ô#ð !¨Ô(9½e¼nÍeÌmÕ]bÔ]jÐ=kÐ(kÐ(kØÔ Ð Ý˜ÑÔð %Ý˜e X¨tÑ4Ô4ˆÝŒ?˜;Ñ'Ô'ð 	%¨KÔ,=Å%Ä.ÕRWÔR_ÕafÔanÐAoÐ,oÐ,oØÔ$Ð$Ý�%�œÑ&Ô&ð ¨5¬;½5¼>Í5Ì=ÕZ_ÔZgÐ:hÐ+hÐ+hØŒ{ÐÝŒ>Ðr"   úTuple[Optional[object], str]c                 ó   — 	 t          j        d¦  «        } n# t          $ r}d d|› d�fcY d }~S d }~ww xY wt          | d¦  «        sdS 	 t	          |                      ¦   «         ¦  «        sdS n# t          $ r}d d|› d�fcY d }~S d }~ww xY w| dfS )	Nz!shared.kernels.quanto_int8_tritonz4failed to import shared.kernels.quanto_int8_triton (ú)Úis_available)Nz8shared.kernels.quanto_int8_triton.is_available() missing)Nz.Triton backend unavailable on this runtime/GPUz"Triton availability check failed (Úok)r£   r¤   r:   r¢   r,   r  )r¦   Úexcs     r    Ú_probe_triton_backendr  a  s  € ðSÝÔ%Ð&IÑJÔJˆˆøÝð Sð Sð SØÐRÈCÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRøøøøðSøøøõ �3˜Ñ'Ô'ð PØOÐOðAÝ�C×$Ò$Ñ&Ô&Ñ'Ô'ð 	JØIÐIð	Jøåð Að Að AØÐ@¸#Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@øøøøðAøøøà�ˆ9Ðs2   ‚ —
3¡.¨3®3Á	!A- Á-
B	Á7BÁ>B	ÂB	ÚnsÚlibútorch.library.Libraryc                ó¨  — |                      d¦  «         |                      d¦  «         |                      d¦  «         t          j                             | › d�d¦  «        t          ¦  «         t          j                             | › d�¦  «        dd„¦   «         }t          j                             | › d�d¦  «        ddd„¦   «         }t          j                             | › d�d¦  «        ddd„¦   «         }t          j                             | › d�¦  «        ddd„¦   «         }t          j                             | › d�¦  «        ddd„¦   «         }d S )NzVconvrot_int8_mm(Tensor x2d, Tensor qweight, Tensor scale, Tensor? bias=None) -> Tensorzgfused_quant_scaled_mm(Tensor x2d, Tensor qweight, Tensor qweight_scale, int out_dtype_code=0) -> Tensorzlscaled_int8_mm(Tensor a_int8, Tensor b_int8, Tensor a_scale, Tensor b_scale, int out_dtype_code=0) -> Tensorz::convrot_int8_mmÚCUDAc                ó\   — |                       | j        d         |j        d         f¦  «        S rÎ   )Ú	new_emptyr}   )Úx2dÚqweightr±   r`   s       r    Ú_convrot_int8_mm_fakez?_register_int8_ops_for_namespace.<locals>._convrot_int8_mm_fakex  s&   € à�}Š}˜cœi¨œl¨G¬M¸!Ô,<Ð=Ñ>Ô>Ð>r"   z::fused_quant_scaled_mmr   r  r_   r  Úqweight_scaleÚout_dtype_coder   c                ó”   — t           €t          d¦  «        ‚t          || j        ¦  «        }t                                | |||¬¦  «        S ©NrÛ   ©Ú	out_dtype)rN   r¼   r'   r   Úfused_quant_scaled_mm©r  r  r  r  r  s        r    Ú_fused_quant_scaled_mm_cudazE_register_int8_ops_for_namespace.<locals>._fused_quant_scaled_mm_cuda|  sF   € åÐ!ÝÐ?Ñ@Ô@Ð@Ý! .°#´)Ñ<Ô<ˆ	Ý×3Ò3°C¸À-Ð[dÐ3ÑeÔeÐer"   z::scaled_int8_mmÚa_int8Úb_int8Úa_scaleÚb_scalec                ó    — t           €t          d¦  «        ‚t          |t          j        ¦  «        }t                                | ||||¬¦  «        S r  )rN   r¼   r'   r   r&   Úscaled_int8_mm©r  r  r  r  r  r  s         r    Ú_scaled_int8_mm_cudaz>_register_int8_ops_for_namespace.<locals>._scaled_int8_mm_cudaƒ  sH   € åÐ!ÝÐ?Ñ@Ô@Ð@Ý! .µ%´.ÑAÔAˆ	Ý×,Ò,¨V°V¸WÀgÐYbÐ,ÑcÔcÐcr"   c                óÔ   — | j         dk    s|j         dk    rt          d¦  «        ‚t          || j        ¦  «        }|                      | j        d         |j        d         f|¬¦  «        S )Nr   z(fused_quant_scaled_mm expects 2D tensorsr   r   )r³   r¼   r'   r   r  r}   r  s        r    Ú_fused_quant_scaled_mm_fakezE_register_int8_ops_for_namespace.<locals>._fused_quant_scaled_mm_fakeŠ  sa   € àŒ8�qŠ=ˆ=˜GœL¨AÒ-Ð-ÝÐIÑJÔJÐJÝ! .°#´)Ñ<Ô<ˆ	Ø�}Š}˜cœi¨œl¨G¬M¸!Ô,<Ð=ÀYˆ}ÑOÔOÐOr"   c                óÞ   — | j         dk    s|j         dk    rt          d¦  «        ‚t          |t          j        ¦  «        }|                      | j        d         |j        d         f|¬¦  «        S )Nr   z!scaled_int8_mm expects 2D tensorsr   r   )r³   r¼   r'   r   r&   r  r}   r  s         r    Ú_scaled_int8_mm_fakez>_register_int8_ops_for_namespace.<locals>._scaled_int8_mm_fake‘  se   € àŒ;˜!ÒÐ˜vœ{¨aÒ/Ð/ÝÐBÑCÔCÐCÝ! .µ%´.ÑAÔAˆ	Ø×Ò ¤¨a¤°&´,¸q´/Ð BÈ)ÐÑTÔTÐTr"   r9   )r   )r  r_   r  r_   r  r_   r  r   )
r  r_   r  r_   r  r_   r  r_   r  r   )Údefiner   ÚlibraryÚimplÚ_convrot_int8_mmÚregister_fake)r  r  r  r  r  r!  r#  s          r    Ú _register_int8_ops_for_namespacer)  q  s¿  € Ø‡J‚JÐgÑhÔhÐhØ‡J‚JÐxÑyÔyÐyØ‡J‚JÐ}Ñ~Ô~Ð~å	„M×Ò˜"Ð/Ð/Ð/°Ñ8Ô8Õ9IÑJÔJÐJå
„]× Ò  BÐ!9Ð!9Ð!9Ñ:Ô:ð?ð ?ð ?ñ ;Ô:ð?õ „]×Ò˜2Ð6Ð6Ð6¸Ñ?Ô?ðfð fð fð fñ @Ô?ðfõ „]×Ò˜2Ð/Ð/Ð/°Ñ8Ô8ðdð dð dð dñ 9Ô8ðdõ „]× Ò  BÐ!?Ð!?Ð!?Ñ@Ô@ðPð Pð Pð Pñ AÔ@ðPõ „]× Ò  BÐ!8Ð!8Ð!8Ñ9Ô9ðUð Uð Uð Uñ :Ô9ðUð Uð Ur"   c                 ó®  — t           rd S g } 	 t          j                             t          d¦  «        }|                      |¦  «         t          t          |¦  «         nt# t          $ rg t          t          j	        t          d ¦  «        }t          |d uo/t          |d¦  «        ot          |d¦  «        ot          |d¦  «        ¦  «        }|s‚ Y nw xY w| ada d S )NÚDEFr  r  Úconvrot_int8_mmT)Ú_OPS_REGISTEREDr   r%  ÚLibraryÚ_OPS_NAMESPACErÏ   r)  r:   rn   rw   r,   r¢   Ú	_OPS_LIBS)Úlibsr  Úop_nsÚhas_opss       r    Ú_ensure_compile_safe_opsr4  ™  sü   € åð Øˆà€DðÝŒm×#Ò#¥N°EÑ:Ô:ˆØ�Š�CÑÔÐÝ(­¸Ñ=Ô=Ð=Ð=øÝð 
ð 
ð 
å�œ	¥>°4Ñ8Ô8ˆÝØ˜Ðð 2Ý˜Ð6Ñ7Ô7ð2å˜Ð/Ñ0Ô0ð2õ ˜Ð0Ñ1Ô1ñ	
ô 
ˆð ð 	Øð	ð 	ð
øøøð €Ià€O€O€Os   �AA ÁA.CÃCr  r  r  Úoutput_dtypec                óš  — t           }|€t          d¦  «        ‚t          s|                     | |||¬¦  «        S | j        \  }}|j        \  }}||k    rt          d| j        › d|j        › �¦  «        ‚t          |||| j        ¦  «        \  }	}
}}}}}t          j        ||f| j        |¬¦  «        } |j	        ||f         | |||||||  
                    d¦  «        |  
                    d¦  «        | 
                    d¦  «        | 
                    d¦  «        | 
                    d¦  «        | 
                    d¦  «        |	|
|||¬¦  «         |S )	NrÛ   r  z#Triton int8 GEMM shape mismatch: x=ú, w=©rc   r   r   r   ©râ   rã   rä   rå   ræ   )rN   r¼   rO   r  r}   ré   rc   r   Úemptyr    Ústride)r  r  r  r5  r¦   rÕ   rÖ   r×   Úk2râ   rã   rä   rå   ræ   rç   rè   Úouts                    r    Ú"_fused_quant_scaled_mm_direct_callr>  ³  sn  € Ý
€CØ
€{ÝÐ;Ñ<Ô<Ð<Ý%ð ^Ø×(Ò(¨¨g°}ÐP\Ð(Ñ]Ô]Ð]àŒ9�D€A€qØŒM�E€A€rØˆB‚w€wÝÐ_ÀÄÐ_Ð_ÐPWÔP]Ð_Ð_Ñ`Ô`Ð`åG[Ð\]Ð_`ÐbcÐehÔeoÑGpÔGpÑD€GˆW�g˜y¨*°f¸fÝ
Œ+�q˜!�f S¤Z°|Ð
DÑ
DÔ
D€CØD€CÔ2°F¸FÐ3CÔDØØØØØ	Ø	Ø	Ø�
Š
�1‰ŒØ�
Š
�1‰ŒØ�Š�qÑÔØ�Š�qÑÔØ�
Š
�1‰ŒØ�
Š
�1‰ŒØØØØØð%ñ ô ð ð( €Jr"   r  r  r  r  c                óž  — t           }|€t          d¦  «        ‚t          s|                     | ||||¬¦  «        S | j        \  }}|j        \  }}	||	k    rt          d| j        › d|j        › �¦  «        ‚t          |||| j        ¦  «        \  }
}}}}}}t          j        ||f| j        |¬¦  «        } |j	        ||f         | ||||||||  
                    d¦  «        |  
                    d¦  «        | 
                    d¦  «        | 
                    d¦  «        | 
                    d¦  «        | 
                    d¦  «        |
||||¬¦  «         |S )	NrÛ   r  z#Triton int8 GEMM shape mismatch: a=r7  r8  r   r   r9  )rN   r¼   rP   r  r}   rí   rc   r   r:  r¡   r;  )r  r  r  r  r5  r¦   rÕ   rÖ   r×   r<  râ   rã   rä   rå   ræ   rç   rè   r=  s                     r    Ú_scaled_int8_mm_direct_callr@  Ø  sx  € õ €CØ
€{ÝÐ;Ñ<Ô<Ð<Ý&ð \Ø×!Ò! &¨&°'¸7ÈlÐ!Ñ[Ô[Ð[àŒ<�D€A€qØŒL�E€A€rØˆB‚w€wÝÐaÀÄÐaÐaÐSYÔS_ÐaÐaÑbÔbÐbåG\Ð]^Ð`aÐcdÐflÔfsÑGtÔGtÑD€GˆW�g˜y¨*°f¸fÝ
Œ+�q˜!�f V¤]¸,Ð
GÑ
GÔ
G€CØ2€CÔ  &¨&Ð!1Ô2ØØØØØØ	Ø	Ø	Ø�Š�aÑÔØ�Š�aÑÔØ�Š�aÑÔØ�Š�aÑÔØ�
Š
�1‰ŒØ�
Š
�1‰ŒØØØØØð'ñ ô ð ð* €Jr"   c                óè  — | j         \  }}|j         d         }t          |||| j        ¦  «        d d…         }|d         dk    r0ddlm} t           || d¦  «        ||| j        ¦  «        }	|�|	|z  }	|	S t          j        ||f| j        | j        ¬¦  «        }	t          |||| j        |�dnd	¬
¦  «        d d…         }t           
                    | |||	||¦  «         t          sdat          d¦  «         |	S )Nr   é   r   é@   )Ú_rotate_activationé   r8  Úconvrot_biasÚconvrot)rØ   Tz/Fused ConvRot INT8 decode kernel is being used.)r}   ré   rc   Úshared.qtypes.int8_convrotrD  r>  r   r   r:  r¥   r,  Ú_CONVROT_USED_PRINTEDr@   )
r  r  r±   r`   rÕ   rÖ   r×   ÚcfgrD  r=  s
             r    r'  r'    s   € àŒ9�D€A€qØŒ�aÔ€AÝ
˜q ! Q¨¬
Ñ
3Ô
3°B°Q°BÔ
7€CØ
ˆ1„v�‚|€|ØAÐAÐAÐAÐAÐAÝ0Ð1CÐ1CÀCÈÑ1MÔ1MÈwÐX]Ð_bÔ_hÑiÔiˆØÐØ�4‰KˆCØˆ
Ý
Œ+�q˜!�f S¤Z°s´yÐ
AÑ
AÔ
A€CÝ
˜q ! Q¨¬
ÐRVÐRbÀÀÐhqÐ
rÑ
rÔ
rÐsuÐtuÐsuÔ
v€CÝ×#Ò# C¨°%¸¸dÀCÑHÔHÐHÝ ð @Ø $ÐÝÐ>Ñ?Ô?Ð?Ø€Jr"   c                ó¢  — |                       d| j        d         ¦  «        }t          |j        |j        d         | j        ¦  «        }t
          j                             ¦   «         r-t
          j        j	         
                    ||j        ||¦  «        }nt          ||j        ||¦  «        } |j         g | j        d d…         ¢|j        d         ‘R Ž S )Nrl   r   )r~   r}   rÃ   rt   rc   r   rï   rð   rw   r   r,  ro   r'  )r€   Úweightr`   r  r±   r=  s         r    Úfused_convrot_linearrM    s±   € Ø
�-Š-˜˜EœK¨œOÑ
,Ô
,€CÝ! &¤-°´¸a´À%Ä,ÑOÔO€EÝ„~×"Ò"Ñ$Ô$ð ?ÝŒiÔ#×3Ò3°C¸¼ÀuÈdÑSÔSˆˆå˜s F¤L°%¸Ñ>Ô>ˆØˆ3Œ;Ð:˜œ C R CÔ(Ð:¨&¬,°q¬/Ð:Ð:Ð:Ð:r"   c                ó  — t           �Mt          ¦   «         s?t          | ¦  «        s0t          |¦  «        s!t          |¦  «        st          | |||¦  «        S t          j        j                             | ||t          |¦  «        ¦  «        S r9   )	rN   ró   rø   r>  r   rw   r   r  r!   )r  r  r  r5  s       r    Ú_fused_quant_scaled_mm_callrO  "  s�   € ÝÐ!Õ*=Ñ*?Ô*?Ð!ÍÐY\ÑI]ÔI]Ð!ÕapÐqxÑayÔayÐ!õ  ~Mð  N[ñ  ~\ô  ~\Ð!Ý1°#°wÀÈ|Ñ\Ô\Ð\ÝŒ9Ô ×6Ò6°s¸GÀ]ÕTaÐbnÑToÔToÑpÔpÐpr"   c           	     ó4  — t           �]t          ¦   «         sOt          | ¦  «        s@t          |¦  «        s1t          |¦  «        s"t          |¦  «        st          | ||||¦  «        S t          j        j                             | |||t          |¦  «        ¦  «        S r9   )	rN   ró   rø   r@  r   rw   r   r  r!   )r  r  r  r  r5  s        r    Ú_scaled_int8_mm_callrQ  (  s²   € õ Ð!Õ*=Ñ*?Ô*?Ð!Í/ÐZ`ÑJaÔJaÐ!ÕetÐu{Ñe|Ôe|Ð!õ  APð  QXñ  AYô  AYÐ!õ  ]lð  mtñ  ]uô  ]uÐ!Ý*¨6°6¸7ÀGÈ\ÑZÔZÐZÝŒ9Ô ×/Ò/°¸ÀÈÕR_Ð`lÑRmÔRmÑnÔnÐnr"   c                óV  — t           €dS t          |¦  «        sdS |j        j        t          j        k    rdS |j        j        sdS t          | ¦  «        r&| j        j        t          j        k    o| j        j        S | j        o)| j        t          j        t          j	        t          j
        fv S r«   )rN   r°   ro   r   r   Úint8r|   rq   r&   r   r   )r€   r�   s     r    Ú_use_int8_kernelrT  4  s™   € ÝÐØˆuÝ˜UÑ#Ô#ð ØˆuØ„{Ô�EœJÒ&Ð&ØˆuØŒ;Ôð Øˆuå˜ÑÔð GØŒ{Ô ¥E¤JÒ.ÐF°5´;Ô3FÐFØŒ=ÐZ˜Uœ[­U¬^½U¼]ÍEÌMÐ,ZÐZÐZr"   c                ó¶  — t           €dS t          j        |¦  «        sdS t          | dd ¦  «        }t	          |¦  «        sdS |j        j        t          j        k    rdS t          | dd ¦  «        �dS t          t          | dd¦  «        ¦  «        st          t          | dd¦  «        ¦  «        rdS |j	        |j        j	        k    rdS t          |dd ¦  «        }t          j        |¦  «        r|j	        |j	        k    rdS |j        j
        d         }|                     ¦   «         dk    p3|j        dk    r|j
        d         |k    p|j        d	k    o|j
        |dfk    S )
NFr  Úmax_normÚscale_grad_by_freqÚsparsert   r   r   r   )rN   r   rö   rn   r°   ro   r   rS  r,   rc   r}   rº   r³   )Úmoduler€   r  r±   r¶   s        r    Ú_use_int8_embedding_kernelrZ  C  se  € ÝÐØˆuÝŒ?˜5Ñ!Ô!ð ØˆuÝ�f˜i¨Ñ.Ô.€GÝ˜WÑ%Ô%ð ØˆuØ„}Ô�eœjÒ(Ð(ØˆuÝˆv�z 4Ñ(Ô(Ð4ØˆuÝ�G�FÐ0°%Ñ8Ô8Ñ9Ô9ð ½TÅ'È&ÐRZÐ\aÑBbÔBbÑ=cÔ=cð ØˆuØ„|�w”}Ô+Ò+Ð+ØˆuÝ�G˜X tÑ,Ô,€EÝŒ?˜5Ñ!Ô!ð  U¤\°U´\Ò%AÐ%AØˆuØŒ=Ô˜qÔ!€DØ�;Š;‰=Œ=˜AÒÐ %¤*°¢/Ð"L°e´kÀ!´nÈÒ6LÐÐRWÔR\Ð`aÒRaÐR~ÐfkÔfqÐvzÐ|}Ðu~Òf~Ðr"   c                ó¶   — | j         }|                     ¦   «         dk    r|S t          j        j                             ||                     dd¦  «        ¦  «        S ©Nr   rl   )rt   rº   r   ÚnnÚ
functionalÚ	embeddingr~   )r  r€   r±   s      r    Ú_gather_embedding_scaler`  Z  sJ   € ØŒN€EØ‡{‚{�}„}˜ÒÐØˆÝŒ8Ô×(Ò(¨°·²¸bÀ!Ñ0DÔ0DÑEÔEÐEr"   c           	     ól  — | j         }t          j        j                             ||j        | j        d | j        dd¦  «        }|                     |j	        j
        ¦  «        }t          ||¦  «        }t          j        |¦  «        r-|j        |j        dz
  k    r|                     d¦  «        }||z  S ||z  S )NFr   rl   )r  r   r]  r^  r_  ro   Úpadding_idxÚ	norm_typeru   rt   r   r`  rö   r³   Ú	unsqueeze)rY  r€   r  Úgatheredr±   s        r    Ú_int8_embedding_forwardrf  a  s´   € ØŒn€GÝŒxÔ"×,Ò,ØØŒØÔØØÔØØñô €Hð �{Š{˜7œ>Ô/Ñ0Ô0€HÝ# G¨UÑ3Ô3€EÝ„�uÑÔð  ØŒ:˜œ¨Ñ*Ò*Ð*Ø—O’O BÑ'Ô'ˆEØ˜%ÑÐØ�eÑÐr"   Úinput_shapeú
torch.Sizec                óH   — d}| d d…         D ]}|t          |¦  «        z  }Œ|S r\  )r   )rg  r¶   Údims      r    Ú_activation_rowsrk  u  s6   € Ø€DØ˜3˜B˜3Ôð ð ˆØ•�C‘”ÑˆˆØ€Kr"   c                óV   — t           dk     rdS t          | j        ¦  «        t           k    S )Nr   F)r[   rk  r}   )r€   s    r    Ú_prefer_native_quanto_pathrm  |  s(   € Ý Ò!Ð!ØˆuÝ˜EœKÑ(Ô(Õ,BÒBÐBr"   c                 ó:   — t           rd S da t          d¦  «         d S )NTz,Injected Triton int8 kernels are being used.)rQ   r@   © r"   r    Ú_mark_kernel_usedrp  ‚  s*   € åð ØˆØÐÝÐ	7Ñ8Ô8Ð8Ð8Ð8r"   c                ó¾  — |                       ||¦  «         t          €t          d¦  «        ‚t          ¦   «          |j        }t          |d         ¦  «        }t          |j        d         ¦  «        }|                     d|¦  «        }|                     ¦   «         s|                     ¦   «         }|j	        }|                     ¦   «         s|                     ¦   «         }t          |j        ||j        ¦  «        }	t          r]t          |j        d         ¦  «        t          |¦  «        t          |¦  «        f}
t                               |
d¦  «        dz   t          |
<   t           rºt"          j                             ¦   «         rœt"          j                             d¬¦  «        }t"          j                             d¬¦  «        }|                     ¦   «          t-          |||	|j        ¦  «        }|                     ¦   «          t0                               ||f¦  «         nt-          |||	|j        ¦  «        }|                     |d d…         |fz   ¦  «        }|�||z  }|S )NrÛ   rl   r   r   T©Úenable_timing)rm   rN   r¼   rp  r}   r   r~   rÁ   r½   ro   rÃ   rt   rc   Ú_SHAPE_PROFILE_ONrV   r3   Ú_TIME_PROFILE_ONr   rÚ   r  ÚEventÚrecordrO  r   rX   rÏ   )r   r€   r�   r`   rg  r…   r†   Úa_2dr  r  rÉ   ÚstartÚendÚout_2dr=  s                  r    Ú&_int8_linear_forward_triton_dense_fastr|  Š  s  € Ø×Ò˜% Ñ'Ô'Ð'ÝÐÝÐ;Ñ<Ô<Ð<ÝÑÔÐà”+€KÝ�k "”oÑ&Ô&€KÝ�u”{ 1”~Ñ&Ô&€LØ�=Š=˜˜[Ñ)Ô)€DØ×ÒÑÔð !Ø�ŠÑ Ô ˆØŒ[€FØ×ÒÑ!Ô!ð %Ø×"Ò"Ñ$Ô$ˆÝ# E¤L°,ÀÄÑNÔN€Gåð GÝ�4”:˜a”=Ñ!Ô!¥3 {Ñ#3Ô#3µS¸Ñ5FÔ5FÐGˆÝ#6×#:Ò#:¸3ÀÑ#BÔ#BÀQÑ#FÕ˜CÑ Ýð Q�EœJ×3Ò3Ñ5Ô5ð QÝ”
× Ò ¨tÐ Ñ4Ô4ˆÝŒj×Ò¨TÐÑ2Ô2ˆØ�Š‰ŒˆÝ,¨T°6¸7ÀEÄKÑPÔPˆØ�
Š
‰ŒˆÝ×#Ò# U¨C LÑ1Ô1Ð1Ð1å,¨T°6¸7ÀEÄKÑPÔPˆà
�.Š.˜ S b SÔ)¨\¨OÑ;Ñ
<Ô
<€CØÐØˆt‰ˆØ€Jr"   c                óœ  — |                       ||¦  «         t          €t          d¦  «        ‚t          ¦   «          |j        }t          |d         ¦  «        }t          |j        d         ¦  «        }|j        }|                     ¦   «         s|                     ¦   «         }t          |j
        ||j        ¦  «        }t          ||¦  «        }	t          |¦  «        }
|
�rÐ|j                             d|¦  «        }|j        t           j        k    rt          d¦  «        ‚|                     ¦   «         s|                     ¦   «         }t%          |j
        |j        d         t           j        |j        ¬¦  «        }t(          r]t          |j        d         ¦  «        t          |¦  «        t          |¦  «        f}t*                               |d¦  «        dz   t*          |<   t.          r·t           j                             ¦   «         r™t           j                             d¬¦  «        }t           j                             d¬¦  «        }|                     ¦   «          t9          |||||	¦  «        }|                     ¦   «          t:                               ||f¦  «         �n…t9          |||||	¦  «        }�np|                     d|¦  «        }|                     ¦   «         s|                     ¦   «         }t(          r]t          |j        d         ¦  «        t          |¦  «        t          |¦  «        f}t>                               |d¦  «        dz   t>          |<   t.          rµt           j                             ¦   «         r—t           j                             d¬¦  «        }t           j                             d¬¦  «        }|                     ¦   «          tA          ||||	¦  «        }|                     ¦   «          t:                               ||f¦  «         ntA          ||||	¦  «        }|                     |d d…         |fz   ¦  «        }tC          ||¦  «        S )	NrÛ   rl   r   z+QBytes input must be int8 for injected path)rc   r   Trr  )"rm   rN   r¼   rp  r}   r   ro   rÁ   r½   rÃ   rt   rc   rý   rq   r~   r   r   rS  r¾   r   rt  rW   r3   ru  rÚ   r  rv  rw  rQ  rX   rÏ   rV   rO  re   )r   r€   r�   r`   rg  r…   r†   r  r  r5  Úinput_is_qbytesr  r  rÉ   ry  rz  r{  rx  r=  s                      r    Ú_int8_linear_forward_tritonr  ®  s¯  € Ø×Ò˜% Ñ'Ô'Ð'ÝÐÝÐ;Ñ<Ô<Ð<ÝÑÔÐà”+€KÝ�k "”oÑ&Ô&€KÝ�u”{ 1”~Ñ&Ô&€LØŒ[€FØ×ÒÑ!Ô!ð %Ø×"Ò"Ñ$Ô$ˆÝ# E¤L°,ÀÄÑNÔN€GÝ(¨°Ñ6Ô6€LÝ'¨Ñ.Ô.€Oàñ "VØ”×$Ò$ R¨Ñ5Ô5ˆØŒ<�5œ:Ò%Ð%ÝÐLÑMÔMÐMØ×#Ò#Ñ%Ô%ð 	)Ø×&Ò&Ñ(Ô(ˆFÝ'¨¬°f´lÀ1´oÅuÄ}Ð]cÔ]jÐkÑkÔkˆÝð 	MÝ�v”| A”Ñ'Ô'­¨[Ñ)9Ô)9½3¸|Ñ;LÔ;LÐMˆCÝ(<×(@Ò(@ÀÀaÑ(HÔ(HÈ1Ñ(LÕ  Ñ%Ýð 	Z¥¤
× 7Ò 7Ñ 9Ô 9ð 	ZÝ”J×$Ò$°4Ð$Ñ8Ô8ˆEÝ”*×"Ò"°Ð"Ñ6Ô6ˆCØ�LŠL‰NŒNˆNÝ)¨&°&¸'À7ÈLÑYÔYˆFØ�JŠJ‰LŒLˆLÝ ×'Ò'¨°¨Ñ5Ô5Ð5Ñ5å)¨&°&¸'À7ÈLÑYÔYˆF‰Fà�}Š}˜R Ñ-Ô-ˆØ×!Ò!Ñ#Ô#ð 	%Ø—?’?Ñ$Ô$ˆDÝð 	KÝ�t”z !”}Ñ%Ô%¥s¨;Ñ'7Ô'7½¸\Ñ9JÔ9JÐKˆCÝ':×'>Ò'>¸sÀAÑ'FÔ'FÈÑ'JÕ Ñ$Ýð 	V¥¤
× 7Ò 7Ñ 9Ô 9ð 	VÝ”J×$Ò$°4Ð$Ñ8Ô8ˆEÝ”*×"Ò"°Ð"Ñ6Ô6ˆCØ�LŠL‰NŒNˆNÝ0°°v¸wÈÑUÔUˆFØ�JŠJ‰LŒLˆLÝ ×'Ò'¨°¨Ñ5Ô5Ð5Ð5å0°°v¸wÈÑUÔUˆFà
�.Š.˜ S b SÔ)¨\¨OÑ;Ñ
<Ô
<€CÝ)¨#¨tÑ4Ô4Ð4r"   c                ó°  ‡‡— t           j        rst          d¬¦  «         | €t          } | €t	          ¦   «         \  } }| €dS | at          ¦   «          t          t          d¦  «        at          ¦   «          t          ¦   «          dS 	 ddlm} n+# t          $ r}t          d|› d�¦  «         Y d }~dS d }~ww xY w	 ddlm} n+# t          $ r}t          d	|› d�¦  «         Y d }~dS d }~ww xY w| €t	          ¦   «         \  } }| €t#          ¦   «          dS t#          ¦   «          t          ¦   «          | at          ¦   «          t          t          d¦  «        at          ¦   «          t          ¦   «          |j        j        Š|j        j        Šdˆfd
„	}ˆfd„}t+          |¦  «        |j        _        ||j        _        dt           _        ‰t           _        ‰t           _        dS )NFr\   r   TrŠ   z%cannot import optimum.quanto qbytes (r   ©Úoffloadzcannot import mmgp.offload (c                ó  •— t          |¦  «        t          j        u ot|j        om|j        t          j        t          j        t          j        fv oCt          d uo:t          |t          ¦  «        o%|j
        j        t          j        k    o|j
        j        }|r/t          |¦  «        r ‰| |||¦  «        S t          | |||¦  «        S t          ||¦  «        rt          |¦  «        r ‰| |||¦  «        S t          | |||¦  «        S r9   )rp   r   rú   r|   r   r&   r   r   r™   r¬   ro   rS  rm  r|  rT  r  )r   r€   r�   r`   Údense_hot_pathr   s        €r    r�   z*enable_quanto_int8_kernel.<locals>.forward  s  ø€ å�‰KŒK�5œ<Ð'ð $Ø”ð$à”¥¤µ´½u¼}ÐMÐMð$õ #¨$Ð.ð$õ ˜5Õ"4Ñ5Ô5ð	$ð
 ”Ô!¥U¤ZÒ/ð$ð ”Ô#ð 	ð ð 	SÝ)¨%Ñ0Ô0ð =Ø#�| C¨°°tÑ<Ô<Ð<Ý9¸#¸uÀeÈTÑRÔRÐRÝ  uÑ-Ô-ð 	9Õ1KÈEÑ1RÔ1Rð 	9Ø�<  U¨E°4Ñ8Ô8Ð8Ý*¨3°°u¸dÑCÔCÐCr"   c                ó\   •— t          | |¦  «        s ‰| |¦  «        S t          | |¦  «        S r9   )rZ  rf  )Úselfr€   r   s     €r    Úembedding_forwardz4enable_quanto_int8_kernel.<locals>.embedding_forward$  s8   ø€ Ý)¨$°Ñ6Ô6ð 	7Ø)Ð)¨$°Ñ6Ô6Ð6Ý& t¨UÑ3Ô3Ð3r"   r9   )Ú_PATCH_STATEr   r]   rN   r  r©   r;   Ú_ENV_NATIVE_FALLBACK_MAX_Mr[   r�   r4  rŒ   r‹   r:   rE   Úmmgpr‚  r”   rŽ   r�   Ú
QEmbeddingr‘   r   r   )	Ú
triton_modÚ_r’   r  Ú_mmgp_offloadr�   r‡  r   r   s	          @@r    Úenable_quanto_int8_kernelr�  æ  s[  øø€ åÔð Ý°Ð7Ñ7Ô7Ð7ØÐÝ'ˆJØÐÝ1Ñ3Ô3‰MˆJ˜ØÐØ�5Ø#ˆÝ+Ñ-Ô-Ð-Ý!)Õ*DÀaÑ!HÔ!HÐÝ!Ñ#Ô#Ð#Ý Ñ"Ô"Ð"ØˆtðØCÐCÐCÐCÐCÐCÐCøÝð ð ð ÝÐ=°sÐ=Ð=Ð=Ñ>Ô>Ð>ØˆuˆuˆuˆuˆuøøøøðøøøðØ1Ð1Ð1Ð1Ð1Ð1Ð1øÝð ð ð ÝÐ4¨cÐ4Ð4Ð4Ñ5Ô5Ð5Øˆuˆuˆuˆuˆuøøøøðøøøð ÐÝ-Ñ/Ô/‰ˆ
�AØÐÝ+Ñ-Ô-Ð-ØˆuÝ'Ñ)Ô)Ð)ÝÑÔÐØ€NÝ'Ñ)Ô)Ð)Ý%Õ&@À!ÑDÔDÐÝÑÔÐÝÑÔÐàÔ5Ô=€LØ*Ô5Ô=ÐðDð Dð Dð Dð Dð Dð$4ð 4ð 4ð 4ð 4õ
 2>¸gÑ1FÔ1F€GÔ&Ô.Ø'8€MÔÔ$Ø…LÔØ ,…LÔØ*@…LÔ'Øˆ4s0   ÂB
 Â

B2ÂB-Â-B2Â6B= Â=
C%ÃC Ã C%c                ó„  — t           j        st          ¦   «          t          ¦   «          dS ddlm} t          t           j        ¦  «        |j        _	        ddl
m} t           j        �t           j        |j        _	        dt           _        d t           _        d t           _        t          ¦   «          | rt          dd¦  «         dS )NFr   rŠ   r�  zdisabled by User.T)rˆ  r   r”   r]   rŒ   r‹   r‘   r   rŽ   r�   rŠ  r‚  r   r‹  rK   )Únotify_disabledr’   rŽ  s      r    Údisable_quanto_int8_kernelr’  1  s½   € ÝÔð Ý+Ñ-Ô-Ð-ÝÑÔÐØˆuØ?Ð?Ð?Ð?Ð?Ð?å1=½lÔ>WÑ1XÔ1X€GÔ&Ô.Ø-Ð-Ð-Ð-Ð-Ð-ÝÔ*Ð6Ý+7Ô+NˆÔ Ô(Ø …LÔØ $…LÔØ*.…LÔ'ÝÑÔÐØð 5Ý˜Ð3Ñ4Ô4Ð4Øˆ4r"   Úverbose_levelúOptional[int]c                ó8  — da d }| �'	 t          | ¦  «        dk    }n# t          $ r d}Y nw xY wt          |¦  «         t	          t
          d¦  «        st          ¦   «          dS t          ¦   «         \  }}|€t          ¦   «          dS t          |dd ¦  «        }t          |¦  «        r ||¦  «         t          |¬¦  «        s t          ¦   «          t          dd¦  «         dS t	          t          d¦  «        at	          t          d¦  «        at          dd	¦  «         dS )
NFr   r(   Úset_autotune_debug)rŒ  zFfailed to patch Quanto linear forward; using non-injected Quanto path.rB   Tz‡Triton int8 kernels will be used for Quanto qint8 linear layers (QBytes int8 activations + fused dynamic int8 activation quantization).)rJ   r   r:   rG   r7   Ú_ENV_ENABLEr”   r  rn   Úcallabler�  rK   Ú_ENV_PROFILE_SHAPESrt  Ú_ENV_PROFILE_TIMEru  )r“  Úverbose_debugrŒ  ÚreasonÚset_triton_debugs        r    Úmaybe_enable_quanto_int8_kernelrž  E  sX  € ð ÐØ$(€MØÐ ð	"Ý Ñ.Ô.°!Ò3ˆMˆMøÝð 	"ð 	"ð 	"Ø!ˆMˆMˆMð	"øøøå�]Ñ#Ô#Ð#å•[ #Ñ&Ô&ð Ý+Ñ-Ô-Ð-àˆuå.Ñ0Ô0Ñ€J�ØÐÝ+Ñ-Ô-Ð-àˆuÝ˜zÐ+?ÀÑFÔFÐÝÐ Ñ!Ô!ð (ØÐ˜Ñ'Ô'Ð'å$°
Ð;Ñ;Ô;ð Ý+Ñ-Ô-Ð-Ý˜ÐgÑhÔhÐhØˆuå!Õ"5°sÑ;Ô;ÐÝ Õ!2°CÑ8Ô8ÐÝØðVñô ð ð ˆ4s   ˆ œ+ª+c                 ó,  — t           s	t          sd S t           r[t          rTt          t                               ¦   «         d„ d¬¦  «        d d…         } t          dt          | ¦  «        › d| › �¦  «         t           r[t          rTt          t                               ¦   «         d„ d¬¦  «        d d…         }t          dt          |¦  «        › d|› �¦  «         t          r¸d	}d
}t          rƒt          j
                             ¦   «         rt          j
                             ¦   «          t          D ]*\  }}|t          |                     |¦  «        ¦  «        z  }Œ+t          t          ¦  «        }nt          }t           }t          d|dz  d›d|› d�¦  «         d S d S )Nc                ó   — | d         S ©Nr   ro  ©Úkvs    r    ú<lambda>z&_print_shape_profile.<locals>.<lambda>u  s
   € ÀrÈ!Äu€ r"   T)rÉ   Úreverseé
   zFused shape profile (top z): c                ó   — | d         S r¡  ro  r¢  s    r    r¤  z&_print_shape_profile.<locals>.<lambda>x  s
   € ÈÈAÌ€ r"   zScaled shape profile (top r   r   zTriton kernel time profile: g     @�@z.3fzs over z calls)rt  ru  rV   ÚsortedÚitemsr@   rÐ   rW   rX   r   rÚ   r  ÚsynchronizeÚfloatÚelapsed_timerY   rZ   )Ú	top_fusedÚ
top_scaledÚtotal_msÚcallsry  rz  s         r    Ú_print_shape_profiler±  q  s¹  € Ýð Õ%5ð ØˆÝð IÕ0ð IÝÕ.×4Ò4Ñ6Ô6Ð<LÐ<LÐVZÐ[Ñ[Ô[Ð\_Ð]_Ð\_Ô`ˆ	ÝÐG­¨Y©¬ÐGÐG¸IÐGÐGÑHÔHÐHÝð LÕ1ð LÝÕ0×6Ò6Ñ8Ô8Ð>NÐ>NÐX\Ð]Ñ]Ô]Ð^aÐ_aÐ^aÔbˆ
ÝÐJ­#¨j©/¬/ÐJÐJ¸jÐJÐJÑKÔKÐKåð YØˆØˆÝð 	(ÝŒz×&Ò&Ñ(Ô(ð )Ý”
×&Ò&Ñ(Ô(Ð(Ý2ð ;ð ;‘
��sØ�E %×"4Ò"4°SÑ"9Ô"9Ñ:Ô:Ñ:��ÝÕ,Ñ-Ô-ˆEˆEå+ˆHÝ'ˆEÝÐW¨H°vÑ,=ÐWÐWÐWÈ%ÐWÐWÐWÑXÔXÐXÐXÐXðYð Yr"   )r   r   r   r   )r#   r   r$   r   r   r   )r(   )r)   r*   r+   r*   r   r,   )r)   r*   r+   r   r   r   )r<   r*   r   r=   r9   )r   r   r   r=   )r   r,   rH   r*   r   r=   )T)rL   r,   r   r=   )r^   r_   r`   ra   r   r_   )r   r,   )r   r=   )rv   r_   r   r,   )r±   r_   r   r_   )
r±   r_   r¶   r   r   r   rc   r·   r   r_   )r±   r_   r†   r   rc   r¿   r   r_   )rÄ   rÅ   rÆ   rÇ   rÈ   r   rÉ   rÊ   rË   rÌ   r   rÌ   )rÔ   )rÕ   r   rÖ   r   r×   r   rc   r¿   rØ   r*   r   rÌ   )
rÕ   r   rÖ   r   r×   r   rc   r¿   r   rÌ   )rv   rô   r   r,   )r€   r_   r�   r_   r   r   )r   rþ   )r  r*   r  r  r   r=   )
r  r_   r  r_   r  r_   r5  r   r   r_   )r  r_   r  r_   r  r_   r  r_   r5  r   r   r_   )r€   r_   r�   r_   r   r,   )r€   r_   r   r,   )r€   r_   r   r_   )rg  rh  r   r   )r€   r_   r�   r_   r`   ra   )F)r“  r”  r   r,   )fÚ
__future__r   r£   r1   ÚatexitÚtypesr   Útypingr   r   r   rr   r   Útorch._subclasses.fake_tensorr   r÷   r:   r—  rC   r‰  r™  rš  ÚFUSED_CONVROT_ENABLEDr¥   rI  rJ   rN   rO   rP   rQ   rt  rV   rW   ru  rX   rY   rZ   r   Ú__annotations__rˆ  r�   r-  r/  r0  rß   rR   rS   rì   rT   rU   r˜   r™   r[   r!   r&   r'   r7   r;   r@   rE   rG   rK   r]   re   rˆ   r”   r�   r©   rq   r°   rµ   r¾   rÃ   rÓ   ré   rí   ró   rø   rý   r  r)  r4  r>  r@  r'  rM  rO  rQ  rT  rZ  r`  rf  rk  rm  rp  r|  r  r�  r’  rž  r±  Úregisterro  r"   r    ú<module>rº     sü  ðà "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø 	€	€	€	Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à €€€à &Ð &Ð &Ð &Ð &Ð &ð!ØNÐNÐNÐNÐNÐNÐNøØð !ð !ð !Ø ÐÐÐð!øøøð *€Ø'€
ØGÐ Ø9Ð Ø5Ð ð Ð Ø€ØÐ àÐ Ø€Ø"Ð Ø#Ð ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ Ø"&€Ð &Ð &Ð &Ñ &àˆ u¸4ÐX\Ð]Ñ]Ô]€Ø#�O¨EÀÐEÑEÔEÐ Ø€Ø€Ø€	ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ðð ð ð ð 6;´^ð jð jð jð jð jðBð Bð Bð Bð Bð
ð ð ð ð#ð #ð #ð #ðð ð ð ðAð Að Að Að Að
:ð :ð :ð :ðð ð ð ð ð2ð ð ð ð8ð 8ð 8ð 8ðDð ð ð ðð ð ð ðXð Xð Xð Xð-ð -ð -ð -ð-ð -ð -ð -ðð ð ð ðPð Pð Pð Pð Pð
ð 
ð 
ð 
ðð ð ð ðuð uð uð uð uð$xð xð xð xð$ð ð ð ð ð ð ð ð
ð 
ð 
ð 
ðð ð ð ð %Uð %Uð %Uð %UðPð ð ð ð4"ð "ð "ð "ðJ)ð )ð )ð )ðXð ð ð ð(;ð ;ð ;ðqð qð qð qð	oð 	oð 	oð 	oð[ð [ð [ð [ð@ð @ð @ð @ð.Fð Fð Fð Fðð ð ð ð(ð ð ð ðCð Cð Cð Cð9ð 9ð 9ð 9ð!ð !ð !ð !ðH55ð 55ð 55ð 55ðpHð Hð Hð Hð HðVð ð ð ð ð((ð (ð (ð (ð (ðXYð Yð Yð Yð2 €„Ð$Ñ %Ô %Ð %Ð %Ð %s   ­4 ´>½>