+
    –°³jŠ   ã                   ó  € R t ^ RIt^ RIt^ RIHtHt ^ RIHt ^ RIH	t	 ^ RI
HtHtHt ^ RIHt ^ RIt^ RIt^ RIHt ^RIHt ^R	IHt ^R
IHt ^RIHtHt ^RIHtHtH t  ]! R4      t!]! R4      t"]PF                  PH                  t$]%]$]&,          ]R]3,          3,          t']R]3,          ]&,          t( ! R R]PR                  PT                  4      t+]	 ! R R4      4       t,],]-,          ]P\                  ,          t/ ! R R] 4      t0R R lt1R# )z?Utilities for lowering subgraphs used by higher order operatorsN)ÚCallableÚ	Generator)Úcontextmanager)Ú	dataclass)ÚAnyÚcastÚTypeVar)Ú	ParamSpec)Ú
OrderedSet)Úir)ÚSubgraphLoweringException)ÚGraphLowering)Ú
OpsHandlerÚSimpleCSEHandler)ÚopsÚVÚWrapperHandlerÚTÚ_P.c                   óè   a a€ ] tR t^t oRtRV3R lV 3R lllt]V3R lR l4       tV3R lR ltV3R lR	 lt	R
R/V3R lR llt
V3R lR ltV3R lV 3R lltV3R lR ltV3R ltRtVtV ;t# )ÚPointwiseSubgraphLoweringz„
Lowers a pointwise subgraph to a single set of buffers with a separate
lowering object. Errors if buffers are created unexpectedly
c          
      óŠ   <€ V ^8„  d   QhRS[ P                  P                  RS[RS[S[,          R,          RS[R,          RR/# )é   ÚgmÚroot_graph_loweringÚallowed_mutationsNÚadditional_loweringsÚreturn)ÚtorchÚfxÚGraphModuler   r
   Ú
OpOverloadÚLoweringDict)ÚformatÚ__classdict__s   "€Úb/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_inductor/subgraph_lowering.pyÚ__annotate__Ú&PointwiseSubgraphLowering.__annotate__.   sV   ø€ ÷ ñ á�H‰H× Ñ ðñ +ðñ &¡jÕ1°DÕ8ð	ñ
 +¨TÕ1ðð 
ñó    c                ó’   <€ \         SV `  V4       R V n        W n        W0n        W@n        R V n        \        4       V n        . V n	        R # ©N)
ÚsuperÚ__init__Úgraph_outputsÚ
root_graphr   r   Ú_current_opr
   Úmutated_buffersÚbuffers)Úselfr   r   r   r   Ú	__class__s   &&&&&€r%   r,   Ú"PointwiseSubgraphLowering.__init__.   sF   ø€ ô 	‰Ñ˜ÔØ!ˆÔØ-ŒØ!2ÔØ$8Ô!ØˆÔô  *›|ˆÔØˆŽr(   c                ó4   <€ V ^8„  d   QhRS[ RS[R,          /# )r   Úopr   )NNN)Ú
TargetTyper   )r#   r$   s   "€r%   r&   r'   A   s!   ø€ ÷ (ñ (™jð (©YÐ7GÕ-Hñ (r(   c              #  ó^   "  € V P                   pWn          Rx € W n         R#   Y n         i ; i5i)zQSet which op is being processed in call function to know if we can mutate buffersN)r/   )r2   r6   Úpreviouss   && r%   Ú_op_contextÚ%PointwiseSubgraphLowering._op_context@   s,   é € ð ×#Ñ#ˆØÔð	(Ûà'Öø˜xÕüs   ‚-–" š-¢*ª-c                ó    <€ V ^8„  d   QhRS[ /# )r   r   )Úbool)r#   r$   s   "€r%   r&   r'   J   s   ø€ ÷ 
ñ 
¡4ñ 
r(   c                ó`   € V P                   R J;'       d    V P                  V P                   9   # r*   )r   r/   )r2   s   &r%   Ú_approved_mutatorÚ+PointwiseSubgraphLowering._approved_mutatorJ   s3   € à×"Ñ"¨$Ð.÷ ;ð ;Ø× Ñ  D×$:Ñ$:Ñ:ð	
r(   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Únamer   N)Ústr)r#   r$   s   "€r%   r&   r'   P   s   ø€ ÷ ñ ©ð °ñ r(   c                óš   € V P                  4       '       d   V P                  P                  V4       R# \        R V P                   R24      h)z,Buffer mutation detected during lowering of z‰. Buffer mutations are only allowed in approved mutation ops. This is an error in the lowering of the subgraph, please file a bug report.N)r?   r0   Úaddr   r/   ©r2   rB   s   &&r%   Úmark_buffer_mutatedÚ-PointwiseSubgraphLowering.mark_buffer_mutatedP   sM   € Ø×!Ñ!×#Ò#Ø× Ñ ×$Ñ$ TÖ*ä+Ø>¸t×?OÑ?OÐ>Pð Q^ð ^óð r(   Úset_nameFc                ó@   <€ V ^8„  d   QhRS[ P                  RS[RS[/# )r   ÚbufferrI   r   )r   ÚBufferr=   rC   )r#   r$   s   "€r%   r&   r'   Z   s&   ø€ ÷ 	ñ 	¡b§i¡ið 	¹dð 	Ésñ 	r(   c               ó€   € V P                  4       '       d   V P                  P                  WR 7      pV# \        R4      h))rI   züBuffers cannot be created while lowering a pointwise subgraph. This could be for a good reason (e.g. you're calling an op we can't codegen as a pointwise op), but it could also be a bug. Please file a bug report if you think this should be supportable.)r?   r.   Úregister_bufferr   )r2   rK   rI   rB   s   &&$ r%   rN   Ú)PointwiseSubgraphLowering.register_bufferZ   s@   € Ø×!Ñ!×#Ò#Ø—?‘?×2Ñ2°6Ð2ÓMˆDØˆKä+ðpóð r(   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   rB   r   )rC   r   )r#   r$   s   "€r%   r&   r'   e   s   ø€ ÷ .ñ .¡ð .©ñ .r(   c                ó.   € \        V P                  V4      # r*   )Úgetattrr.   rF   s   &&r%   Ú__getattr__Ú%PointwiseSubgraphLowering.__getattr__e   s   € Ü�t—‘¨Ó-Ð-r(   c                óH   <€ V ^8„  d   QhRS[ RS[RS[S[S[3,          RS[/# )r   ÚtargetÚargsÚkwargsr   )r7   r   ÚdictrC   )r#   r$   s   "€r%   r&   r'   h   s;   ø€ ÷ 6ñ 6áð6ñ ð6ñ ‘S™#�X•ð	6ñ
 
ñ6r(   c                óL  <€ ^RI Hp V P                  V4      ;_uu_ 4        V\        P                  J dC   \        V^ ,          \        \        \        34      '       d   \        SV `)  WV4      uuRRR4       # V P                  ea   WP                  9   dQ   \        V\        4      '       g   \        R\        V4       24      hV P                  V,          ! V/ VB uuRRR4       # W9  d   \        V R24      hWA,          ! V/ VB uuRRR4       #   + '       g   i     R# ; i)é   )Ú	loweringsNz)expected target to be an OpOverload, got z. not supported in subgraph, (missing lowering))Úloweringr\   r:   ÚoperatorÚgetitemÚ
isinstanceÚlistÚtuplerY   r+   Úcall_functionr   r!   ÚAssertionErrorÚtyper   )r2   rV   rW   rX   r\   r3   s   &&&& €r%   rc   Ú'PointwiseSubgraphLowering.call_functionh   sû   ø€ õ 	(à×Ñ˜f×%Õ%Øœ×)Ñ)Ó)¬j¸¸a½Ä4ÌÔPTÐBU×.VÒ.VÜ‘wÑ,¨V¸6ÓB÷ &Ò%ð
 ×(Ñ(Ò4Ø×6Ñ6Ô6Ü% f¬j×9Ò9Ü,ØGÌÈVËÀ~ÐVóð ð  ×4Ñ4°VÖ<¸dÐMÀfÑM÷ &Ò%ð Ô&Ü/Ø�hÐLÐMóð ð Ö$ dÐ5¨fÑ5÷# &×%×%Ó%ús   ¡ADÁ8A#DÃ&!DÄD#	c                óV   <€ V ^8„  d   QhRS[ RS[S[,          RS[S[ S[3,          RR/# )r   rV   rW   rX   r   N)rC   rb   r   rY   )r#   r$   s   "€r%   r&   r'   ƒ   s5   ø€ ÷ %ñ %™Sð %©©c­
ð %¹DÁÁcÀ½Nð %Ètñ %r(   c                óp   € \        V4      ^8w  d   \        R\        V4       24      hV^ ,          V n        R# )r[   z%expected exactly one output arg, got N)Úlenrd   r-   )r2   rV   rW   rX   s   &&&&r%   ÚoutputÚ PointwiseSubgraphLowering.outputƒ   s0   € Üˆt‹9˜Œ>Ü Ð#HÌÈTËÈÐ!TÓUÐUØ! !�WˆÖr(   c                ó  <€ V ^8„  d   Qh/ S[ S[P                  ,          R,          ;R&   S[;R&   S[R,          ;R&   S[S[,          R,          ;R&   S[R,          ;R&   S[ S[P                  ,          ;R&   S[S[	,          ;R&   # )	r   Nr-   r.   r/   r   r   r1   r0   )
ra   r   ÚIRNoder   r7   r
   r!   r"   rL   rC   )r#   r$   s   "€r%   r&   r'      s�   ø‡ ‚ ñ ™Ÿ	™	•? TÕ)Ñ)ñ ñ Ññ ñ ˜dÕ"Ñ"ñ ñ "¡*Õ-°Õ4Ñ4ñ ñ '¨Õ-Ñ-ñ ñ ‘"—)‘)�_Ññ ñ  ¡•_Ñ$ò r(   )r/   r   r   r1   r-   r0   r.   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r,   r   r:   r?   rG   rN   rS   rc   rj   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r3   r$   s   @@r%   r   r      ss   ù‡ € ñ÷õ ð$ ÷(ó ð(÷
ð 
÷ð ð	ÀU÷ 	ò 	÷.ð .÷6ó 6÷6%ð %÷I … r(   r   c                   ó,   a € ] tR t^‰t o V 3R ltRtV tR# )ÚInputDescriptorc                óZ   <€ V ^8„  d   Qh/ S[ P                  ;R&   S[ P                  ;R&   # )r   ÚdtypeÚdevice)r   r{   r|   )r#   r$   s   "€r%   r&   ÚInputDescriptor.__annotate__‰   s%   ø‡ ‚ á�;‰;Ññ ñ �L‰LÑò r(   © N)rn   ro   rp   rq   rs   rt   ru   )r$   s   @r%   ry   ry   ‰   s   ø‡ ‡ „ r(   ry   c                   ób   a a€ ] tR t^’t oV3R lV 3R lltV3R lR ltV3R lR ltRtVtV ;t	# )ÚTracingOpsHandlerc                óR   <€ V ^8„  d   QhRS[ P                  P                  RS[RR/# )r   ÚtracerÚ
num_inputsr   N)r   r   ÚTracerÚint)r#   r$   s   "€r%   r&   ÚTracingOpsHandler.__annotate__“   s*   ø€ ÷ 
ñ 
™uŸx™xŸ™ð 
¹Cð 
ÀDñ 
r(   c           	     ó  <€ VP                  R RR/ 4      p\        SV `	  \        \        \
        ,          V4      4       Wn        \        V4       Uu. uF$  pV P                  P                  R RV 2R/ 4      NK&  	  upV n        R# u upi )Úplaceholderr   ÚinputNr~   )	Úcreate_proxyr+   r,   r   r   r   r‚   ÚrangeÚplaceholders)r2   r‚   rƒ   ÚparentÚir3   s   &&&  €r%   r,   ÚTracingOpsHandler.__init__“   s}   ø€ Ø×$Ñ$ ]°E¸2¸rÓBˆÜ‰Ñœœj¬�o¨vÓ6Ô7ØŒô ˜:Ô&ó
á&�ð �K‰K×$Ñ$ ]°e¸A¸3°KÀÀRÖHÙ&ñ
ˆÖùò 
s   Á*Bc                óN   <€ V ^8„  d   QhRS[ RS[P                  P                  /# )r   Úidxr   )r…   r   r   ÚProxy)r#   r$   s   "€r%   r&   r†   �   s#   ø€ ÷ &ñ &™sð &¡u§x¡x§~¡~ñ &r(   c                ó(   € V P                   V,          # r*   )rŒ   )r2   r‘   s   &&r%   rˆ   ÚTracingOpsHandler.placeholder�   s   € Ø× Ñ  Õ%Ð%r(   c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r   rW   r   N)rb   Úobject)r#   r$   s   "€r%   r&   r†       s   ø€ ÷ 
ñ 
™E¡&�Mð 
¨dñ 
r(   c                ó¦   a € S P                   P                  R R \        ;QJ d    . V 3R lV 4       F  NK  	  5M! V 3R lV 4       4      3/ 4       R# )rj   c              3   óZ   <"  € T F   pSP                   P                  V4      x € K"  	  R # 5ir*   )r‚   Ú
create_arg)Ú.0Úar2   s   & €r%   Ú	<genexpr>Ú+TracingOpsHandler.output.<locals>.<genexpr>¢   s#   øé € Ð&OÉ$ÀQ t§{¡{×'=Ñ'=¸a×'@Ð'@Ë$ùs   ƒ(+N)r‚   Úcreate_noderb   )r2   rW   s   f*r%   rj   ÚTracingOpsHandler.output    s;   ø€ Ø�‰×ÑØ�h§¤Ô&OÉ$Ó&O§¡Ô&OÉ$Ó&OÓ!OÐ QÐSUö	
r(   )rŒ   r‚   )
rn   ro   rp   rq   r,   rˆ   rj   rt   ru   rv   rw   s   @@r%   r€   r€   ’   s(   ù‡ € ÷
ó 
÷&ð &÷
÷ 
ð 
r(   r€   c                óˆ   € V ^8„  d   QhR\         P                  R\        \        ,          R\        \
        \        3,          /# )r   ÚsubgraphÚinputsr   )r   ÚSubgraphra   ÚSubgraphInputr   r   r   )r#   s   "r%   r&   r&   ¦   s;   € ÷ @ñ @Ü�k‰kð@Ü#'¬Õ#6ð@äŒb”#ˆgÕñ@r(   c                 óò  a€ R  R lp. p\        V4       F‰  w  rE\        V\        4      '       d^   VP                  \        P
                  P                  VP                  VP                  \        P                  ! W$R7      . R7      4       Kx  VP                  V4       K‹  	  V P                  p\        V\        P                  R7      p\        P                  ! V4      ;_uu_ 4        VP                   ! V!   RRR4       \"        P$                  P'                  4       p\"        P$                  P)                  VP*                  R7      Vn        \-        \/        V\1        V4      4      4      p	VP2                  f   \5        R4      h\        P6                  ! V	4      ;_uu_ 4        . p
VP2                   EFK  p\        V\        P8                  4      '       g   \5        \;        V4      4      hVP=                  4       . 8w  d   \5        RVP=                  4        24      h\        VP>                  \        P@                  4      '       g"   \5        R	\;        VP>                  4       24      h\        VP>                  P>                  \        P
                  4      '       g,   \5        R
\;        VP>                  P>                  4       24      hRpVP>                  P>                  PC                  V4      pV
P                  V4       EKN  	  \D        PF                  ! V
!   RRR4       \"        P$                  PI                  / VP                  4      oR V3R llpV#   + '       g   i     ELc; i  + '       g   i     LY; i)c                óˆ   € V ^8„  d   QhR\         R\         R\        P                  \        P                  ,          R,          /# )r   Úloop_idxÚ	input_idxr   N)r…   r   ÚExprÚ	TensorBox)r#   s   "r%   r&   Ú.lower_pointwise_subgraph.<locals>.__annotate__ª   s4   € ÷ *ñ *¤ð *´ð *¼¿¹Ä"Ç,Á,Õ8NÐQUÕ8Uñ *r(   c                 ó.   € \         P                  ! V4      # r*   )r   rˆ   )r§   r¨   s   &&r%   Úfake_inner_fnÚ/lower_pointwise_subgraph.<locals>.fake_inner_fnª   s   € Ü�Š˜yÓ)Ð)r(   )r¨   )r|   r{   Úinner_fnÚranges)r   N)Ú
tracer_clsz,expected pw_subgraph.graph_outputs to be setz)expected scalar output (empty size), got z.expected out_var.data to be a StorageBox, got z2expected out_var.data.data to be a Pointwise, got c                ód   € V ^8„  d   QhR\         P                  R\         P                  R\        /# )r   rW   rX   r   )r   rW   rX   r   )r#   s   "r%   r&   r«   ã   s.   € ÷ @ñ @œŸ™ð @¬2¯9©9ð @¼ñ @r(   c                  óB   <€ S! \         P                  ! 4       .V O5/ VB # r*   )r   Úget_ops_handler)rW   rX   Ú
lowered_gms   *,€r%   r¯   Ú*lower_pointwise_subgraph.<locals>.inner_fnã   s!   ø€ Ùœ!×+Ò+Ó-Ð?°Ò?¸Ñ?Ð?r(   r~   )%Ú	enumerater`   ry   Úappendr   Ú	PointwiseÚcreater|   r{   Ú	functoolsÚpartialÚgraph_moduler   r   ÚgraphÚset_graph_handlerÚrunr   r   r„   ÚGraphr3   r   r€   ri   r-   rd   Úset_ops_handlerrª   re   Úget_sizeÚdataÚ
StorageBoxr¯   r   rj   r    )r¡   r¢   r­   Úgraph_inputsrŽ   Údescr   Úpw_subgraphr‚   Ú	trace_opsÚ
output_irsÚout_varr‘   Úir_outr¯   rµ   s   &&             @r%   Úlower_pointwise_subgraphrÍ   ¦   s—  ø€ õ*ð €LÜ˜VÖ$‰ˆÜ�dœO×,Ò,Ø×ÑÜ—‘×#Ñ#ØŸ;™;ØŸ*™*Ü&×.Ò.¨}ÔJØð	 $ó öð ×Ñ Ö%ñ %ð 
×	Ñ	€BÜ+¨BÄAÇGÁGÔL€KÜ	
×	Ò	˜[×	)Õ	)Ø�Š˜Ò&÷ 
*ô
 �X‰X�_‰_Ó€FÜ—8‘8—>‘>¨V×-=Ñ-=�>Ó>€F„LÜ Ô!2°6¼3¸v»;Ó!GÓH€IØ× Ñ Ò(ÜÐKÓLÐLä	
×	Ò	˜9×	%Õ	%Øˆ
à"×0Õ0ˆGÜ˜g¤r§|¡|×4Ò4Ü$¤T¨'£]Ó3Ð3Ø×ÑÓ! RÔ'Ü$Ø?À×@PÑ@PÓ@RÐ?SÐTóð ô ˜gŸl™l¬B¯M©M×:Ò:Ü$ØDÄTÈ'Ï,É,ÓEWÐDXÐYóð ô ˜gŸl™l×/Ñ/´·±×>Ò>Ü$ØHÌÈgÏlÉl×N_ÑN_ÓI`ÐHaÐbóð ð ˆCØ—\‘\×&Ñ&×/Ñ/°Ó4ˆFà×Ñ˜f×%ñ' 1ô* 	�
Š
�JÒ÷1 
&ô4 —‘×%Ñ% b¨&¯,©,Ó7€J÷@ð @ð €O÷U 
*×	)Ð	)ú÷ 
&×	%ús   Ã'MÆ"E3M&ÍM#	Í&M6	)2rr   r»   r^   Úcollections.abcr   r   Ú
contextlibr   Údataclassesr   Útypingr   r   r   Útyping_extensionsr	   Úsympyr   Útorch.utils._ordered_setr
   Ú r   Úexcr   r¾   r   Úops_handlerr   r   Úvirtualizedr   r   r   r   r   Ú_opsr!   rY   rC   r"   r7   r   ÚInterpreterr   ry   r…   ÚBasicr¤   r€   rÍ   r~   r(   r%   Ú<module>rÜ      sç   ðÙ Eã Û ß /Ý %Ý !ß %Ñ %Ý 'ã ã Ý /å Ý *Ý  ß 5ß /Ñ /ñ ˆCƒL€Ùˆtƒ_€à�Z‰Z×"Ñ"€
Ø�J Õ$ h¨s°C¨xÕ&8Ð8Õ9€Ø�c˜3�hÕ #Õ%€
ôg% §¡× 4Ñ 4ô g%ðT ÷ð ó ðð
   #Õ%¨¯©Õ3€ô
˜ô 
÷(@r(   