Ë
    ÄÓ^jUE ã                  óš  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dl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mZmZ d dlmZ d dlZd dlmc m Z! d dlm"Z"m#Z#m$Z$m%Z% d d	l&m'Z'm(Z( d d
l)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z; d dl<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZC d dlDmEZEmFZF d dlGmHZH d dlImJZJmKZKmLZL d dlMmNZNmOZOmPZPmQZQmRZRmSZS d dlTmUZU d dlVmWZW ddlXmYZYmZZZm[Z[ er(d dl\m]Z]m^Z^m_Z_m`Z`maZa d dlmbZb d dlcmdZd d d lemfZf d d!lgmhZhmiZi  ejÔ                  ek«      ZlejÚ                  jÝ                  ekd"«      Zo	 ejÚ                  jÝ                  ekd#«      ZpetZuej@                  jì                  Zw ed&«      Zxejò                  jô                  jö                  Z{dZ|d a} G d'„ d(ed)¬*«      Z~ ee~�j                   «      Z�e�j                  d|d+„«       Zƒ G d,„ d-«      Z„e G d.„ d/e…«      «       Z† G d0„ d1e…«      Z‡e G d2„ d3e…«      «       Zˆe G d4„ d5e…«      «       Z‰e G d6„ d7e…«      «       ZŠe G d8„ d9e…«      «       Z‹e G d:„ d;e…«      «       ZŒ G d<„ d=e	�j                  «      ZŽ eŽ«       Z�d}d>„Z�e�j"                  d~d?„«       Z’e�j"                  ddA„«       Z“	 	 	 	 	 	 d€dB„Z”d�dC„Z•d‚dD„Z–e�j                  dƒdE„«       Z—e�j                  d„dF„«       Z˜d…dG„Z™d†dH„Zš G dI„ dJ«      Z›e�j                  d‡dK„«       Zœe�j"                  	 	 	 	 ddL„«       Z�d„dM„Zž G dN„ dO«      ZŸ G dP„ dQ«      Z  G dR„ dSe%«      Z¡eeEdTdUf   Z¢ edV¬W«       G dX„ dY«      «       Z£dˆdZ„Z¤ edV¬W«       G d[„ d\«      «       Z¥ G d]„ d^«      Z¦ edVdV¬_«       G d`„ da«      «       Z§ edVdV¬_«       G db„ dc«      «       Z¨ edVdV¬_«       G dd„ de«      «       Z©ere¨e©z  Zª edVdV¬_«       G df„ dge««      «       Z¬ edVdV¬_«       G dh„ di«      «       Z­ G dj„ d@eK«      Z®e¯Z°	 	 	 	 	 	 d‰dk„Z±	 	 	 	 	 	 	 	 	 	 	 	 dŠdl„Z²	 	 	 	 	 	 	 	 d‹dm„Z³	 	 	 	 	 	 	 	 d‹dn„Z´ G do„ dpeC«      ZµdŒdq„Z¶d�dr„Z·dŽds„Z¸ejô                  �jr                  �jt                  �jv                  e¶ejô                  jö                  �jx                  �jv                  dt„ ejô                  jö                  �jz                  �jv                  du„ ejô                  jö                  �j|                  �jv                  dv„ iZ¿ e�ejô                  jö                  �j€                  �jv                  ejô                  jö                  �j‚                  �jv                  ejô                  jö                  �j„                  �jv                  ejô                  �j†                  �jˆ                  �jŠ                  «      ZÆd dwlÇmÈZÈmÉZÉmÊZÊmËZËmÌZÌmÍZÍmÎZÎmÏZÏ d�dx„ZÐe�j¢                  d�dy„«       ZÒ	 	 	 	 	 	 	 	 d‘dz„ZÓ	 	 	 	 	 	 	 	 d’d{„ZÔy# eq$ r-Zrd$ eser«      v r ejÔ                  ekd%z   «      Zpner‚Y dZr[r�ŒÀdZr[rww xY w)“é    )ÚannotationsN)Údefaultdict)Ú	dataclass)ÚAnyÚcastÚLiteralÚTYPE_CHECKINGÚ	TypeGuardÚTypeVarÚUnion)ÚSelfÚ	TypedDictÚUnpack)ÚReferenceType)ÚSymBoolÚSymFloatÚSymIntÚTensor)Úis_functorch_wrapped_tensorÚis_legacy_batchedtensor)ÚFakeScriptObject)ÚMissingOpProfile)Údtrace_structured)Ú
OpaqueBase)Úsuggest_memory_format)Ú	assert_eqÚassert_metadata_eqÚis_sparse_anyÚis_sparse_compressedÚMetaConverter)Ú!_is_privateuse1_backend_availableÚrender_call)Úimmutable_dict)Únormalize_function)ÚStorageWeakRef)ÚTorchFunctionMode)ÚIntLikeTypeÚpy_sym_types)Úno_dispatch)Úis_traceable_wrapper_subclassÚTorchDispatchModeÚTraceableWrapperSubclass)ÚKeyPathÚkeystrÚPyTreeÚtree_mapÚ	tree_map_ÚTreeSpec)Úcount)ÚCapturedTracebacké   )Ú_CacheKeyStateÚ_PySymInputStubÚ_SymIntOutputStub)ÚCallableÚ	GeneratorÚIterableÚMappingÚSequence)ÚTracebackType)ÚSource)Ú
OpOverload)ÚShapeEnvÚSymbolicContextÚhierarchical_compileÚnot_implementedz 'not_implemented' not registeredz.not_implementedÚTc                  ó®   — e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   y)Ú"_FakeTensorConstructorIgnoredStateÚobjectÚ_nonzero_memoÚ_nonzero_memo_vcÚ_nonzero_memo_epochÚ
_item_memoÚ_item_memo_vcÚ_item_memo_epochÚ_unique_memoÚ_unique_memo_vcÚ_unique_memo_epochÚ_unique_consecutive_memoÚ_unique_consecutive_memo_vcÚ_unique_consecutive_memo_epochÚ_nested_int_memoÚ_nested_int_memo_vcÚ_nested_int_memo_epochÚ_debug_traceN©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úh/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_subclasses/fake_tensor.pyrG   rG   Z   sd   … ð ÓØÓØÓØÓØÓØÓØÓØÓØÓØ$Ó$Ø!'Ó'Ø$*Ó*ØÓØÓØ"Ó"ØÔr_   rG   F)Útotalc                óN   — | dddddt         j                  j                  «       fv S )NÚcudaÚhpuÚxpuÚmpsÚmtia)ÚtorchÚ_CÚ_get_privateuse1_backend_name)Údevice_types    r`   Ú_is_indexed_device_typerl   u   s3   € àØØØØØÜ�‰×.Ñ.Ó0ðð ð r_   c                  ó   — e Zd Zdd„Zdd„Zy)ÚIncrementRecursionCountc                ó   — t         dz  a y ©Nr5   ©ÚRECURSION_COUNT©Úselfs    r`   Ú__init__z IncrementRecursionCount.__init__†   ó   € ä˜1Ñ‰r_   c                ó   — t         dz  a y rp   rq   rs   s    r`   Ú__del__zIncrementRecursionCount.__del__Š   rv   r_   N©ÚreturnÚNone)rZ   r[   r\   ru   rx   r^   r_   r`   rn   rn   …   s   „ óôr_   rn   c                  ó   — e Zd ZU ded<   y)ÚUnsupportedFakeTensorExceptionÚstrÚreasonNrY   r^   r_   r`   r}   r}   �   ó   … à„Kr_   r}   c                  ó0   ‡ — e Zd Z	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚFakeTensorDeviceMismatchErrorc                ó\   •— || _         || _        || _        t        ‰| �  d|› d|› d�«       y )NzOExpected all tensors to be on the same device, but found at least two devices, z and ú!)ÚfuncÚcommon_deviceÚdeviceÚsuperru   )rt   r…   r†   r‡   Ú	__class__s       €r`   ru   z&FakeTensorDeviceMismatchError.__init__•   s@   ø€ ð ˆŒ	Ø*ˆÔØˆŒÜ‰Ñð%Ø%2 O°5¸¸ÀðCõ	
r_   )r…   r@   r†   útorch.devicer‡   rŠ   rz   r{   )rZ   r[   r\   ru   Ú__classcell__©r‰   s   @r`   r‚   r‚   ”   s3   ø„ ð
àð
ð $ð
ð ð	
ð
 
÷
ñ 
r_   r‚   c                  ó   — e Zd ZU ded<   y)ÚDynamicOutputShapeExceptionr@   r…   NrY   r^   r_   r`   rŽ   rŽ   ¤   ó   … à
Ôr_   rŽ   c                  ó   — e Zd ZU ded<   y)ÚDataDependentOutputExceptionr@   r…   NrY   r^   r_   r`   r‘   r‘   ©   r�   r_   r‘   c                  ó   — e Zd ZU ded<   y)ÚUnsupportedOperatorExceptionr@   r…   NrY   r^   r_   r`   r“   r“   ®   r�   r_   r“   c                  ó   — e Zd ZU ded<   y)Ú$UnsupportedMutationAliasingExceptionr~   r   NrY   r^   r_   r`   r•   r•   ³   r€   r_   r•   c                  ó   — e Zd ZU ded<   y)ÚMetadataMismatchErrorr~   r   NrY   r^   r_   r`   r—   r—   ¸   r€   r_   r—   c                  ó*   — e Zd ZU ded<   ded<   dd„Zy)ÚFakeTensorTLSúbool | NoneÚallow_non_fake_inputs_overridezweakref.WeakSet[FakeTensor]Ú%non_strict_export_fake_tensor_trackerc                óD   — d | _         t        j                  «       | _        y ©N)r›   ÚweakrefÚWeakSetrœ   rs   s    r`   ru   zFakeTensorTLS.__init__Ã   s   € Ø.2ˆÔ+Ü5<·_±_Ó5FˆÕ2r_   Nry   )rZ   r[   r\   r]   ru   r^   r_   r`   r™   r™   ½   s   … ð %0Ó/Ø+FÓFôGr_   r™   c                 ó.   — t         j                  | d«      S ©NT)ÚdictÚfromkeys)Úitemss    r`   Úordered_setr¦   Ë   s   € Ü�=‰=˜ Ó%Ð%r_   c               #  ó*  K  — t         j                  j                  t         j                  j                  j                  «      } 	 | –— | � t         j                  j                  | «       y y # | � t         j                  j                  | «       w w xY w­wrž   )rh   ri   Ú_unset_dispatch_modeÚ_TorchDispatchModeKeyÚFAKEÚ_set_dispatch_mode)Úolds    r`   Úunset_fake_temporarilyr­   Ï   sl   è ø€ ä
�(‰(×
'Ñ
'¬¯©×(FÑ(F×(KÑ(KÓ
L€Cð-ØŠ	àˆ?Ü�H‰H×'Ñ'¨Õ,ð øˆ3ˆ?Ü�H‰H×'Ñ'¨Õ,ð üs   ‚ABÁA, Á	#BÁ,$BÂBÚFakeTensorModec              #  ób   K  — | j                   }	 d| _         d –— || _         y # || _         w xY w­w)NF)Úcache_enabled)Ú	fake_modeÚ	old_values     r`   Údisable_fake_tensor_cacher³   Ù   s1   è ø€ à×-Ñ-€Ið,Ø"'ˆ	ÔÛà"+ˆ	Õø )ˆ	Õüs   ‚/�# ›/£	,¬/c               óÞ   ‡— | g}|rf|j                  «       Št        ‰«      s|j                  ‰«       Œ/‰j                  «       \  }}|j	                  ˆfd„t        |«      D «       «       |rŒf|S )Nc              3  ó6   •K  — | ]  }t        ‰|«      –— Œ y ­wrž   )Úgetattr)Ú.0ÚkeyÚcurrs     €r`   ú	<genexpr>z$get_plain_tensors.<locals>.<genexpr>ñ   s   øè ø€ ÒG¨3”G˜D #×&ÑGùs   ƒ)Úpopr*   ÚappendÚ__tensor_flatten__ÚextendÚreversed)ÚsubclassÚoutÚtodoÚ
inner_keysÚ_r¹   s        @r`   Úget_plain_tensorsrÅ   ã   sf   ø€ ð ˆ:€DÙ
Ø�x‰x‹zˆÜ,¨TÔ2Ø�J‰J�tÔØà×/Ñ/Ó1‰ˆ
�AØ�‰ÓG´(¸:Ó2FÔGÔGò ð €Jr_   c                ó6  — ddl m} t        | t        «      ryt	        | «      r�t        | «      j                  | «      \  }}d }|D ]e  }t        | |«      xxt        d˜ x�%\   } t        |«      }|€|}Œ-||k7  sŒ3t        d«      ‚  xt        d˜ x�\    ŒN }t        dt        |«      › �«      ‚ |xs dS t        | |«      rt        | j                  «      S t        | t        «      rht        j                  | «      rSt        j                  j!                  «       }	t        j                  j"                  j%                  | |	«      }
t        |
«      S t        | t        «      r?t'        | «      r4t        j                  j"                  j)                  | «      }
t        |
«      S y)Nr   ©ÚFunctionalTensorTr^   z got mixed fake and real tensors!ú#expected Tensor or OpaqueBase, got F)Ú#torch._subclasses.functional_tensorrÈ   Ú
isinstanceÚ
FakeTensorr*   Útyper½   r¶   r   Úis_fakeÚAssertionErrorr   Úelemrh   Ú_is_functional_tensorri   Ú$_functionalization_reapply_views_tlsÚ
_functorchÚ_unwrap_functional_tensorr   Úget_unwrapped)ÚxrÈ   ÚattrsrÄ   Úgot_fakeÚattrÚvÚfakeÚ
unexpectedÚreapply_viewsÚ	unwrappeds              r`   rÎ   rÎ   ö   sg  € ÝDä�!”ZÔ ØÜ$ QÔ'Ü˜“7×-Ñ-¨aÓ0‰ˆˆqØ $ˆØò 	ˆDÜ˜!˜TÓ"Ù"”V•X‘]Ü" 1›:�DØÐ'Ø#'™Ø! TÓ)Ü,Ð-OÓPÐPñ #ð "”Z–\Øð "àÜ(Ø=¼dÀ:Ó>NÐ=OÐPóð ð	ð Ò ˜5Ð Ü	�AÐ'Ô	(Ü�q—v‘v‹ÐÜ	�A”vÔ	¤5×#>Ñ#>¸qÔ#AÜŸ™×EÑEÓGˆÜ—H‘H×'Ñ'×AÑAÀ!À]ÓSˆ	Ü�yÓ!Ð!Ü	�A”vÔ	Ô#>¸qÔ#AÜ—H‘H×'Ñ'×5Ñ5°aÓ8ˆ	Ü�yÓ!Ð!Ør_   c                ó.  — ddl m} t        | t        «      r| j                  S t        | «      r€| j                  «       \  }}d }|D ]d  }t        | |«      xxt        d˜ x�$\   } t        |«      }|€|}Œ-||usŒ2t        d«      ‚  xt        d˜ x�\    ŒM }t        dt        |«      › �«      ‚ |S t        | |«      rt        | j                  «      S t        | t        «      rht        j                  | «      rSt        j                   j#                  «       }	t        j                   j$                  j'                  | |	«      }
t        |
«      S t        | t        «      r?t)        | «      r4t        j                   j$                  j+                  | «      }
t        |
«      S y )Nr   rÇ   r^   z&All fake tensor modes must be the samerÉ   )rÊ   rÈ   rË   rÌ   r±   r*   r½   r¶   r   Úmaybe_get_fake_moderÏ   r   rÍ   rÐ   rh   rÑ   ri   rÒ   rÓ   rÔ   r   rÕ   )ÚtrÈ   Úinner_tensor_namesrÄ   ÚmodeÚt_namerÚ   ÚmrÜ   rÝ   rÞ   s              r`   rà   rà     sd  € ÝDä�!”ZÔ Ø�{‰{ÐÜ$ QÔ'Ø !× 4Ñ 4Ó 6ÑÐ˜AØ&*ˆØ(ò 	ˆFÜ˜!˜VÓ$Ù"”V•X‘]Ü+¨AÓ.�AØ�|Ø ™Ø QšÜ,Ð-UÓVÐVñ #ð "”Z–\Øð "àÜ(Ø=¼dÀ:Ó>NÐ=OÐPóð ð	ð ˆÜ	�AÐ'Ô	(Ü" 1§6¡6Ó*Ð*Ü	�A”vÔ	¤5×#>Ñ#>¸qÔ#AÜŸ™×EÑEÓGˆÜ—H‘H×'Ñ'×AÑAÀ!À]ÓSˆ	Ü" 9Ó-Ð-Ü	�A”vÔ	Ô#>¸qÔ#AÜ—H‘H×'Ñ'×5Ñ5°aÓ8ˆ	Ü" 9Ó-Ð-Ør_   c                óT   — t         j                  j                  | j                  «      S rž   )rh   ri   Ú_SchemaInfoÚ_schema©r…   s    r`   Úget_schema_inforê   <  s   € ä�8‰8×Ñ §¡Ó-Ð-r_   c                ó¶   — ddl m} t        j                  j                  }||    j
                  j                  d«      xr ||    j                  t        |«      v S )Nr   ©Údecomposition_tableztorch._decomp)	Útorch._decomprí   rh   Ú_decompÚdecompositionsr[   Ú
startswithrZ   Údir)r…   rí   rð   s      r`   Útorch_decomp_decompositionsró   F  sV   € å1ä—]‘]×1Ñ1€Nð ˜tÑ$×/Ñ/×:Ñ:Øóò Dà
˜dÑ
#×
,Ñ
,´°NÓ0CÐ
CðDr_   c                óp   — t         j                  |«      }|D �cg c]  }t        || «      sŒ|‘Œ c}S c c}w rž   )ÚpytreeÚtree_leavesrË   )ÚtyÚtreeÚ	flat_valsrÐ   s       r`   Útree_flatten_onlyrú   S  s/   € Ü×"Ñ" 4Ó(€IØ&Ö?�T¬*°T¸2Õ*>ŠDÒ?Ð?ùÒ?s   š3¬3c                óþ   — t        | «      t        u xrk | j                  t        j                  k(  xrL | j
                  xs= | j                  xs/ t        | «      xs" t        | «      xs t        j                  | «       S rž   )
rÍ   r   Úlayoutrh   ÚstridedÚ	is_sparseÚ	is_nestedr   r   rÑ   )rá   s    r`   Ú_is_plain_tensorr   X  sx   € äˆQ‹”6Ðò 	
Ø�H‰HœŸ™Ñ%ò	
ð �K‰Kò .Ø�{‰{ò.ä*¨1Ó-ò.ô ' qÓ)ò.ô ×*Ñ*¨1Ó-ð
ð
r_   c                  óÔ   — e Zd ZU e	 	 dd„«       Zded<   ded<   ded<   ddd	œdd
„Zdd„Zdd„Zdd„Z	dd„Z
dd„Z	 	 dddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Zy) ÚFakeTensorConverterc                ó.   — | j                   j                  S rž   )Úmeta_converterÚtensor_memors   s    r`   r  zFakeTensorConverter.tensor_memok  s   € ð ×"Ñ"×.Ñ.Ð.r_   zMetaConverter[FakeTensor]r  z5dict[StorageWeakRef, list[ReferenceType[FakeTensor]]]Úconstant_storage_mappingÚboolÚexportF©Ú	copy_datar  c               óB   — t        |¬«      | _        || _        i | _        y )N)r
  )r    r  r  r  )rt   r
  r  s      r`   ru   zFakeTensorConverter.__init__w  s    € Ü+°iÔ@ˆÔØˆŒð )+ˆÕ%r_   c                ó4  — t        |t        «      r|j                  €t        d«      ‚t	        |j                  j                  «       «      }|| j                  vrg | j                  |<   | j                  |   j                  t        j                  |«      «       y )Nz0fake_tensor must be a FakeTensor with a constant)
rË   rÌ   ÚconstantrÏ   r%   Ú_typed_storager  r¼   rŸ   Úref)rt   Úfake_tensorÚweak_sts      r`   Úadd_constant_storage_mappingz0FakeTensorConverter.add_constant_storage_mapping~  s€   € ô ˜+¤zÔ2°k×6JÑ6JÐ6RÜ Ð!SÓTÐTÜ  ×!5Ñ!5×!DÑ!DÓ!FÓGˆð
 ˜$×7Ñ7Ñ7Ø57ˆD×)Ñ)¨'Ñ2Ø×%Ñ% gÑ.×5Ñ5´g·k±kÀ+Ó6NÕOr_   c                ó  — t        |t        «      rt        d«      ‚t        |j	                  «       «      }|| j
                  vry | j
                  |   D ]#  } |«       }|€Œ|j                  «        d |_        Œ% | j
                  |= y )Nz(Expected a real tensor, not a FakeTensor)rË   rÌ   rÏ   r%   r  r  Ú_fix_weakrefr  )rt   Útensorr  Úweak_tensor_refÚtens        r`   Úinvalidate_constant_aliasesz/FakeTensorConverter.invalidate_constant_aliases�  s†   € Ü�fœjÔ)Ü Ð!KÓLÐLä  ×!6Ñ!6Ó!8Ó9ˆØ˜$×7Ñ7Ñ7Øà#×<Ñ<¸WÑEò 	$ˆOÙ!Ó#ˆCØ‰à× Ñ Ô"Ø#�•ð	$ð ×)Ñ)¨'Ñ2r_   c                óp  — t        | j                  j                  «       «      D ]�  \  }}g }d}|D ]8  } |«       }|�|j                  €Œ|j	                  |«       |�Œ-|j                  }Œ: |€| j                  |= ŒW|j
                  j                  dk(  r|| j                  |<   Œ€| j                  |«       Œ’ y)zFClear non-CPU constants while keeping cheap CPU constants for folding.NÚcpu)Úlistr  r¥   r  r¼   r‡   rÍ   r  )rt   r  Úweak_tensor_refsÚlive_tensor_refsr  r  r  s          r`   Úclear_non_cpu_constantsz+FakeTensorConverter.clear_non_cpu_constantsž  sÁ   € ä)-¨d×.KÑ.K×.QÑ.QÓ.SÓ)Tò 	;Ñ%ˆGÐ%Ø@BÐØ&*ˆHØ#3ò ,�Ù%Ó'�Ø�; #§,¡,Ð"6Øà ×'Ñ'¨Ô8ØÑ#Ø"Ÿ|™|‘Hð,ð ÐØ×1Ñ1°'Ñ:Ø—‘×%Ñ%¨Ò.Ø9I�×-Ñ-¨gÒ6à×0Ñ0°Õ:ñ#	;r_   c                óœ   — | j                   j                  j                  j                  |«      }|€y | j                  j                  |«      S rž   )r  Ú	describerÚlookup_tensorÚgetr  )rt   rá   Útids      r`   Ú	_get_memozFakeTensorConverter._get_memo³  sC   € Ø×!Ñ!×+Ñ+×9Ñ9×=Ñ=¸aÓ@ˆØˆ;ØØ×Ñ×#Ñ# CÓ(Ð(r_   c                ó€   — | j                   j                  j                  |«      }|| j                   j                  |<   y rž   )r  r   Úget_tensor_idr  )rt   rá   rÚ   r#  s       r`   Úset_tensor_memoz#FakeTensorConverter.set_tensor_memo¹  s4   € Ø×!Ñ!×+Ñ+×9Ñ9¸!Ó<ˆØ/0ˆ×Ñ×'Ñ'¨Ò,r_   NT)ÚsourceÚsymbolic_contextÚtracec               óD  ‡‡— |s€|s~|r|t         j                  j                  j                  «       x}rR||j                  v rD|j                  |   }ddlm}	 t        ||	«      st        dt        |«      › �«      ‚|j                  }| j                  |«      }
