§
    �ŠtjG  ã                  óx  — d dl mZ d dlmZ d dlmZ d dlmc mZ d dl	m
Z
 d dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZ d d	lm Z  erd d
l!m"Z" d dlm#Z#  ed¬¦  «         G d„ d¦  «        ¦   «         Z$ ed¬¦  «         G d„ d¦  «        ¦   «         Z%d.d„Z&d/d„Z' ed¬¦  «         G d„ d¦  «        ¦   «         Z( e(d dej)        ¬¦  «         e(ddej*        ¬¦  «        gZ+d0d&„Z,ed1d'„¦   «         Z- ed¬¦  «         G d(„ d)¦  «        ¦   «         Z.ed1d*„¦   «         Z/d2d,„Z0ed1d-„¦   «         Z1dS )3é    )Úannotations)Ú	dataclass)ÚTYPE_CHECKINGN)Ú	translate)	Ú	BaseCTypeÚBindingÚCTypeÚExprÚ
NamedCTypeÚopmath_tÚscalar_tÚStructuredImplSignatureÚVectorizedCType)Úwith_native_function)ÚArgumentÚBaseTyÚBaseTypeÚDispatchKeyÚNativeFunctionsGroupÚ
ScalarTypeÚUfuncKey)Ú
OrderedSet)ÚSequence)ÚUfunctorBindingsT)Úfrozenc                  ó^   — e Zd ZU ded<   ded<   ded<   dd	„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dS )ÚUfunctorSignaturer   Úgz
int | NoneÚscalar_tensor_idxÚstrÚnameÚreturnr   c                óN   — t          j        | j        | j        t          ¬¦  «        S )N)r   r   )ÚufuncÚufunctor_argumentsr   r   r   ©Úselfs    úQ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torchgen/dest/ufunc.pyÚ	argumentszUfunctorSignature.argumentsI   s(   € ÝÔ'ØŒF dÔ&<Åxð
ñ 
ô 
ð 	
ó    úlist[Binding]c                óH   — d„ |                       ¦   «         j        D ¦   «         S )Nc                óH   — g | ]}|                      |j        › d �¦  «        ‘Œ S )Ú_)Úrenamer!   ©Ú.0Úbs     r(   ú
<listcomp>z,UfunctorSignature.fields.<locals>.<listcomp>P   s,   € ÐFÐFÐF¨1�—’˜AœF˜˜˜Ñ&Ô&ÐFÐFÐFr*   )r)   Úctorr&   s    r(   ÚfieldszUfunctorSignature.fieldsN   s#   € àFÐF°·²Ñ0@Ô0@Ô0EÐFÑFÔFÐFr*   r	   c                ó*   — t          t          ¦  «        S ©N)r   r   r&   s    r(   Úreturns_typezUfunctorSignature.returns_typeR   s   € õ �Ñ"Ô"Ð"r*   c                ód   — d                      d„ |                      ¦   «         D ¦   «         ¦  «        S )Nú
c              3  ó:   K  — | ]}|j         › d |j        › d�V — ŒdS )ú ú;N)Útyper!   )r1   Úfs     r(   ú	<genexpr>z0UfunctorSignature.decl_fields.<locals>.<genexpr>X   s7   è è € ÐFÐF°1˜AœFÐ.Ð. Q¤VÐ.Ð.Ð.ÐFÐFÐFÐFÐFÐFr*   )Újoinr5   r&   s    r(   Údecl_fieldszUfunctorSignature.decl_fieldsW   s+   € Ø�yŠyÐFÐF¸¿º¹¼ÐFÑFÔFÑFÔFÐFr*   c                óú   — d                      d„ |                      ¦   «         j        D ¦   «         ¦  «        }d                      d„ |                      ¦   «         j        D ¦   «         ¦  «        }| j        › d|› d|› d�S )Nú, c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r7   ©Údecl©r1   Úas     r(   r@   z5UfunctorSignature.inline_defn_ctor.<locals>.<genexpr>[   s*   è è € ÐEÐE¨!˜QŸVšV™XœXÐEÐEÐEÐEÐEÐEr*   c              3  ó:   K  — | ]}|j         › d |j         › d�V — ŒdS )z_(ú)N©r!   rH   s     r(   r@   z5UfunctorSignature.inline_defn_ctor.<locals>.<genexpr>^   s7   è è € ÐSÐS¸ ¤Ð3Ð3¨!¬&Ð3Ð3Ð3ÐSÐSÐSÐSÐSÐSr*   ú(z) : z {})rA   r)   r4   r!   )r'   Úargs_strÚinit_strs      r(   Úinline_defn_ctorz"UfunctorSignature.inline_defn_ctorZ   s   € Ø—9’9ÐEÐE¨t¯~ª~Ñ/?Ô/?Ô/DÐEÑEÔEÑEÔEˆð —9’9ÐSÐS¸T¿^º^Ñ=MÔ=MÔ=RÐSÑSÔSÑSÔSˆØ”)Ð;Ð;˜hÐ;Ð;¨HÐ;Ð;Ð;Ð;r*   c                óÆ   — d                      d„ |                      ¦   «         j        D ¦   «         ¦  «        }|                      ¦   «                              ¦   «         › d|› d�S )NrD   c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r7   rF   rH   s     r(   r@   z/UfunctorSignature.decl_apply.<locals>.<genexpr>b   s*   è è € ÐFÐF¨!˜QŸVšV™XœXÐFÐFÐFÐFÐFÐFr*   z operator()(z) const)rA   r)   Úapplyr8   Úcpp_type)r'   rN   s     r(   Ú
decl_applyzUfunctorSignature.decl_applya   s^   € Ø—9’9ÐFÐF¨t¯~ª~Ñ/?Ô/?Ô/EÐFÑFÔFÑFÔFˆØ×#Ò#Ñ%Ô%×.Ò.Ñ0Ô0ÐOÐO¸hÐOÐOÐOÐOr*   N)r"   r   ©r"   r+   )r"   r	   ©r"   r    )
Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r)   r5   r8   rB   rP   rU   © r*   r(   r   r   C   s½   € € € € € € àÐÐÑØ!Ð!Ð!Ñ!Ø€I€I�Ið
ð 
ð 
ð 
ð
Gð Gð Gð Gð#ð #ð #ð #ð
Gð Gð Gð Gð<ð <ð <ð <ðPð Pð Pð Pð Pð Pr*   r   c                  ó>   — e Zd ZU ded<   ded<   ded<   dd	„Zdd„ZdS )ÚUfuncSignaturer   r   r    r!   r	   Ú	compute_tr"   r+   c                óB   — t          j        | j        | j        ¬¦  «        S )N)r_   )r$   Úufunc_argumentsr   r_   r&   s    r(   r)   zUfuncSignature.argumentsl   s   € ÝÔ$ T¤V°t´~ÐFÑFÔFÐFr*   ÚctxúSequence[Binding | Expr]c           
     ó–   — | j         › dd                     d„ t          ||                      ¦   «         ¦  «        D ¦   «         ¦  «        › d�S )NrM   rD   c              3  ó$   K  — | ]}|j         V — Œd S r7   ©ÚexprrH   s     r(   r@   z&UfuncSignature.call.<locals>.<genexpr>p   s$   è è € Ð'YÐ'Y°1¨¬Ð'YÐ'YÐ'YÐ'YÐ'YÐ'Yr*   rK   ©r!   rA   r   r)   ©r'   rb   s     r(   ÚcallzUfuncSignature.callo   sJ   € Ø”)Ð\Ð\˜dŸišiÐ'YÐ'Y½	À#ÀtÇ~Â~ÑGWÔGWÑ8XÔ8XÐ'YÑ'YÔ'YÑYÔYÐ\Ð\Ð\Ð\r*   NrV   )rb   rc   r"   r    )rX   rY   rZ   r[   r)   rj   r\   r*   r(   r^   r^   f   si   € € € € € € àÐÐÑØ€I€I�IØÐÐÑðGð Gð Gð Gð]ð ]ð ]ð ]ð ]ð ]r*   r^   r   r   r"   Úboolc                óh   — t          d„ | j        j        j        j        D ¦   «         ¦  «        }|dk    S )Nc              3  óL   K  — | ]}|j                              ¦   «         ¯d V — Œ dS )é   N)r>   Úis_tensor_likerH   s     r(   r@   z<eligible_for_binary_scalar_specialization.<locals>.<genexpr>†   sI   è è € ð ð Ø¸q¼v×?TÒ?TÑ?VÔ?VðØ	ðð ð ð ð ð r*   é   )ÚsumÚ
