Ë
    g^(hÇ  ã                   ó@  — d dl mZ d dlZd dlmZ d dlmZ d dlmZ	 d dl
mZ ej                  j                  Zdej                  defd„Zej                   ej"                  ej$                  ej&                  ej(                  ej*                  ej,                  ej.                  ej0                  ej2                  ej4                  ej6                  ej8                  ej:                  ej<                  gZd	ej                  j@                  jB                  fd
„Z"d„ Z#d„ Z$d„ Z%y)é    )ÚCallableN)ÚStorageWeakRef)Ú_pytree)Útree_flattenÚnodeÚreturnc                 ór   — t        | j                  d«      r| j                  j                  S | j                  S )NÚoverloadpacket)ÚhasattrÚtargetr
   ©r   s    ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_functorch/compile_utils.pyÚget_aten_targetr      s+   € Üˆt�{‰{Ð,Ô-Ø�{‰{×)Ñ)Ð)Ø�;‰;Ðó    Úfx_gc                 óÂ  ‡— t        j                  «       }i Ši }i }ddlm}m}  || «       t        | j                  «      d   }|j                  dk(  sJ ‚dt         j                  dt        fd„}|j                  D �ch c]0  } ||«      r&t        |j                  d   j                  «       «      ’Œ2 }	}| j                  D �ch c]4  } ||«      r*t        |j                  d   j                  «       «      |	v r|’Œ6 }
}| j                  D �]H  }|j                  d	k(  sN|j                  dk(  s?|j                  d
k(  s0t        |«      t        v st        |«      t         j"                  u s||
v r|j%                  |ˆfd„«      }|‰|<   Œ|ˆfd„} ||j&                  «      \  }} ||j(                  «      \  }}|j*                  ||||dœ}t-        t/        d„ |D «       «      t/        d„ |D «       «      f«      }|j*                  |f}||v }d}|r||   |k(  r||   } |||«      r|‰|<   �Œd}|j%                  |ˆfd„«      }|‰|<   |s|r�Œ?|||<   |||<   �ŒK |S c c}w c c}w )Nr   )Úcompute_mutation_region_idsÚsame_mutation_regionséÿÿÿÿÚoutputr   r   c                 óÊ   — d| j                   vs't        | j                   d   t        j                  «      sy	 | j                   d   j	                  «        y# t
        $ r Y yw xY w)zGWe can evaluate only nodes that represent tensors with defined storage.ÚvalFT)ÚmetaÚ
isinstanceÚtorchÚTensorÚuntyped_storageÚNotImplementedErrorr   s    r   Úcheckable_nodez$fx_graph_cse.<locals>.checkable_node=   sZ   € à˜Ÿ	™	Ñ!¬°D·I±I¸eÑ4DÄeÇlÁlÔ)SØð	Ø�I‰I�eÑ×,Ñ,Ô.ð øô #ò 	Ùð	ús   ¸A Á	A"Á!A"r   ÚplaceholderÚget_attrc                 ó   •— ‰|    S ©N© ©ÚxÚenvs    €r   ú<lambda>zfx_graph_cse.<locals>.<lambda>c   ó   ø€ ¸¸A¹€ r   c                 ó|  •— t        | «      \  } }t        t        | «      «      D ]Š  }| |   }t        |t        j
                  j                  j                  «      r|‰v r‰|   | |<   t        |t        j                  t        j                  t        j                  f«      sŒ||j                  | |<   ŒŒ t        | «      |fS r#   )r   ÚrangeÚlenr   r   Úfxr   ÚNodeÚSymBoolÚSymIntÚSymFloatÚtuple)Úarg_listÚspecÚiÚvr'   s       €r   Ú
substitutez fx_graph_cse.<locals>.substituteh   s˜   ø€ Ü!-¨hÓ!7‘�˜$Üœs 8›}Ó-ò -�AØ  ™�AÜ! !¤U§X¡X§]¡]×%7Ñ%7Ô8¸QÀ#¹XØ&)¨!¡f˜ ™Ü! !¤e§m¡m´U·\±\Ä5Ç>Á>Ð%RÕSØ&'§f¡f˜ šð-ô ˜X“¨Ð,Ð,r   )r   ÚargsÚ	args_specÚkwargsÚkwargs_specc              3   ó6   K  — | ]  }|t        |«      f–— Œ y ­wr#   ©Útype©Ú.0Úas     r   ú	<genexpr>zfx_graph_cse.<locals>.<genexpr>ƒ   s   è ø€ Ò2¨˜œ4 ›7”|Ñ2ùó   ‚c              3   ó6   K  — | ]  }|t        |«      f–— Œ y ­wr#   r=   r?   s     r   rB   zfx_graph_cse.<locals>.<genexpr>ƒ   s   è ø€ Ò9WÈ1¸1¼dÀ1»g¼,Ñ9WùrC   FTc                 ó   •— ‰|    S r#   r$   r%   s    €r   r(   zfx_graph_cse.<locals>.<lambda>“   r)   r   )r-   ÚGraphÚtorch._inductor.pattern_matcherr   r   ÚlistÚnodesÚopr.   ÚboolÚall_input_nodesr   r   r   r   Úrand_opsÚatenÚemptyÚ	node_copyr8   r:   r   Úhashr2   )r   Ú	new_graphÚhash_envÚ	token_mapr   r   Úoutput_noder   ÚnÚoutput_storagesÚnodes_that_alias_outputsÚnew_noder7   r8   r9   r:   r;   ÚtokenÚhash_argÚhash_valÚhash_val_in_hash_envÚoverwrite_due_to_mutationÚduplicate_n_prevr'   s                          @r   Úfx_graph_cser`   *   s“  ø€ Ü—‘“
€IØ
€CØ€HØ€I÷ñ
   Ô%ô
   §