|
�|
S |j                  rt        d«      ‚t        |«      t         j                  j                  u r|rt        d«      ‚|r|nd Š	 	 	 	 	 	 dˆˆfd„}| j!                  ||||||¬«      }|t"        u rt        d«      ‚t        |t         j$                  j&                  j(                  «      rt        j*                  |j,                  «      n|}|j.                  rB|j0                  r6|j2                  |j4                  k7  r|j0                  r|j2                  |_        dd	lm} d }| j:                  �s¯t=        |«      �r£|j?                  «       dk(  �r�|j@                  j                  d
k(  �ru|j4                  t         jB                  t         jD                  t         jF                  t         jH                  t         jJ                  fv �r|��t        ||«      �s|��ddlm&}m'} ddlm(} tS        «       5  |jU                  «       }d d d «       tW        jX                  |«      sÂtW        jZ                  |«      s­t        ||«      r|j\                  }n ||«      }|j_                  |||j`                  |¬«      }|j4                  t         jB                  k(  r|jc                  |||¬«      |_2        n6|j4                  t         jJ                  k(  r|jg                  |||¬«      |_2        |r| ji                  |«       |S # 1 sw Y   ŒõxY w)Nr   )ÚStatefulSymbolicContextz&Expected StatefulSymbolicContext, got zquantized nyi in meta tensorsz,make_constant must be False for nn.Parameterc                ól   •— t        «       5  t        ‰ | «       |‰¬«      cd d d «       S # 1 sw Y   y xY w)N©r  )r)   rÌ   )Úmake_meta_tr‡   r  r±   s     €€r`   Úmk_fake_tensorz<FakeTensorConverter.from_real_tensor.<locals>.mk_fake_tensorì  s7   ø€ ô “ñ 
Ü!Øá“Màð &ô	÷
÷ 
ò 
ús   Œ*ª3)Ú	shape_envÚcallbackr(  r)  r*  zmeta converter nyi)ÚRandomValueSourcer  )ÚCallMethodItemSourceÚFloatTensorSource)Ú
DimDynamic)r(  Údynamic_dimr)  )Úhintr(  )r/  zCallable[[], object]r‡   ztorch.device | strrz   rÌ   )5rh   Ú_guardsÚTracingContextÚtry_getÚtensor_to_contextÚ%torch.fx.experimental.symbolic_shapesr,  rË   rÏ   rÍ   Útensor_sourcer$  Úis_quantizedr}   ÚnnÚ	Parameterr  ÚNotImplementedÚ_subclassesÚfunctional_tensorrÈ   Ú_from_functional_tensorrÐ   Úrequires_gradÚis_leafÚ
grad_dtypeÚdtypeÚtorch._dynamo.sourcer3  r  r   Údimr‡   Úint64Úint32Úint16Úint8Úfloat64r4  r5  r6  r)   ÚitemÚmathÚisnanÚisinfÚbaseÚcreate_unspecified_symbolÚDYNAMICÚcreate_symintnodeÚ	item_memoÚcreate_symfloatnoder  )rt   r±   rá   Úmake_constantr1  r(  r)  r*  Útracing_contextr,  Ú
maybe_memor0  rÁ   Úinner_tr3  Úvaluer4  r5  r6  Úitem_sourceÚsymbolr  s    `                   @r`   Úfrom_real_tensorz$FakeTensorConverter.from_real_tensorÃ  s5  ù€ ñ  ©±9Ü"'§-¡-×">Ñ">×"FÑ"FÓ"HÐHˆÐHØ˜×9Ñ9Ñ9Ø'6×'HÑ'HÈÑ'KÐ$õô &Ð&6Ð8OÔPÜ,ØDÄTÐJZÓE[ÐD\Ð]óð ð .×;Ñ;�Fà—^‘^ AÓ&ˆ
ØÐ!ØÐà�>Š>Ü0Ð1PÓQÐQÜ�‹7”e—h‘h×(Ñ(Ñ(ÙÜ$Ð%SÓTÐTá%‘1¨4ˆð
	Ø-ð	Ø7Ið	àö	ð, ×!Ñ!ØØØ#ØØ-Øð "ó 
ˆð ”.Ñ Ü0Ð1EÓFÐFô ˜!œU×.Ñ.×@Ñ@×QÑQÔRô ×)Ñ)¨!¯&©&Ô1àð 	ð ×!Ò!Ø—’Ø×"Ñ" g§m¡mÒ3Ø—’à$×/Ñ/ˆCŒNå:àˆà—“Ü  Õ#Ø—‘“˜1“Ø—‘—‘ Ó&ð —‘Ü—‘œUŸ[™[¬%¯+©+´u·z±zÄ5Ç=Á=ÐQòRàÑ"ô$ ˜vÐ'8Õ9ð Ñ%çTÝHä“ñ !ØŸ™›�÷!ä—:‘:˜eÔ$¬T¯Z©Z¸Ô->ä˜fÐ&7Ô8Ø"(§+¡+‘Ká"6°vÓ">�KØ"×<Ñ<ØØ&Ø *× 2Ñ 2Ø%5ð	 =ó �ð —7‘7œeŸk™kÒ)Ø$-×$?Ñ$?ØØ"Ø*ð %@ó %�C•Mð
 —W‘W¤§¡Ò-Ø$-×$AÑ$AØØ"Ø*ð %Bó %�C”Mñ
 Ø×-Ñ-¨cÔ2àˆ
÷?!ð !ús   ÊNÎNc                óì   — |j                   j                  dk7  r#t        d|j                   j                  › d�«      ‚| j                  |«      }|�|S t	        |||||¬«      }| j                  ||«       |S )NÚmetaz$tensor's device must be `meta`, got z instead)ÚpytypeÚdispatch_keys)r‡   rÍ   rÏ   r$  rÌ   r'  )rt   r±   rá   r‡   re  rf  r]  rÁ   s           r`   Úfrom_meta_and_devicez(FakeTensorConverter.from_meta_and_devicel  s}   € ð �8‰8�=‰=˜FÒ"Ü Ø6°q·x±x·}±}°oÀXÐNóð ð
 —^‘^ AÓ&ˆ
ØÐ!ØÐÜØ�q˜&¨¸}ô
ˆð 	×Ñ˜Q Ô$Øˆ
r_   )rz   zRweakref.WeakValueDictionary[torch._subclasses.meta_utils.MetaTensorId, FakeTensor])r
  r  r  r  rz   r{   )r  rÌ   rz   r{   )r  r   rz   r{   ry   )rá   r   rz   úFakeTensor | None)rá   r   rÚ   rÌ   rz   r{   )FN)r±   r®   rá   r   r[  r  r1  úShapeEnv | Noner(  úSource | Noner)  úSymbolicContext | Noner*  r  rz   rÌ   )NN)r±   r®   rá   r   r‡   rŠ   re  ztype[torch.Tensor] | Nonerf  útorch.DispatchKeySet | Nonerz   rÌ   )rZ   r[   r\   Úpropertyr  r]   ru   r  r  r  r$  r'  rb  rg  r^   r_   r`   r  r  j  s  … Øð/ð
ò/ó ð/ð .Ó-ØSÓSØƒLà,1À%õ +óPó3ó";ó*)ó1ð $Ø%)ðfð !%Ø37Øñfà!ðfð ðfð ð	fð
 #ðfð ðfð 1ðfð ðfð 
ófð\ -1Ø59ðà!ðð ðð ð	ð
 *ðð 3ðð 
ôr_   r  c                óî   — t         j                  j                  d«      | j                  k(  rIt         j                  j
                  €t        j                  d| ¬«      nt        j                  d| ¬«       y y )NTr5   ©r‡   )rh   ÚacceleratorÚcurrent_acceleratorrÍ   ÚversionÚhipÚemptyÚzerosro  s    r`   Úinit_gpu_contextrv  „  sX   € ô ×Ñ×,Ñ,¨TÓ2°f·k±kÒAô �}‰}× Ñ Ð(ô �K‰K˜ &Õ)ä—‘˜Q vÔ.ùð	 Br_   c              #  óÔ  K  — | j                   }t        j                  j                  «       }||k7  rt	        |› d|› �«      ‚t        j                  j                  «       5  d| _         t        j                  j                  «       5  t        j                  j                  d«       	 d –— || _         	 d d d «       d d d «       y # || _         w xY w# 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)Nú, T)Úin_kernel_invocationrh   ri   Ú_meta_in_tls_dispatch_includerÏ   Ú_DisableTorchDispatchÚ_PreserveDispatchKeyGuardÚ!_set_meta_in_tls_dispatch_include)r±   Úprev_in_kernelÚmeta_in_tlss      r`   Úin_kernel_invocation_managerr€  �  sÕ   è ø€ ð
 ×3Ñ3€NÜ—(‘(×8Ñ8Ó:€KØ�nÒ$Ü ˜}¨B¨~Ð.>Ð?Ó@Ð@ä	�‰×	'Ñ	'Ó	)ñ 	@Ø)-ˆ	Ô&ô �X‰X×/Ñ/Ó1ñ 	@Ü�H‰H×6Ñ6°tÔ<ð@Ûà1?�	Õ.÷	@÷		@ð 	@øð 2@�	Õ.ú÷	@ð 	@ú÷		@ð 	@üsN   ‚AC(Á &CÂ CÂ'CÂ+CÂ3CÂ;	C(Ã	CÃCÃC	ÃCÃC%Ã!C(c                ó¤   — t         j                  j                  | j                  «       j	                  d«      d   j	                  d«      d   «      S )Nz::éÿÿÿÿú.r   )rh   ri   Ú _should_allow_numbers_as_tensorsÚnameÚsplitré   s    r`   Úshould_allow_numbers_as_tensorsr‡  §  sB   € Ü�8‰8×4Ñ4Ø�	‰	‹×Ñ˜$Ó Ñ#×)Ñ)¨#Ó.¨qÑ1óð r_   c                  óJ   — e Zd Zej                  j                  dd«      dk(  Zy)ÚFakeTensorConfigÚTORCH_FAKE_TENSOR_DEBUGÚ0Ú1N)rZ   r[   r\   ÚosÚenvironr"  Údebugr^   r_   r`   r‰  r‰  ­  s   „ Ø�J‰J�N‰NÐ4°cÓ:¸cÑA�Er_   r‰  c                  óz   — e Zd ZU ded<   ded<   ddœdd„Zdd„Zdd	„Zdd
„Zdd„Z	 d	 	 	 	 	 dd„Z		 	 	 	 	 	 dd„Z
y)ÚSymNumberMemoDescriptorr~   Ú_namer  Ú_is_nested_intF©Úis_nested_intc               ó   — || _         y rž   )r“  )rt   r•  s     r`   ru   z SymNumberMemoDescriptor.__init__Æ  s
   € Ø+ˆÕr_   c                ó   — || _         y rž   ©r’  )rt   Úownerr…  s      r`   Ú__set_name__z$SymNumberMemoDescriptor.__set_name__É  s	   € Øˆ�
r_   c                ó    — d| j                   › �S )NrÄ   r˜  ©rt   Úobjs     r`   Ú_memozSymNumberMemoDescriptor._memoÌ  s   € Ø�4—:‘:�,ÐÐr_   c                ó"   — d| j                   › d�S )NrÄ   Ú_vcr˜  rœ  s     r`   Ú_memo_vcz SymNumberMemoDescriptor._memo_vcÏ  s   € Ø�4—:‘:�,˜cÐ"Ð"r_   c                ó"   — d| j                   › d�S )NrÄ   Ú_epochr˜  rœ  s     r`   Ú_memo_epochz#SymNumberMemoDescriptor._memo_epochÖ  s   € Ø�4—:‘:�,˜fÐ%Ð%r_   Nc                óÄ  — t        || j                  |«      «      x}€y t        |t        j                  «      r|j
                  j                  �|S | j                  s(t        || j                  |«      «      |j                  k7  s>| j                  sOt        || j                  |«      «      |j                  j                  k7  rt        || j                  |«      d «       y |S rž   )r¶   rž  rË   rh   r   Únoder8  r“  r¡  Ú_versionr¤  r±   ÚepochÚsetattr)rt   r�  ÚobjtypeÚrs       r`   Ú__get__zSymNumberMemoDescriptor.__get__Ù  s²   € ô ˜˜dŸj™j¨›oÓ.Ð.ˆAÐ7Øô �aœŸ™Ô(¨Q¯V©V¯[©[Ð-DØˆHð
 ×#Ò#¬°°T·]±]À3Ó5GÓ(HÈCÏLÉLÒ(Xà×#Ò#Ü˜˜T×-Ñ-¨cÓ2Ó3°s·}±}×7JÑ7JÒJä�C˜Ÿ™ C›¨$Ô/ØØˆr_   c                óè  — |€Ut        || j                  |«      d «       t        || j                  |«      d «       t        || j                  |«      d «       y |j	                  «       r| j
                  rt        || j                  |«      |«       | j
                  s&t        || j                  |«      |j                  «       t        || j                  |«      |j                  j                  «       y y rž   )	r©  rž  r¡  r¤  Úis_inferencer“  r§  r±   r¨  )rt   r�  r_  s      r`   Ú__set__zSymNumberMemoDescriptor.__set__ï  s¹   € ð
 ˆ=Ü�C˜Ÿ™ C›¨$Ô/Ü�C˜Ÿ™ sÓ+¨TÔ2Ü�C˜×)Ñ)¨#Ó.°Õ5Ø×!Ñ!Ô# t×':Ò':Ü�C˜Ÿ™ C›¨%Ô0Ø×&Ò&Ü˜˜TŸ]™]¨3Ó/°·±Ô>Ü�C˜×)Ñ)¨#Ó.°·±×0CÑ0CÕDð	 (;r_   )r•  r  rz   r{   )r™  r~   r…  r~   rz   r{   )r�  rÌ   rz   r~   rž   )r�  rÌ   rª  ztype[FakeTensor] | Nonerz   z$torch.SymInt | torch.SymFloat | None)r�  rÌ   r_  zBtorch.SymInt | torch.SymFloat | torch.SymBool | int | float | Nonerz   r{   )rZ   r[   r\   r]   ru   rš  rž  r¡  r¤  r¬  r¯  r^   r_   r`   r‘  r‘  ¼  su   … ØƒJð Óà05õ ,óó ó#ó&ð CGðØðØ(?ðà	-óð,EàðEð RðEð 
ô	Er_   r‘  c                  ó|  ‡ — e Zd ZU dZded<   ded<   ded<   ded<    e«       Zd	ed
<    e«       Z e«       Zd	ed<    e«       Z	d	ed<    ed¬«      Z
ded<   ded<   ej                  j                  j                  Zed%d„«       Zej$                  d&d„«       Zed%d„«       Zej$                  d'd„«       Zed(d„«       Ze	 	 	 	 	 	 	 d)ddddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d*d„«       Zd+ˆ fd„Zed,d„«       Zeed e«       f	 	 	 	 	 	 	 	 	 d-d„«       «       Ze	 	 	 	 	 	 d.d „«       Zd!d"œ	 	 	 d/d#„Zd0d$„Zˆ xZ S )1rÌ   al  
    Meta tensors give you the ability to run PyTorch code without having to
    actually do computation through tensors allocated on a `meta` device.
    Because the device is `meta`, meta tensors do not model device propagation.
    FakeTensor extends MetaTensors to also carry an additional `fake_device`
    which tracks devices that would have been used.
    rŠ   Ú_fake_devicer®   r±   úTensor | Noner  Úreal_tensorz$SymNumberMemoDescriptor | int | NoneÚnonzero_memoÚunique_memoÚunique_consecutive_memoTr”  útype[Tensor] | Nonere  rl  rf  c                óp   — | j                   j                  rt        j                  d«      S | j                  S ©Nrd  )r±   ry  rh   r‡   Úfake_devicers   s    r`   r‡   zFakeTensor.device&  s,   € ð �>‰>×.Ò.Ü—<‘< Ó'Ð'à×#Ñ#Ð#r_   c                ó   — t         ‚rž   )ÚNotImplementedError)rt   rÄ   s     r`   r‡   zFakeTensor.device.  s   € ä!Ð!r_   c                ó   — | j                   S rž   )r±  rs   s    r`   rº  zFakeTensor.fake_device2  s   € à× Ñ Ð r_   c                ó0   — | j                  |«      | _        y rž   )Ú_normalize_fake_devicer±  )rt   r‡   s     r`   rº  zFakeTensor.fake_device6  s   € à ×7Ñ7¸Ó?ˆÕr_   c                óÄ  — | j                   dv rt        | «       t        | j                   «      r±| j                  €¥| j                   dk7  rtt	        t
        | j                   «      j                  «       rLt        j                  | j                   › dt	        t
        | j                   «      j                  «       › �«      } | S t        j                  | j                   › d�«      } | S )zFNormalize device by initializing GPU context and setting device index.)rc   re   rf   ú:z:0)	rÍ   rv  rl   Úindexr¶   rh   Úis_initializedr‡   Úcurrent_devicero  s    r`   r¿  z!FakeTensor._normalize_fake_deviceI  s«   € ð �;‰;˜/Ñ)Ü˜VÔ$ä" 6§;¡;Ô/°F·L±LÐ4HØ�{‰{˜eÒ#¬´°v·{±{Ó(C×(RÑ(RÔ(TÜŸ™Ø—{‘{�m 1¤W¬U°F·K±KÓ%@×%OÑ%OÓ%QÐ$RÐSó�ð
 ˆô Ÿ™¨¯©¨°RÐ&8Ó9�Øˆr_   NF)r±   rº  r±  rF  Ú	_is_paramc               ó¦  — t        t        t        t        f   |«      }t        D ]  }|j                  |d «       Œ |r"t        t        |«      «      }t        d|›�«      ‚t        |t        «      r|�||urt        d«      ‚|}nE|�6t        |t        «      st        dt        |«      › �«      ‚|�t        d«      ‚|}|€t        d«      ‚|€t        d«      ‚d|fd|	fd	|
ffD ��cg c]1  \  }}|�*|t        j                  t        j                   |«      «      f‘Œ3 }}}|r4|d
   \  }}|dd  D ]!  \  }}||k7  sŒt#        d|› d|› d|› d|› �«      ‚ |}nt        d«      ‚t        j$                  | ||€|j&                  n|d|¬«      }|j(                  s t        j*                  j-                  |«       nt        j*                  j/                  |«       |j                   j                  dk7  r"t1        d|j                   j                  › �«      ‚|j2                  s|j                  dk(  rt1        d«      ‚||_        ||_        ||_        ||_        ||_        t        |t        «      rt1        d«      ‚||_        d |_         d |_!        d |_"        d |_#        d |_$        |r||_%        tL        jN                  rtQ        jR                  «       |_*        |S c c}}w )Nz8FakeTensor.__new__() got an unexpected keyword argument z5FakeTensor.__new__() got conflicting fake_mode valueszTFakeTensor.__new__() expected a FakeTensorMode or Tensor as the first argument, got zYFakeTensor.__new__() expected either (fake_mode, elem, ...) or (elem, fake_mode=..., ...)z;FakeTensor.__new__() missing required argument: 'fake_mode'z6FakeTensor.__new__() missing required argument: 'elem'r‡   rº  r±  r   r5   z4FakeTensor.__new__() got conflicting device values: ú=rx  zKFakeTensor.__new__() missing required argument: 'device' (or 'fake_device')T)Údispatch_deviceÚdevice_for_backend_keysrd  z%elem.device.type must be 'meta', got z7device.type must not be 'meta' when allow_meta is Falsez$real_tensor must not be a FakeTensor)+r   r£   r~   rH   Ú,_FAKE_TENSOR_CONSTRUCTOR_IGNORED_STATE_ATTRSr»   ÚnextÚiterÚ	TypeErrorrË   r®   r   rÍ   rÌ   r¿  rh   r‡   Ú
ValueErrorÚ_make_subclassrF  Ú_allow_unsafe_data_ptr_accessri   Ú_set_throw_on_mutable_data_ptrÚ(_set_warn_deprecated_on_mutable_data_ptrrÏ   Ú
allow_metarº  r±   r  re  rf  r³  r´  rY  rµ  r¶  Únested_int_memorÅ  r‰  r�  r4   ÚextractrX   )ÚclsÚfake_mode_or_elemrÐ   r‡   r  r³  re  rf  r±   rº  r±  rF  rÅ  ÚstateÚ
state_dictÚ	attr_namerÜ   r…  r_  Úspecified_devicesÚ
first_nameÚresolved_deviceÚcandidate_devicert   s                           r`   Ú__new__zFakeTensor.__new__X  sD  € ô$ œ$œs¤F˜{Ñ+¨UÓ3ˆ
ÜEò 	,ˆIØ�N‰N˜9 dÕ+ð	,áÜœd :Ó.Ó/ˆJÜØJØ�.ð"óð ô
 Ð'¬Ô8ØÐ$¨Ð:KÑ)KÜÐ WÓXÐXØ)‰Ið !Ð,Ü!Ð"3´VÔ<Ü#ð6Ü6:Ð;LÓ6MÐ5NðPóð ð Ð#Ü#ðOóð ð )�ØÐ ÜØQóð ð ˆ<ÜÐTÓUÐUð
 ˜6Ð"Ø Ð,Ø Ð.ð ÷
á��eð
 Ð ð ”:×4Ñ4´U·\±\À%Ó5HÓIÒJð
Ðñ 
ñ Ø*;¸AÑ*>Ñ'ˆJ˜Ø*;¸A¸BÐ*?ò Ñ&�Ð&Ø"Ð&6Ó6Ü$ØNØ%˜, a¨Ð'8¸¸4¸&ÀÐBRÐASðUóð ðð %‰Fäð.óð ô
 ×$Ñ$ØØØ"/Ð"7ˆD×Ò¸]Ø Ø$*ô