functionalÚfuncr)   Úflat_non_out)r   Únum_tensorss     r(   Ú)eligible_for_binary_scalar_specializationrv   …   sE   € Ýð ð Ø”<Ô$Ô.Ô;ðñ ô ñ ô €Kð ˜!ÒÐr*   ú?tuple[dict[ScalarType, dict[UfuncKey, UfunctorSignature]], str]c                ó<  — i }g }| j         j        }t          j        dt          j        dt          j        d i}t          | ¦  «        r$t          j        t          j        t          j        g}n?t          j        g}t          j        t          j        fD ]}||v rt          d|› d�¦  «        ‚Œ|D �]Ú}||v rMt          | ||         ||         j	        ¬¦  «        }||         j
        D ]}||                     |i ¦  «        |<   ŒŒTd }	t          ¦   «         }
t          j        t          j        fD ]G}||vrŒ|	€||         j	        }	n |	||         j	        k    rt          d¦  «        ‚|
||         j
        z  }
ŒH|	€t          d¦  «        ‚|› d|	› �}t          | ||         |¬¦  «        }|
D ]}||                     |i ¦  «        |<   Œt          | d	|	› �t!          t"          ¦  «        ¬
¦  «        }|                     ¦   «         |                     ¦   «         j        z   }|                     d|j	        › d|                     ¦   «         › d|                     ¦   «         › d|                     ¦   «         › d|                     |¦  «        › d�¦  «         �ŒÜ|d                     |¦  «        fS )Nrn   r   zcannot use z on non-binary function)r   r!   z0ScalarOnly and Generic must have same ufunc namezufunc_name must be non-Noner.   úufunc::©r!   r_   z%
template <typename scalar_t>
struct z3 {
  using opmath_t = at::opmath_type<scalar_t>;
  z
  z
  __device__ z {
    return z	;
  }
};
r:   )ÚoutÚufunc_inner_loopr   ÚCUDAFunctorOnSelfÚCUDAFunctorOnOtherÚCUDAFunctorrv   ÚAssertionErrorr   r!   Úsupported_dtypesÚ
setdefaultr   Ú
ScalarOnlyÚGenericr^   r   r   r5   r)   rS   ÚappendrB   rP   rU   rj   rA   )r   Úufunctor_sigsÚ	ufunctorsÚloopsÚscalar_tensor_idx_lookupÚkeysÚkÚufunctor_sigÚdtypeÚ
ufunc_namer�   Úlkr!   Ú	ufunc_sigÚ	apply_ctxs                  r(   Úcompute_ufunc_cuda_functorsr’   Œ   sE  € ð JL€MØ€IØŒEÔ"€EåÔ" AÝÔ# QÝÔ˜dð Ðõ
 1°Ñ3Ô3ð 
OåÔ&ÝÔ'ÝÔ ð
ˆˆõ Ô$Ð%ˆÝÔ,­hÔ.IÐJð 	Oð 	OˆAØ�EˆzˆzÝ$Ð%M°1Ð%MÐ%MÐ%MÑNÔNÐNð àð :
ñ :
ˆð �ˆ:ˆ:Ý,ØÐ%=¸aÔ%@ÀuÈQÄxÄ}ðñ ô ˆLð ˜qœÔ2ð Fð F�Ø9E�×(Ò(¨°Ñ3Ô3°AÑ6Ð6Øð ˆ
Ý3=±<´<ÐÝÔ&­Ô(8Ð9ð 	;ð 	;ˆBØ˜ˆˆØØÐ!Ø" 2œYœ^�
�
ð   r¤¤Ò/Ð/Ý(ØJñô ð ð   b¤	Ô :Ñ:ÐÐØÐÝ Ð!>Ñ?Ô?Ð?àÐ"Ð"�jÐ"Ð"ˆÝ(ØÐ!9¸!Ô!<À4ð
ñ 
ô 
ˆð &ð 	Bð 	BˆEØ5AˆM×$Ò$ U¨BÑ/Ô/°Ñ2Ð2å"ØÐ*˜jÐ*Ð*µiÅÑ6IÔ6Ið
ñ 
ô 
ˆ	ð !×'Ò'Ñ)Ô)¨L×,BÒ,BÑ,DÔ,DÔ,JÑJˆ	Ø×Òð
àÔð
ð 
ð ×ÒÑÔð	
ð 
ð
 × Ò Ñ"Ô"ð
ð 
ð ×%Ò%Ñ'Ô'ð
ð 
ð �NŠN˜9Ñ%Ô%ð
ð 
ð 
ñ	
ô 	
ð 	
ñ 	
ð ˜$Ÿ)š) IÑ.Ô.Ð.Ð.r*   c                  ó.   — e Zd ZU ded<   ded<   ded<   dS )Ú BinaryScalarSpecializationConfigÚintÚ
scalar_idxr    Úctor_tensorr   Ú	ufunc_keyN)rX   rY   rZ   r[   r\   r*   r(   r”   r”   â   s3   € € € € € € à€O€O�OØÐÐÑØÐÐÑÐÐr*   r”   r'   )r–   r—   r˜   rn   Úotherr�   r   Úinner_loopsú!dict[UfuncKey, UfunctorSignature]Ú
parent_ctxúSequence[Binding]r    c                ó¦  — d}|dz  }t           D ]Ú}|j        |vrŒ||j                 }|j        dz   }t          |¦  «        }|                     t          d|› d�t          |j        t          t          ¦  «        ¦  «        ¬¦  «        ¦  «         d 
                    d„ t          ||                     ¦   «         j        ¦  «        D ¦   «         ¦  «        }	|d	|› d
