+
    "Ý³j0  ã                  ó   € ^ RI Ht ^ RIHt ^ RIHt ^ RIt^RIHtH	t	H
t
HtHt RtRtR R	 ltR
 R ltR R ltR R lt]! ]]R$]RR RR ]]RRRRR7      tR R ltR R ltR tR R ltR%R  R! lltR&R" R# lltR# )'é    )Úannotations)ÚPath)ÚOptionalN)ÚTorchOpsJitExtensionÚ cuda_include_paths_with_fallbackÚdefault_jit_cflagsÚdefault_jit_cuda_cflagsÚdefault_torch_ops_build_rootÚgptqmodel_hadamard_opsÚgptqmodel_hadamardc               ó   € V ^8„  d   QhRR/# )é   Úreturnr   © )Úformats   "ÚY/home/luca/screen-checking/.venv/lib/python3.14/site-packages/gptqmodel/utils/hadamard.pyÚ__annotate__r      s   € ÷ Nñ N˜ñ Nó    c                 óz   € \        \        4      P                  4       P                  ^,          R,          R,          # )r   Úgptqmodel_extÚhadamard)r   Ú__file__ÚresolveÚparentsr   r   r   Ú_hadamard_rootr      s*   € Ü”‹>×!Ñ!Ó#×+Ñ+¨AÕ.°Õ@À:ÕMÐMr   c               ó   € V ^8„  d   QhRR/# ©r   r   z	list[str]r   )r   s   "r   r   r      s   € ÷ ñ ˜9ñ r   c                 ó^   € \        4       p \        V R ,          4      \        V R,          4      .# )zhadamard.cppzfast_hadamard_transform_cuda.cu)r   Ústr)Úroots    r   Ú_hadamard_sourcesr!      s/   € ÜÓ€DäˆD�>Õ!Ó"ÜˆDÐ4Õ4Ó5ðð r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r   &   s   € ÷ Eñ E ñ Er   c                 ó<   € \        \        \        4       4      .4      # ©N)r   r   r   r   r   r   Ú_hadamard_include_pathsr%   &   s   € Ü+¬S´Ó1AÓ-BÐ,CÓDÐDr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r   *   s   € ÷ 
ñ 
 Yñ 
r   c            
     ó*   € \        R R R RRR R R7      p V # )TF)Úenable_bf16Úinclude_lineinfoÚinclude_nvcc_threadsÚinclude_ptxas_optimizationsÚinclude_ptxas_verbosityÚinclude_fatbin_compressionÚinclude_diag_suppress)r	   )Úflagss    r   Ú_hadamard_extra_cuda_cflagsr0   *   s(   € Ü#ØØØ!Ø$)Ø %Ø#'Ø"ô€Eð €Lr   ÚGPTQMODEL_HADAMARD_BUILD_ROOTc                 ó   € \        R 4      # ©r   )r
   r   r   r   Ú<lambda>r4   C   s
   € Ô;¸JÔGr   zFast Hadamard transformc                 ó   € \        R R7      # )T)r(   )r   r   r   r   r4   r4   E   s
   € Ô+¸Õ=r   Ú GPTQMODEL_HADAMARD_FORCE_REBUILDÚGPTQMODEL_EXT_VERBOSETF)ÚnameÚ	namespaceÚrequired_opsÚsourcesÚbuild_root_envÚdefault_build_rootÚdisplay_nameÚextra_cflagsÚextra_cuda_cflagsÚextra_include_pathsÚforce_rebuild_envÚverbose_envÚrequires_cudaÚpython_abi_dependentc               ó   € V ^8„  d   QhRR/# ©r   r   Úboolr   )r   s   "r   r   r   O   s   € ÷ %ñ %˜Dñ %r   c                 ó>   € \         P                  P                  4       # r$   )ÚtorchÚcudaÚis_availabler   r   r   Úhadamard_supportedrM   O   s   € Ü�:‰:×"Ñ"Ó$Ð$r   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   S   s   € ÷ >ñ > ñ >r   c                 óv   € \         P                  P                  4       '       g   R # \        P	                  4       # )z&Fast Hadamard transform requires CUDA.)rJ   rK   rL   Ú_HADAMARD_TORCH_OPS_EXTENSIONÚlast_error_messager   r   r   Úhadamard_runtime_errorrR   S   s'   € Ü�:‰:×"Ñ"×$Ò$Ù7Ü(×;Ñ;Ó=Ð=r   c                 ó   € ^ RI Hp  V # )r   )Ú	extension)Ú	gptqmodelrT   )Úextension_apis    r   Ú_extension_apirW   Y   s   € Ý4àÐr   c               ó   € V ^8„  d   QhRR/# rG   r   )r   s   "r   r   r   _   s   € ÷ 5ñ 5˜Dñ 5r   c                 óX   € \        4       '       g   R # \        4       P                  R4      # )Fr   )rM   rW   rL   r   r   r   Úhadamard_availablerZ   _   s"   € Ü×ÒÙÜÓ×(Ñ(¨Ó4Ð4r   c               ó   € V ^8„  d   QhRR/# )r   Úop_namer   r   )r   s   "r   r   r   e   s   € ÷ 4ñ 4˜ñ 4r   c                ó6   € \        4       P                  R V 4      # r3   )rW   Úop)r\   s   &r   Úhadamard_opr_   e   s   € ÜÓ×Ñ˜z¨7Ó3Ð3r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úxztorch.TensorÚscalezOptional[float]r   r   )r   s   "r   r   r   i   s!   € ÷ ñ ˜,ð ¨ð È,ñ r   c                óH   € Vf   Rp\        R4      pV! V \        V4      4      # )a  Apply the fast Hadamard transform to the last dimension of `x`.

Args:
    x: Tensor of shape (..., dim) on CUDA with dtype float16, bfloat16, or float32.
    scale: Scalar multiplier applied to the result. Defaults to 1.0.

Returns:
    Tensor of the same shape and dtype as `x`.
g      ð?Úfast_hadamard_transform)r_   Úfloat)ra   rb   r^   s   && r   Úhadamard_transformrf   i   s*   € ð ‚}ØˆÜ	Ð.Ó	/€BÙˆa”�u“ÓÐr   )rd   Úfast_hadamard_transform_12NÚfast_hadamard_transform_20NÚfast_hadamard_transform_28NÚfast_hadamard_transform_40N)rd   r$   )Ú
__future__r   Úpathlibr   Útypingr   rJ   Úcppr   r   r   r	   r
   Ú_HADAMARD_OPS_NAMEÚ_HADAMARD_NAMESPACEr   r!   r%   r0   rP   rM   rR   rW   rZ   r_   rf   r   r   r   Ú<module>rq      sŸ   ðõ #å Ý ã ÷õ ð .Ð Ø*Ð õNõõEõ
ñ !5Ø	Ø!ðð Ø2ÙGØ*Ù=Ø1Ø/Ø8Ø'ØØô)!Ð õ0%õ>òõ5÷4÷ñ r   