ˆð ×6Ò6Ü�H‰H×3Ñ3°DÕ9ä�H‰H×=Ñ=¸dÔCà�;‰;×Ñ˜vÒ%Ü Ø7¸¿¹×8HÑ8HÐ7IÐJóð ð ×#Ò#Ø�{‰{˜fÒ$Ü$ØMóð ð "ˆÔØ"ˆŒØ ˆŒØˆŒØ*ˆÔÜ�k¤:Ô.Ü Ð!GÓHÐHØ&ˆÔØ ˆÔØˆŒØˆÔØ'+ˆÔ$Ø#ˆÔáØ&ˆDŒNä×!Ò!Ü 1× 9Ñ 9Ó ;ˆDÔØˆùóO
s   Ã#6Kc                óè   •— t         ‰| �  «        t        j                  j	                  «       rEt        j
                  j                  j                  r t        j                  j                  | «       y y y rž   )rˆ   ru   rh   ÚcompilerÚis_exportingÚ_exportÚconfigÚ#detect_non_strict_fake_tensor_leaksÚfake_tensor_tlsrœ   Úadd)rt   ÚargsÚkwargsr‰   s      €r`   ru   zFakeTensor.__init__ê  sP   ø€ Ü‰ÑÔä�N‰N×'Ñ'Ô)Ü—‘×$Ñ$×HÒHä×AÑA×EÑEÀdÕKð Ið *r_   c                ó$   — |j                  | «      S rž   )Úfrom_tensor)rá   r±   s     r`   rë  zFakeTensor.from_tensorò  s   € à×$Ñ$ QÓ'Ð'r_   r^   c                óÆ  — |t         j                  j                  j                  j                  u rit        |«      dk7  st        |d   t        «      st        d«      ‚|d   j                  j                  rt        j                  d«      S |d   j                  S t        j                  |«      x}r ||«      S |D �cg c]  }t        |t        «      rŒ|t        usŒ|‘Œ  }}|rt         j#                  d|«       t$        S d }t'        j(                  |i |¤ŽD ]   }	t        |	t        «      sŒ|	j                  } n |€t        d«      ‚t         j*                  j-                  t         j*                  j.                  j0                  «      }
|
rt         j#                  d||
«       t$        S |j                  rt        d«      ‚|5   ||i |¤Žcd d d «       S c c}w # 1 sw Y   y xY w)	Nr5   r   z@Expected exactly one FakeTensor argument for prim.device.defaultrd  z(FakeTensor unrecognized subclass(es): %sz,Could not find a FakeTensor in the argumentsz(FakeTensor mode already active: %s in %sz,fake_mode.in_kernel_invocation must be False)rh   ÚopsÚprimr‡   ÚdefaultÚlenrË   rÌ   rÏ   r±   ry  rº  Ú_DISPATCH_META_HANDLERSr"  Ú
issubclassr   Únot_implemented_logr�  rB  rõ   Úarg_tree_leavesri   Ú_get_dispatch_moder©   rª   )rÖ  r…   Útypesrè  ré  Úhandlerrá   Úunrecognized_typesr±   ÚargÚmaybe_cur_fake_modes              r`   Ú__torch_dispatch__zFakeTensor.__torch_dispatch__ö  sÍ  € ð ”5—9‘9—>‘>×(Ñ(×0Ñ0Ñ0Ü�4‹y˜AŠ~¤Z°°Q±¼Ô%DÜ$ØVóð ð �A‰w× Ñ ×5Ò5Ü—|‘| FÓ+Ð+à˜A‘w×*Ñ*Ð*ô .×1Ñ1°$Ó7Ð7ˆ7Ð7Ù˜4“=Ð ð ö
Ø¤J¨q´*Õ$=À!Ì6Â/ŠAð
Ðð 
ñ Ü×%Ñ%Ø:Ð<Nôô "Ð!àˆ	Ü×)Ñ)¨4Ð:°6Ñ:ò 	ˆCÜ˜#œzÕ*ØŸM™M�	Ùð	ð
 ÐÜ Ð!OÓPÐPô $Ÿh™h×9Ñ9Ü�H‰H×*Ñ*×/Ñ/ó
Ðñ Ü×%Ñ%Ø:ØØ#ôô
 "Ð!à×)Ò)Ü Ð!OÓPÐPàñ 	)Ù˜Ð( Ñ(÷	)ñ 	)ùòO
÷N	)ð 	)ús   Â=GÃGÃGÇ GÇG c           
     ó¸  ‡ ‡‡‡‡‡	‡
‡‡— d Šd}d Št        t        j                  j                  «      Št        t        j                  j
                  «      Št        t        j                  j                  «      Šd	d„Š	d	d„Š
d
ˆ	fd„Šdˆˆˆˆ ˆˆ	ˆ
ˆˆf	d„}|D ]
  } ||«       Œ t        ‰ «      r‰€d}t        j                  d«      Š‰€t        d‰ › �«      ‚‰|fS )NFc                ó    — | j                   dk(  S )Nr  ©rÍ   ro  s    r`   Úis_device_cpuz5FakeTensor._find_common_device.<locals>.is_device_cpuc  s   € Ø—;‘; %Ñ'Ð'r_   c                ó    — | j                   dk(  S r¹  rþ  ro  s    r`   Úis_device_metaz6FakeTensor._find_common_device.<locals>.is_device_metaf  s   € Ø—;‘; &Ñ(Ð(r_   c                óR   •—  ‰| j                   «      xr | j                  «       dk(  S ©Nr   )r‡   rK  )rá   rÿ  s    €r`   Úcpu_zero_dimz4FakeTensor._find_common_device.<locals>.cpu_zero_dimi  s!   ø€ Ù  §¡Ó*Ò;¨q¯u©u«w¸!©|Ð;r_   c                óR  •	— t        | t        «      sy ‰€| j                  Š ‰| «      Š
y  ‰| «      }| j                  ‰k(  r‰
r|Š
y ‰	‰v }|r|sy ‰
r|s| j                  Š|Š
y ‰	‰v r"t        t	        ‰‰| j                  f«      «      ry ‰	‰v r"t        t	        ‰‰| j                  f«      «      ry t
        j                  j                  j                  }|�>|‰j                  v }|| j                  j                  v }|s|r| j                  Š|Š
y |r|sy t        ‰	‰| j                  «      ‚rž   )rË   rÌ   r‡   ÚanyÚmaprh   rÓ   rä  Úfake_tensor_prefer_device_typerÍ   r‚   )rá   Út_is_cpu_zero_dimÚ&is_bypass_zero_dim_cpu_tensor_check_opÚprefer_device_typeÚcommon_has_preferredÚt_has_preferredÚ$bypass_zero_dim_cpu_tensor_check_opsr†   r  r…   Úis_cpu_zero_dimrÿ  r  Úmeta_rhs_mixed_device_fnsÚmixed_device_fnss         €€€€€€€€€r`   Úmerge_devicesz5FakeTensor._find_common_device.<locals>.merge_devicesl  sB  ø€ ô ˜a¤Ô,ØàÐ$Ø !§¡�Ù".¨q£/�Øá ,¨Q£ÐØ�x‰x˜=Ò(Ù"Ø&7�OØð Ð<Ð<ð 3ñ !Ñ)OØñ Ñ'MØ !§¡�Ø"3�Øð Ð'Ñ'Ü”s˜=¨=¸!¿(¹(Ð*CÓDÔEØàÐ0Ñ0Ü”s˜>¨M¸1¿8¹8Ð+DÓEÔFØô "'×!1Ñ!1×!8Ñ!8×!WÑ!WÐØ!Ð-Ø'9¸]×=OÑ=OÐ'OÐ$Ø"4¸¿¹¿¹Ð"E�á+±à$%§H¡H�MØ&7�OØÙ)±/àô 0°°mÀQÇXÁXÓNÐNr_   Tr  z!Could not find common device for )r‡   rŠ   rz   r  ©rá   r   rz   r  )rá   rH   rz   r{   )r¦   ÚatenÚ_foreach_copyrï  Úadd_r   Ú	nextafterr‡  rh   r‡   rÏ   )r…   Ú	flat_argsÚhas_scalar_only_inputsr  rù  r  r†   r  r  rÿ  r  r  r  s   `    @@@@@@@@r`   Ú_find_common_devicezFakeTensor._find_common_deviceF  sã   ÿø€ ð ˆØ!&ÐØˆô 'Ü×Ñ×&Ñ&ó
Ðô %0Ü�I‰I×Ñó%
Ð!ô
 0;Ü�N‰N×"Ñ"ó0
Ð,ó	(ó	)õ	<÷=	Oõ =	Oð~ ò 	ˆCÙ˜#Õð	ô +¨4Ô0°]Ð5Jà%)Ð"Ü!ŸL™L¨Ó/ˆMàÐ Ü Ð#DÀTÀFÐ!KÓLÐLàÐ4Ð4Ð4r_   r5   )Úcoeffc               ó  — | j                   €!| j                  j                  d ¬«      | _         t        | j                   t        j
                  «      s!t        dt        | j                   «      › �«      ‚| j                   |z  S )N©Únt_tensor_idz1Expected nested_int_memo to be torch.SymInt, got )rÔ  r±   Úcreate_symbolic_nested_intrË   rh   r   rÏ   rÍ   )rt   r  s     r`   Úget_nested_intzFakeTensor.get_nested_int»  s|   € ð
 ×ÑÐ'Ø#'§>¡>×#LÑ#LØ!ð $Mó $ˆDÔ ô ˜$×.Ñ.´·±Ô=Ü ØCÄDÈ×I]ÑI]ÓD^ÐC_Ð`óð ð ×#Ñ# eÑ+Ð+r_   c                óú   — | j                  «       dk(  r| j                  «       S | j                  «       dk(  r| D �cg c]  }|j                  «       ‘Œ c}S | D �cg c]  }|j                  «       ‘Œ c}S c c}w c c}w ©Nr   r5   )rK  rQ  Útolist)rt   rÐ   s     r`   r#  zFakeTensor.tolistË  s^   € Ø�8‰8‹:˜Š?Ø—9‘9“;ÐØ�X‰X‹Z˜1Š_Ø,0Ö1 D�D—I‘I•KÒ1Ð1à.2Ö3 d�D—K‘K•MÒ3Ð3ùò 2ùâ3s   »A3ÁA8)rz   rŠ   )rÄ   rŠ   rz   r{   ©r‡   rŠ   rz   r{   )r‡   rŠ   rz   rŠ   )NNNNNNN)r×  zFakeTensorMode | Tensor | NonerÐ   r²  r‡   útorch.device | str | Noner  r²  r³  r²  re  r·  rf  rl  r±   úFakeTensorMode | Nonerº  r%  r±  r%  rF  rš   rÅ  r  rØ  z*Unpack[_FakeTensorConstructorIgnoredState]rz   r   )rè  rH   ré  rH   rz   r{   )rá   r   r±   r®   rz   rÌ   ©
r…   r@   rö  úSequence[type]rè  úSequence[object]ré  úMapping[str, object]rz   rH   )r…   r@   r  r)  rz   ztuple[torch.device, bool])r  zint | torch.SymIntrz   ztorch.SymInt)rz   r   )!rZ   r[   r\   Ú__doc__r]   r‘  r´  rY  rµ  r¶  rÔ  rh   ri   r©   rª   Ú	_mode_keyrm  r‡   Úsetterrº  Ústaticmethodr¿  rß  ru   rë  Úclassmethodr3   r#   rû  r  r   r#  r‹   rŒ   s   @r`   rÌ   rÌ   ÿ  s§  ø… ñð ÓØÓØÓØÓñ
 :QÓ9R€LÐ6ÓRÙ'Ó)€IÙ8OÓ8Q€KÐ5ÓQáÓ!ð ÐAó ñ .¸DÔA€Oð
  ÓØ.Ó.ð —‘×.Ñ.×3Ñ3€Iàò$ó ð$ð ‡]�]ò"ó ð"ð ò!ó ð!ð ×Ñò@ó ð@ð$ òó ðð ð =AØ"Ø,0Ø"&Ø%)Ø&*Ø59ð}ð ,0Ø15Ø26Ø%)Øñ}à9ð}ð ð}ð *ð	}ð
  ð}ð #ð}ð $ð}ð 3ð}ð )ð}ð /ð}ð 0ð}ð #ð}ð ð}ð <ð}ð  
ò!}ó ð}õbLð ò(ó ð(ð Ø
ð
 "$Ù'5Ó'7ðL)àðL)ð ðL)ð ð	L)ð
 %ðL)ð 
òL)ó ó ðL)ð\ ðr5Øðr5Ø%5ðr5à	"òr5ó ðr5ðn %&ñ,ð "ð,ð 
ó	,÷ 4r_   rÌ   r7   r8   T)Úslotsc                  óÔ   — e Zd ZU dZded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   	 	 	 	 	 	 	 	 dd„Zy) ÚTensorMetadatazK
    The Tensor metadata relevant to hashing FakeTensors when caching.
    ztorch.dtyperI  ztuple[_MetadataIntLike, ...]ÚshapeÚstriderŠ   r‡   ztorch.layoutrü   ztorch.memory_format | NoneÚmemory_formatÚ_MetadataIntLikeÚstorage_offsetz_MetadataIntLike | NoneÚstorage_bytesr  rF  r?  Úis_conjÚis_negr®  rþ   rš   Úis_coalescedú
int | NoneÚ	dense_dimÚ
sparse_dimc                ód  — t        j                  | «      D ]˜  }t        | |j                  «      }t	        |t
        t        t        j                  f«      r'g }|j                  ||||«       |j                  «        Œet	        |t        «      r|j                  ||«       Œˆ|j                  |«       Œš y rž   )ÚdataclassesÚfieldsr¶   r…  rË   Útupler  rh   ÚSizeÚ_prep_args_for_hashÚclearr   Úconvert_sym_intr¼   )rt   Úresultrã   rØ  Úfieldr_  Úid_hashed_objectss          r`   Ú_flatten_intozTensorMetadata._flatten_intoï  s’   € ô !×'Ñ'¨Ó-ò 	%ˆEÜ˜D %§*¡*Ó-ˆEÜ˜%¤%¬¬u¯z©zÐ!:Ô;ð 35Ð!Ø×(Ñ(¨°¸Ð?PÔQØ!×'Ñ'Õ)Ü˜E¤6Ô*Ø×%Ñ% f¨eÕ4à—‘˜eÕ$ñ	%r_   N)rG  úlist[object]rã   r®   rØ  r6   rz   r{   )rZ   r[   r\   r+  r]   rJ  r^   r_   r`   r2  r2  ×  s—   … ñð ÓØ'Ó'Ø(Ó(ØÓØÓØ-Ó-Ø$Ó$Ø*Ó*ØÓØÓØƒMØƒLØÓØƒOØÓØÓØÓð%àð%ð ð%ð ð	%ð
 
ô%r_   r2  c                óü  — t        | «      }| j                  st        | «      s| j                  |¬«      sd}| j	                  «       }t        | j                  | j                  | j                  t        j                  k(  r| j                  «       nd| j                  | j                  ||t        | «      s| j                  «       j                  «       nd| j                  | j                   | j#                  «       | j%                  «       | j'                  «       | j(                  | j(                  r| j+                  «       ndt        | «      r| j-                  «       ndt        | «      r| j/                  «       «      S d«      S )z1
    Extract the TensorMetadata of a tensor.
    )r5  Nr^   )r   Ú_has_symbolic_sizes_stridesr   Úis_contiguousr7  r2  rI  r3  rü   rh   rý   r4  r‡   Úuntyped_storageÚnbytesrF  r?  r9  r:  r®  rþ   r;  r=  r>  )rá   r5  r7  s      r`   Úextract_tensor_metadatarQ    s  € ô *¨!Ó,€Mð 	
×%Ò%Ü˜ÔØ�‰¨]ˆÔ;àˆà×%Ñ%Ó'€NäØ	�‰Ø	�‰Ø—h‘h¤%§-¡-Ò/ˆ�‰Œ
°RØ	�‰Ø	�‰ØØä,9¸!Ô,<ˆ×ÑÓ×"Ñ"Ô$À$Ø	�‰Ø	�‰Ø	�	‰	‹Ø	�‰‹
Ø	�‰ÓØ	�‰ØŸKšKˆ�‰Ô¨TÜ& qÔ)ˆ�‰Œ¨tÜ'¨Ô*ˆ�‰‹ó%ð ð$ 15ó%ð r_   c                  óF   — e Zd ZU dZded<   ded<   dd„Zdd„Zdd„Zdd	„Zy
)Ú_DispatchCacheKeyz0
    Key for the FakeTensor dispatch cache.
    útuple[object, ...]r¸   ÚintÚ	hashvaluec                ó2   — || _         t        |«      | _        y rž   )r¸   ÚhashrV  )rt   Útups     r`   ru   z_DispatchCacheKey.__init__4  s   € ØˆŒÜ˜c›ˆ�r_   c                óX   — t        |t        «      xr | j                  |j                  k(  S rž   )rË   rS  r¸   )rt   Úothers     r`   Ú__eq__z_DispatchCacheKey.__eq__8  s"   € Ü˜%Ô!2Ó3ÒM¸¿¹ÀEÇIÁIÑ8MÐMr_   c                ó   — | j                   S rž   )rV  rs   s    r`   Ú__hash__z_DispatchCacheKey.__hash__;  s   € Ø�~‰~Ðr_   c                óh   — | j                   D ]#  }t        |t        «      sŒ|j                  «        Œ% y rž   )r¸   rË   r7   Ústrip_shape_env)rt   rÚ   s     r`   r`  z!_DispatchCacheKey.strip_shape_env>  s-   € ð —‘ò 	$ˆAÜ˜!œ_Õ-Ø×!Ñ!Õ#ñ	$r_   N)rY  rT  rz   r{   )r[  rH   rz   r  )rz   rU  ry   )	rZ   r[   r\   r+  r]   ru   r\  r^  r`  r^   r_   r`   rS  rS  +  s)   … ñð 
ÓØƒNó#óNóô$r_   rS  c                  ó   — e Zd Zy)ÚSingletonConstantN)rZ   r[   r\   r^   r_   r`   rb  rb  H  s   „ Ør_   rb  )Úfrozenr0  c                  ó>   — e Zd ZU dZded<   ded<   ded<   eZded<   y	)
Ú_DispatchCacheEntryOutputInfoa½  
    Entry type for the FakeTensor dispatch cache for an output. Accounts for three
    possibilities:
    1) The op is inplace, and a hit means we need to alias the argument at a
       given index.
    2) We need to synthesize a new FakeTensor given tensor metadata. For view
       ops, we further capture the index of the arg to alias.
    3) if the tensor related fields are None, then it is a constant value (e.g.
    None or integer)
    r<  Úinplace_idxzTensorMetadata | NoneÚmetadataÚview_idxz