|j        › d|	› d|› d�	z  }ŒÛ|t          j                 }d 
                    d„ t          ||                     ¦   «         j        ¦  «        D ¦   «         ¦  «        }	|d|j        › d|	› d�z  }|S )Nz+using opmath_t = at::opmath_type<scalar_t>;zif (false) {}
rn   ziter.scalar_value<opmath_t>(rK   )rg   r>   rD   c              3  ó$   K  — | ]}|j         V — Œd S r7   rf   rH   s     r(   r@   z0compute_ufunc_cuda_dtype_body.<locals>.<genexpr>  s5   è è € ð ,
ð ,
ØˆAŒFð,
ð ,
ð ,
ð ,
ð ,
ð ,
r*   zelse if (iter.is_cpu_scalar(z)) {
  z<scalar_t> ufunctor(z);
  iter.remove_operand(z");
  gpu_kernel(iter, ufunctor);
}c              3  ó$   K  — | ]}|j         V — Œd S r7   rf   rH   s     r(   r@   z0compute_ufunc_cuda_dtype_body.<locals>.<genexpr>  s5   è è € ð (ð (ØˆŒð(ð (ð (ð (ð (ð (r*   z
else {
  gpu_kernel(iter, z<scalar_t>(z
));
}
    )Ú!BinaryScalarSpecializationConfigsr˜   r–   Úlistr…   r
   r   r—   r   r   rA   r   r)   r4   r!   r   r   )
r   r�   rš   rœ   ÚbodyÚconfigrŒ   r–   rb   Úufunctor_ctor_exprs_strs
             r(   Úcompute_ufunc_cuda_dtype_bodyr¦   ÷   sÙ  € ð 9€DØÐÑ€DÝ3ð ð ˆØÔ ;Ð.Ð.ØØ" 6Ô#3Ô4ˆØÔ&¨Ñ*ˆ
õ %)¨Ñ$4Ô$4ˆØ�
Š
ÝØA°JÐAÐAÐAÝ Ô 2µI½hÑ4GÔ4GÑHÔHðñ ô ñ	
ô 	
ð 	
ð #'§)¢)ð ,
ð ,
Ý% c¨<×+AÒ+AÑ+CÔ+CÔ+HÑIÔIð,
ñ ,
ô ,
ñ #
ô #
Ðð 	ð Ø'ðð àÔðð à*Aðð ð "ðð ð ñ 	ˆˆð �xÔ3Ô4€LØ"Ÿišið (ð (Ý! *¨l×.DÒ.DÑ.FÔ.FÔ.KÑLÔLð(ñ (ô (ñ ô Ðð 	ð à Ô%ðð à2Iðð ð ñ €Dð
 €Kr*   c                ó¶  — t          | ¦  «        \  }}t          | t          j        | t          j        ¦  «        ¦  «        }g }|                     ¦   «         D ]C\  }}|                     d|› dt          | ||| 	                    ¦   «         ¦  «        › d�¦  «         ŒDd 
                    |¦  «        }t          | ¦  «        }d|› d|                     ¦   «         › d|                     ¦   «         › d|                     ¦   «         › d|j        › d|› d	|j        › d
