§
     ²ÅjØC  ã                   ó   — d dl Z d dlZd dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlmZ  ej        e¦  «        Ze                     ej        ¦  «          G d„ d	¦  «        Z G d
„ d¦  «        Z G d„ d¦  «        ZdS )é    N)Úcopy)ÚDictÚIterableÚListÚOptionalÚSequenceÚSet)ÚGraphModule)Ú_get_qualified_nameÚNode)ÚOperatorSupportBase)Úfuse_by_partitionsc                   óp   — e Zd Z	 ddee         deee                  fd„Zdefd„Z	defd„Z
defd	„Zd
„ ZdS )Ú	PartitionNÚidÚnodesc                 óZ   — || _         |�t                               |¦  «        ni | _        d S ©N)r   ÚdictÚfromkeysr   )Úselfr   r   s      úRC:\Projects\Historical\venv\Lib\site-packages\torch/fx/passes/infra/partitioner.pyÚ__init__zPartition.__init__   s,   € ð ˆŒØ-2Ð->•T—]’] 5Ñ)Ô)Ð)ÀBˆŒ
ˆ
ˆ
ó    Úreturnc                 ó*   — t          | j        ¦  «        S r   )Ústrr   ©r   s    r   Ú__repr__zPartition.__repr__   ó   € Ý�4”:‰ŒÐr   Únodec                 ó>   — | j                              |d i¦  «         d S r   )r   Úupdate©r   r!   s     r   Úadd_nodezPartition.add_node   s"   € ØŒ
×Ò˜4 ˜,Ñ'Ô'Ð'Ð'Ð'r   c                 ó   — | j         |= d S r   ©r   r$   s     r   Úremove_nodezPartition.remove_node   s   € ØŒJ�tÐÐÐr   c                 ó*   — t          | j        ¦  «        S r   )Úlenr   r   s    r   ÚsizezPartition.size"   r    r   )NN)Ú__name__Ú
__module__Ú__qualname__r   Úintr   r   r   r   r   r%   r(   r+   © r   r   r   r      s´   € € € € € àJNðGð GØ˜3”-ðGØ/7¸À¼Ô/GðGð Gð Gð Gð˜#ð ð ð ð ð(˜Tð (ð (ð (ð (ð ð ð ð ð ðð ð ð ð r   r   c                   óR   — e Zd Zdefd„Zdedee         fd„Zdedee         fd„ZdS )Ú_DependencyViewerÚgraph_modulec                 ó(  — t          j        t          ¦  «        | _        t          j        t          ¦  «        | _        |j        j        D ]W}|j        D ]M}| j        |                              |¦  «         | j        |          	                    | j        |         ¦  «         ŒNŒXt          |j        j        ¦  «        D ]W}|j        D ]M}| j        |                              |¦  «         | j        |          	                    | j        |         ¦  «         ŒNŒXd S r   )ÚcollectionsÚdefaultdictÚsetÚ	upstreamsÚdownstreamsÚgraphr   Úall_input_nodesÚaddr#   ÚreversedÚusers)r   r3   r!   Ú
input_nodeÚoutput_nodes        r   r   z_DependencyViewer.__init__'   s!  € Ý$Ô0µÑ5Ô5ˆŒÝ&Ô2µ3Ñ7Ô7ˆÔà Ô&Ô,ð 	Hð 	HˆDØ"Ô2ð Hð H�
à”˜tÔ$×(Ò(¨Ñ4Ô4Ð4Ø”˜tÔ$×+Ò+¨D¬N¸:Ô,FÑGÔGÐGÐGðHõ
 ˜\Ô/Ô5Ñ6Ô6ð 	Mð 	MˆDØ#œzð Mð M�àÔ  Ô&×*Ò*¨;Ñ7Ô7Ð7ØÔ  Ô&×-Ò-¨dÔ.>¸{Ô.KÑLÔLÐLÐLðMð	Mð 	Mr   r!   r   c                 ó   — | j         |         S r   )r9   r$   s     r   Údownstreams_ofz _DependencyViewer.downstreams_of7   s   € ØÔ Ô%Ð%r   c                 ó   — | j         |         S r   )r8   r$   s     r   Úupstreams_ofz_DependencyViewer.upstreams_of:   s   € ØŒ~˜dÔ#Ð#r   N)	r,   r-   r.   r
   r   r   r	   rB   rD   r0   r   r   r2   r2   &   s€   € € € € € ðM [ð Mð Mð Mð Mð & 4ð &¨C°¬Ið &ð &ð &ð &ð$ ð $¨#¨d¬)ð $ð $ð $ð $ð $ð $r   r2   c                   óÜ   — e Zd Z	 	 	 ddedededeee                  deee                  ddfd	„Z	d
e
defd„Zdee         fd„Z	 ddee         dedefd„Zdee         fd„Zddedefd„ZdS )ÚCapabilityBasedPartitionerFNr3   Úoperator_supportÚallows_single_node_partitionÚnon_compute_opsÚ!allowed_single_node_partition_opsr   c                 ó„   — || _         || _        || _        |�|ng | _        |�|ng | _        t          |¦  «        | _        d S r   )r3   rG   rH   rI   rJ   r2   Údependency_viewer)r   r3   rG   rH   rI   rJ   s         r   r   z#CapabilityBasedPartitioner.__init__?   sa   € ð )ˆÔØ 0ˆÔØ,HˆÔ)Ø2AÐ2M˜˜ÐSUˆÔð 1Ð<ð .Ð-àð 	Ô.õ
 "3°<Ñ!@Ô!@ˆÔÐÐr   r!   c                 ó€   — | j                              t          | j                             ¦   «         ¦  «        |¦  «        S r   )rG   Úis_node_supportedr   r3   Únamed_modulesr$   s     r   Ú__is_node_supportedz.CapabilityBasedPartitioner.__is_node_supportedR   s9   € ØÔ$×6Ò6Ý�Ô"×0Ò0Ñ2Ô2Ñ3Ô3°Tñ
ô 
ð 	
r   c                 ód  ‡ ‡‡‡‡— t          j        t          ¦  «        Ši Ši Ši }i Št          j        ¦   «         }dt
          dt
          fˆˆˆˆˆ fd„}dt          dt          t
                   fˆˆˆˆ fd„}t           	                    d¦  «         t          ‰ j        j        j        ¦  «        D ]Ë}i }‰                      |¦  «        r.|‰vr*t          |¦  «        }|||<   |‰|<    |||¦  «         d ||<   t!          ‰                     ¦   «         d„ ¬	¦  «        D ]