Any | NoneÚconstant_valueN)rZ   r[   r\   r+  r]   rb  ri  r^   r_   r`   re  re  L  s%   … ñ	ð ÓØ#Ó#ØÓØ!2€N�JÔ2r_   re  c                  ó*   — e Zd ZU dZded<   dZded<   y)Ú_DispatchCacheValidEntryzÁ
    Entry type for the FakeTensor dispatch cache. It supports two types of outputs
    1) tensor
    2) tuple of tensors

    is_output_tuple flag helps in differentiating the return type
    z$tuple[_DispatchCacheEntryOutputInfo]Úoutput_infosFr  Úis_output_tupleN)rZ   r[   r\   r+  r]   rm  r^   r_   r`   rk  rk  _  s   … ñð 7Ó6Ø!€O�TÔ!r_   rk  c                  ó   — e Zd ZU dZded<   y)Ú_DispatchCacheBypassEntryz0
    Entry type for a negative cache entry.
    r~   r   N©rZ   r[   r\   r+  r]   r^   r_   r`   ro  ro  m  ó   … ñð „Kr_   ro  c                  ó   — e Zd ZU dZded<   y)Ú_BypassDispatchCachez<
    Signals cases that should skip FakeTensor caching.
    r~   r   Nrp  r^   r_   r`   rs  rs  z  rq  r_   rs  c                  ó:   — e Zd ZU dZded<   ded<   ded<   ded<   y)	ÚDispatchCacheInfozG
    Information about the state of the FakeTensor dispatch cache.
    rU  ÚhitsÚmissesúdict[str, int]ÚbypassesÚsizeNrp  r^   r_   r`   ru  ru  ƒ  s   … ñð ƒIØƒKØÓØ
„Ir_   ru  c                  óü  ‡ — e Zd ZU i Zded<   dZded<   dZded<    ee«      Z	ded<   dZ
ded	<   d
Zded<   ded<   ded<   ded<   ded<   dZded<   dZded<   dd
ddd
dœ	 	 	 	 	 	 	 	 	 	 	 dEˆ fd„ZdFd„ZdGd„ZedHd„«       ZedId„«       Zed e«       f	 	 	 	 	 	 	 	 	 dJd„«       ZdKˆ fd „Z	 	 	 	 	 	 	 	 dLˆ fd!„ZedHd"„«       ZedMd#„«       ZedFd$„«       Z	 	 	 	 	 	 	 	 	 	 dJd%„Z	 	 	 	 	 	 	 	 	 	 dNd&„Z	 	 	 	 	 	 	 	 dOd'„Z	 	 	 	 	 	 	 	 	 	 dPd(„Z 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dQd)„Z!	 	 	 	 	 	 	 	 	 	 	 	 	 	 dRd*„Z"	 	 	 	 	 	 	 	 	 	 	 	 	 	 dSd+„Z#	 	 	 	 	 	 	 	 	 	 	 	 dTd,„Z$	 	 	 	 	 	 	 	 	 	 	 	 dUd-„Z%	 	 	 	 	 	 	 	 	 	 	 	 dVd.„Z&d e«       f	 	 	 	 	 	 	 	 	 dJd/„Z'	 	 	 	 	 	 	 	 	 	 dWd0„Z(	 	 	 	 	 	 	 	 	 	 	 	 dXd1„Z)	 	 	 	 	 	 	 	 	 	 dYd2„Z* e+d3d4d5d6d7d8d9d:«      Z,dZd;„Z-	 	 	 	 	 	 	 	 	 	 d[d<„Z.	 	 	 	 	 	 	 	 	 	 d\d=„Z/dd>œ	 	 	 d]d?„Z0 e+e1jd                  jf                  e1jh                  jj                  e1jl                  jj                  e1jn                  jj                  e1jp                  jj                  e1jr                  jj                  e1jt                  jj                  e1jv                  jj                  e1jx                  jj                  e1jz                  j|                  e1j~                  jj                  «      Z@ e+e1j‚                  jj                  e1j„                  jj                  e1j†                  jˆ                  «      ZEdZd@„ZF e+e1jŽ                  jj                  e1j�                  jj                  «      ZId^dA„ZJ	 	 	 	 	 	 	 	 	 	 d_dB„ZKdddddCœ	 	 	 	 	 	 	 	 	 	 	 d`dD„ZLˆ xZMS )ar®   ú,dict[_DispatchCacheKey, _DispatchCacheEntry]Úcacher   rU  Ú
cache_hitsÚcache_missesrx  Úcache_bypassesr¨  Fr  ry  Ústatic_shapesri  r1  z
str | NoneÚ_stackrÓ  r‚  Únt_tensor_id_counterÚnt_tensor_id_initial_countTN)Úallow_fallback_kernelsÚallow_non_fake_inputsr1  r�  r  c               óÄ  •— t         j                  dt        | «      «       t        ‰| �  «        || _        dd l}dd l}|j                  j                  j                  | _        t        | j                  |¬«      | _        |�|| _        n	|d u | _        d| _        |j                  j                  j                   | _        |j                  j                  j$                  | _        |j(                  j                  j*                  xr | j                   | _        |j(                  j                  j.                  | _        || _        d| _        g | _        || _        t;        j<                  «       | _        d | _         |jB                  jD                  jF                  | _$        dd l%}|jL                  jN                  jP                  jR                  | _*        | jT                  | _+        y )Nzcreate_mode 0x%xr   r	  F),Úlogr�  Úidrˆ   ru   r…  Útorch._dynamo.configÚtorch._functorch.configrÓ   rä  Ú"fake_tensor_propagate_real_tensorsÚpropagate_real_tensorsr  Úfake_tensor_converterr�  Úallow_scalar_outputsÚ(fake_tensor_allow_unsafe_data_ptr_accessrÐ  Úfake_tensor_allow_metarÓ  Ú_dynamoÚfake_tensor_cache_enabledr°   Ú$fake_tensor_cache_crosscheck_enabledÚcache_crosscheck_enabledr†  ry  Úenter_stackr1  Ú	tracebackÚextract_stackÚ_stack_tracer‚  ri   r©   rª   r,  Ú$torch.nested._internal.nested_tensorÚnestedÚ	_internalÚnested_tensorÚ_tensor_id_counterr„  rƒ  )rt   r…  r†  r1  r�  r  rh   r‰   s          €r`   ru   zFakeTensorMode.__init__°  s£  ø€ ô$ 	�	‰	Ð$¤b¨£hÔ/Ü‰ÑÔØ&<ˆÔ#ã#Û&ð ×Ñ×#Ñ#×FÑFð 	Ô#ô &9Ø×1Ñ1Øô&
ˆÔ"ð
 Ð$Ø!.ˆDÕà!*¨dÐ!2ˆDÔð %*ˆÔ!ð ×Ñ×#Ñ#×LÑLð 	Ô*ð  ×*Ñ*×1Ñ1×HÑHˆŒà�M‰M× Ñ ×:Ñ:ò 0Ø×/Ñ/Ð/ð 	Ôð
 �M‰M× Ñ ×EÑEð 	Ô%ð &;ˆÔ"ð %*ˆÔ!ð VXˆÔà"ˆŒä%×3Ñ3Ó5ˆÔØˆŒð Ÿ™×7Ñ7×<Ñ<ˆŒã3ð �L‰L×"Ñ"×0Ñ0×CÑCð 	Ô'ð %)×$CÑ$CˆÕ!r_   c                ó&   — | j                   | _        y rž   )r„  rƒ  rs   s    r`   Úreset_nt_tensor_id_counterz)FakeTensorMode.reset_nt_tensor_id_counter  s   € Ø$(×$CÑ$CˆÕ!r_   c                óB   — t        |t        «      xr |j                  | u S rž   )rË   rÌ   r±   ©rt   rá   s     r`   Úis_our_fakezFakeTensorMode.is_our_fake  s   € Ü˜!œZÓ(Ò@¨Q¯[©[¸DÐ-@Ð@r_   c                óˆ  — t         j                  j                  «       rHt         j                  j                  «       rt	        d«      ‚t         j                  j                  «        S t         j                  j                  «       xs< t        t         d«      xr t         j                  j                  «       xs
 t        «        S )Nz&Cannot have both xpu and cuda compiledrd   )	rh   re   Ú_is_compiledrc   rÏ   Úis_availableÚhasattrrd   r!   rs   s    r`   Úavoid_device_initz FakeTensorMode.avoid_device_init$  sŒ   € ä�9‰9×!Ñ!Ô#Ü�z‰z×&Ñ&Ô(Ü$Ð%MÓNÐNÜ—y‘y×-Ñ-Ó/Ð/Ð/ô �J‰J×#Ñ#Ó%ò 3Üœ˜uÓ%ÒB¬%¯)©)×*@Ñ*@Ó*Bò3ä0Ó2ð
ð 	
r_   c                ó˜   — | j                   €3dj                  t        j                  | j                  «      «      | _         | j                   S )NÚ )r‚  Újoinr—  Úformat_listr™  rs   s    r`   ÚstackzFakeTensorMode.stack1  s7   € à�;‰;ÐØŸ'™'¤)×"7Ñ"7¸×8IÑ8IÓ"JÓKˆDŒKØ�{‰{Ðr_   r^   c                ó  — t         j                  j                  t         j                  j                  j                  «      �t        d|› �«      ‚	 | j                  ||||«      S # t        $ r t        j                  d«       ‚ w xY w)Nz2FakeTensorMode should not be set when dispatching zfake tensor raised TypeError)
rh   ri   rõ  r©   rª   rÏ   ÚdispatchrÍ  rˆ  Ú	exception)rt   r…   rö  rè  ré  s        r`   rû  z!FakeTensorMode.__torch_dispatch__7  sy   € ô �8‰8×&Ñ&¤u§x¡x×'EÑ'E×'JÑ'JÓKÐWÜ ØDÀTÀFÐKóð ð	Ø—=‘=  u¨d°FÓ;Ð;øÜò 	Ü�M‰MÐ8Ô9Øð	ús   ÁA% Á% Bc                óæ  •— dd l }d }| j                  rO|j                  j                  «       }|j                  j	                  d«       |j                  j                  «        |j                  j                  | j                  «      }| |ur,| j                  j                  d||f«       t        ‰| �-  «       S |j                  j                  | «       | j                  j                  dd |f«       | S )Nr   TF)rš  r¨  ri   Ú_only_lift_cpu_tensorsÚ_set_only_lift_cpu_tensorsÚ_ensureCUDADeviceGuardSetr¨   r,  r–  r¼   rˆ   Ú	__enter__r«   )rt   rh   Úprev_only_lift_cpu_tensorsÚmaybe_prev_fake_moder‰   s       €r`   rµ  zFakeTensorMode.__enter__L  sÓ   ø€ Û3à%)Ð"Ø×!Ò!à).¯©×)HÑ)HÓ)JÐ&Ø�H‰H×/Ñ/°Ô5ð
 �H‰H×.Ñ.Ô0à$Ÿx™x×<Ñ<¸T¿^¹^ÓLÐØÐ+Ñ+Ø×Ñ×#Ñ#ØÐ+Ð-GÐHôô ‘7Ñ$Ó&Ð&ð �H‰H×'Ñ'¨Ô-Ø×Ñ×#Ñ# U¨DÐ2LÐ$MÔNàˆr_   c                óð   •— | j                   j                  «       \  }}}|rUt        ‰| �  |||«       |�t        j
                  j                  |«       |� t        j
                  j                  |«       y y y rž   )r–  r»   rˆ   Ú__exit__rh   ri   r«   r³  )rt   Úexc_typeÚexc_valÚexc_tbÚliver·  Ú maybe_prev_only_lift_cpu_tensorsr‰   s          €r`   r¹  zFakeTensorMode.__exit__g  sy   ø€ ð ×Ñ× Ñ Ó"ñ 	GˆÐ#Ð%Eñ Ü‰GÑ˜X w°Ô7ð $Ð/Ü—‘×+Ñ+Ð,@ÔAØ/Ð;Ü—‘×3Ñ3Ð4TÕUð <ð r_   c                 ó   — yr¢   r^   ©rÖ  s    r`   Úis_infra_modezFakeTensorMode.is_infra_modey  s   € àr_   c                ó²   — t        t        j                  t        j                  t	        t        j
                  «      t        t        j                  «      «      S )z8
        Query the state of the dispatch cache.
        )ru  r®   r~  r  r£   r€  rð  r}  rÀ  s    r`   Ú
cache_infozFakeTensorMode.cache_info}  s?   € ô
 !Ü×%Ñ%Ü×'Ñ'Ü”×.Ñ.Ó/Ü”×$Ñ$Ó%ó	
ð 	
r_   c                óˆ   — d| _         d| _        | j                  j                  «        | j                  j                  «        y)z+
        Clear the dispatch cache.
        r   N)r~  r  r€  rE  r}  rÀ  s    r`   Úcache_clearzFakeTensorMode.cache_clear‰  s3   € ð
 ˆŒØˆÔØ×Ñ× Ñ Ô"Ø�	‰	�‰Õr_   c                ó2  — d}d}	 t        | j                  «      }| j                  ||||«      }|€| j                  ||||«      S |€t        d«      ‚|j!                  «       r4|j                  €t        d«      ‚|j                  j"                  }t$        }	nt        j&                  }t(        }	|j+                  |d«      }
|
�°t	        |
t,        «      r9t        j                  |
j                  xx   dz  cc<   | j                  ||||«      S | j/                  ||
|||«      }t        xj0                  dz  c_        | j2                  r+t5        | «      5  | j7                  |||||«       ddd«       |S |S | j                  ||||«      }	 | j9                  ||||||«      }
 |	|||
«       t        xj:                  dz  c_        |S # t        $ r‹}t	        |t
        j                  j                  «      r7|j                  «       dk(  r$t        j                  d|d   |j                  «       t        j                  |j                  xx   dz  cc<   Y d}~�Œ d}~ww xY w# 1 sw Y   |S xY w# t        $ r©}t	        |t
        j                  j                  «      r7|j                  «       dk(  r$t        j                  d|d   |j                  «       t        j                  |j                  xx   dz  cc<    |	||t-        |j                  «      «       |cY d}~S d}~ww xY w)zž
        Lookup a cache entry for the given arguments. If none exists, dispatch
        and cache the result (if the result is eligible for caching).
        NÚinvoke_subgraphz6Fake tensor cache failed: identifier = %s, reason = %sr5   z1state must not be None after cache key generationz:state.shape_env must not be None when caching on shape_env)r6   r1  Ú
_cache_keyrs  rË   rh   Ú_opsÚHigherOrderOperatorr…  Úhc_logr�  r   r®   r€  Ú_dispatch_implrÏ   Úcache_on_shape_envÚfake_tensor_cacheÚ_set_cache_key_for_shape_envr}  Ú_set_cache_keyr"  ro  Ú_output_from_cache_entryr~  r•  r³   Ú_crosscheck_cache_outputÚ_make_cache_entryr  )rt   r…   rö  rè  ré  rØ  r¸   Úer}  Úset_cache_keyÚentryÚoutputs               r`   Ú_cached_dispatch_implz$FakeTensorMode._cached_dispatch_impl“  sÕ  € ð ˆØˆð	9Ü" 4§>¡>Ó2ˆEØ—/‘/ %¨¨t°VÓ<ˆCð ˆ;ð
 ×&Ñ& t¨U°D¸&ÓAÐAàˆ=Ü Ð!TÓUÐUØ×#Ñ#Ô%Ø�‰Ð&Ü$ØPóð ð —O‘O×5Ñ5ˆEÜ8‰Mä"×(Ñ(ˆEÜ*ˆMØ—	‘	˜#˜tÓ$ˆàÐÜ˜%Ô!:Ô;ô ×-Ñ-¨e¯l©lÓ;¸qÑ@Ó;à×*Ñ*¨4°¸¸fÓEÐEð ×2Ñ2°5¸%ÀÀdÈDÓQˆFÜ×%Ò%¨Ñ*Õ%Ø×,Ò,ô /¨tÓ4ñ UØ×1Ñ1°&¸$ÀÀtÈVÔT÷UàˆM�6ˆMð ×$Ñ$ T¨5°$¸Ó?ˆð	Ø×*Ñ*¨5°#°t¸TÀ6È6ÓRˆEñ$ 	�e˜S %Ô(Ü×#Ò# qÑ(Õ#Øˆøô] $ò 	9ô ˜4¤§¡×!?Ñ!?Ô@Ø—I‘I“KÐ#4Ò4ä—‘ØLØ˜‘GØ—H‘Hôô
 ×)Ñ)¨!¯(©(Ó3°qÑ8×3Ñ3ûð	9ú÷bUàˆMûô $ò 	ô
 ˜4¤§¡×!?Ñ!?Ô@Ø—I‘I“KÐ#4Ò4ä—‘ØLØ˜‘GØ—H‘Hôô
 ×)Ñ)¨!¯(©(Ó3°qÑ8Ó3Ù˜% Ô&?ÀÇÁÓ&IÔJØ�Mûð	úsC   †)G  ÅIÆI$ Ç 	IÇ	B IÉIÉI!É$	LÉ-BLÌLÌLc                ó   — t         j                  j                  j                  j	                  «       du}|t        j
                  «       t         j                  j                  «       t        j                  «       | j                  r| j                  j                  nd|g}|j                  r|j                  | j                  «       g }|r| j                  ||||«       |r| j                  ||||«       t        t!        |«      «      }|D ]1  }	t#        j$                  |	t'        j(                  t*        |¬«      «       Œ3 |j-                  «        |S )z‹
        Create a cache key given the dispatch args. Raises _BypassDispatchCache
        for any situation that precludes caching.
        N©r¸   )rh   ÚfxÚexperimentalÚproxy_tensorÚget_proxy_modeÚget_default_dtyperi   Ú_get_default_deviceÚis_inference_mode_enabledr1  ÚsettingsÚknown_symbolsr¼   r¨  rD  rS  rB  rŸ   ÚfinalizeÚ	functoolsÚpartialÚevict_fake_tensor_cache_keyrE  )
rt   rØ  r…   rè  ré  Ú
is_tracingÚ
key_valuesrI  r¸   Úid_hashed_objs
             r`   rÈ  zFakeTensorMode._cache_keyó  s$  € ô —X‘X×*Ñ*×7Ñ7×FÑFÓHÐPTÐTˆ
àô ×#Ñ#Ó%ô �H‰H×(Ñ(Ó*ô ×+Ñ+Ó-ð (,§~¢~ˆD�N‰N×#Ò#¸4ð ð%
ˆ
ð( ×Òð ×Ñ˜dŸj™jÔ)à*,Ðáà×$Ñ$ Z°°uÐ>OÔPÙà×$Ñ$ Z°¸Ð@QÔRÜ¤ jÓ 1Ó2ˆà.ò 	ˆMÜ×ÑØœy×0Ñ0Ô1LÐRUÔVõð	ð 	×ÑÔ!Øˆ
r_   c                ó’  — ddl m} t        |t        j                  j
                  «      r||v ryt        j                  j                  |j                  v rt        d«      ‚t        j                  j                  |j                  v r–|t        j                  j                  u rot        |||d¬«      \  }}|d   D ]T  }t        |t        j                  «      sŒ|j                  t        j                   t        j"                  fv sŒKt        d«      ‚ yt        d«      ‚t        j                  j$                  |j                  v rt        d	«      ‚|t        j&                  j(                  u rt        d
«      ‚|| j*                  v rt        d«      ‚|j-                  «       dk(  rt        d«      ‚t        j.                  j0                  j3                  |«      st        d«      ‚|j4                  r\t        j6                  j9                  |j-                  «       t        j6                  j:                  j<                  «      rt        d«      ‚yy)za
        Validate that the cache key generated by _cache_key will be
        reasonable.
        r   ©Úregistered_hop_fake_fnsNzdata dependent outputT©rè  ré  Únormalize_to_only_use_kwargsÚindiceszdynamic output shapezinplace viewzunsafe viewÚliftzinductor::resize_storage_bytes_znon-builtinÚCompositeImplicitAutograd)Útorch._higher_order_ops.utilsrí  rË   rh   rÉ  rÊ  ÚTagÚdata_dependent_outputÚtagsrs  Údynamic_output_shaper  rÂ  r   r$   rI  r  rO  Úinplace_viewÚ_unsafe_viewrï  Úlift_fnsr…  Ú_libraryÚutilsÚ
is_builtinÚis_viewri   Ú%_dispatch_has_kernel_for_dispatch_keyÚDispatchKeyrò  )rt   r…   rè  ré  rí  rÄ   Ú
new_kwargsrÂ  s           r`   Ú_validate_cache_keyz"FakeTensorMode._validate_cache_key*  sÕ  € õ 	Jô
 �tœUŸZ™Z×;Ñ;Ô<ØÐ/Ñ/àô
 �9‰9×*Ñ*¨d¯i©iÑ7Ü&Ð'>Ó?Ð?ä�9‰9×)Ñ)¨T¯Y©YÑ6Ø”t—z‘z×(Ñ(Ñ(Ü 2ØØØ!Ø15ô	!‘��:ð (¨	Ñ2ò K�Eô " %¬¯©Õ6¸5¿;¹;ÜŸ
™
ÜŸ
™
ðKò <ô 3Ð3IÓJÐJðKð ä&Ð'=Ó>Ð>ä�9‰9×!Ñ! T§Y¡YÑ.Ü& ~Ó6Ð6à”4×$Ñ$×,Ñ,Ñ,Ü& }Ó5Ð5à�4—=‘=Ñ Ü& vÓ.Ð.à�9‰9‹;Ð;Ò;Ü&Ð'HÓIÐIä�~‰~×#Ñ#×.Ñ.¨tÔ4Ü& }Ó5Ð5ð
 �<Š<œEŸH™H×JÑJØ�I‰I‹KœŸ™×-Ñ-×GÑGô
ô 'Ð'BÓCÐCð
ˆ<r_   c                ó\  — ddl m} ddlm} t	        |t
        t        t        f«      r7|j                  t        |«      «       |j                  dt        |«      › �«       t	        |t        «      rE| j                  ||j                  «       ||«       | j                  ||j                  «       ||«       y|D �]s  }t	        |t        «      ru| j                  |«      st!        d«      ‚|j"                  �t!        d«      ‚t%        |«      rt!        |j&                  › d�«      ‚t)        |«      }|j+                  || |«       Œ‰t	        |t,        «      rt!        d	«      ‚t	        |t.        «      r|j1                  ||«       ŒÇt	        |t2        t4        f«      rt!        d
«      ‚t	        |t
        t        t        f«      r| j                  ||||«       �Œt	        |t6        j8                  «      rt!        d«      ‚t	        |t:        j<                  j>                  «      rG|j                  t        |«      «       |j                  tA        |«      «       |j                  |«       �Œ©t	        ||«      r7|j                  tC        |«      «       |j                  |jD                  «       �Œìt	        ||«      rQ|j                  t        |«      «       |j                  tC        |«      «       |j                  |jF                  «       �ŒI|j                  t        |«      «       |j                  |«       �Œv y)a7  
        Translate the provided args into a form suitable for caching at FakeTensor
        dispatch, i.e., convert unhashable types like lists & dicts into tuples and
        convert FakeTensors into metadata. Raises _BypassDispatchCache to signal
        unsupported cases that should bypass caching.
        r   )ÚFunctionalCallableWithEpilogue)ÚSubgraphCallableWrapperÚlength_Nznot our fakeúconstant attributez tensorznon-fake tensorzsymbolic shapezfunction argument)$Ú*torch._higher_order_ops.auto_functionalizer  ró  r  rË   r  rB  r£   r¼   rÍ   rð  rD  ÚkeysÚvaluesrÌ   r£  rs  r  r   rü   rQ  rJ  r   r   rF  r   r   rö  ÚFunctionTyperh   rÛ  ÚGraphModuler‰  rX  ÚsubgraphÚorig_callable)	rt   rG  rè  rØ  rI  r  r  rù  rg  s	            r`   rD  z"FakeTensorMode._prep_args_for_hashp  sf  € õ	
õ 	Jä�dœT¤5¬$Ð/Ô0Ø�M‰Mœ$˜t›*Ô%Ø�M‰M˜G¤C¨£I ;Ð/Ô0ä�dœDÔ!Ø×$Ñ$ V¨T¯Y©Y«[¸%ÐARÔSØ×$Ñ$ V¨T¯[©[«]¸EÐCTÔUØàó &	#ˆCÜ˜#œzÔ*Ø×'Ñ'¨Ô,Ü.¨~Ó>Ð>Ø—<‘<Ð+Ü.Ð/CÓDÐDÜ  Ô%Ü.°#·*±*°¸WÐ/EÓFÐFÜ2°3Ó7�Ø×&Ñ& v¨t°UÕ;Ü˜C¤Ô(Ü*Ð+<Ó=Ð=Ü˜C¤Ô(Ø×%Ñ% f¨cÕ2Ü˜C¤'¬8Ð!4Ô5Ü*Ð+;Ó<Ð<Ü˜C¤$¬¬tÐ!4Ô5Ø×(Ñ(¨°°eÐ=NÖOÜ˜C¤×!3Ñ!3Ô4Ü*Ð+>Ó?Ð?Ü˜C¤§¡×!5Ñ!5Ô6ð —‘œd 3›iÔ(Ø—‘œb ›gÔ&Ø!×(Ñ(¨Ö-Ü˜CÐ!8Ô9Ø—‘œd 3›iÔ(Ø!×(Ñ(¨¯©Ö6Ü˜CÐ!?Ô@Ø—‘œd 3›iÔ(Ø—‘œd 3›iÔ(Ø!×(Ñ(¨×):Ñ):Ö;ð
 —‘œd 3›iÔ(Ø—‘˜cÖ"ñM&	#r_   c                ó€  — t        |t        t        d «      f«      ry t        ||«       t        |t        «      st        d«      ‚|j                  �t        d«      ‚|j                  rt        d«      ‚t        |«      rt        d«      ‚|j                  «       D ]$  }t        |«      t        |«      k(  sŒt        d«      ‚ y )Nznon-FakeTensor outputr  zsparse outputzsparse compressed outputzkwarg aliases output)rË   rU  rÍ   Ú%_validate_symbolic_output_for_cachingrÌ   rs  r  rþ   r   r
  r‰  )rt   rØ  r¸   r…   rè  ré  r×  Úkvals           r`   Ú _validate_output_for_cache_entryz/FakeTensorMode._validate_output_for_cache_entry³  sµ   € ô �fœs¤D¨£JÐ/Ô0Øô 	.¨e°VÔ<ô ˜&¤*Ô-Ü&Ð'>Ó?Ð?ð �?‰?Ð&Ü&Ð';Ó<Ð<ð ×ÒÜ& Ó7Ð7ä Ô'Ü&Ð'AÓBÐBð —M‘M“Oò 	CˆDÜ�$‹xœ2˜f›:Ó%Ü*Ð+AÓBÐBñ	Cr_   c                ó”  ‡— t        |t        t        j                  t	        d «      f«      rt        d d d |¬«      S t        t        |«      «      D ],  }t        ||   «      t        |«      k(  sŒt        |d d ¬«      c S  d }t        |t        j                  j                  «      rd|j                  rXt        |«      D �	�
cg c]  \  }	}
t        |
t        «      sŒ|	‘Œ }}	}
t        |«      dk7  rt        dt        |«      › �«      ‚|d   }t        |«      }t!        ˆfd„|j"                  D «       «      |_        t!        ˆfd„|j$                  D «       «      |_        ‰j'                  |j(                  «      |_        |j*                  €d n‰j'                  |j*                  «      |_        t        d ||¬«      }t-        |fd¬	«      }dd
lm} 	 | j3                  ‰||||«      }t        j6                  j9                  |«      }t        j6                  j9                  |«      }||k7  rt5        d«      ‚|S c c}
}	w # |$ r t5        d«      d ‚w xY w)N©rf  rg  rh  ri  )rf  rg  rh  r5   z1Expected exactly one tensor arg for view op, got r   c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrž   ©Úconvert_output©r·   rÚ   rØ  s     €r`   rº   zBFakeTensorMode._get_output_info_for_cache_entry.<locals>.<genexpr>ý  s   øè ø€ ÒO¸1˜u×3Ñ3°A×6ÑOùó   ƒc              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrž   r  r  s     €r`   rº   zBFakeTensorMode._get_output_info_for_cache_entry.<locals>.<genexpr>þ  s   øè ø€ ÒQ¸A × 4Ñ 4°Q× 7ÑQùr  F©rl  rm  )ÚGuardOnDataDependentSymNodezdata dependent symnodezdispatch_key_set mismatch)rË   rU  rh   r   rÍ   re  Úrangerð  r‰  rÉ  r@   rþ  Ú	enumerater   rÏ   rQ  rB  r3  r4  r  r7  r8  rk  r=  r  rÑ  rs  ri   Ú_dispatch_key_set)rt   rØ  r¸   r…   rè  ré  r×  Úidxrh  Úirá   Úidxsrg  rÖ  Úentry_for_synth_outputr  Úsynth_outputÚsynth_key_setÚkey_sets    `                 r`   Ú _get_output_info_for_cache_entryz/FakeTensorMode._get_output_info_for_cache_entryÝ  s)  ø€ ô �fœs¤E§L¡L´$°t³*Ð=Ô>Ü0Ø ¨4¸$Èvôð ô
 œ˜T›Ó#ò 	ˆCÜ�$�s‘)‹}¤ 6£