|j        › d|                     ¦   «         › d|                     | 	                    ¦   «         ¦  «        › d�S )Nú"
AT_DISPATCH_CASE(at::ScalarType::ú,
  [&]() {
    ú
  }
)
r:   z

ú;
ú. {
  AT_DISPATCH_SWITCH(iter.common_dtype(), "ú",
    z
  );
}
REGISTER_DISPATCH(ú, &z)

ú {
  ú;
}
)r’   r   r$   Úkernel_namer   ÚCUDAÚitemsr…   r¦   r)   rA   ÚStubSignatureÚ	type_defnÚdispatch_declÚkernel_defnr!   ÚdefnÚdirect_call)	r   r†   r‡   ÚsigÚdtype_casesr�   Úinner_ufunc_sigsÚdtype_cases_strÚstub_sigs	            r(   Úcompute_ufunc_cudar¿   &  sÃ  € õ  ;¸1Ñ=Ô=Ñ€M�9õ " !¥UÔ%6°q½+Ô:JÑ%KÔ%KÑ
LÔ
L€CØ€KØ#0×#6Ò#6Ñ#8Ô#8ð 	
ð 	
ÑˆÐØ×ÒðØ"'ðð õ # 1 eÐ-=¸s¿}º}¹¼ÑOÔOðð ð ñ	
ô 	
ð 	
ð 	
ð —i’i Ñ,Ô,€Oå˜QÑÔ€HðØ
ðð ð 
×ÒÑÔðð ð 
×ÒÑÔð	ð ð 
×ÒÑÔðð ð -0¬Hðð ð ðð ð ”=ðð ð &.Ô%9ðð ð ‡‚�„ðð ð ×Ò˜Ÿš™œÑ(Ô(ðð ð ð r*   c                  ó¢   — e Zd ZU ded<   edd„¦   «         Zedd„¦   «         Zedd„¦   «         Zdd	„Zdd
„Z	dd„Z
dd„Zdd„Zdd„Zdd„Zdd„ZdS )r´   r   r   r"   r    c                óX   — t          | j        j        j        j        j        ¦  «        › d�S )NÚ_stub©r    r   rr   rs   r!   r&   s    r(   r!   zStubSignature.name[  s'   € å�d”fÔ'Ô,Ô1Ô6Ñ7Ô7Ð>Ð>Ð>Ð>r*   c                óX   — t          | j        j        j        j        j        ¦  «        › d�S )NÚ_kernelrÃ   r&   s    r(   r±   zStubSignature.kernel_name_  s'   € å�d”fÔ'Ô,Ô1Ô6Ñ7Ô7Ð@Ð@Ð@Ð@r*   c                óX   — t          | j        j        j        j        j        ¦  «        › d�S )NÚ_fnrÃ   r&   s    r(   Ú	type_namezStubSignature.type_namec  s'   € å�d”fÔ'Ô,Ô1Ô6Ñ7Ô7Ð<Ð<Ð<Ð<r*   r+   c                ó4   — t          j        | j        ¦  «        S r7   )r$   Ústub_argumentsr   r&   s    r(   r)   zStubSignature.argumentsg  s   € ÝÔ# D¤FÑ+Ô+Ð+r*   c                óp   — |                       ¦   «         }dd                     d„ |D ¦   «         ¦  «        › d�S )Nzvoid(*)(TensorIteratorBase&, rD   c              3  ó$   K  — | ]}|j         V — Œd S r7   )r>   rH   s     r(   r@   z%StubSignature.type.<locals>.<genexpr>l  s$   è è € Ð8RÐ8RÀA¸¼Ð8RÐ8RÐ8RÐ8RÐ8RÐ8Rr*   rK   )r)   rA   )r'   Úcpp_argss     r(   r>   zStubSignature.typej  s=   € Ø—>’>Ñ#Ô#ˆØU¨t¯yªyÐ8RÐ8RÈÐ8RÑ8RÔ8RÑ/RÔ/RÐUÐUÐUÐUr*   c                ó(   — d| j         › d| j        › d�S )NzDECLARE_DISPATCH(rD   rK   )rÈ   r!   r&   s    r(   r¶   zStubSignature.dispatch_decln  s   € ØA 4¤>ÐAÐA°T´YÐAÐAÐAÐAr*   c                ó   — d| j         › d�S )NzDEFINE_DISPATCH(rK   rL   r&   s    r(   Údispatch_defnzStubSignature.dispatch_defnq  s   € Ø. $¤)Ð.Ð.Ð.Ð.r*   c                ó|   — d| j         › dd                     d„ |                      ¦   «         D ¦   «         ¦  «        › d�S )Nzvoid z(TensorIteratorBase& iter, rD   c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r7   )r¸   rH   s     r(   r@   z,StubSignature.kernel_defn.<locals>.<genexpr>u  s+   è è € ÐMqÐMqÐ[\ÈaÏfÊfÉhÌhÐMqÐMqÐMqÐMqÐMqÐMqr*   rK   )r±   rA   r)   r&   s    r(   r·   zStubSignature.kernel_defnt  sF   € Øt�tÔ'ÐtÐtÀDÇIÂIÐMqÐMqÐ`d×`nÒ`nÑ`pÔ`pÐMqÑMqÔMqÑDqÔDqÐtÐtÐtÐtr*   c                ó@   — d| j         › d|                      ¦   «         › �S )Nzusing ú = )rÈ   r>   r&   s    r(   rµ   zStubSignature.type_defnw  s"   € Ø8˜œÐ8Ð8¨4¯9ª9©;¬;Ð8Ð8Ð8r*   rb   r�   c           
     ó–   — | j         › dd                     d„ t          ||                      ¦   «         ¦  «        D ¦   «         ¦  «        › d�S )Nz(device_type(), *this, rD   c              3  ó$   K  — | ]}|j         V — Œd S r7   rf   rH   s     r(   r@   z%StubSignature.call.<locals>.<genexpr>|  s$   è è € Ð=oÐ=oÈ¸a¼fÐ=oÐ=oÐ=oÐ=oÐ=oÐ=or*   rK   rh   ri   s     r(   rj   zStubSignature.call{  sN   € Ø”)ÐrÐr°D·I²IÐ=oÐ=oÍiÐX[Ð]a×]kÒ]kÑ]mÔ]mÑNnÔNnÐ=oÑ=oÔ=oÑ4oÔ4oÐrÐrÐrÐrr*   c           
     ó–   — | j         › dd                     d„ t          ||                      ¦   «         ¦  «        D ¦   «         ¦  «        › d�S )Nz(*this, rD   c              3  ó$   K  — | ]}|j         V — Œd S r7   rf   rH   s     r(   r@   z,StubSignature.direct_call.<locals>.<genexpr>€  s$   è è € Ð5gÐ5gÀ°a´fÐ5gÐ5gÐ5gÐ5gÐ5gÐ5gr*   rK   )r±   rA   r   r)   ri   s     r(   r¹   zStubSignature.direct_call  sO   € ØÔ"ÐjÐj¨D¯IªIÐ5gÐ5gÅiÐPSÐUY×UcÒUcÑUeÔUeÑFfÔFfÐ5gÑ5gÔ5gÑ,gÔ,gÐjÐjÐjÐjr*   NrW   rV   )rb   r�   r"   r    )rX   rY   rZ   r[   Úpropertyr!   r±   rÈ   r)   r>   r¶   rÐ   r·   rµ   rj   r¹   r\   r*   r(   r´   r´   W  s:  € € € € € € àÐÐÑàð?ð ?ð ?ñ „Xð?ð ðAð Að Añ „XðAð ð=ð =ð =ñ „Xð=ð,ð ,ð ,ð ,ðVð Vð Vð VðBð Bð Bð Bð/ð /ð /ð /ðuð uð uð uð9ð 9ð 9ð 9ðsð sð sð sðkð kð kð kð kð kr*   r´   c                óx  — t          | ¦  «        }t          | t          j        | t          j        ¦  «        ¦  «        }d|                     ¦   «         › d|                     ¦   «         › d|                     ¦   «         › d| 	                    ¦   «         › d| 
                    |                     ¦   «         ¦  «        › d�S )Nr:   r«   z;