\  }}d ||<   Œt%          |                     ¦   «         ¦  «        }	t)          |	¦  «        d
k    r!|	d         }
|	d
d …         D ]} ||
|¦  «         ŒŒÌt           	                    d¦  «         i }‰ j        j        j        D ]v}d}|j        D ])}|j        dk    st/          |j        ¦  «        dk    rd} nŒ*|r?‰                     |d ¦  «        }|j        D ]!}‰                     |d ¦  «        |k    r|||<   Œ"Œw|                     ¦   «         D ]\  }} |||¦  «         Œ‰ j        sìt           	                    d¦  «         ddh}|                     t          ‰ j        ¦  «        ¦  «        }g }‰                     ¦   «         D ]ˆ\  }}d}|j        D ]^}|j        dk    rQt;          |j        ¦  «        sJ ‚t/          |j        ¦  «        |vr|d
z  }t/          |j        ¦  «        ‰ j        v r|d
z  }Œ_|d
k    r|                     |¦  «         Œ‰|D ]}‰|= Œt           	                    d¦  «         ‰                     ¦   «         D ]0\  }}t           	                    d|d„ |j        D ¦   «         ¦  «         Œ1d„ ‰                      ¦   «         D ¦   «         S )NÚself_idÚother_idc                 ó  •‡ ‡‡— t          ‰	‰          j        ¦  «        Š‰                     ‰	‰         j        ¦  «         dt          t                   fˆˆˆˆˆˆ fd„}t          ¦   «         }‰D ]%}|j        D ]}|‰vr|                     |¦  «         ŒŒ& ||¦  «        rdS ‰‰	‰          _        ‰	‰         j        D ]}‰ ‰|<   Œ‰	‰= t          ‰
‰          ‰
‰         ¦  «        ‰
‰ <   ‰
‰= ‰‰           	                    ‰‰         ¦  «        ‰‰ <   ‰‰= dS )NÚall_user_nodesc                 óì   •— | D ]o}t          ¦   «         }‰
j                             |¦  «        D ]D}|‰v r  dS |‰v r6‰|         }||v rŒ‰	|         }‰|v s‰|v r  dS |                     |¦  «         ŒEŒpdS )NTF)r7   rL   rB   r<   )rU   Ú	user_nodeÚvisited_partition_idsÚ	path_nodeÚpartition_idÚp_mapÚ
assignmentÚmerged_nodesrS   Úpartition_mapr   rR   s         €€€€€€r   Údfs_iter_find_cycleziCapabilityBasedPartitioner.propose_partitions.<locals>.maybe_merge_partition.<locals>.dfs_iter_find_cycler   sÈ   ø€ Ø!/ð Dð D�IÝ,/©E¬EÐ)à%)Ô%;×%JÒ%JÈ9Ñ%UÔ%Uð Dð D˜	ð %¨Ð4Ð4Ø#' 4 4 4ð %¨
Ð2Ð2Ø+5°iÔ+@˜Lð  ,Ð/DÐDÐDØ (Ø$1°,Ô$?˜EØ&¨%Ð/Ð/°8¸uÐ3DÐ3DØ'+ t t tà1×5Ò5°lÑCÔCÐCøð+Dð. �ur   FT)
r   r   r#   r	   r   r7   r>   r<   ÚminÚunion)rR   rS   r_   rU   r!   rW   r]   r\   r^   Úpartitions_by_idÚpartitions_orderr   s   ``    @€€€€€r   Úmaybe_merge_partitionzLCapabilityBasedPartitioner.propose_partitions.<locals>.maybe_merge_partitionm   sˆ  øøøø€ åÐ 0°Ô 9Ô ?Ñ@Ô@ˆLØ×ÒÐ 0°Ô :Ô @ÑAÔAÐAðµC½´Ið ð ð ð ð ð ð ð ð ð ð õ< !™UœUˆNØ$ð 6ð 6�Ø!%¤ð 6ð 6�IØ ¨Ð4Ð4Ø&×*Ò*¨9Ñ5Ô5Ð5øð6ð #Ð" >Ñ2Ô2ð ð �uð /;Ð˜WÔ%Ô+à(¨Ô2Ô8ð +ð +�Ø#*�
˜4Ñ Ð à  Ð*å(+Ø  Ô)Ð+;¸HÔ+Eñ)ô )Ð˜WÑ%ð ! Ð*à%2°7Ô%;×%AÒ%AØ˜hÔ'ñ&ô &ˆM˜'Ñ"ð ˜hÐ'à�4r   r!   r   c                 ó`  •— dt           dt          fˆˆˆfd„}| ‰v r!‰‰|                                        | ¦  «         |€‰                     | ¦  «         d S |‰vr(|‰| <   t	          || g¬¦  «        ‰|<    || |¦  «         d S |‰| <   ‰|                              | ¦  «          || |¦  «         d S )Nr!   r   c                 óh  •— | j         D ]V}‰                     |d ¦  «        }|�<‰|                              |¦  «         ‰|                              ‰|         ¦  «         ŒW‰	j                             | ¦  «        }|D ]5}‰                     |d ¦  «        }|�‰|                              |¦  «         Œ6d S r   )r>   Úgetr<   r#   rL   rD   )
r!   r   rW   Ú	target_idÚupstream_nodesÚ	curr_nodeÚ	source_idr\   r^   r   s
          €€€r   Ú_update_partition_mapzgCapabilityBasedPartitioner.propose_partitions.<locals>.merge_single_node.<locals>._update_partition_map±   sÍ   ø€ ð "&¤ð Kð K�IØ *§¢¨y¸$Ñ ?Ô ?�IØ Ð,Ø% bÔ)×-Ò-¨iÑ8Ô8Ð8Ø% bÔ)×0Ò0°¸yÔ1IÑJÔJÐJøð
 "&Ô!7×!DÒ!DÀTÑ!JÔ!J�Ø!/ð 9ð 9�IØ *§¢¨y¸$Ñ ?Ô ?�IØ Ð,Ø% iÔ0×4Ò4°RÑ8Ô8Ð8øð9ð 9r   )r   r   )r   r/   r(   Úpopr   r%   )r!   r   rl   r\   r^   rb   r   s      €€€€r   Úmerge_single_nodezHCapabilityBasedPartitioner.propose_partitions.<locals>.merge_single_node°   s  ø€ ð9­Dð 9µcð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð$ �zÐ!Ð!Ø  ¨DÔ!1Ô2×>Ò>¸tÑDÔDÐDàˆzØ—’˜tÑ$Ô$Ð$Ð$Ð$ØÐ+Ð+Ð+Ø#%�
˜4Ñ Ý'0°B¸t¸fÐ'EÑ'EÔ'EÐ  Ñ$Ø%Ð% d¨BÑ/Ô/Ð/Ð/Ð/à#%�
˜4Ñ Ø  Ô$×-Ò-¨dÑ3Ô3Ð3Ø%Ð% d¨BÑ/Ô/Ð/Ð/Ð/r   zProposing partitions...c                 ó   — | d         S )Né   r0   )Úitems    r   ú<lambda>z?CapabilityBasedPartitioner.propose_partitions.<locals>.<lambda>å   s
   € ¸4À¼7€ r   )Úkeyrp   r   z=Reassigning getitem nodes to its producer node's partition...TÚcall_functionz_operator.getitemFz'Filtering out single node partitions...ztorch.ops.aten.viewzPartitions proposed:zpartition #%s: %sc                 ó   — g | ]	}|j         ‘Œ
S r0   )Úname)Ú.0r!   s     r   ú
<listcomp>zACapabilityBasedPartitioner.propose_partitions.<locals>.<listcomp>"  s   € Ð)PÐ)PÐ)P¸¨$¬)Ð)PÐ)PÐ)Pr   c                 óB   — g | ]}|                      ¦   «         d k    ¯|‘ŒS )r   )r+   ©rw   Ú	partitions     r   rx   zACapabilityBasedPartitioner.propose_partitions.<locals>.<listcomp>%  s4   € ð 
ð 
ð 
Ø#ÀIÇNÂNÑDTÔDTÐWXÒDXÐDXˆIÐDXÐDXÐDXr   )!r5   r6   r7   Ú	itertoolsÚcountr/   r   r   ÚloggerÚdebugr=   r3   r:   r   Ú._CapabilityBasedPartitioner__is_node_supportedÚnextÚsortedÚitemsÚlistÚkeysr*   r>   Úopr   Útargetrg   rH   ra   rI   ÚcallablerJ   ÚappendÚvalues)r   Únodes_orderÚnew_partition_idrd   rn   r!   Úmerge_candidatesrZ   Ú_Úmerge_candidates_listrR   rS   Únodes_reassignmentÚis_tuple_outputÚuserr   Údefault_non_compute_opsrI   Úpartitions_to_remover{   Úcompute_node_countr\   r^   rb   rc   s   `                    @@@@r   Úpropose_partitionsz-CapabilityBasedPartitioner.propose_partitionsW   só  øøøøø€ õ )4Ô(?ÅÑ(DÔ(Dˆð ')ˆ
ð ð 	ð
 ð 	ð
 ð 	õ %œ?Ñ,Ô,Ðð