Ó*Ü4Ø #¨d¸Tôò ð	ð ˆÜ�dœEŸJ™J×1Ñ1Ô2°t·|²|Ü"+¨D£/×K™$˜!˜Q´ZÀÄ6Õ5J’AÐKˆDÑKÜ�4‹y˜AŠ~Ü$ØGÌÈDË	À{ÐSóð ð ˜A‘wˆHä*¨6Ó2ˆÜÓOÀÇÁÔOÓOˆŒÜÓQÀÇÁÔQÓQˆŒØ"'×"6Ñ"6°x×7NÑ7NÓ"OˆÔð ×%Ñ%Ð-ñ à×%Ñ% h×&<Ñ&<Ó=ð 	Ôô .ØØØô
ˆô ":Ø˜°5ô"
Ðõ 	Vð		KØ×8Ñ8ØÐ-¨s°D¸$óˆLô Ÿ™×2Ñ2°<Ó@ˆÜ—(‘(×,Ñ,¨VÓ4ˆØ˜GÒ#Ü&Ð'BÓCÐCàˆùóg LøðJ +ò 	Kô
 'Ð'?Ó@ÀdÐJð	Kús   Â>H/ÃH/Ç
H5 È5Ic                ó  ‡— ddl m}m} ddlmŠ | j                  |||«       t        |t        j                  j                  «      rG||v rCt        |t        «      r|n|f}	t        ˆfd„|	D «       «      xs ||v }
|
rt        d|› d|› d�«      ‚t        |t        t        j                  t        d«      f«      rt!        ddd|¬	«      }t#        |fd
¬«      S t        |t        «      r|D ]  }| j%                  ||||||«       Œ n| j%                  ||||||«       t        |t        «      r9|D �cg c]  }| j'                  ||||||«      ‘Œ }}t#        t        |«      d¬«      S | j'                  ||||||«      }t#        |fd
¬«      S c c}w )z¸
        Make a cache entry object for the given 'output' Tensor. Raises
        _BypassDispatchCache if the output tensor has characteristics that
        prevent caching it.
        r   )Úhops_that_skip_faketensor_cacherí  )Úhas_free_unbacked_symbolsc              3  ó†   •K  — | ]8  }t        |t        j                  t        j                  f«      xr  ‰|«      –— Œ: y ­wrž   )rË   rh   r   r   )r·   Úor*  s     €r`   rº   z3FakeTensorMode._make_cache_entry.<locals>.<genexpr>M  sA   øè ø€ ò ð ô ˜q¤5§<¡<´·±Ð">Ó?ò 5Ù1°!Ó4ó5ñùs   ƒ>Azunbacked symbol in HOP z output                     or z# in hops_that_skip_faketensor_cacheNr  Fr  T)ró  r)  rí  r=  r*  r  rË   rh   rÉ  rÊ  rB  r  rs  rU  r   rÍ   re  rk  r  r'  )rt   rØ  r¸   r…   rè  ré  r×  r)  rí  ÚoutsÚnon_cacheableÚoutput_infoÚout_elementÚout_elemrl  r*  s                  @r`   rÓ  z FakeTensorMode._make_cache_entry*  sí  ø€ ÷	
õ 	Tà× Ñ   t¨VÔ4ô �tœUŸZ™Z×;Ñ;Ô<ØÐ/Ñ/ä'¨´Ô6‘6¸V¸IˆDäó ð "ôó ò ;ð
 Ð:Ð:ð ñ Ü*Ø-¨d¨Vð 4Ø�vÐ@ðBóð ô
 �fœs¤E§L¡L´$°t³*Ð=Ô>Ü7Ø ¨4¸$ÈvôˆKô ,Ø)˜^¸Uôð ô �fœeÔ$Ø%ò �Ø×5Ñ5ØØØØØØõñð ×1Ñ1ØØØØØØôô �fœeÔ$ð !'ö
ð ð ×5Ñ5ØØØØØØõð
ˆLð 
ô ,ä" <Ó0Ø $ôð ð ×?Ñ?ØØØØØØóˆKô ,Ø)˜^¸Uôð ùò5
s   Ä-Fc           
     ó  ‡‡‡— |j                   €A|j                  €5|j                  €)|j                  t        u rt        d«      ‚|j                  S |j                   �,||j                      }t        |t        «      st        d«      ‚|S |j                  }|€y t        |«      rt        d«      ‚dˆfd„Št        ˆˆfd„|j                  D «       «      }t        ˆˆfd„|j                  D «       «      }	 ‰|j                  ‰«      }
|j                  � ‰|j                  ‰«       t        j                  }| j                   �| j                   j"                  }t%        | «      5   |«       5  t'        j(                  ||	|j*                  |j,                  d|j.                  ¬«      }d d d «       d d d «       |j0                  r t&        j2                  j5                  d	«       |j6                  r t&        j2                  j9                  d	«       t        |t&        j:                  j<                  «      rŒ|j>                  r€|tA        tB        |j                  «         }t        |t        «      st        d
«      ‚|jE                  «       }t%        | «      5   |«       5  jG                  ||
||	«       d d d «       d d d «       t        | |jH                  «      S # 1 sw Y   �Œ1xY w# 1 sw Y   �Œ6xY w# 1 sw Y   ŒBxY w# 1 sw Y   ŒFxY w)Nz2entry.constant_value must not be SingletonConstantz inplace_arg must be a FakeTensorz)Sparse tensors are not supported in cachec                óÄ   •— t        | t        «      r3|j                  €t        d«      ‚| j	                  ‰|j                  «      S t        | t
        «      rt        d«      ‚| S )Nz6state.shape_env must not be None for _SymIntOutputStubz Unexpected _PySymInputStub value)rË   r8   r1  rÏ   rÕ  r7   )r_  rØ  r¸   s     €r`   Úcheck_valuezGFakeTensorMode._get_output_tensor_from_cache_entry.<locals>.check_value¶  sZ   ø€ Ü˜%Ô!2Ô3Ø—?‘?Ð*Ü(ØPóð ð —}‘} S¨%¯/©/Ó:Ð:ä˜e¤_Ô5Ü(Ð)KÓLÐLØ�r_   c              3  ó0   •K  — | ]  } ‰|‰«      –— Œ y ­wrž   r^   ©r·   rÚ   r4  rØ  s     €€r`   rº   zEFakeTensorMode._get_output_tensor_from_cache_entry.<locals>.<genexpr>Â  s   øè ø€ ÒD°‘k ! U×+ÑDùó   ƒc              3  ó0   •K  — | ]  } ‰|‰«      –— Œ y ­wrž   r^   r6  s     €€r`   rº   zEFakeTensorMode._get_output_tensor_from_cache_entry.<locals>.<genexpr>Ã  s   øè ø€ ÒF°‘{ 1 e×,ÑFùr7  rd  )rI  rü   r‡   rF  Tzview_arg must be a FakeTensor)r_  r6  rØ  r6   rz   r'   )%rf  rg  rh  ri  rb  rÏ   rË   rÌ   r   rB  r3  r4  r7  r8  Ú
contextlibÚnullcontextr1  Úsuppress_guardsr€  rh   Úempty_stridedrI  rü   rF  r9  ri   Ú	_set_conjr:  Ú_set_negrÉ  r@   rþ  r   rU  rO  Úset_r‡   )rt   rØ  rÖ  r¸   r…   rè  Úinplace_argrg  r3  r4  r7  Úmaybe_suppressrt  Úview_argÚstorager4  s    ` `           @r`   Ú#_get_output_tensor_from_cache_entryz2FakeTensorMode._get_output_tensor_from_cache_entry•  s”  ú€ ð ×ÑÐ%Ø—‘Ð&Ø—‘Ð&à×#Ñ#Ô'8Ñ8Ü$ØHóð ð ×'Ñ'Ð'Ø×ÑÐ(à˜u×0Ñ0Ñ1ˆKÜ˜k¬:Ô6Ü$Ð%GÓHÐHØÐð —>‘>ˆØÐØä˜Ô"Ü Ð!LÓMÐMõ
	ô ÔD°X·^±^ÔDÓDˆÜÔF°h·o±oÔFÓFˆÙ$ X×%<Ñ%<¸eÓDˆØ×!Ñ!Ð-Ù˜×.Ñ.°Ô6ô ×"Ñ"ð 	ð �>‰>Ð%Ø!Ÿ^™^×;Ñ;ˆNä)¨$Ó/ñ 	±Ó1Añ 	Ü×'Ñ'ØØØ—n‘nØ—‘ØØ&×4Ñ4ôˆE÷	÷ 	ð ×ÒÜ�H‰H×Ñ˜u dÔ+Ø�?Š?Ü�H‰H×Ñ˜e TÔ*ä�dœEŸJ™J×1Ñ1Ô2°t·|²|àœD¤ e§n¡nÓ5Ñ6ˆHÜ˜h¬
Ô3Ü$Ð%DÓEÐEØ×.Ñ.Ó0ˆGÜ-¨dÓ3ñ C±^Ó5Eñ CØ—
‘
˜7 N°E¸6ÔB÷C÷ Cô ˜$  x§¡Ó7Ð7÷1	ñ 	ú÷ 	ñ 	ú÷*Cð Cú÷ Cð CúsH   Å!KÅ):KÆ#KÊK8ÊK,Ê+K8ËK	ËKËK)Ë,K5	Ë1K8Ë8Lc           
     óÖ   — |j                   r7|j                  D �cg c]  }| j                  |||||«      ‘Œ }}t        |«      S | j                  ||j                  d   |||«      S c c}w )z?
        Create a new FakeTensor from the cache entry.
        r   )rm  rl  rD  rB  )rt   rØ  rÖ  r¸   r…   rè  r/  Úoutputss           r`   rÑ  z'FakeTensorMode._output_from_cache_entryè  s„   € ð × Ò ð
 $)×#5Ñ#5ö	ð  ð ×8Ñ8Ø˜;¨¨T°4õðˆGð ô ˜“>Ð!à×;Ñ;Ø�u×)Ñ)¨!Ñ,¨c°4¸óð ùòs   ›A&c                óî   ‡— dˆfd„Š	 | j                  ||||«      }	  ‰||«       y# t        $ r}t        d|› d|› d|› d|› �«      |‚d}~ww xY w# t        $ r}t        d|› d|› d|› �«      |‚d}~ww xY w)z†
        Helper to validate that the output synthesized from the cache matches
        the output created by normal dispatch.
        c                ó>  •— t        | t        «      rt        |t        «      st        dt        |«      › �«      ‚t	        | «      t	        |«      k7  r#t        dt	        | «      › dt	        |«      › �«      ‚t        | |«      D ]  \  }} ‰||«       Œ y t        | t        «      r't        |t        «      r| |k7  rt        d| › d|› �«      ‚y | €|�t        d|› �«      ‚y t        | t        «      r@t        | «      t        |«      us| j                  |j                  urt        d| › d|› �«      ‚y t        | t        j                  «      rCt        |t        j                  «      st        dt        |«      › �«      ‚t        t        | |«       y t        dt        | «      › �«      ‚)	NzExpected tuple, got zTuple length mismatch: z != zInt mismatch: zExpected None, got zSymType mismatch: úExpected Tensor, got zUnsupported type )rË   rB  rÏ   rÍ   rð  ÚziprU  r(   r¦  rh   r   r   r   ÚRuntimeError)ÚaÚbÚlr«  Úassert_helpers       €r`   rO  z>FakeTensorMode._crosscheck_cache_output.<locals>.assert_helper	  sz  ø€ Ü˜!œUÔ#Ü! !¤UÔ+Ü(Ð+?ÄÀQÃ¸yÐ)IÓJÐJÜ�q“6œS ›VÒ#Ü(Ð+BÄ3ÀqÃ6À(È$ÌsÐSTËvÈhÐ)WÓXÐXÜ  1›Iò (‘D�A�qÙ! ! QÕ'ñ(ä˜AœsÔ#Ü! !¤SÔ)¨Q°!ªVÜ(¨>¸!¸¸DÀÀÐ)DÓEÐEð .4à�Ø�=Ü(Ð+>¸q¸cÐ)BÓCÐCð !ä˜Aœ|Ô,Ü˜“7¤$ q£'Ñ)¨Q¯V©V¸1¿6¹6Ñ-AÜ(Ð+=¸a¸SÀÀQÀCÐ)HÓIÐIð .Bä˜AœuŸ|™|Ô,Ü! !¤U§\¡\Ô2Ü(Ð+@ÄÀaÃÀ	Ð)JÓKÐKÜ"¤9¨a°Õ3ä"Ð%6´t¸A³w°iÐ#@ÓAÐAr_   z*FakeTensor cache crosscheck failure: func=z, args=z	, kwargs=z: Dispatch raised=N)rL  r   rM  r   rz   r{   )rÌ  Ú	ExceptionrK  )	rt   r×  r…   rö  rè  ré  Útrue_outputrÔ  rO  s	           @r`   rÒ  z'FakeTensorMode._crosscheck_cache_output	  s¼   ø€ õ	Bð0	Ø×-Ñ-¨d°E¸4ÀÓHˆKð	Ù˜+ vÕ.øô ò 	ÜØ<¸T¸Fð CØ�v˜Y v hÐ.@ÀÀðEóð ðûð	ûô ò 	ÜØ<¸T¸Fð CØ�v˜Y v hð0óð ðûð	ús+   ‰( ž	A ¨	A±A	Á	AÁ	A4ÁA/Á/A4c                ó  — |xs i }t        «       5  t        j                  d|||«       d d d «       |t        v rt        |   |«      S t        j	                  «       t
        j                  k  r(t        j                  ddt        z  |«       t        «       }|t        v rt        | «      5   ||i |¤Žcd d d «       S | j                  r| j                  ||||«      S | j                  ||||«      S # 1 sw Y   ŒÅxY w# 1 sw Y   ŒIxY w)Nz%s %s %sz'%sFakeTensorMode.__torch_dispatch__: %sú )r)   rˆ  r�  rñ  ÚgetEffectiveLevelÚloggingÚDEBUGrr   rn   Ú_DISPATCH_HANDLE_DIRECTLYr€  r°   rØ  rÌ  )rt   r…   rö  rè  ré  Úincrs         r`   r¯  zFakeTensorMode.dispatch5	  sÿ   € ð ’˜2ˆÜ‹]ñ 	6Ü�I‰I�j $¨¨fÔ5÷	6ð Ô*Ñ*Ü*¨4Ñ0°Ó6Ð6ä× Ñ Ó"¤g§m¡mÒ3Ü�I‰IØ9¸3ÄÑ;PÐRVôô +Ó,ˆDð Ô,Ñ,ä-¨dÓ3ñ -Ù˜TÐ, VÑ,÷-ñ -ð ×ÒØ×-Ñ-¨d°E¸4ÀÓHÐHà×&Ñ& t¨U°D¸&ÓAÐA÷/	6ð 	6ú÷"-ð -ús   ‘C.Â(C:Ã.C7Ã:Dc                ó`  ‡ ‡‡‡‡
‡— ddl Šddlm} dˆ ˆfd„}t        ‰t        j
                  «      rZ	  |‰‰ddddd¬«       t        t        ‰j                  «       ‰j                  «       «      «      D ]  \  }\  }}		  |||	«       Œ ‰dfS ‰€g‰�et        j                  j                  j                  r!t        d	ˆˆˆfd„¬«       t        ‰ ‰‰«      dfS t        d‰› d‰› dt        |«      › d‰› �«      ‚	  |‰‰«       ‰dfS # t        $ roŠ
t        j                  j                  j                  r%t        d	ˆ
ˆfd
„¬«       t        ‰ ‰‰«      dfcY dŠ
‹
S t        d‰› d‰› dt        |«      › d‰› �«      ‰
‚dŠ
‹
ww xY w# t        $ rtŠ
t        j                  j                  j                  r't        d	ˆ
ˆfd„¬«       t        ‰ ‰‰«      dfcY dŠ
‹
c S t        d|› d|	› dt        |«      › d|› d‰› �
«      ‰
‚dŠ
‹
ww xY w# t        $ r&Š
t        d‰› d‰› dt        |«      › d‰› �«      ‰
‚dŠ
‹
ww xY w)zÎ
        Helper to cross-check fake/real output properties & values,
        and create new fake vals if mismatched.
        Returns tuple of object & boolean, for whether or not it was overwrriten
        r   N)Ú_check_fake_real_tensorsc                óp  •— t        | t        t        f«      rì‰j                  €t	        d«      ‚| j
                  j                  j                  ‰j                  j                  j                  «       z
  ‰j                  j                  j                  «       z
  sj‰j                  j                  ‰j                  | j
                  j                  |«      d¬«      ‰j                  j                  urt        d| › d|› d�«      ‚y y t        | t         t"        t$        f«      r| |k7  rt        d| › d|› d�«      ‚y y )Nz3self.shape_env must not be None for symbolic valuesT)Úcompute_hintúmismatch between fake value ú and real value rS  )rË   r   r   r1  rÏ   r¦  ÚexprÚfree_symbolsÚbacked_var_to_valr	  Úreal_tensor_prop_unbacked_valsÚ_maybe_evaluate_staticÚEqÚSÚtruer—   rU  Úfloatr  )rÛ   Úrealrt   Úsympys     €€r`   Ú_check_fake_real_valsz?FakeTensorMode._maybe_infer_fake.<locals>._check_fake_real_valsb	  s3  ø€ ä˜$¤¬Ð 2Ô3à—>‘>Ð)Ü(ØMóð ð Ÿ	™	Ÿ™×3Ñ3Ø—n‘n×6Ñ6×;Ñ;Ó=ñ>à—n‘n×CÑC×HÑHÓJòKð
 Ÿ™×=Ñ=Ø!ŸH™H T§Y¡Y§^¡^°TÓ:Èð >ó ð  %Ÿw™wŸ|™|ñ,ô
 4Ø:¸4¸&Ð@PÐQUÐPVÐVWÐXóð ð,ðKô Ø”sœE¤4Ð(ôð ˜4’<Ü/Ø6°t°fÐ<LÈTÈFÐRSÐTóð ð  ðr_   úReal tensor propagation foundFT)ÚcontextÚsizesÚstridesr7  rF  Úmismatched_fake_kernelc                 ó4   •— t        ‰«      ‰ j                  dœS ©N©Úopr   ©r~   r   ©Úexcr…   s   €€r`   ú<lambda>z2FakeTensorMode._maybe_infer_fake.<locals>.<lambda>�	  s   ø€ Ü"% d£)Ø&)§j¡jñ-€ r_   ©Úmetadata_fnzFReal tensor propagation found a metadata mismatch between fake tensor z and real tensor z,  at outputz, for func: c                 ó4   •— t        ‰«      ‰ j                  dœS rq  rt  ru  s   €€r`   rw  z2FakeTensorMode._maybe_infer_fake.<locals>.<lambda>¢	  s   ø€ Ü&)¨$£iØ*-¯*©*ñ1€ r_   zIReal tensor propagation found an output size mismatch between fake shape z and real shape z, at outputz.size(z), for func: c                 ó,   •— t        ‰«      d‰ › d‰› �dœS )Nr]  r^  rr  ©r~   )rÛ   r…   rh  s   €€€r`   rw  z2FakeTensorMode._maybe_infer_fake.<locals>.<lambda>±	  s$   ø€ Ü! $›iØ$@ÀÀÐFVÐW[ÐV\Ð"]ñ)€ r_   zQReal tensor propagation found an output value mismatch between fake output value z and real output value )rÛ   r   rh  r   rz   r{   )ri  Útorch._subclasses.fake_utilsrZ  rË   rh   r   r—   rÓ   rä  Ú*generate_fake_kernels_from_real_mismatchesr   Ú_infer_fake_from_real_tensorr.   r  rJ  rz  )rt   r…   ÚpathrÛ   rh  rZ  rj  ÚjÚs_fakeÚs_realrv  ri  s   `` ``     @@r`   Ú_maybe_infer_fakez FakeTensorMode._maybe_infer_fakeV	  s–  ý€ ó 	åIö	ô< �dœEŸL™LÔ)ðÙ(ØØØ;ØØ!Ø#'Ø"'õô2 (1´°T·Y±Y³[À$Ç)Á)Ã+Ó1NÓ'Oò Ñ#�Ñ#�F˜FðÙ)¨&°&Õ9ððT �Uˆ{Ðð1 ˆ\˜dÐ.Ü×Ñ×&Ñ&×QÒQÜ!Ø,õ!õô 4°D¸$ÀÓEÀtÐKÐKÜ'ðØ#˜fÐ$5°d°Vð <Ü# D›\˜N¨,°t°fð>óð ðÙ% d¨DÔ1ð �Uˆ{Ðøôu )ò Ü×#Ñ#×*Ñ*×UÒUÜ%Ø0ô%õô 8¸¸dÀDÓIÈ4ÐOÕOÜ+ð#Ø#' &Ð(9¸$¸ð @!Ü!'¨£ ¨l¸4¸&ðBóð ð	ûðûô& -ò Ü×'Ñ'×.Ñ.×YÒYÜ)Ø4ô)õô  <¸DÀ$ÈÓMÈtÐS×SÜ/ð&Ø&, XÐ-=¸f¸Xð F$Ü$*¨4£L >°¸°s¸-ÈÀvðOóð ð	ûðûôB )ò Ü+ð)Ø)-¨Ð.EÀdÀVð L Ü & t£˜~¨\¸$¸ðAóð ð	ûðúsa   ³D Á=	E>Ã6	G> Ä	E;ÄAE6ÅE;Å!E6Å6E;Å>	G;ÆAG6Ç
G;Ç$G6Ç6G;Ç>	H-È!H(È(H-c                óÆ  ‡ ‡‡‡— ddl m} dŠ‰ j                  rt        ‰ j                  j                  «      Šdˆˆ fd„}t
        j                  |«      \  }}	t
        j                  |«      \  }
}	  |d||||«       t        t        ||
«      D ���cg c]  \  \  }}}‰ j!                  ‰|||«      ‘Œ c}}}Ž \  }}t#        |«      r	‰r |«        t
        j%                  ||	«      S # t        $ rkŠt        j                  j                  j                  r-t        dˆˆfd„¬«        |«        t        ˆˆ fd	„|«      cY dŠ‹S t        d
|› d|› d‰› �«      ‰‚dŠ‹ww xY wc c}}}w )zÓ
        Helper to cross-check fake/real output properties & values,
        and create new fake vals if mismatched, but at the kernel level.
        Means this handles pytree outputs & checks aliasing.
        r   )Ú_check_alias_infoNc                 ó’   •— t        t        ‰j                  j                  «      j	                  ‰ «      «      ‰j                  _        y rž   )r  Úsetr1  Úpending_fresh_unbacked_symbolsÚ