¡
Ó+¨BÑ/€KØ�>‰>˜XÒ%Ð%Ð%ð
œRŸW™Wð 
¬ó 
ð ×,Ñ,öàÙ˜!Ôô 	�q—v‘v˜e‘}×4Ñ4Ó6Õ7ð€Oð ð —‘ö àÙ˜!ÔÜ˜1Ÿ6™6 %™=×8Ñ8Ó:Ó;¸ÑNò 	
ð Ðð  ð �Z‰Zó B,ˆð �D‰D�MÒ!Ø�t‰t�xÒØ�t‰t�zÒ!Ü˜qÓ!¤XÑ-ô ˜qÓ!¤T§Z¡ZÑ/ØÐ,Ñ,à ×*Ñ*¨1Ó.>Ó?ˆHØˆC�ŠFô-ñ )¨¯©Ó0‰OˆD�)Ù",¨Q¯X©XÓ"6ÑˆF�Kð
 Ÿ(™(ØØ&Ø Ø*ñˆEô ÜÑ2¨TÔ2Ó2´EÑ9WÐPVÔ9WÓ4WÐXóˆHð Ÿ™ (Ð+ˆHð $,¨xÐ#7Ð Ø(-Ð%Ù#¨	°(Ñ(;¸uÒ(DØ#+¨HÑ#5Ð Ù(¨Ð,<Ô=Ø-�C˜‘FÙð 15Ð-à ×*Ñ*¨1Ó.>Ó?ˆHØˆC�‰FÙ(Ó0DØ%-�˜Ñ"Ø&+�	˜(Ó#ðEB,ðH Ðùòaùò
 s   Á=5IÃ9Ic                 óî   — | j                   j                  D ]L  }t        |j                  t        j
                  j                  «      sŒ2|j                  j                  |_        ŒN | j                  «        y)zž
    Modifies the target of graph nodes in :attr:`gm` to strip overloads.

    Args:
        gm(fx.GraphModule): The input Fx graph module to be modified
    N)	ÚgraphrI   r   r   r   Ú_opsÚ
OpOverloadr
   Ú	recompile)Úgmr   s     r   Ústrip_overloadsrg   œ   sO   € ð —‘—‘ò 5ˆÜ�d—k‘k¤5§:¡:×#8Ñ#8Õ9ØŸ+™+×4Ñ4ˆD�Kð5ð ‡L�L…Nr   c                 ó&   — | j                  d¬«      S )Nr    ©rJ   )Ú
find_nodes)rb   s    r   Úget_placeholdersrk   ©   s   € Ø×Ñ˜}ÐÓ-Ð-r   c                 óŒ   — | j                  d¬«      D ]%  }t        j                  |j                  d   «      c S  t	        d«      ‚)Nr   ri   r   zNo output node found)rj   ÚpytreeÚtree_leavesr8   ÚAssertionError)rb   r   s     r   Úget_outputsrp   ­   sD   € Ø× Ñ  HÐ Ó-ò 0ˆÜ×!Ñ! $§)¡)¨A¡,Ó/Ò/ð0ä
Ð/Ó
0Ð0r   )&Útypingr   r   Útorch.fxr-   Ú torch.multiprocessing.reductionsr   Útorch.utilsr   rm   Útorch.utils._pytreer   ÚopsrN   r.   r   ÚdropoutÚ_fused_dropoutÚ_standard_gammaÚ	bernoulliÚmultinomialÚnative_dropoutÚnormalÚpoissonÚbinomialÚrreluÚ	rand_likeÚrandÚrandintÚrandnÚrandpermrM   rb   rF   r`   rg   rk   rp   r$   r   r   ú<module>r†      så   ðõ ã Ý Ý ;Ý )Ý ,ð ‡y�y‡~�~€ð˜"Ÿ'™'ð  hó ð 	‡L�LØ×ÑØ×ÑØ‡N�NØ×ÑØ×ÑØ‡K�KØ‡L�LØ‡M�MØ‡J�JØ‡N�NØ‡I�IØ‡L�LØ‡J�JØ‡M�Mð€ð(o�u—x‘x—~‘~×+Ñ+ó oòd
ò.ó1r   