A	­3ð A	½#ð A	ð A	ð A	ð A	ð A	ð A	ð A	ð A	ð A	ð A	ðF	0¥Dð 	0­hµs¬mð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0õB 	�ŠÐ.Ñ/Ô/Ð/å˜TÔ.Ô4Ô:Ñ;Ô;ð 	=ð 	=ˆDà02Ðð ×'Ò'¨Ñ-Ô-ð 6°$¸jÐ2HÐ2HÝ#Ð$4Ñ5Ô5�Ø$0�˜DÑ!Ø1=Ð  Ñ.Ø!Ð! $¨Ñ5Ô5Ð5Ø15Ð  Ñ.õ $*Ø ×&Ò&Ñ(Ô(Ð.BÐ.Bð$ñ $ô $ð 6ð 6‘�˜að 26Ð  Ñ.Ð.å$(Ð)9×)>Ò)>Ñ)@Ô)@Ñ$AÔ$AÐ!ÝÐ(Ñ)Ô)¨AÒ-Ð-Ø/°Ô2�Ø 5°a°b°bÔ 9ð =ð =�Hð *Ð)¨'°8Ñ<Ô<Ð<Ð<øõ 	�ŠÐTÑUÔUÐUØ.0ÐØÔ%Ô+Ô1ð 	6ð 	6ˆDØ"ˆOØœ
ð ð �à”G˜Ò.Ð.Ý*¨4¬;Ñ7Ô7Ð;NÒNÐNà&+�OØ�Eð Oð ð 6Ø—^’^ D¨$Ñ/Ô/�Ø œJð 6ð 6�DØ!—~’~ d¨DÑ1Ô1°RÒ7Ð7Ø35Ð*¨4Ñ0øøØ*×0Ò0Ñ2Ô2ð 	(ð 	(‰HˆD�"ØÐ˜d BÑ'Ô'Ð'Ð'ð Ô0ð 	)Ý�LŠLÐBÑCÔCÐCØ'<Ð>QÐ&RÐ#Ø5×;Ò;½CÀÔ@TÑ<UÔ<UÑVÔVˆOØ.0Ð Ø!1×!7Ò!7Ñ!9Ô!9ð 4ð 4‘��IØ%&Ð"Ø%œOð 	4ð 	4�DØ”w /Ò1Ð1Ý'¨¬Ñ4Ô4Ð4Ð4Ð4Ý.¨t¬{Ñ;Ô;À?ÐRÐRØ.°!Ñ3Ð.å/°´Ñ<Ô<Ø#ÔEðFð Fð /°!Ñ3Ð.øØ%¨Ò*Ð*Ø(×/Ò/°Ñ3Ô3Ð3øØ*ð )ð )�Ø$ RÐ(Ð(å�ŠÐ+Ñ,Ô,Ð,Ø-×3Ò3Ñ5Ô5ð 	ð 	‰MˆB�	Ý�LŠLØ# RÐ)PÐ)PÀ	ÄÐ)PÑ)PÔ)Pñô ð ð ð
ð 
Ø'7×'>Ò'>Ñ'@Ô'@ð
ñ 
ô 
ð 	
r   Úfused_Ú
partitionsÚprefixc                 óx   — t                                d¦  «         t          | j        d„ |D ¦   «         |¬¦  «        S )NzFusing partitions...c                 ó   — g | ]	}|j         ‘Œ
S r0   r'   rz   s     r   rx   z>CapabilityBasedPartitioner.fuse_partitions.<locals>.<listcomp>0  s   € Ð9Ð9Ð9 ˆYŒ_Ð9Ð9Ð9r   ©r™   )r~   r   r   r3   )r   r˜   r™   s      r   Úfuse_partitionsz*CapabilityBasedPartitioner.fuse_partitions)  sH   € õ 	�ŠÐ+Ñ,Ô,Ð,å!ØÔØ9Ð9¨jÐ9Ñ9Ô9Øð
ñ 
ô 
ð 	
r   c                 ó„  ‡‡‡‡‡	‡
— t          | j        ¦  «        Šdt          fˆfd„Ši Š	i Š
dt          dt          t                   dt          t                   fˆˆˆ	fd„Šdt          dt          t                   dt          t                   fˆˆˆ
fd„Š|D ]«}t          ¦   «         }|j        D ]`} ‰|¦  «        rS ‰|t          |j        ¦  «        |¦  «        s ‰|t          |j        ¦  «        |¦  «        r|                     |¦  «         Œat          |¦  «        dk    r |D ]}|j                             |d ¦  «         ŒŒ¬d S )Nr!   c                 óF   •— | j         dk    ot          | j        ¦  «        ‰v S )Nrt   )r†   r   r‡   )r!   rI   s    €r   Úis_non_compute_nodezVCapabilityBasedPartitioner.remove_bookend_non_compute_ops.<locals>.is_non_compute_node8  s*   ø€ à”˜?Ò*ð HÝ'¨¬Ñ4Ô4¸ÐGðr   r{   Úremoved_nodesc                 ó¶   •— | j         dk    s| |vs| |v rdS | ‰v r‰|          S  ‰| ¦  «        r&| j        D ]} ‰|||¦  «        sd‰| <    dS Œd‰| <   dS d‰| <   dS ©NÚplaceholderTF)r†   r;   )r!   r{   r¡   Úinput_nr    Úis_transparent_input_nodeÚtransparent_input_nodess       €€€r   r¦   z\CapabilityBasedPartitioner.remove_bookend_non_compute_ops.<locals>.is_transparent_input_nodeB  s¹   ø€ ð ”˜=Ò(Ð(Ø 	Ð)Ð)Ø˜MÐ)Ð)à�tØÐ.Ð.Ð.Ø.¨tÔ4Ð4Ø"Ð" 4Ñ(Ô(ð Ø#Ô3ð %ð %�GØ4Ð4°W¸iÈÑWÔWð %Ø8=Ð/°Ñ5Ø$˜u˜uð%ð 15Ð'¨Ñ-Ø�tØ,1Ð# DÑ)Ø�5r   c                 ó¶   •— | j         dk    s| |vs| |v rdS | ‰v r‰|          S  ‰| ¦  «        r&| j        D ]} ‰|||¦  «        sd‰| <    dS Œd‰| <   dS d‰| <   dS r£   )r†   r>   )r!   r{   r¡   Úoutput_nr    Úis_transparent_output_nodeÚtransparent_output_nodess       €€€r   rª   z]CapabilityBasedPartitioner.remove_bookend_non_compute_ops.<locals>.is_transparent_output_nodeW  s¿   ø€ ð ”˜=Ò(Ð(Ø 	Ð)Ð)Ø˜MÐ)Ð)à�tØÐ/Ð/Ð/Ø/°Ô5Ð5Ø"Ð" 4Ñ(Ô(ð Ø $¤
ð %ð %�HØ5Ð5Ø  )¨]ñô ð %ð :?Ð0°Ñ6Ø$˜u˜uð	%ð
 26Ð(¨Ñ.Ø�tØ-2Ð$ TÑ*Ø�5r   r   )r7   rI   r   r	   r   r<   r*   rm   )r   r˜   r{   r(   r!   r    r¦   rª   rI   r§   r«   s        @@@@@@r   Úremove_bookend_non_compute_opsz9CapabilityBasedPartitioner.remove_bookend_non_compute_ops5  s¿  øøøøøø€ Ý˜dÔ2Ñ3Ô3ˆð	¥dð 	ð 	ð 	ð 	ð 	ð 	ð 57ÐØ57Ð ð	Ýð	Ý#&¥t¤9ð	Ý=@Å¼Yð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð*	Ýð	Ý#&¥t¤9ð	Ý=@Å¼Yð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð. $ð 	4ð 	4ˆIõ &)¡U¤UˆKØ!œð *ð *�Ø&Ð& tÑ,Ô,ð *Ø-Ð-¨dµC¸	¼Ñ4HÔ4HÈ+ÑVÔVð*à1Ð1Ø�c )¤/Ñ2Ô2°Kñô ð*ð  —O’O DÑ)Ô)Ð)øå�;ÑÔ 1Ò$Ð$Ø'ð 4ð 4�DØ”O×'Ò'¨¨dÑ3Ô3Ð3Ð3øð!	4ð 	4r   c                 ó\   — |                       ¦   «         }|                      ||¬¦  «        }|S )Nrœ   )r–   r�   )r   r™   r˜   Úfused_gms       r   Úpartition_and_fusez-CapabilityBasedPartitioner.partition_and_fuse€  s0   € Ø×,Ò,Ñ.Ô.ˆ
Ø×'Ò'¨
¸6Ð'ÑBÔBˆØˆr   )FNN)r—   )r,   r-   r.   r
   r   Úboolr   r   r   r   r   r€   r   r   r–   r�   r¬   r¯   r0   r   r   rF   rF   >   s]  € € € € € ð
 .3Ø37ØEIðAð Aà!ðAð .ðAð '+ð	Að
 " (¨3¤-Ô0ðAð ,4°H¸S´MÔ+BðAð 
ðAð Að Að Að&
¨ð 
°ð 
ð 
ð 
ð 
ð
P
 D¨¤Oð P
ð P
ð P
ð P
ðf :Bð	
ð 	
Ø˜yœ/ð	
Ø36ð	
à	ð	
ð 	
ð 	
ð 	
ðI4¸¸i¼ð I4ð I4ð I4ð I4ðVð ¨ð ¸Kð ð ð ð ð ð r   rF   )r5   r|   Úloggingr   Útypingr   r   r   r   r   r	   Útorch.fx.graph_moduler
   Útorch.fx.noder   r   Ú torch.fx.passes.operator_supportr   Ú!torch.fx.passes.utils.fuser_utilsr   Ú	getLoggerr,   r~   ÚsetLevelÚWARNINGr   r2   rF   r0   r   r   ú<module>rº      sj  ðà Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @à -Ð -Ð -Ð -Ð -Ð -Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø @Ð @Ð @Ð @Ð @Ð @Ø @Ð @Ð @Ð @Ð @Ð @ð 
ˆÔ	˜8Ñ	$Ô	$€Ø ‡‚�”Ñ  Ô  Ð  ðð ð ð ð ñ ô ð ð($ð $ð $ð $ð $ñ $ô $ð $ð0Eð Eð Eð Eð Eñ Eô Eð Eð Eð Er   