difference)Úpending_unbackedrt   s   €€r`   Ú_clear_pending_unbackedzXFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>._clear_pending_unbackedÛ	  s4   ø€ Ü<@Ü�D—N‘N×AÑAÓB×MÑMØ$óó=ˆD�N‰NÕ9r_   rk  ro  c                 ó:   •— t        ‰«      d‰ j                  › �dœS )Nz>Mismatched aliasing spec between fake kernel and real kernel: rr  rt  ru  s   €€r`   rw  zIFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>.<lambda>î	  s#   ø€ Ü! $›ià\Ð]`×]gÑ]gÐ\hÐiñ)€ r_   rx  c                ó   •— t        ‰‰| «      S rž   )r  )rÖ   r…   rt   s    €€r`   rw  zIFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>.<lambda>ú	  s   ø€ Ô:¸4ÀÀqÓI€ r_   zGReal tensor propagation found an aliasing mismatch between fake output z and real output z,  for func: ry   )r}  r†  r1  r  r‰  rõ   Útree_flatten_with_pathÚtree_flattenr—   rh   rÓ   rä  r~  r   r0   rJ  r„  r  Útree_unflatten)rt   r…   Úfake_inÚreal_inÚfake_outÚreal_outr†  rŒ  Úfake_paths_leavesÚ	fake_specÚreal_leavesrÄ   Ú
_fake_pathÚ	_fake_outÚ	_real_outÚfake_leavesÚ	overridesrv  r‹  s   ``               @@r`   Ú(_maybe_infer_fake_kernel_from_pytree_outz7FakeTensorMode._maybe_infer_fake_kernel_from_pytree_outÇ	  sx  û€ õ 	Cð  ÐØ�>Š>Ü# D§N¡N×$QÑ$QÓRÐö	ô (.×'DÑ'DÀXÓ'NÑ$Ð˜9Ü×,Ñ,¨XÓ6‰ˆ�Qð	áØ/°¸7ÀHÈgôô> "%ô ;>Ø% {ó;÷ð á6Ñ+�Z ¨Yð ×&Ñ& t¨Z¸ÀIÕNôð"
Ñˆ�Yô �	ŒNÑ/á#Ô%Ü×$Ñ$ [°)Ó<Ð<øôQ %ò 	ä×Ñ×&Ñ&×QÒQÜ!Ø,ô!õñ (Ô)ÜÜIÈ8óõ ô ,ð#Ø#+ *Ð,=¸h¸Zð H"Ø"& ð)óð ð	ûð)	üô:s+   Á0C% Â!EÃ%	EÃ.AEÄ9EÄ?EÅEc                óŽ  ‡ ‡‡‡‡,‡-‡.‡/‡0‡1‡2‡3‡4‡5‡6‡7— ddl m} t        j                  ‰‰f«      \  Š0Š,t	        ‰0«      }|r@‰0D �cg c]  }t        |«      sŒt        |«      ‘Œ }}t        j                  d|«       t        S ‰0D �	cg c]  }	‰ j                  |	«      sŒ|	‘Œ }
}	t        d„ |
D «       «      xs t        d„ ‰0D «       «      Š2‰ j                  Š.‰‰ j                  v }d}‰ j                  rz‰t        j                   j"                  j$                  j&                  u rd‰v r‰d   j                  dk7  rd	}‰t        j                   j(                  j*                  j&                  u rd	}‰t        j                   j"                  j$                  j&                  u xr; t-        ‰d   t        j.                  «      xr ‰d   j0                  j                  d
k(  xs |}|r|
rt3        ‰«      rÌ‰2sÊ|
sÈ|sÆt5        d„ |
D «       «      st7        ‰› d�«      ‚‰0D �cg c]!  }‰ j                  |«      r|j8                  n|‘Œ# }}t        j;                  |‰,«      \  }} ‰|i |¤Ž}t        |«      t.        u rH‰ j=                  |«      r7t?        «       5  |jA                  «       }d d d «       ‰.jC                  ‰ |d	¬«      S |rVtE        ‰«      dk7  stE        ‰«      dk7  rt7        d‰› d‰› �«      ‚t        ‰d   «      t.        u r‰.jC                  ‰ ‰d   «      S ‰ jG                  ‰‰.‰0‰,«      \  Š0}
‹‹t5        d„ |
D «       «      }t-        ‰t        jH                  jJ                  «      �rt        jL                  jN                  ‰jP                  v�rXt        jL                  jR                  ‰jP                  vs‰t"        jT                  j&                  u �r|�rtE        |
«      dk7  �r‰2�s |sþ‰t"        jV                  j&                  urâ‰0D �cg c]!  }‰ j                  |«      r|j8                  n|‘Œ# }}t        j;                  |‰,«      \  }}t?        «       5   ‰|i |¤Ž}d d d «       t        jY                  «      }|D �	cg c]  }	t-        |	t.        «      sŒ|	‘Œ }}	t5        ˆ fd„|D «       «      }|rt        j[                  t.        ˆ.ˆ fd„|«      S |D ]  }‰.j]                  |«       Œ t        j;                  ‰0‰,«      \  ŠŠt-        ‰t        jH                  j^                  «      r^‰|v rZ‰ j`                  €tb        jd                  n‰ j`                  jf                  }‰ 5   |«       5   |‰   ‰i ‰¤Žcd d d «       cd d d «       S ‰ ji                  ‰|
‰‰«       	 	 	 	 d)ˆ fd„}ddl5m6Š-m7Š1 tq        «       Š3‰3Š6‰ jr                  r×t5        d„ |
D «       «      rÅt        ˆ1ˆ ˆ7fd„‰0D «       «      s¯tt        j                  d‰«       ‰0D �cg c]
  } ||«      ‘Œ }}t        j;                  |‰,«      \  Š4Š5tw        jx                  ‰«      }|stw        jz                  ‰|‰,«      }	  ‰‰4i ‰5¤ŽŠ6|syj                  «        tw        j€                  ‰j‚                  ‰0‰6«       nG‰ jr                  r;tt        j                  d‰|
‰0‰ j`                  r‰ j`                  j„                  nd «       d*ˆˆ-ˆ1ˆˆˆ3ˆ4ˆ5ˆ6ˆ f
d„}‰2r-t‡        «       j‰                  ‰«      }|� | |‰ g‰¢­i ‰¤Ž«      S ddlEmF} ‰|vrž‰ j�                  ‰«      s�‰2r‰‰ j�                  v s}ddlEmI}  ‰| v r<‰2st•        ‰«      r/t5        d„ |
D «       «      r‰ 5   | | ‰   ‰i ‰¤Ž«      cd d d «       S ‰ 5   ‰j–                  ‰i ‰¤Ž}!|!t        ur ||!«      cd d d «       S 	 d d d «       d‰j˜                  jš                  v r;t�        ‰d «      r/tŸ        ‰«      s$‰ 5   | ‰j                   ‰i ‰¤Ž«      cd d d «       S t        j¢                  j¤                  j¦                  }"|"�%‰|"j¨                  v r |"jª                  ‰‰ g‰¢­i ‰¤ŽS ‰ jr                  r_‰6‰3ur[tw        jx                  ‰«      sF‰ j`                  �:tw        j¬                  ‰«      s%t¯        ‰ ‰‰6«      }#t±        d!ˆfd"„¬#«        ||#«      S t        j²                  j´                  j¶                  j¹                  ‰j›                  «       «      jº                  j¼                  }$|$r}	 t        j²                  jº                  j¿                  ‰ ‰«      Š/t        j²                  jº                  jÁ                  ˆ/fd$„«      5  ‰ 5   |$‰i ‰¤Ž}# ||#«      cd d d «       cd d d «       S tÄ        D ]-  \  }&}' |&‰«      sŒ |'‰ ‰g‰¢­i ‰¤Ž}(|(t        usŒ% ||(«      c S  	 d+	 	 	 d,ˆˆ,ˆ0ˆˆ2ˆˆ fd&„})tÇ        ‰«      s |)«       }* ||*«      S 	 tÉ        ‰ «      5   ‰‰i ‰¤Ž}!d d d «        |‰ jÑ                  !‰‰0‰j‰                  d«      ¬(«      «      S c c}w c c}	w c c}w # 1 sw Y   �Œ¶xY wc c}w # 1 sw Y   �ŒxY wc c}	w # 1 sw Y   nxY wd d d «       �Œ# 1 sw Y   �ŒxY wc c}w # t|        $ r"}tt        j                  d‰|«       Y d }~�Œgd }~ww xY w# 1 sw Y   �ŒOxY w# 1 sw Y   �Œ%xY w# 1 sw Y   �ŒßxY w# 1 sw Y   nxY wd d d «       n# 1 sw Y   nxY w�Œ{# tÂ        $ rb}%‰ jr                  rO‰6‰3urKtw        jx                  ‰«      s6‰ j`                  �*t¯        ‰ ‰‰6«      }#t±        d!ˆfd%„¬#«        ||#«      cY d }%~%S |%‚d }%~%ww xY w# 1 sw Y   �ŒuxY w# tÊ        $ r}+ |)|+«      cY d }+~+S d }+~+wtÌ        $ r tt        jÏ                  d'‰«       ‚ w xY w)-Nr   rì  z,FakeTensorMode unrecognized subclass(es): %sc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrž   )rM  )r·   r!  s     r`   rº   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>1
  s   è ø€ ò !
Ø./ˆA×)Õ)ñ!
ùó   ‚c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrž   )rË   r   )r·   rL  s     r`   rº   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>3
  s   è ø€ Ò:¨1”˜Aœv×&Ñ:ùs   ‚Fr‡   r  Trd  c              3  ó8   K  — | ]  }|j                   d u–— Œ y ­wrž   r.  ©r·   rá   s     r`   rº   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>]
  s   è ø€ ÒM°!�q—z‘z¨Ô-ÑMùó   ‚z. should not have fake inputs without constants©r[  r5   z1Expected exactly one arg for lift func, got args=z kwargs=c              3  ó8   K  — | ]  }|j                   d u–— Œ y ­wrž   r.  ©r·   rÔ  s     r`   rº   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>�
  ó   è ø€ ÒQ°a˜1Ÿ:™:¨TÔ1ÑQùr¥  c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrž   )Úmay_turn_const)r·   rá   rt   s     €r`   rº   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>­
  s   øè ø€ ÒP¸!˜t×2Ñ2°1×5ÑPùr  c                ó,   •— ‰j                  ‰| d¬«      S )NTr¦  )rb  )rá   Ú	converterrt   s    €€r`   rw  z/FakeTensorMode._dispatch_impl.<locals>.<lambda>²
  s   ø€ ˜i×8Ñ8¸¸qÐPTÐ8ÓU€ r_   c                ó°  •— t        | t        «      r| j                  S t        | t        «      rŒ‰j                  €t        d«      ‚| j                  j                  | j                  j                  j                  ‰j                  j                  «      j                  ‰j                  j                  «      «      S t        | t        «      r| j                  S | S )Nz2self.shape_env must not be None for symbolic types)rË   rÌ   r³  r(   r1  rÏ   r¦  re  r_  Úxreplacera  rb  r   Úreal_obj)rá   rt   s    €r`   Úmaybe_to_real_tensorz;FakeTensorMode._dispatch_impl.<locals>.maybe_to_real_tensorÏ
  s¨   ø€ ô ˜!œZÔ(Ø—}‘}Ð$Ü˜Aœ|Ô,Ø—>‘>Ð)Ü(ØLóð ð —v‘v—}‘}Ø—F‘F—K‘K×(Ñ(¨¯©×)IÑ)IÓJ×SÑSØŸ™×EÑEóóð ô
 ˜AÔ/Ô0Ø—z‘zÐ!à�r_   )Úcompute_unbacked_bindingsÚfree_unbacked_symbolsc              3  ó8   K  — | ]  }|j                   d u–— Œ y ­wrž   )r³  r¨  s     r`   rº   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>í
  s   è ø€ ÒM°!�A—M‘M¨Ô-ÑMùr¥  c              3  ó¢   •K  — | ]F  }t        |t        «      xr0  ‰|«      xŠxr$ ‰j                  d uxr t        ˆfd„‰D «       «      –— ŒH y ­w)Nc              3  óN   •K  — | ]  }|‰j                   j                  v–— Œ y ­wrž   )r1  rb  )r·   Úsrt   s     €r`   rº   z:FakeTensorMode._dispatch_impl.<locals>.<genexpr>.<genexpr>ó
  s(   øè ø€ ò àð  §¡×!NÑ!NÔNñùs   ƒ"%)rË   r(   r1  r  )r·   rL  r³  rt   Úsymss     €€€r`   rº   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>î
  sf   øè ø€ ò ð ô ˜q¤,Ó/ò Ù!6°qÓ!9Ð9˜òàŸ™¨dÐ2òô ó à!%ôó óñùs   ƒAAzpropagate_real_tensors %sz9real-tensor fallback failed for %s: %s; silently ignoringz,SKIPPED propagate_real_tensors %s(%s, %s) %sc           	     óD  •
‡‡— dd l Št        j                  d‰«       dˆˆˆˆfd„Š‰‰urõt        j                  j
                  j                  s‰j                  ‰‰‰f‰	‰
f| ‰«       n‰j                  ‰‰‰f‰	‰
f| ‰«      } t        | t        «      slt        ‰t        «      s\t        | «      t        ‰«      urFt        ‰t        t        j                  | «      «      t        t        j                  ‰«      «      «       nt        ‰| ‰«        ‰‰j                  | d¬«       | S )Nr   zmaybe_propagate_real_tensors %sc                óô  •— t        | t        «      rÈt        j                  dt	        | «      t	        |«      «       || _        t        | j                  «       |j                  «       «      D ]  \  }} ‰||«       Œ t        | j                  «       |j                  «       «      D ]  \  }} ‰||«       Œ  ‰| j                  «       |j                  «       «       y t        | t        «      �r ‰| «      �rt        | j                  j                  ‰j                  «      rH‰j                  €t        d«      ‚‰j                  j!                  | j                  j                  |«       y t        | j                  j                  x}‰j"                  «      ret        |j$                  ‰j                  «      rD|j&                  dk(  r4‰j                  €t        d«      ‚‰j                  j!                  ||«       y y y y y y )Nz%maybe_propagate_real_tensors %s -> %sz3self.shape_env must not be None for symbolic Symbolr5   z/self.shape_env must not be None for symbolic Eq)rË   rÌ   rˆ  r�  r‰  r³  rJ  rz  r4  r7  r(   r¦  r_  ÚSymbolr1  rÏ   Ú"set_real_tensor_prop_unbacked_valsrd  ÚlhsÚrhs)rá   Úreal_tr·  Úreal_sr³  Úgort   ri  s       €€€€r`   rÁ  zOFakeTensorMode._dispatch_impl.<locals>.maybe_propagate_real_tensors.<locals>.go+  s�  ø€ Ü˜a¤Ô,ä—I‘IØ?ÄÀAÃÌÈ6Ë
ôð %+�A”MÜ%(¨¯©«°6·;±;³=Ó%Aò &™	˜˜6Ù˜1˜f�ð&ä%(¨¯©«°V·]±]³_Ó%Eò &™	˜˜6Ù˜1˜f�ð&á�q×'Ñ'Ó)¨6×+@Ñ+@Ó+BÕCÜ ¤<Õ0Ñ5JÈ1Õ5MÜ! !§&¡&§+¡+¨u¯|©|Ô<ØŸ>™>Ð1Ü"0Ø Uó#ð ð Ÿ™×IÑIØŸF™FŸK™K¨õô #¨¯©¯©Ð#3 1°U·X±XÔ>Ü& q§u¡u¨e¯l©lÔ;ØŸE™E QšJàŸ>™>Ð1Ü"0Ø Qó#ð ð Ÿ™×IÑIÈ!ÈVÕTð 'ð <ð ?ð 6NÐ0r_   T)Úpeek)rá   rH   r¿  r   rz   r{   )ri  rˆ  r�  rh   rÓ   rä  r~  rž  rË   r   rÍ   r1   rB  rõ   r�  r1  )r”  rÁ  ri  rè  r²  r³  r…   ré  ÚnilÚ	real_argsÚreal_kwargsr•  rt   s    @@€€€€€€€€€€r`   Úmaybe_propagate_real_tensorszCFakeTensorMode._dispatch_impl.<locals>.maybe_propagate_real_tensors&  s  ú€ Ûä�I‰IÐ7¸Ô>÷Uð UðB ˜sÑ"ä×'Ñ'×.Ñ.×YÒYØ×AÑAØØ˜v˜Ø" KÐ0Ø Ø õð  $×LÑLØØ˜v˜Ø" KÐ0Ø Ø ó �Hô # 8¬VÔ4Ü& x´Ô8Ü˜X›¬d°8«nÑ<ô ØÜœf×1Ñ1°(Ó;Ó<Üœf×1Ñ1°(Ó;Ó<õô ˜b (¨HÔ5ñ
 *¨$¯.©.¸(ÈÕNàˆOr_   )Ú
meta_tablerì   c              3  ó4   K  — | ]  }t        |«       –— Œ y ­wrž   )r   r¨  s     r`   rº   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>�  s   è ø€ ÒP°Q¤¨aÓ 0Ô0ÑPùr¡  zprims::Úprim_meta_implÚmissing_fake_kernelc                 ó   •— dt        ‰ «      iS ©Nrs  r|  ré   s   €r`   rw  z/FakeTensorMode._dispatch_impl.<locals>.<lambda>¿  s   ø€ Øœc $›ið)€ r_   rx  c                 ó   •— ‰ S rž   r^   )Úctxs   €r`   rw  z/FakeTensorMode._dispatch_impl.<locals>.<lambda>Í  s   ø€ ÀS€ r_   c                 ó   •— dt        ‰ «      iS rÌ  r|  ré   s   €r`   rw  z/FakeTensorMode._dispatch_impl.<locals>.<lambda>Þ  s   ø€ Ø ¤# d£)ð-€ r_   c                ó$  •— t         j                  j                  j                  ‰«      r-t        j                  j                  j                  ‰g‰¢­i ‰¤ŽS ‰s‰j                  ‰«      st        ‰«      ‚| €t        ‰«      } t        ‰‰‰‰| «      S rž   )rh   rû  rü  Úcan_generate_trivial_fake_implÚgenerate_trivial_fake_implÚcan_run_unsafe_fallbackr“   Úrun_fallback_kernel)Úerrorrè  Ú	args_specr  r…   Úhas_symbolic_sizesré  rt   s    €€€€€€€r`   Úmaybe_run_unsafe_fallbackz@FakeTensorMode._dispatch_impl.<locals>.maybe_run_unsafe_fallbackñ  sŒ   ø€ ô �~‰~×#Ñ#×BÑBÀ4ÔHÜ—~‘~×+Ñ+×FÑFØðØòØ#)ñð ñ "¨×)EÑ)EÀdÔ)KÜ2°4Ó8Ð8Øˆ}Ü4°TÓ:�Ü& t¨T°9¸iÈÓOÐOr_   z*failed while attempting to run meta for %sro  )rá   rE   rz   z)T | Tensor | torch._C.ScriptObject | None)r”  rE   rz   rE   rž   )rÕ  zRuntimeError | Nonerz   rh  )iró  rí  rõ   r�  Ú_check_for_subclassÚ_check_for_subclass_argrÍ   ró  r�  rB  r£  r  rŽ  rú  r¨  rh   rí  r  Ú_to_copyrï  ÚprimsÚ
device_putrË   r   r‡   r‡  ÚallrÏ   r  r‘  r«  r)   Úclonerb  rð  Ú%validate_and_convert_non_fake_tensorsrÉ  r@   rô  Únondeterministic_seededrö  rø  Údetach_Ú_nested_tensor_from_tensor_liströ   Útree_map_onlyr  rÊ  r1  r9  r:  Úignore_fresh_unbacked_symbolsÚinvalidate_written_to_constantsr=  r²  r³  rH   r�  rˆ  Úlibrary_utilsrý  ÚMutationCheckerÚZeroDivisionErrorÚcheckÚcheck_aliasing_constraintr’  rb  Úget_fast_op_implsr"  rî   rÇ  Úcpp_meta_supports_symintÚ#_unbacked_special_fake_handling_opsrí   ró   Ú	decomposerè   r…  r§  Ústride_incorrect_oprÉ  r’  rä  Ú_custom_ops_profileÚdataÚgeneric_fake_kernelÚhas_fake_kernelÚ"inferred_fake_kernel_from_real_outr   rû  Úsimple_registryÚ	singletonÚfindÚ	fake_implÚkernelÚFakeImplCtxÚset_ctx_getterr   Úop_implementations_checksÚhas_metar€  r¼  rP  r°  Ú+wrap_meta_outputs_with_default_device_logic)8rt   r…   rö  rè  ré  rí  Úhas_unrecognized_typesrÖ   rø  rá   Úflat_arg_fake_tensorsÚis_lift_funcÚavoiding_device_initÚ!device_conversion_skip_const_proprL  Úconst_flat_argsÚ
const_argsÚconst_kwargsrÁ   Úall_constantÚflat_outÚflat_out_tensorsr  Ú#maybe_ignore_fresh_unbacked_symbolsr±  Úreal_flat_argsrý  Úmutation_checkerrv  rÆ  Ú	fast_implrÇ  rí   r«  ÚprofilesrG  Úmaybe_fake_implrÔ  Úrun_impl_checkÚop_implÚop_impl_outrØ  ÚfallbackÚnot_implemented_errorrÖ  r²  r­  rÎ  r  r³  r×  rÃ  rÄ  rÅ  r•  r¸  s8   `` ``                                       @@@@@@@@@@@@r`   rÌ  zFakeTensorMode._dispatch_impl
  s¬  ÿÿ€ õ 	Jä%×2Ñ2°D¸&°>ÓBÑˆ	�9ô "5°YÓ!?ÐÙ!à!*ö"ØÔ.EÀaÕ.H”�Q•ð"Ðð "ô  ×%Ñ%Ø>Ð@Rôô "Ð!à,5Ö M q¸×9IÑ9IÈ!Õ9L¢Ð MÐÐ MÜ ñ !