r¯   r°   )r´   r   r$   r±   r   ÚCPUrµ   r¶   rÐ   r¸   rj   r)   )r   r¾   rº   s      r(   Úcompute_ufunc_cpurÜ   ƒ  sÃ   € å˜QÑÔ€HÝ
! !¥UÔ%6°q½+¼/Ñ%JÔ%JÑ
KÔ
K€CðØ	×ÒÑÔðð à	×ÒÑÔðð ð 
×ÒÑÔðð ð
 ‡‚�„ðð ð ‡=‚=�—’‘”Ñ!Ô!ðð ð ð r*   údict[UfuncKey, UfuncSignature]c                ó°  ‡— t           j        |vr&t          |› d|                     ¦   «         › �¦  «        ‚|                     ¦   «         t           j        t           j        hk    s$t          d|                     ¦   «         › �¦  «        ‚|t           j                 }d }t           j        |v r|t           j                 }g }g Š|D ]¿}t          |j        t          ¦  «        r(|j        j        t          t          j        ¦  «        k    rŒD|                     d|j        › d|j        › d�¦  «         ‰                     t          d|j        › �t          |j        j        t#          t$          ¦  «        ¦  «        ¦  «        ¦  «         ŒÀ|�Ï|D ]Ì}t          |j        t          ¦  «        r(|j        j        t          t          j        ¦  «        k    rŒD|                     d|j        › d|j        › d	�¦  «         ‰                     t          d
|j        › �t          |j        j        t'          t#          t$          ¦  «        ¦  «        ¦  «        ¦  «        ¦  «         ŒÍg }g }	| j        j        j        j        D �]}
|
j                             ¦   «         sŒ|
j        t          t          j        ¦  «        k    rt          d|
j        › �¦  «        ‚|                     t5          |
j        t          |
j        t#          t$          ¦  «        ¦  «        |
¬¦  «        ¦  «         |�\|	                     t5          |
j        t          |
j        t'          t#          t$          ¦  «        ¦  «        ¦  «        |
¬¦  «        ¦  «         �Œdˆfd„}d                     |¦  «        }|�„d|› dd                     d„ |D ¦   «         ¦  «        › d|                      ||¦  «        ¦  «        › dd                     d„ |	D ¦   «         ¦  «        › d|                      ||	¦  «        ¦  «        › d�S d|› dd                     d„ |D ¦   «         ¦  «        › d|                      ||¦  «        ¦  «        › d�S )NrD   z<inner_loops keys must be subset of CPUScalar/CPUVector, got zauto _s_rÔ   z.to<scalar_t>();Ú_s_zauto _v_z$ = at::vec::Vectorized<scalar_t>(_s_z);Ú_v_zExpected Tensor type, got )r!   ÚnctypeÚargumentr2   r�   r"   úlist[Expr | Binding]c                ó`   •— g }|                      ‰¦  «         |                      | ¦  «         |S r7   )Úextend)r2   Úrrb   s     €r(   Úwith_ctxz.compute_ufunc_cpu_dtype_body.<locals>.with_ctxÝ  s+   ø€ Ø"$ˆØ	�Š�‰ŒˆØ	�Š�‰ŒˆØˆr*   r:   z
cpu_kernel_vec(iter,
  [=](c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r7   rF   r0   s     r(   r@   z/compute_ufunc_cpu_dtype_body.<locals>.<genexpr>è  ó*   è è € Ð3Ð3˜a�—’‘”Ð3Ð3Ð3Ð3Ð3Ð3r*   z) { return z; },
  [=](c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r7   rF   r0   s     r(   r@   z/compute_ufunc_cpu_dtype_body.<locals>.<genexpr>é  s*   è è € Ð0Ð0˜a�—’‘”Ð0Ð0Ð0Ð0Ð0Ð0r*   z; }
);
z
cpu_kernel(iter,
  [=](c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r7   rF   r0   s     r(   r@   z/compute_ufunc_cpu_dtype_body.<locals>.<genexpr>ð  ré   r*   )r2   r�   r"   rã   )r   Ú	CPUScalarr€   rŠ   Ú	CPUVectorÚ
isinstancerâ   r   r>   r   r   ÚScalarr…   r!   r
   r   rá   r   r   r   rr   rs   r)   rt   ro   ÚTensorr   rA   rj   )r   r�   rš   rœ   Úscalar_loopÚvec_loopr£   r2   Úscalar_bindingsÚvec_bindingsrI   rç   Úbody_strrb   s                @r(   Úcompute_ufunc_cpu_dtype_bodyrö   “  sÈ  ø€ õ Ô Ð,Ð,Ý Ð=Ð=¨×)9Ò)9Ñ);Ô);Ð=Ð=Ñ>Ô>Ð>Ø×ÒÑÔ¥(Ô"4µhÔ6HÐ!IÒIÐIÝØ_È;×K[ÒK[ÑK]ÔK]Ð_Ð_ñ
ô 
ð 	
ð �hÔ0Ô1€KØ€HÝÔ˜[Ð(Ð(Ø�xÔ1Ô2ˆð €DØ
€CØð Yð YˆÝ�a”j¥(Ñ+Ô+ð 	°´
´Å8ÝŒMñD
ô D
ò 1
ð 1
ð Ø�ŠÐB˜qœvÐBÐB¨!¬&ÐBÐBÐBÑCÔCÐCØ�
Š
•4˜˜aœf˜˜­
°1´8´=Å)ÍHÑBUÔBUÑ(VÔ(VÑWÔWÑXÔXÐXÐXØÐØð 	ð 	ˆAÝ˜!œ*¥hÑ/Ô/ð °A´J´OÅxÝ”ñHô Hò 5ð 5ð Ø�KŠKØQ˜1œ6ÐQÐQÀqÄvÐQÐQÐQñô ð ð �JŠJÝØ"˜!œ&�N�NÝ˜qœxœ}­o½iÍÑ>QÔ>QÑ.RÔ.RÑSÔSñô ñô ð ð ð €OØ€LØŒ\ÔÔ(Ô5ð ñ ˆØŒv×$Ò$Ñ&Ô&ð 	ØØŒ6•X�fœmÑ,Ô,Ò,Ð,Ý Ð!F¸a¼fÐ!FÐ!FÑGÔGÐGØ×ÒÝØ”VÝ! !¤&­)µHÑ*=Ô*=Ñ>Ô>Øðñ ô ñ	
ô 	
ð 	
ð ÐØ×ÒÝØœÝ% a¤f­o½iÍÑ>QÔ>QÑ.RÔ.RÑSÔSØðñ ô ñô ð ùðð ð ð ð ð ð �yŠy˜‰Œ€HØÐðØ	ðð ð ‡y‚yÐ3Ð3 ?Ð3Ñ3Ô3Ñ3Ô3ðð ð BM×AQÒAQÐRZÐRZÐ[jÑRkÔRkÑAlÔAlðð ð ‡y‚yÐ0Ð0 <Ð0Ñ0Ô0Ñ0Ô0ð	ð ð ?G¿mºmÈHÈHÐUaÑLbÔLbÑ>cÔ>cð	ð ð ð 	ðØ	ðð ð ‡y‚yÐ3Ð3 ?Ð3Ñ3Ô3Ñ3Ô3ðð ð BM×AQÒAQÐRZÐRZÐ[jÑRkÔRkÑAlÔAlðð ð ð 	r*   c                ól  — t          | ¦  «        }| j        j        }i }t          j        t          j        fD �]2}g }||v r|                     |¦  «         t          j        |v r-|t          j        u r|                     t          j        ¦  «         t          j        |v r|                     t          j        ¦  «         |D ]©}||         j	        D ]™}|t          j        u rt          t          ¦  «        }n7|t          j        u r"t          t          t          ¦  «        ¦  «        }nt          ‚|                     |i ¦  «        }	||	vr#t          | d||         j        › �|¬¦  «        |	|<   ŒšŒª�Œ4g }
|                     ¦   «         D ]C\  }}	|
                     d|› dt%          | ||	|                     ¦   «         ¦  «        › d�¦  «         ŒDd                     |