Ø3Hô!
ó 
ò ;äÑ:°	Ô:Ó:ð 	ð ×.Ñ.ˆ	à˜tŸ}™}Ð,ˆð  %ÐØ×!Ò!àœŸ	™	Ÿ™×/Ñ/×7Ñ7Ñ7Ø Ñ&Ø˜8Ñ$×)Ñ)¨UÒ2à'+Ð$Ø”u—y‘y—‘×1Ñ1×9Ñ9Ñ9Ø'+Ð$ð ”E—I‘I—N‘N×+Ñ+×3Ñ3Ð3ò .Ü˜4 ™7¤E§L¡LÓ1ò.à�Q‘—‘×#Ñ# vÑ-ò-"ð "ð	 	*ñ Ñ!6Ü+¨DÔ1Ù&Ù)Ù5äÑMÐ7LÔMÔMÜ$Ø�fÐJÐKóð ð CLöØ=>˜d×.Ñ.¨qÔ1�—
’
°qÑ8ðˆOð ô (.×'<Ñ'<¸_ÈiÓ'XÑ$ˆJ˜Ù˜
Ð3 lÑ3ˆCÜ�C‹yœFÑ" t×':Ñ':¸3Ô'?ô !“]ñ &ØŸ)™)›+�C÷&à ×1Ñ1°$¸È4Ð1ÓPÐPñ Ü�6‹{˜aÒ¤3 t£9°¢>Ü$ØGÈÀvÈXÐV\ÐU]Ð^óð ô �D˜‘G‹}¤Ñ&Ø ×1Ñ1°$¸¸Q¹Ó@Ð@ð .2×-WÑ-WØ�)˜Y¨	ó.
Ñ*ˆÐ)ð �&ô ÑQÐ;PÔQÓQˆä�tœUŸZ™Z×2Ñ2Õ3Ü—	‘	×1Ñ1¸¿¹ÒBô —	‘	×&Ñ&¨d¯i©iÑ7¸4Ä4Ç<Á<×CWÑCWÒ;WâÜÐ)Ó*¨aÓ/Ú&Ù(ØœD×@Ñ@×HÑHÑHð CLöØ=>˜d×.Ñ.¨qÔ1�—
’
°qÑ8ðˆOð ô (.×'<Ñ'<¸_ÈiÓ'XÑ$ˆJ˜ô “ñ 8Ù˜JÐ7¨,Ñ7�÷8ô ×)Ñ)¨#Ó.ˆHØ+3ÖM a´zÀ!ÄVÕ7L¢ÐMÐÐMÜÓPÐ?OÔPÓPˆLáÜ×+Ñ+ÜÜUØóð ð (ò ;�Ø×5Ñ5°cÕ:ð;ô
 ×,Ñ,¨Y¸	ÓB‰ˆˆfô �tœUŸZ™Z×;Ñ;Ô<ØÐ/Ñ/ð
 —>‘>Ð)ô ×&Ò&à—^‘^×AÑAð 0ð ñ FÑ:Ó<ñ FØ4Ð.¨tÑ4°dÐE¸fÑE÷F÷ Fò Fð 	×,Ñ,¨TÐ3HÈ$ÐPVÔWð	Øð	à6õ	÷(	
ô
 ‹hˆàˆà×'Ò'ÜÑMÐ7LÔMÔMÜõ ð #ôô ô �I‰IÐ1°4Ô8Ø?HÖI¸!Ñ2°1Õ5ÐIˆNÐIÜ%+×%:Ñ%:¸>È9Ó%UÑ"ˆI�{ä&×1Ñ1°$Ó7ˆJÙÜ#0×#@Ñ#@Ø˜.¨)ó$Ð ð
Ù Ð:¨kÑ:�ñ Ø ×&Ñ&Ô(Ü×7Ñ7¸¿
¹
ÀIÈxÕXà×(Ò(ô �I‰IØ>ØØ%Øà—>’>ð —‘×=Ò=àô÷O	ö O	ñd Ü)Ó+×/Ñ/°Ó5ˆIØÐ$Ù3±I¸dÐ4TÀTÒ4TÈVÑ4TÓUÐUõ 	-ð ˜
Ñ"Ø×1Ñ1°$Ô7á" t¨t×/WÑ/WÑ'Wõ :ð Ð*Ñ*Ù"ô 0°Ô5ÜÑPÐ:OÔPÔPð ñ Ù7Ø1Ð+¨DÑ1°4ÐB¸6ÑBó÷ñ ð
 ñ ;à"�D—N‘N DÐ3¨FÑ3�ØœNÑ*Ù7¸Ó:÷	;ñ ;ð +÷;ð ˜Ÿ™×*Ñ*Ñ*Ü˜Ð.Ô/Ü'¨Ô-àñ Ù3Ø'�D×'Ñ'¨Ð8°Ñ8ó÷ñ ô
 —=‘=×'Ñ'×;Ñ;ˆØÐØ�x—}‘}Ñ$Ø3�x×3Ñ3°D¸$ÐPÀÒPÈÑPÐPð ×'Ò'Ø Ñ#Ü!×,Ñ,¨TÔ2Ø—‘Ð*ô !×0Ñ0°Ô6Ü;¸DÀ$ÈÓQ�ä!Ø)ó!õñ 4°FÓ;Ð;ô  Ÿ.™.×8Ñ8×BÑB×GÑGØ�I‰I‹Kó
ç
‰)—F‘Fð 	ñ ðÜ—n‘n×.Ñ.×:Ñ:¸4ÀÓF�Ü—^‘^×-Ñ-×<Ñ<»[ÓIñ @È4ñ @Ù,¨dÐ=°fÑ=�FÙ7¸Ó?÷@÷ @ò @ô8 (Aò 	EÑ#ˆN˜GÙ˜dÕ#á% d¨DÐB°4ÒB¸6ÑB�Ø¤nÒ4á7¸ÓDÒDð	Eð *.ð	PØ&ð	Pà÷	Pó 	Pô( ˜Œ~Ù0Ó2ˆHÙ/°Ó9Ð9ð
	Ü-¨dÓ3ñ *Ù˜$Ð) &Ñ)�÷*ñ ,Ø×<Ñ<Ø�4˜¨6¯:©:°hÓ+?ð =ó ó
ð 	
ùò["ùò !Nùòb÷&ñ &üòj÷8ñ 8üò  N÷<Fð Fú÷ F÷ Fó Füòd Jøô %ò ô —	‘	ØOØØ÷ò ûð	ú÷Xñ ú÷
;ñ ;ú÷"ñ ú÷H@ð @ú÷ @÷ @ñ @ýô $ò ð ×/Ò/Ø ¨Ñ+Ü)×4Ñ4°TÔ:ØŸ™Ð2ä?ÀÀdÈHÓU�Fä%Ø-ó%õñ 8¸Ó?Õ?à�Gûð'ú÷x*ñ *ûä"ò 	DÙ,Ð-BÓCÕCûÜò 	Ü�M‰MÐFÈÔMØð	ús@  Áh<Áh<ÂiÂiÈ&iÊiÏ<&iÑ	iÑ1i*Òi*ÕjÕi/Õ"	j×5jÙj Ý%kÞ"kß(käAl å.lå1k,æ	læ
	l ç6n
 è	m=è
n
 éiéi'é/i8	é4jêjê	kê j=ê=këkëkëk)ë,k5	ë1lë8	l ìl
ìl ì	m:ìAm5í-m:í3m5í5m:í=nîn
 î
	oîn îoî $oÚ
debugprimsrÜ  r  ÚxlaÚvisionÚ	torchtextÚ
torchaudioÚ	quantizedc                óv   — | j                   sy|j                  | j                  v xs |j                  «       dk(  S )NFzfbgemm::gmm)r…  Ú	namespaceÚ+_can_run_unsafe_fallback_allowed_namespacesr…  ©rt   r…   s     r`   rÓ  z&FakeTensorMode.can_run_unsafe_fallback+  s:   € Ø×*Ò*Øð
 �N‰N˜d×NÑNÐNò ,Ø�y‰y‹{˜mÑ+ð	
r_   c                ód   ‡ ‡‡‡‡‡— g Šdˆˆˆˆˆˆ fd„}‰D �cg c]
  } ||«      ‘Œ }}|‰fS c c}w )zß
        Checks if the list of tensors are fake tensors.
        If not, try to convert them to fake tensors.
        Returns the original args, kwargs, and a flattened list of (args, kwargs) that are fake tensors.
        c                ó–  •— t        | t        «      s| S ‰
j                  | «      �st        ‰	d«      rXt        j
                  j                  ‰	j                  v r2t        j                  ‰‰«      \  }}t        dt        ‰	||«      › �«      ‚t        j                  €‰
j                  nt        j                  }|skt        | t        «      r)| j                   ‰
urt        d| j                   › d‰
› �«      ‚t        j                  ‰‰«      \  }}t        dt        ‰	||«      › �«      ‚‰j#                  ‰
| «      }n| }‰j%                  |«       |S )Nrö  zECan't call metadata mutating ops on non-Fake Tensor inputs. Found in z"Mixing fake modes NYI x.fake_mode=z	 vs self=zuPlease convert all Tensors to FakeTensors first or instantiate FakeTensorMode with 'allow_non_fake_inputs'. Found in )rË   r   r£  r§  rh   rô  rø  rö  rõ   r‘  rÏ   r"   ræ  r›   r†  rÌ   r±   rb  r¼   )rÖ   rè  ré  r†  rÁ   rÖ  r­  r  r  r…   rt   s        €€€€€€r`   ÚvalidatezFFakeTensorMode.validate_and_convert_non_fake_tensors.<locals>.validateD  sU  ø€ Ü˜a¤Ô(Ø�ð ×#Ñ# AÕ&Ü˜4 Ô(¬U¯Y©Y×-CÑ-CÀtÇyÁyÑ-PÜ#)×#8Ñ#8¸ÀIÓ#N‘L�D˜&Ü(Ø_Ô`kÐlpÐrvÐx~Ó`ð  `Að  Bóð ô
 '×EÑEÐMð ×.Ò.ä(×GÑGð &ñ
 -Ü! !¤ZÔ0°Q·[±[ÈÑ5LÜ,Ø@ÀÇÁÀÈYÐW[ÐV\Ð]óð ô $*×#8Ñ#8¸ÀIÓ#N‘L�D˜&Ü(ðBÜBMÈdÐTXÐZ`ÓBaÐAbðdóð ð
  ×0Ñ0°°qÓ9‘à�à!×(Ñ(¨Ô-ØˆJr_   )rÖ   rE   rz   úT | FakeTensorr^   )	rt   r…   r­  r  rÖ  r"  rL  Úvalidated_argsr  s	   `````   @r`   rà  z4FakeTensorMode.validate_and_convert_non_fake_tensors6  s@   ý€ ð 35Ð÷ 	ò  	ðD 09Ö9¨!™( 1�+Ð9ˆÐ9ØÐ4Ð4Ð4ùò :s   ˜-c                ó`   ‡ ‡‡‡‡‡‡— ‰ j                   Šd ŠdŠdˆˆˆˆˆˆˆ fd„}t        ||«      S )NFc                óR  •‡ — t        ‰ t        «      s‰ S ‰€t        j                  ‰‰«      \  ŠŠ‰j	                  ‰ «      }|r7t        j                  ‰ j                  ‰k(  ˆˆ fd„«       t        t        ‰ «      S ‰�+‰r‰j                  ‰‰ «      S ‰j                  ‰‰ ‰xs ‰«      S ‰ S )Nc                 ó(   •— d‰j                   › d‰ › �S )Nz-FakeTensor is wrapped to wrong device, found z, expected ro  )r†   rÔ  s   €€r`   rw  zZFakeTensorMode.wrap_meta_outputs_with_default_device_logic.<locals>.wrap.<locals>.<lambda>‡  s   ø€ ÐKÈAÏHÉHÈ:ÐU`ÐanÐ`oÐp€ r_   )rË   r   rÌ   r  r£  rh   Ú_checkr‡   r   rE   rb  rg  )	rÔ  r£  r†   r­  r‡   r  r…   r  rt   s	   ` €€€€€€€r`   ÚwrapzHFakeTensorMode.wrap_meta_outputs_with_default_device_logic.<locals>.wrapv  s¹   ù€ ô ˜a¤Ô(Ø�àÐ$ô ×2Ñ2°4¸ÓCñØ!Ø*ð ×*Ñ*¨1Ó-ˆKÙÜ—‘Ø—H‘H Ñ-Üpôô œA˜q“zÐ!ØÐ&Ù)ð %×5Ñ5°d¸AÓ>Ð>à$×9Ñ9Ø˜a Ò!8¨=óð ð
 �r_   ©rÔ  rE   rz   r#  )rŽ  r0   )	rt   r«  r…   r  r‡   r)  r†   r­  r  s	   ` ``` @@@r`   rÿ  z:FakeTensorMode.wrap_meta_outputs_with_default_device_logici  s7   þ€ ð ×.Ñ.ˆ	ð ˆØ!&Ð÷ 	ó  	ôD ˜˜aÓ Ð r_   r  c               óª  — dd l }ddlm} |€8| j                  }| j                  st        d«      ‚| xj                  dz  c_         |j                   ||d«      «      }|j                  j                  j                  d«      }| j                  €t        d«      ‚| j                  j                  | j                  j                  ||¬«      ||¬«      }|S )	Nr   )ÚNestedIntNodez4should only be called while FakeTensorMode is activer5   Úintermediate_offsets_or_lengthszself.shape_env must not be None)Úvalr(  )Úsymr8  r(  )rš  Ú!torch.nested._internal.nested_intr,  rƒ  r–  rÏ   r   r’  r(  ÚEphemeralSourcer1  rX  Úcreate_symbol)rt   r  rh   r,  r8  ÚsrcÚrets          r`   r  z)FakeTensorMode.create_symbolic_nested_intš  sÔ   € ó
 	4ÝCàÐØ×4Ñ4ˆLØ×#Ò#Ü$ØJóð ð ×%Ò%¨Ñ*Õ%Øˆu�|‰|™M¨,¸Ó:Ó;ˆà�m‰m×"Ñ"×2Ñ2Ð3TÓUˆØ�>‰>Ð!Ü Ð!BÓCÐCØ�n‰n×.Ñ.Ø—‘×,Ñ,ØØð -ó ð Øð /ó 
ˆð ˆ
r_   c                ól   — t         j                  j                  |j                  v ry|| j                  v S r¢   )rh   rô  Ú	view_copyrö  Ú_cpp_meta_supports_symintr  s     r`   rí  z'FakeTensorMode.cpp_meta_supports_symintÌ  s,   € Ü�9‰9×Ñ $§)¡)Ñ+ØØ�t×5Ñ5Ð5Ð5r_   c                óª   — |j                  «       t        k  xr; t        |«       xr- | j                  |«       xr |j                  j
                  dk7  S r¹  )ÚnumelÚCONSTANT_NUMEL_LIMITr   r£  r‡   rÍ   r¢  s     r`   r«  zFakeTensorMode.may_turn_constÓ  sS   € à�G‰G‹IÔ-Ñ-ò (Ü! !Ó$Ð$ò(à×$Ñ$ QÓ'Ð'ò(ð —‘—‘ Ñ'ð		
r_   c                óš  — t        d„ |D «       «      }t        |«      }|r¬|j                  «       r›t        |||d¬«      \  }}|j	                  «       D ]u  \  }	}
|	dk7  s|j                  |	«      r|	nd}	| j                  |
«      sŒ2|j                  |	«      sŒD|
j                  €ŒQ| j                  j                  |
j                  «       Œw y y y )Nc              3  ó8   K  — | ]  }|j                   d u–— Œ y ­wrž   r.  r¨  s     r`   rº   zAFakeTensorMode.invalidate_written_to_constants.<locals>.<genexpr>â  r©  r¥  Trî  Úinputrt   )
r  rê   Ú
is_mutabler$   r¥   Úhas_argumentr£  r  rŽ  r  )rt   r…   r  rè  ré  Úany_constantÚschema_inforÄ   r  ÚkrÚ   s              r`   ræ  z.FakeTensorMode.invalidate_written_to_constantsÛ  sÆ   € ô ÑQÐ;PÔQÓQˆÜ% dÓ+ˆÙ˜K×2Ñ2Ô4Ü.ØØØØ-1ô	‰MˆAˆzð #×(Ñ(Ó*ò W‘��1Ø˜wš,¨+×*BÑ*BÀ1Ô*E‘AÈF�à×$Ñ$ QÕ'Ø#×.Ñ.¨qÕ1ØŸ
™
Ñ.à×.Ñ.×JÑJÈ1Ï:É:ÕVñWð 5ˆ<r_   )r�  r(  r)  r*  c               óš   — | j                   }|€| j                  }|r|�t        d«      ‚d }| j                  j	                  | |||||¬«      S )Nz2cannot set both static_shapes and symbolic_context)r1  r(  r)  r*  )r1  r�  rÏ   rŽ  rb  )rt   r  r�  r(  r)  r*  r1  s          r`   rë  zFakeTensorMode.from_tensorô  sn   € ð &*§^¡^ˆ	ØÐ Ø ×.Ñ.ˆMÙØÐ+Ü$ØHóð ð ˆIØ×)Ñ)×:Ñ:ØØØØØ-Øð ;ó 
ð 	
r_   )r…  r  r†  r  r1  ri  r�  rš   r  r  rz   r{   ry   )rá   rH   rz   zTypeGuard[FakeTensor])rz   r  )rz   r~   r'  )rz   r   )rº  ztype[BaseException] | Noner»  zBaseException | Noner¼  zTracebackType | Nonerz   r{   )rz   ru  )
rØ  r6   r…   r@   rè  r)  ré  r*  rz   rS  )r…   r@   rè  r)  ré  r*  rz   r{   )
rG  rK  rè  z:Mapping[str, object] | Sequence[object] | Iterable[object]rØ  r6   rI  rK  rz   r{   )rØ  r6   r¸   rS  r…   r@   rè  r)  ré  r*  r×  rh  rz   r{   )rØ  r6   r¸   rS  r…   r@   rè  r)  ré  r*  r×  rÌ   rz   re  )rØ  r6   r¸   rS  r…   r@   rè  r)  ré  r*  r×  rh  rz   rk  )rØ  r6   rÖ  re  r¸   rS  r…   r@   rè  r)  rz   rh  )rØ  r6   rÖ  rk  r¸   rS  r…   r@   rè  r)  rz   ú1FakeTensor | None | tuple[FakeTensor | None, ...])r×  rD  r…   r@   rö  r(  rè  r)  ré  r*  rz   r{   )
r…   r@   r€  r-   rÛ   rH   rh  rH   rz   ztuple[object | None, bool])r…   r@   r’  rH   r“  rH   r”  rH   r•  rH   rz   zobject | None)
r…   r@   rö  r(  rè  r)  ré  r*  rz   rh  ©r…   r@   rz   r  )
r…   r@   r­  r  r  r)  rÖ  r2   rz   z%tuple[list[object], list[FakeTensor]])
r«  rH   r…   r@   r  r)  r‡   rŠ   rz   r/   )r  r<  rz   r'   r  )
r…   r@   r  zSequence[FakeTensor]rè  r)  ré  r*  rz   r{   )r  r   r�  rš   r(  rj  r)  rk  r*  r  rz   rÌ   )NrZ   r[   r\   r}  r]   r~  r  r   rU  r€  r¨  ry  rƒ  r„  ru   r   r£  rm  r¨  r­  r3   r#   rû  rµ  r¹  r/  rÁ  rÃ  rÅ  rØ  rÈ  r  rD  r  r'  rÓ  rD  rÑ  rÒ  r¯  r„  rž  rÌ  r¦   r  rÓ  rà  rÿ  r  r  rt  r5  r<  rï  Úas_strided_scatterÚ
as_stridedÚas_strided_ru  ÚdetachÚview_as_realÚview_as_complexr?  Úsource_Storage_storage_offsetÚ(_sparse_coo_tensor_with_dims_and_tensorsr7  Úviewrù  Úslicer   rî  rí  Ú
lift_freshÚlift_fresh_copyrú  r«  ræ  rë  r‹   rŒ   s   @r`   r®   r®   ˜  s±  ø… Ø:<€EÐ7Ó<Ø€J�ÓØ€L�#ÓÙ%0°Ó%5€N�NÓ5ð €Eˆ3ƒNØ!&Ð˜$Ó&ØÓØÓØÓØÓð !#Ð˜#Ó"Ø&(Ð Ó(ð
 (,Ø&+Ø%)Ø%)ð ñ![Dð !%ð[Dð  $ð	[Dð
 #ð[Dð #ð[Dð  ð![Dð" 
õ#[DózDóAð ò

ó ð

ð òó ðð
 ð "$Ù'5Ó'7ðàðð ðð ð	ð
 %ðð 
òó ðõ&ð6Và,ðVð &ðVð %ð	Vð
 
õVð$ òó ðð ò	
ó ð	
ð òó ðð^àð^ð ð^ð ð	^ð
 %ð^ð 
ó^ð@5àð5ð ð5ð ð	5ð
 %ð5ð 
ó5ðnDDàðDDð ðDDð %ð	DDð
 
óDDðLA#àðA#ð IðA#ð ð	A#ð
 (ðA#ð 
óA#ðF(Càð(Cð ð(Cð ð	(Cð
 ð(Cð %ð(Cð "ð(Cð 
ó(CðTKàðKð ðKð ð	Kð
 ðKð %ðKð ðKð 
'óKðZiàðið ðið ð	ið
 ðið %ðið "ðið 
"óiðVQ8àðQ8ð -ðQ8ð ð	Q8ð
 ðQ8ð ðQ8ð 
óQ8ðfàðð (ðð ð	ð
 ðð ðð 
;óð22àAð2ð ð2ð ð	2ð
 ð2ð %ð2ð 
ó2ðp "$Ù'5Ó'7ðBàðBð ðBð ð	Bð
 %ðBð 
óBðBoØðoØ&-ðoØ5;ðoØCIðoà	#óoðbJ=àðJ=ð ðJ=ð ð	J=ð
 ðJ=ð ðJ=ð 
óJ=ðXF
àðF
ð ðF
ð ð	F
ð
 %ðF
ð 
óF
ñZ 3>ØØØØØØØØó	3Ð/ó	
ð15àð15ð 'ð15ð $ð	15ð
 ð15ð 
/ó15ðf/!àð/!ð ð/!ð $ð	/!ð
 ð/!ð 
ó/!ðd -1ñØ)ðà	óñ< !,Ø�
‰
× Ñ Ø×Ñ×"Ñ"Ø×Ñ×'Ñ'Ø�‰×ÑØ×Ñ× Ñ Ø�
‰
×ÑØ�‰×ÑØ×Ñ×!Ñ!Ø×Ñ×$Ñ$Ø�	‰	×/Ñ/Ø×5Ñ5×=Ñ=ó!Ðñ +6Ø�	‰	×ÑØ×Ñ×!Ñ!Ø�
‰
×Ñó+Ð'ó6ñ
 ˜4Ÿ?™?×2Ñ2°D×4HÑ4H×4PÑ4PÓQ€Hó
ðWàðWð  4ðWð ð	Wð
 %ðWð 
óWð: &*Ø $Ø37Øñ
àð
ð #ð	
ð
 ð
ð 1ð
ð ð
ð 
÷
r_   c                ó  — ddl m}m} t        j                  j
                  j                  j                  «       du}|r ||«      D ]  }t        d«      ‚ y ||«      D ],  }|j                  D ]  }|| j                  vsŒt        d«      ‚ Œ. y)a  
    Validate symbolic content in output and raise _BypassDispatchCache if
    caching should be bypassed.

    Args:
        state: Cache key state containing known symbols
        output: Output to validate
        proxy_mode_active: Whether PROXY dispatch mode is currently active

    Raises: _BypassDispatchCache: If output contains symbolic content that
        prevents caching

    Details:

    If our output contains any symbols that didn't appear in the input then we
    need to bypass. Usually this will be unbacked symbols which can't be
    properly reconstructed but there could be "weird" cases where backed symbols
    spontaneously appear (from non-input state)?

    If we're proxy (symbol) tracing and the output contains ANY symbols then we
    need to bypass. The problem is that ProxyTorchDispatchMode relies on SymNode
    object identity and being able to see the construction of SymNodes.

    We could improve the proxy tracing case in a few ways:

    1. If the output SymNodes are directly copied from inputs then this is
       actually fine - they're already tracked. This would probably be the
       biggest bang/buck.

    2. If the output (tensors) are all direct copies of the inputs then this is
       also fine - since they're inputs they must be tracked. We already compute
       this we just don't plumb it around enough.

    3. If the output SymNodes are already tracked by the proxy then this is also
       actually fine - they're properly tracked. This probably wouldn't be
       common since for most outputs we use torch.empty_strided() and recompute
       strides.

    4. We could use the proxy to track "how" the SymNodes were computed and when
       using the cache we could "replay" them properly to teach the proxy how to
       build them.
    r   )Ú_iterate_exprsÚ_iterate_nodesNzProxy mode with SymNode outputzunrepresented symbol in output)r=  rS  rT  rh   rÛ  rÜ  rÝ  rÞ  rs  r`  rã  )rØ  r×  rS  rT  rè  rÄ   r·  ra  s           r`   r  r    sš   € ÷Z Uä—‘×&Ñ&×3Ñ3×BÑBÓDÈDÐP€JÙñ   Ó'ò 	IˆAÜ&Ð'GÓHÐHñ	Iñ   Ó'ò 	QˆAØŸ.™.ò Q�Ø ×!4Ñ!4Ò4Ü.Ð/OÓPÐPñQñ	Qr_   c                ó  ‡ ‡‡‡— t         j                  j                  |j                  v r‰‚i Št	        «       5  dˆ ˆfd„}|D �cg c]
  } ||«      ‘Œ }}t
        j                  ||«      \  }} ||i |¤Ž}	d d d «       t        «       Š|D ]H  }
t        |
t        «      sŒt        |
«      rŒ ‰j                  |
j                  «       j                  «       ŒJ dˆ ˆˆˆfd„}t
        j                  |	«      S c c}w # 1 sw Y   Œ„xY w)Nc                óâ   •— ‰j                  | «      r\t        j                  | | j                  ¬«      }| j                  r|j                  | j                  «       «       | ‰t        |«      <   |S | S )Nro  )r£  rh   Ú
zeros_likerº  rþ   Ú_coalesced_r;  r‰  )rÔ  rÁ   r±   Ú	inp_implss     €€r`   Úto_real_tensorz+run_fallback_kernel.<locals>.to_real_tensore  sY   ø€ Ø×$Ñ$ QÔ'Ü×&Ñ& q°·±Ô?�Ø—;’;Ø—O‘O A§N¡NÓ$4Ô5Ø%&�	œ"˜S›'Ñ"Ø�
ØˆHr_   c                ó"  •— t        | «      ‰vr9t        | t        «      r)t        | «      s| j	                  «       j
                  ‰v r‰‚t        | t        «      r7t        | «      ‰v r‰t        | «         S ‰j                  j                  ‰| «      S | S rž   )r‰  rË   r   r   r  Ú_cdatarŽ  rb  )rÔ  r±   rY  Úorig_not_implemented_exceptionÚstoragess    €€€€r`   Úmap_outz$run_fallback_kernel.<locals>.map_out  s‚   ø€ Üˆa‹5˜	Ñ!Ü�qœ&Ô!Ü! !Ô$Ø× Ñ Ó"×)Ñ)¨XÑ5à0Ð0ä�aœÔ Ü�!‹u˜	Ñ!Ø ¤ A£Ñ'Ð'à ×6Ñ6×GÑGÈ	ÐSTÓUÐUàˆHr_   )rÔ  rE   rz   z
T | Tensorr*  )rh   rô  rø  rö  r)   rõ   r‘  rˆ  rË   r   r   rç  r  r\  r0   )r±   r…   r  rÖ  r]  rZ  rL  rè  ré  r«  rÔ  r_  rY  r^  s   `   `       @@r`   rÔ  rÔ  Q  sð   û€ ô ‡y�y×Ñ §¡Ñ*Ø,Ð,ð €Iô 
‹ñ "ö	ð 1:Ö:¨1‘^ AÕ&Ð:ˆ	Ð:Ü×,Ñ,¨Y¸	ÓB‰ˆˆfá�$Ð!˜&Ñ!ˆ÷"ô  &)£U€Hàò 8ˆÜ�aœÕ Ü  Õ#Ø—‘˜Q×-Ñ-Ó/×6Ñ6Õ7ð8÷ð ô  �?‰?˜7 AÓ&Ð&ùòC ;÷"ð "ús   ¹C:ÁC5Á#C:Ã5C:Ã:Dc                ó.   — |j                  «        || |<   y rž   )r`  ©r}  r¸   rÖ  s      r`   rÏ  rÏ  ’  s   € ð
 ×ÑÔØ€Eˆ#‚Jr_   c                ó   — || |<   y rž   r^   ra  s      r`   rÐ  rÐ  ›  s   € ð
 €Eˆ#‚Jr_   c                  ó4   — e Zd Zdd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Zy)ÚFakeCopyModec                ó   — || _         y rž   )r±   )rt   r±   s     r`   ru   zFakeCopyMode.__init__¦  s	   € Ø"ˆ�r_   Nc                ó  — |r|ni }|t         j                  j                  j                  u rTt	        |d   t
        «      st        dt        |d   «      › �«      ‚ || j                  j                  |d   d¬«      fi |¤ŽS |t
        j                  u r»t        |«      dk7  st        |«      dk7  r$t        dt        |«      › dt        |«      › d�«      ‚t        t
        |d   «      }t        t        t        t        f   |d	   «      }t!        |«      |v r|t!        |«         S | j                  j                  |d¬«      }||t!        |«      <   |S t         j                  j#                  «       5   ||i |¤Žcd d d «       S # 1 sw Y   y xY w)
Nr   rI  T)r�  é   z3Expected 2 args and 0 kwargs for __deepcopy__, got z
 args and z kwargsr5   )rh   ri   Ú
TensorBaserß  rË   r   rÏ   rÍ   r±   rë  Ú__deepcopy__rð  r   r£   rU  rÌ   r‰  ÚDisableTorchFunctionSubclass)rt   r…   rö  rè  ré  r  ÚmemorÁ   s           r`   Ú__torch_function__zFakeCopyMode.__torch_function__©  sw  € ñ "‘ rˆð ”5—8‘8×&Ñ&×,Ñ,Ñ,Ü˜d 1™g¤vÔ.Ü$Ð'<¼TÀ$ÀqÁ'»]¸OÐ%LÓMÐMÙØ—‘×*Ñ*¨4°©7À$Ð*ÓGñØKQñð ð ”V×(Ñ(Ñ(Ü�4‹y˜AŠ~¤ V£°Ò!1Ü$ØIÌ#ÈdË)ÈÐT^Ô_bÐciÓ_jÐ^kÐkrÐsóð ô œ& $ q¡'Ó*ˆFÜœœS¤*˜_Ñ-¨t°A©wÓ7ˆDä�&‹z˜TÑ!ØœB˜v›JÑ'Ð'à—.‘.×,Ñ,¨VÀ4Ð,ÓHˆCØ"ˆD”�F“ÑØˆJä—‘×6Ñ6Ó8ñ -Ù˜TÐ, VÑ,÷-÷ -ò -ús   Å,E>Å>F)r±   r®   rz   r{   )r^   N)
r…   r@   rö  r(  rè  r)  ré  zMapping[str, object] | Nonerz   rÌ   )rZ   r[   r\   ru   rl  r^   r_   r`   rd  rd  ¥  sD   „ ó#ð "$Ø.2ð -àð -ð ð -ð ð	 -ð
 ,ð -ð 
ô -r_   rd  c                óÔ   — t        | «      dk7  st        | d   t        «      st        d«      ‚| d   j                  j
                  rt        j                  d«      S | d   j                  S )Nr5   r   z<Expected exactly one FakeTensor argument for _device_handlerrd  )	rð  rË   rÌ   rÏ   r±   ry  rh   r‡   rº  ©rè  s    r`   Ú_device_handlerro  Ì  s`   € ô ˆ4ƒy�A‚~œZ¨¨Q©´Ô<ÜØJó
ð 	
ð ˆA�w×Ñ×-Ò-Ü�|‰|˜FÓ#Ð#à�A‰w×"Ñ"Ð"r_   c                ó&   — t        d„ | D «       «      S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrž   )rÚ  )r·   rÖ   s     r`   rº   z&_check_for_subclass.<locals>.<genexpr>è  s   è ø€ Ò=¨aÔ& q×)Ñ=ùó   ‚)r  )r  s    r`   rÙ  rÙ  ç  s   € ÜÑ=°9Ô=Ó=Ð=r_   c                óú   — t        | t        «      ryt        | t        «      syt        | «      }|t        u ryt	        |t
        j                  j                  «      xr |j                  t        j                  u }|ryy)NFT)	rË   rÌ   r   rÍ   rò  rh   r@  rA  rû  )rÖ   Úx_typeÚ#is_metadata_only_parameter_subclasss      r`   rÚ  rÚ  ë  sp   € Ü�!”ZÔ ØÜ�aœÔ Øä�!‹W€FØ”ÑØô 	�6œ5Ÿ8™8×-Ñ-Ó.ò 	CØ×%Ñ%¬×)BÑ)BÐBð (ñ +Øàr_   c                ód   — t        d„ t        t        | d   «      j                  «       D «       «      S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrž   ©rU  ©r·   r·  s     r`   rº   z<lambda>.<locals>.<genexpr>  s   è ø€ ò 4ØŒˆA�ñ4ùrr  r   )rB  r   r   rz  rn  s    r`   rw  rw    s,   € ¬eñ 4ÜœV T¨!¡WÓ-×2Ñ2Ó4ô4ó /€ r_   c                ód   — t        d„ t        t        | d   «      j                  «       D «       «      S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrž   rx  ry  s     r`   rº   z<lambda>.<locals>.<genexpr>  s   è ø€ ò 6ØŒˆA�ñ6ùrr  r   )rB  r   r   r4  rn  s    r`   rw  rw    s,   € ´ñ 6ÜœV T¨!¡WÓ-×4Ñ4Ó6ô6ó 1€ r_   c                óV   — t        t        t        | d   «      j                  «       «      S r  )rU  r   r   r7  rn  s    r`   rw  rw    s"   € ¼ÜŒV�T˜!‘WÓ×,Ñ,Ó.ó9€ r_   )Ú_device_not_kwarg_opsÚ_is_tensor_constructorÚ_like_tensor_constructorsÚcontains_tensor_typesrì  rþ  rý  rð  c                óh   — | t         j                  v r t         j                  j                  | «       y y rž   )r®   r}  r»   rÚ  s    r`   rç  rç  %  s)   € Ø
Œn×"Ñ"Ñ"Ü×Ñ× Ñ  Õ%ð #r_   c                 ó¶  — t         j                  d«       t         j                  dt        j                  «       t         j                  dt        j                  «       t        j
                  } | rjt         j                  d«       t        d„ | D «       «      }t        | j                  «       d„ ¬«      D ]#  \  }}t         j                  d|d	z   |› d
�|«       Œ% y y )NzFakeTensor cache stats:z  cache_hits: %sz  cache_misses: %sz  cache_bypasses:c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrž   )rð  )r·   rB  s     r`   rº   z#dump_cache_stats.<locals>.<genexpr>2  s   è ø€ Ò-˜q”C˜—FÑ-ùrr  c                ó   — | d    S rp   r^   )r!  s    r`   rw  z"dump_cache_stats.<locals>.<lambda>3  s   € ¸A¸a¹D¸5€ r_   rÚ  z    %-*s %sr5   rÁ  )	rˆ  Úinfor®   r~  r  r€  ÚmaxÚsortedr¥   )ry  ÚwidthrB  rÚ   s       r`   Údump_cache_statsr‰  *  s¦   € ä‡H�HÐ&Ô'Ü‡H�HÐ¤×!:Ñ!:Ô;Ü‡H�HÐ!¤>×#>Ñ#>Ô?Ü×,Ñ,€HÙÜ�‰Ð$Ô%ÜÑ- HÔ-Ó-ˆÜ˜8Ÿ>™>Ó+±ÔAò 	;‰DˆAˆqÜ�H‰H�] E¨A¡I°!°°A¨w¸Õ:ñ	;ð r_   c                ó&  ‡— dˆfd„}|j                  «       dk7  r |d|j                  «       › �«       t        |j                  «       «      D �cg c]5  }t        j                  j
                  j                  | j                  «      ‘Œ7 }}dg|j                  «       z  }t        |j                  «       «      D ��cg c]	  \  }}||f‘Œ }	}}|	j                  d„ ¬«       d}
|
}|	D ]P  \  }}||
k7  r' |d|j                  › d	|j                  «       › d
�«       |||<   |
|j                  |   z  }
|||   z  }ŒR | 5  t        j                  |||j                  |j                  |j                  ¬«      cd d d «       S c c}w c c}}w # 1 sw Y   y xY w)Nc                ó<   •— t        d‰j                  › d| › d�«      ‚)NzQpropagate_real_tensors: we cannot infer a Fake kernel (meta kernel) for operator z	 because z>. Please use torch.library.register_fake to add a Fake kernel.)rK  r’  )r   rs  s    €r`   Úunsupportedz1_infer_fake_from_real_tensor.<locals>.unsupported:  s1   ø€ Üð*Ø*,¯(©(¨°9¸V¸Hð EKðLó
ð 	
r_   r   z'a return has a non-zero storage offset r‚  c                ó   — | d   | d    fS r"  r^   )rÖ   s    r`   rw  z._infer_fake_from_real_tensor.<locals>.<lambda>]  s   €   !¡ q¨¡t e˜}€ r_   rÚ  r5   z(a return was not dense in memory (sizes z	 strides ú))r‡   rI  rü   )r   r~   rz   r{   )r7  r  rK  rh   rû  rù  Úallocate_sizer1  r  r4  Úsortr3  r<  r‡   rI  rü   )rã   rs  r•  rŒ  rÄ   Ú
fake_shapeÚfake_stridesr   r·  rn  ÚexpectedÚfake_strides    `          r`   r  r  7  s“  ø€ õ
ð ×ÑÓ  AÒ%ÙØ5°h×6MÑ6MÓ6OÐ5PÐQô	
ô �x—|‘|“~Ó&öàô 	�‰× Ñ ×.Ñ.¨t¯~©~Õ>ð€Jð ð �4˜(Ÿ,™,›.Ñ(€LÜ&/°·±Ó0AÓ&B×C™F˜C ��3ŠxÐC€GÑCØ‡L�LÑ,€LÔ-Ø€HØ€KØò 4‰ˆˆ3Ø�Š=ÙØ:¸8¿>¹>Ð:JÈ)ÐT\×TcÑTcÓTeÐSfÐfgÐhôð (ˆ�SÑØ˜hŸn™n¨SÑ1Ñ1ˆØ! J¨s¡OÑ3‰ð4ð 
ñ 
Ü×"Ñ"ØØØ—?‘?Ø—.‘.Ø—?‘?ô
÷
ñ 
ùò5ùó D÷
ð 
ús   Á:E<Â;FÄ:8FÆFc                ó  — | j                   €t        d«      ‚t        j                  |«      \  }}t	        d„ |D «       «      st        d|j                  › �«      ‚|D �cg c]  }t        | ||«      ‘Œ }}t        j                  ||«      S c c}w )Nzmode.shape_env must not be Nonec              3  óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrž   )rË   rh   r   r¤  s     r`   rº   z5inferred_fake_kernel_from_real_out.<locals>.<genexpr>}  s   è ø€ ÒB¨qŒz˜!œUŸ\™\×*ÑBùs   ‚$&zPpropagate_real_tensors: we don't support operators that return non-Tensors. Got )	r1  rÏ   rõ   r�  rÞ  rK  rè   r  r‘  )rã   rs  r•  Úreal_flat_outÚspecrá   Úfake_flat_outs          r`   rõ  rõ  s  s™   € ð ‡~�~ÐÜÐ>Ó?Ð?ô
 !×-Ñ-¨hÓ7Ñ€M�4ÜÑB°MÔBÔBÜð Ø "§
¡
˜|ð-ó
ð 	
ð
 IVÖVÀ1Ô1°$¸¸AÕ>ÐV€MÐVÜ× Ñ  °Ó5Ð5ùò Ws   ÁB
)rk   r~   rz   r  )r¥   rE   rz   zdict[T, Literal[True]])rz   z/Generator[TorchDispatchMode | None, None, None])r±   r®   rz   zGenerator[None, None, None])rÀ   z!Tensor | TraceableWrapperSubclassrÁ   ú(list[Tensor | int | SymInt | OpaqueBase]rz   rš  )rÖ   rH   rz   zTypeGuard[Tensor])rá   rH   rz   r&  )r…   r@   rz   ztorch._C._SchemaInforE  )r÷   ztype[T]rø   r/   rz   zlist[T])rá   rH   rz   r  r$  )rá   r   rz   r2  )rØ  r6   r×  rÌ   rz   r{   )r±   r®   r…   r@   r  r)  rÖ  r/   r]  rK  rz   rÌ   )r}  r|  r¸   rS  rÖ  Ú_DispatchCacheEntryrz   r{   )rè  r)  rz   rŠ   )r  r)  rz   r  )rÖ   rH   rz   r  )r¸   rS  rz   r{   ry   )rã   r®   rs  útorch._ops.OpOverloadr•  útorch.Tensorrz   r�  )rã   r®   rs  rœ  r•  r   rz   r   )ÕÚ
__future__r   Úatexitr9  r@  rå  rU  rR  r�  Ú	threadingr—  rö  ÚtypingrŸ   Úcollectionsr   r   r   r   r   r	   r
   r   r   Útyping_extensionsr   r   r   r   rh   Útorch._library.utilsrû  rü  rç  r   r   r   r   Útorch._C._functorchr   r   Ú"torch._library.fake_class_registryr   Útorch._library.fake_profiler   Útorch._loggingr   Útorch._opaque_baser   Útorch._prims_commonr   Útorch._subclasses.meta_utilsr   r   r   r   r    Útorch._utilsr!   r"   Útorch.fx.immutable_collectionsr#   Útorch.fx.operator_schemasr$   Ú torch.multiprocessing.reductionsr%   Útorch.overridesr&   Útorch.typesr'   r(   Útorch.utils._mode_utilsr)   Útorch.utils._python_dispatchr*   r+   r,   Útorch.utils._pytreer-   r.   r/   r0   r1   r2   Útorch.utils._statsr3   Útorch.utils._tracebackr4   Ú_fake_tensor_utilsr6   r7   r8   Úcollections.abcr9   r:   r;   r<   r=   r>   Útorch._guardsr?   Ú
torch._opsr@   r=  rA   rB   Ú	getLoggerrZ   rˆ  Ú_loggingÚgetArtifactLoggerrË  ró  rÎ  rÔ  r~   r  ÚDimListÚ_pytreerõ   rE   rÉ  rí  r  r:  rr   rG   Ú	frozensetr]   rÊ  r}  rl   rn   rK  r}   r‚   rŽ   r‘   r“   r•   r—   Úlocalr™   ræ  r¦   Úcontextmanagerr­   r³   rÅ   rÎ   rà   rê   ró   rú   r   r  rv  r€  r‡  r‰  r‘  rÌ   r6  r2  rQ  rS  rb  re  rk  ro  r›  rP  rs  ru  r®   rH   Ú_StoragePointerr  rÔ  rÏ  rÐ  rd  ro  rÙ  rÚ  rî  r‡   rï  rz  r4  r7  rñ  r;  r=  r>  ÚprofilerÚ_record_function_exitÚ_RecordFunctionrW  Útorch._subclasses.fake_implsr}  r~  r  r€  rì  rþ  rý  rð  rç  Úregisterr‰  r  rõ  r^   r_   r`   ú<module>rÉ     s  ðÝ "ã Û Û Û Û Û Û 	Û Û Û Û Û Ý #Ý !ß O× OÑ Oß 5Ñ 5Ý !ã ß ,Ð ,ß 3Ó 3ß TÝ ?Ý 8Ý ,Ý )Ý 5÷õ ÷ HÝ 9Ý 8Ý ;Ý -ß 1Ý /÷ñ ÷
 W× VÝ $Ý 4ç RÑ Rñ ßPÕPÝ#å$Ý%ßOà€g×Ñ˜Ó!€Ø	�‰×	)Ñ	)¨(Ð4JÓ	K€ðØŸ.™.×:Ñ:¸8ÐEVÓWÐð €à	�‰×	Ñ	€ÙˆCƒL€à‡z�z‡~�~×Ñ€àÐ à€ô¨¸%õ ñ* 09Ø&×6Ò6ó0Ð ,ð ‡‚òó ð÷ñ ð ô \ó ó ðô
 Lô 
ð  ô ,ó ó ðð ô <ó ó ðð ô <ó ó ðð ô¨<ó ó ðð ô˜Ló ó ðôG�I—O’Oô Gñ  “/€ó&ð ×Òò-ó ð-ð ×Òò,ó ð,ðØ/ðð 
2ðð .ó	ó& óF ðF ‡‚ò.ó ð.ð ‡‚ò	Dó ð	Dó@ó
÷$Wñ Wðt ‡‚ò
ó ð
ð ×Òð@Øð@à ò@ó ð@ó.÷Bñ B÷@Eñ @EôFR4�ô R4ðj ˜Ð&7Ð9LÐLÑMÐ ñ �Ô÷*%ð *%ó ð*%óZ#ñL �Ô÷$ð $ó ð$÷8	ñ 	ñ �$˜dÔ#÷3ð 3ó $ð3ñ$ �$˜dÔ#÷
"ð 
"ó $ð
"ñ �$˜dÔ#÷ð ó $ðñ Ø2Ð5NÑNÐñ �$˜dÔ#ô˜9ó ó $ðñ �$˜dÔ#÷ð ó $ðô(u
Ð&ô u
ðp; €ð:QØð:QØ#-ð:Qà	ó:Qð|>'Øð>'à
ð>'ð  ð>'ð ð	>'ð
 %1ð>'ð ó>'ðBØ7ðà	ðð ðð 
ó	ðØ7ðà	ðð ðð 
ó	ô$-Ð$ô $-óN#ó6>óð2 
‡I�I‡N‚N×Ò×!Ò! ?Ø	‡I�I‡N�N×Ò×Òñ "ð 
‡I�I‡N�N×Ò×!Ò!ñ $ð 
‡I�I‡N�N×!Ò!×)Ò)ñ ,ðÐ ñ (Ø	‡I�I‡N�N×Ò×'Ò'Ø	‡I�I‡N�N×Ò×$Ò$Ø	‡I�I‡N�N×Ò×%Ò%ð 
‡I�I×Ò×,Ò,×<Ò<óÐ ÷	÷ 	ó 	ó&ð
 ‡‚ò	;ó ð	;ð9
Ø
ð9
Ø3ð9
Ø?Kð9
àó9
ðx6Ø
ð6Ø3ð6Ø?Bð6àô6øðYq ò Ø)©S°«VÑ3Ø/˜g×/Ñ/°Ð;MÑ0MÓNÑàˆõ 	ûðús   Å)X ØY
Ø"YÙY