¦  «        }d|                     ¦   «         › d|j        › d	|› d
|                     ¦   «         › d|                     ¦   «         › d|j        › d|j        › d�S )Nry   rz   r¨   r©   rª   r:   z
namespace {

r¬   r­   z#
  );
}

} // anonymous namespace

r«   z
REGISTER_DISPATCH(r®   z)
)r´   r{   r|   r   rì   rí   r…   rƒ   r„   r�   r   r   r   r€   r‚   r^   r!   r³   rö   r)   rA   r·   rµ   r¶   r±   )r   r¾   rˆ   Ú
ufunc_sigsr‹   Úlksr�   r�   r_   r¼   r»   r½   s               r(   Úcompute_ufunc_cpu_kernelrú   õ  s°  € å˜QÑÔ€Hð ŒEÔ"€EØCE€JÝÔ ¥(Ô"4Ð5ð ñ ˆØˆà�ˆ:ˆ:Ø�JŠJ�q‰MŒMˆMÝÔ %Ð'Ð'¨AµÔ1CÐ,CÐ,CØ�JŠJ•xÔ*Ñ+Ô+Ð+ÝÔ˜uÐ$Ð$Ø�JŠJ•xÔ'Ñ(Ô(Ð(àð 	ð 	ˆBØ˜rœÔ3ð ð �à�Ô*Ð*Ð*Ý )­(Ñ 3Ô 3�I�IØ�(Ô,Ð,Ð,Ý /µ	½(Ñ0CÔ0CÑ DÔ D�I�Iå(Ð(Ø#-×#8Ò#8¸ÀÑ#CÔ#CÐ ØÐ,Ð,Ð,Ý*8ØÐ :¨%°¬)¬.Ð :Ð :Àið+ñ +ô +Ð$ QÑ'øðñ	ð  €KØ#-×#3Ò#3Ñ#5Ô#5ð 	
ð 	
ÑˆÐØ×ÒðØ"'ðð õ " ! UÐ,<¸h×>PÒ>PÑ>RÔ>RÑSÔSðð ð ñ	
ô 	
ð 	
ð 	
ð —i’i Ñ,Ô,€Oðð 
×ÒÑÔðð ð -5¬Mð	ð ð
 ðð ð 
×ÒÑÔðð ð 
×ÒÑÔðð ð ”=ðð ð &.Ô%9ðð ð ð r*   )r   r   r"   rk   )r   r   r"   rw   )
r   r   r�   r   rš   r›   rœ   r�   r"   r    )r   r   r"   r    )
r   r   r�   r   rš   rÝ   rœ   r�   r"   r    )2Ú
__future__r   Údataclassesr   Útypingr   Útorchgen.api.ufuncÚapir$   Útorchgen.api.translater   Útorchgen.api.typesr   r   r	   r
   r   r   r   r   r   Útorchgen.contextr   Útorchgen.modelr   r   r   r   r   r   r   Útorchgen.utilsr   Úcollections.abcr   r   r   r^   rv   r’   r”   r~   r}   r¡   r¦   r¿   r´   rÜ   rö   rú   r\   r*   r(   ú<module>r     sÀ  ðØ "Ð "Ð "Ð "Ð "Ð "à !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  à "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 2Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð &Ð %Ð %Ð %Ð %Ð %ð ð 4Ø(Ð(Ð(Ð(Ð(Ð(à3Ð3Ð3Ð3Ð3Ð3ð@ €�$ÐÑÔðPð Pð Pð Pð Pñ Pô Pñ ÔðPðD €�$ÐÑÔð	]ð 	]ð 	]ð 	]ð 	]ñ 	]ô 	]ñ Ôð	]ð<ð ð ð ðS/ð S/ð S/ð S/ðl €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð %Ð$ØØØÔ-ðñ ô ð
 %Ð$ØØØÔ,ðñ ô ð%Ð !ð,ð ,ð ,ð ,ð^ ð&ð &ð &ñ Ôð&ð` €�$ÐÑÔð(kð (kð (kð (kð (kñ (kô (kñ Ôð(kðV ðð ð ñ Ôðð_ð _ð _ð _ðD ð;ð ;ð ;ñ Ôð;ð ;ð ;r*   