+
    –°³j#X ã                  ó  a € 0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt  ^ RI!H!t! ^ RI"H#t#H$t$H%t% ^ RI&H't' ^ RIH(t(H)t) ^ R	I*H+t+ ^ R
IH,t, ^ RI-H-t-H.t. ^ RI/H0t0H1t1H2t2H3t3H4t4 ^ RI5H6t6H7t7H8t8H9t9H:t:H;t;H<t< ^ RI=H>t>H?t?H@t@HAtA ^ RIBtB^ RICHDu HEtE ^ RIFHGtH ^ RIBHItIHJtJ ^ RIKHLtL ^ RIMHNtN ^ RIOHPtPHQtQHRtRHStS ^ RITHUtUHVtVHWtWHXtX ^ RIYHZtZH[t[H\t\ ^ RI]H^t_ ^ RI`HataHbtb ^ RIcHdtd ^ RIeHftfHgtgHhthHitiHjtjHktkHltlHmtmHntnHotoHptpHqtqHrtrHsts ^ RItHutuHvtv ^ RIwHxtxHytyHztzH{t{H|t|H}t}H~t~Ht ^ RI€H�t�H‚t‚ ^ RIƒH„t„ ^ RI…H†t†H‡t‡ ^ RIˆH‰t‰HŠtŠH‹t‹HŒtŒH�t�HŽtŽH�t� ^ RI�H‘t‘ ^ R ICH’t’ ^ R!I“H”t” ^ R"I•H–t–H—t—H˜t˜ ^ R#I™Hštš ^ R$I›HUtœ ^ R%I�HžtžHŸtŸH t  ^ R&I¡H¢t¢H£t£ ^ R'I¤H¥t¥ ^ R(I¦H§t§H¨t¨H©t© ^ R)IªH«t« ^ R*I¬H­t­ ^R+I®H¯t¯H°t°H±t±H²t² ^R,I³H´t´ ^R-IµH¶t¶H·t· ^R.I¸H¹t¹ ^R/IºH»t» ^R0I¼H½t½ ^R1I¾H¿t¿ ]<! R24      tÀ ! R3 R4]A4      tÁ ! R5 R6]AR7R87      tÂ ! R9 R:]A4      tÃ ! R; R<]AR7R87      tÄ];'       dO   ^ R=IHÅtÅHÆtÆHÇtÇHÈtÈ ^ R>IÉHÊtÊ ^R?IËHÌtÌ ^R@IÍHÎtÎ ^RAIÏHÐtÐ ^RBIÑHÒtÒ ^RCI³HÓtÓHÔtÔ ^RDIµHÕtÕHÖtÖ ^REI×HØtØHÙtÙ ^RFIÚHÛtÛ ^RGIÜHÝtÝ ]P"                  RH8H  tÞ]UEP¾                  tà]BEPÂ                  EPÅ                  ]ãRI4      tä]BEPÂ                  EPÅ                  ]ãRJ4      tå]EPÌ                  ! ]ã4      tçRKtèRL RM lté](! R4      RN RO l4       tê](! R4      RP RQ l4       tëRR RS ltìRT RU ltíRåRV RW lltîRX RY ltï^ RZIðHñtò ]òR[ R\ l4       tó ! R] R^4      tô ! R_ R`]ô4      tõ ! Ra Rb]ô4      töRc Rd lt÷Re Rf ltøRæRg Rh lltùRæRi Rj lltúRçRk Rl lltû ! Rm Rn4      tüRèRo Rp lltýRq Rr ltþRéRs Rt lltÿ]EP                    ! Ru Rv4      4       EtRw Rx lEtRy Rz lEtR{ R| lEt]2]0]1]3E]3EtR} R~ lEt ! R R€]EP                  4      Et	R� R‚ lEt
]òRƒ R„ l4       EtR… R† lEt]EP                    ! R‡ Rˆ4      4       Et ! R‰ RŠE]4      Et]EP                   ! R‹RŒ7       ! R� RŽ4      4       Et]­! 4       EtR�E]R�&   R‘ R’ lEtR“ R” lEtR• R– lEt]EP                    ! R— R˜4      4       Et]­! . RêO4      EtR™ Rš lEtR› Rœ lEt ! R� Rž4      EtRŸ R  lEtR¡ R¢ lEt ! R£ R¤]8]À,          4      Et]ŸEP<                   ! R¥ R¦]ž4      4       Et ! R§ R¨E]]´,          4      Et ]EPB                  R© Rª l4       Et"]Š ! R« R¬4      4       Et#]Š ! R­ R®4      4       Et$ ! R¯ R°4      Et%REs&R±E]R²&   R³ R´ lEt']EPP                  EPS                  ]‡! 4       Rµ4      Et*]EPP                  EPS                  E]*R¶4      Et+RëEt,]EPB                  R· R¸ l4       Et-R¹ Rº lEt.RìR» R¼ llEt/R½ R¾ lEt0]Š ! R¿ RÀ4      4       Et1RÁ RÂ lEt2]Š ! RÃ RÄE]14      4       Et3]Š ! RÅ RÆE]34      4       Et4]Š ! RÇ RÈE]34      4       Et5RÉ RÊ lEt6RË RÌ lEt7]Š ! RÍ RÎ4      4       Et8RÏ RÐ lEt9]òRÑ RÒ l4       Et: ! RÓ RÔ4      Et;](RÕ RÖ l4       Et< ! R× RØ4      Et=]Š ! RÙ RÚE]=4      4       Et>^ REI?H^Et@ ]Š ! RÛ RÜE]=4      4       EtA]Š ! RÝ RÞ4      4       EtB ! Rß Rà4      EtC ! Rá RâE]C4      EtD ! Rã RäE]C4      EtER# )íé    )ÚannotationsN)Úbisect_right)ÚSet)Úcopy)Úc_void_pÚCDLLÚcdll)Ú	timedelta)Ú	lru_cacheÚpartial)ÚPath)Ú_TemporaryFileWrapper)ÚtimeÚtime_ns)ÚBuiltinFunctionTypeÚBuiltinMethodTypeÚFunctionTypeÚ
MethodTypeÚ
ModuleType)ÚAnyÚcastÚGenericÚLiteralÚNoReturnÚTYPE_CHECKINGÚTypeVar)ÚNotRequiredÚoverrideÚSelfÚ	TypedDict)ÚSymIntÚTensor)Úget_interface_for_device)Ú	SkipFrame)ÚCompileEventLoggerÚcountersÚdynamo_timedÚget_metrics_context)ÚconfigÚconfig_commsÚexcÚmetrics)Úcustom_backend_codegen_configsÚcustom_backend_passesÚinit_backend_registration)Úcompile_utils)Úrocm_compile_commandÚrocm_compiler)Úin_toplevel_process)Ú_LINKER_SCRIPTÚ_set_gpu_runtime_envÚ_TORCH_PATHÚbatch_convert_cubins_to_objÚconvert_cubin_to_objÚ
CppBuilderÚ
CppOptionsÚCppTorchDeviceOptionsÚget_compiler_version_infoÚget_cpp_compilerÚget_ld_and_objcopyÚ&get_name_and_dir_from_output_file_pathÚnormalize_path_separatorÚrun_asm_build_object)Úinvalid_vec_isaÚpick_vec_isa)ÚCustomGraphModulePassÚCustomGraphPassÚCustomGraphPassCallableÚCustomPartitionerFnÚCustomPartitionerFnTypeÚCustomPassBaseÚCustomSchedulerPassÚget_custom_graph_passes)Úhas_frozen_paramsÚis_frozen_param)Ú_reload_python_module)Ú	cache_dirÚdefault_cache_dir)ÚALIGN_BYTESÚclear_on_fresh_cacheÚdetermine_aoti_mmap_flagsÚis_linuxÚ
is_windowsÚparallel_num_threadsÚXPU_KERNEL_FORMAT)ÚFakeScriptObject)Úis_opaque_symbolic_type)Útrace_structured)Úextract_tensor_metadataÚ
FakeTensorÚTensorMetadata)Úlog_cache_bypass)r)   )ÚCacheArtifactÚCacheArtifactFactoryÚCacheArtifactRecorder)ÚTensorPropertiesÚWeights)ÚCUSTOM_OBJ_FILENAME_PREFIX)Úguarding_hint_or_throwÚhas_guarding_hintÚShapeEnv)Ú_device_constructors)Ú
OrderedSet)ÚCODE_CACHE_KEY_STRATEGYÚCOMPACT_CACHE_KEY_STRATEGYÚFX_GRAPH_CACHE_KEY_STRATEGYÚSYSTEM_CACHE_KEY_STRATEGY©ÚCompiledFxGraph)Úcache_statsÚcreate_cache)Úautotune_cache)ÚAutotuneCacheBundler)ÚTritonBundler)ÚVÚTc                  ó"   € ] tR t^˜t$ R]R&   RtR# )ÚSystemDeviceInfoú
str | NoneÚname© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r{   ó    ÚZ/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_inductor/codecache.pyrx   rx   ˜   s   ‡ Ø
×rƒ   rx   c                  ó6   € ] tR t^œt$ R]R&   R]R&   R]R&   RtR# )ÚSystemVersionInfory   ÚtritonÚstrÚcudaÚhipr{   Nr|   r{   rƒ   r„   r†   r†   œ   s   ‡ ØÓØ
ƒIØ	‡Orƒ   r†   F)Útotalc                  ó6   € ] tR t^¢t$ R]R&   R]R&   R]R&   RtR# )	Ú
SystemInforˆ   ÚhashzNotRequired[SystemDeviceInfo]ÚdevicezNotRequired[SystemVersionInfo]Úversionr{   Nr|   r{   rƒ   r„   r�   r�   ¢   s   ‡ Ø
ƒIØ)Ó)Ø+×+rƒ   r�   c                  ó¤   € ] tR t^¨t$ R]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R]R
&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   RtR# )Ú	CacheInfoz Literal['bypass', 'hit', 'miss']Úcache_staterˆ   Úcache_status_detailedÚcache_status_guard_exprÚtriton_bundler_metaÚintÚtime_saved_nsÚtime_taken_nsÚephemeral_timeout_increaseÚcache_bypass_reasonÚcache_event_timeÚkeyú	list[str]Ú
componentsÚcache_bypass_exception_typeÚcache_bypass_tracebackÚboolÚcache_bypass_hard_exceptionr{   Nr|   r{   rƒ   r„   r’   r’   ¨   sU   ‡ Ø1Ó1ØÓØ Ó ØÓØÓØÓØ #Ó#ØÓØÓØ	ƒHØÓØ!$Ó$Ø%Ó%Ø!%×%rƒ   r’   )ÚCallableÚ	GeneratorÚKeysViewÚSequence)ÚFuture)Ú_CompileFxKwargs)ÚBuildOptionsBase©ÚGraphLowering)ÚChoiceCaller)ÚCompiledFxGraphConstantsÚ
OutputCode)Ú
JsonDataTyÚRemoteCache)ÚHalideInputSpecÚ
HalideMeta)ÚCachingAutotuner)Ú	InputTypeÚwin32Úoutput_codeÚ
autotuningÚac               ó    € V ^8„  d   QhRRRR/# )é   Útargetr   Úreturnrˆ   r{   )Úformats   "r„   Ú__annotate__r¿   Ò   s   € ÷ 
ñ 
¨ð 
°ñ 
rƒ   c           
     óŽ   € R P                  R \        V RR4      \        V RR4      \        V RR4      \        V 4      3 4       4      # )Ú.c              3  ó:   "  € T F  pV'       g   K  Vx € K  	  R # 5i©Nr{   ©Ú.0Úxs   & r„   Ú	<genexpr>Ú/_device_constructor_sort_key.<locals>.<genexpr>Ó   s"   é € ð 	ñ
ˆAô ÷ 	
Šó
ùs   ‚
‘
r~   Nr   r}   )ÚjoinÚgetattrÚrepr©r¼   s   &r„   Ú_device_constructor_sort_keyrÍ   Ò   sO   € Ø�8‰8ñ 	ô �F˜L¨$Ó/Ü�F˜N¨DÓ1Ü�F˜J¨Ó-Ü�‹Lñ	
ó	ó 	ð 	rƒ   c               ó   € V ^8„  d   QhRR/# ©r»   r½   útuple[Any, ...]r{   )r¾   s   "r„   r¿   r¿   à   s   € ÷ Sñ S¨_ñ Srƒ   c                 óF   € \        \        \        4       \        R 7      4      # )©r�   )ÚtupleÚsortedrh   rÍ   r{   rƒ   r„   Ú#_default_device_constructor_targetsrÕ   ß   s   € ä”Ô,Ó.Ô4PÔQÓRÐRrƒ   c               ó   € V ^8„  d   QhRR/# rÏ   r{   )r¾   s   "r„   r¿   r¿   å   s   € ÷ ñ °oñ rƒ   c                 óÜ   € . p \        4        FR  p\        VR R4      ;pf   K  \        \        P                  P                  VR4      ;pf   KA  V P                  V4       KT  	  \        V 4      # )r}   N)rÕ   rÊ   ÚtorchÚopsÚatenÚappendrÓ   )Úpacketsr¼   rz   Úpackets       r„   Ú,_default_device_constructor_overload_packetsrÞ   ä   s_   € à€GÜ5Ö7ˆÜ˜F J°Ó5Ð5ˆDÒ>ÙÜœeŸi™iŸn™n¨d°DÓ9Ð9ˆFÔFØ�N‰N˜6Ö"ñ	 8ô
 �‹>Ðrƒ   c               ó   € V ^8„  d   QhRR/# ©r»   r½   rˆ   r{   )r¾   s   "r„   r¿   r¿   ï   s   € ÷ Gñ G¨ñ Grƒ   c                 óB   € \         P                  P                  f   R# R# )NÚ
cubin_pathÚ
hsaco_path)rØ   r�   rŠ   r{   rƒ   r„   Úget_cpp_wrapper_cubin_path_namerä   ï   s   € Ü Ÿ=™=×,Ñ,Ò4ˆ<ÐF¸,ÐFrƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r�   rˆ   r½   r{   )r¾   s   "r„   r¿   r¿   ó   s   € ÷ ñ  #ð ¨#ñ rƒ   c                ón   € V R 8X  d!   \         P                  P                  f   R# R# V R8X  d   \        # R# )r‰   ÚcubinÚhsacoÚxpuÚ )rØ   r�   rŠ   rW   ©r�   s   &r„   Úget_kernel_bin_formatrì   ó   s4   € Ø�ÔÜŸ-™-×+Ñ+Ò3ˆwÐ@¸Ð@Ø	�5ŒÜ Ð árƒ   c               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R
/# )r»   Úasm_filerˆ   Ú
cubin_fileÚraw_cubin_filery   ÚnvccÚ	fatbinaryÚcurrent_archr½   rž   r{   )r¾   s   "r„   r¿   r¿   ü   sN   € ÷ *ñ *Øð*àð*ð ð*ð ð	*ð
 ð*ð ð*ð ñ*rƒ   c                óÀ  € V'       g   \         P                  ! 4       p\         P                  ! V4      pVe\   VeX   \        P                  P                  V4      '       d3   \         P                  ! We4      '       g   VRV 2RRV RV 2RV RV  2.# Vf   \        R4      h. \        P                  ! V4      ORNV NRNVNpV F  pVP                  R	V.4       K  	  V# )
Nz	--create=z-64z--image3=kind=elf,sm=z,file=z--image3=kind=ptx,sm=z nvcc is required to build fatbinz-fatbinú-oz-gencode)Úcuda_compile_utilsÚ%_nvcc_arch_as_compile_option_or_raiseÚ _cuda_multi_arch_gencode_optionsÚosÚpathÚexistsÚ+_cuda_gencode_options_have_non_current_sassÚRuntimeErrorÚshlexÚsplitÚextend)	rî   rï   rð   rñ   rò   ró   Úgencode_optionsÚcmdÚgencode_options	   &&&&&&   r„   Ú_cuda_fatbin_commandr  ü   s
  € ÷ Ü)×OÒOÓQˆÜ(×IÒIÈ,ÓW€OàÒØÒ&Ü�G‰G�N‰N˜>×*Ò*Ü"×NÒNØ÷
ò 
ð Ø˜
�|Ð$ØØ# L >°¸Ð7GÐHØ# L >°¸°zÐBð
ð 	
ð ‚|ÜÐ=Ó>Ð>ðÜ	�Š�TÓ	ðàðð 	ðð 	ð	ð
 	ð€Có *ˆØ�
‰
�J Ð/Ö0ñ *à€Jrƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   Údevice_typerˆ   r½   zdict[str, str]r{   )r¾   s   "r„   r¿   r¿   )  s   € ÷ ñ ¨ð °ñ rƒ   c                ó  € R\         P                  R\        P                  ! 4       R\        \        P
                  P                  P                  4       4      P                  4       R\        \        V 4      P                  4       4      /pV# )zB
Gets all the current device information used to compile the .so.
ÚAOTI_PLATFORMÚAOTI_MACHINEÚAOTI_CPU_ISAÚAOTI_COMPUTE_CAPABILITY)ÚsysÚplatformÚmachinerˆ   rØ   Ú	_inductorÚcpu_vec_isarC   Úupperr#   Úget_compute_capability)r  Úmetadatas   & r„   Úget_device_informationr  )  sj   € ð
 	œŸ™Øœ×(Ò(Ó*ØœœEŸO™O×7Ñ7×DÑDÓFÓG×MÑMÓOØ!¤3Ü$ [Ó1×HÑHÓJó$
ð	 €Hð €Orƒ   )Úprefetchable_cachec               ó   € V ^8„  d   QhRR/# )r»   r½   ry   r{   )r¾   s   "r„   r¿   r¿   <  s   € ÷ 
ñ 
�Jñ 
rƒ   c                 ó4   € ^ RI Hp Hp V '       d   V! 4       # R# )r   )Ú
HAS_TRITONÚ
triton_keyN)Ú%torch._inductor.runtime.triton_compatr  r  )r  Ú_triton_key_impls     r„   r  r  ;  s   € ÷÷ ÙÓ!Ð!Ùrƒ   c                  ó¬   € ] tR tRt]]P                  R R l4       4       t]]]P                  R R l4       4       4       t	R R lt
R R	 ltR
 R ltRtR# )Ú	CacheBaseiI  c               ó   € V ^8„  d   QhRR/# )r»   r½   r�   r{   )r¾   s   "r„   r¿   ÚCacheBase.__annotate__L  s   € ÷ Iñ I˜
ñ Irƒ   c                 	óˆ  € \        R 4      ;_uu_ 4        \        4       p RRR4        RR/pRX /p\        P                  P	                  \        P                  P                  4       4      p\        P                  P                  e.   VP                  VR&   \        P                  P                  VR&   M,VP                  VR&   \        P                  P                  VR&   RVRV/pRVRVR\        P                  ! V4      /#   + '       g   i     Lë; i  \        \        3 d    R\        P                  ! / 4      /u # i ; i)	zCacheBase.get_system.triton_keyNrz   r‡   r‰   rŠ   r�   r�   rŽ   )r'   r  rØ   r‰   Úget_device_propertiesÚcurrent_devicer�   rz   ÚgcnArchNamerŠ   rm   Úkey_from_jsonÚAssertionErrorrý   )Útriton_versionÚdevice_infoÚversion_infoÚdevice_propertiesÚ
hash_inputs        r„   Ú
get_systemÚCacheBase.get_systemJ  s#  € ô Ð;×<Õ<Ü'›\ˆN÷ =ð	IØ-3°T¨NˆKØ/7¸Ð.HˆLÜ %§
¡
× @Ñ @Ü—
‘
×)Ñ)Ó+ó!Ðô �}‰}×!Ñ!Ò-Ø&7×&<Ñ&<�˜FÑ#Ü',§}¡}×'9Ñ'9�˜VÒ$à&7×&CÑ&C�˜FÑ#Ü&+§m¡m×&7Ñ&7�˜UÑ#à˜+Ø˜<ð*ˆJð
 ˜+Ø˜<ØÔ1×?Ò?À
ÓKðð ÷' =×<ûô0 ¤Ð-ô 	IàÔ5×CÒCÀBÓGÐHÒHð	Iús   ”D¨CD ÄD	Ä)EÅ Ec               ó   € V ^8„  d   QhRR/# )r»   r½   r   r{   )r¾   s   "r„   r¿   r  l  s   € ÷ Xñ X $ñ Xrƒ   c                 	ó˜   € \        \        P                  P                  \	        4       R \
        P                  4       R,          4      4      # )ÚcacherŽ   )r   rù   rú   rÉ   rO   r  r+  r{   rƒ   r„   Úget_local_cache_pathÚCacheBase.get_local_cache_pathi  s0   € ô ”B—G‘G—L‘L¤£¨g´y×7KÑ7KÓ7MÈfÕ7UÓVÓWÐWrƒ   c               ó   € V ^8„  d   QhRR/# ©r»   r½   ÚNoner{   )r¾   s   "r„   r¿   r  o  s   € ÷ -ñ -˜$ñ -rƒ   c                	ó8   € \         P                  4       V n        R # rÃ   )r  r+  Úsystem©Úselfs   &r„   Ú__init__ÚCacheBase.__init__o  s   € Ü×*Ñ*Ó,ˆŽrƒ   c               ó   € V ^8„  d   QhRR/# )r»   r½   údict[str, Any]r{   )r¾   s   "r„   r¿   r  r  s   € ÷ $ñ $ ñ $rƒ   c                	óþ   € V P                  4       pVP                  4       '       g   / # \        V4      ;_uu_ 4       p\        P                  ! V4      pR R R 4       VR,          #   + '       g   i     XR,          # ; i)Nr/  )r0  Úis_fileÚopenÚjsonÚload)r8  Úlocal_cache_pathÚlocal_cache_fpÚlocal_caches   &   r„   Úget_local_cacheÚCacheBase.get_local_cacher  se   € Ø×4Ñ4Ó6ÐØ×'Ñ'×)Ò)ØˆIÜÐ"×#Ô# ~ÜŸ)š) NÓ3ˆK÷ $à˜7Õ#Ð#÷ $Ö#à˜7Õ#Ð#ús   ¼A$Á$A<	c               ó    € V ^8„  d   QhRRRR/# )r»   rD  r<  r½   r4  r{   )r¾   s   "r„   r¿   r  z  s   € ÷ 
ñ 
¨nð 
Àñ 
rƒ   c           	     	óœ   € V P                  4       p\        \        V4      \        P                  ! R V P
                  RV/^R7      RR7       R# )r6  r/  ©ÚindentT©Ú	make_dirsN)r0  Úwrite_atomicrˆ   r@  Údumpsr6  )r8  rD  rB  s   && r„   Úupdate_local_cacheÚCacheBase.update_local_cachez  s@   € Ø×4Ñ4Ó6ÐÜÜÐ Ó!Ü�JŠJ˜ $§+¡+¨w¸ÐDÈQÔOØ÷	
rƒ   )r6  N)r}   r~   r   r€   ÚstaticmethodÚ	functoolsr/  r+  rR   r0  r9  rE  rO  r‚   r{   rƒ   r„   r  r  I  s`   † ØØ‡_�_ôIó ó ðIð: ØØ‡_�_ôXó ó ó ðXõ-õ$÷
ñ 
rƒ   r  c                  ó.   € ] tR tRtR R ltR R ltRtR# )Ú
LocalCacheiƒ  c               ó    € V ^8„  d   QhRRRR/# )r»   Úkeysrˆ   r½   údict[str, Any] | Noner{   )r¾   s   "r„   r¿   ÚLocalCache.__annotate__„  s   € ÷ 
ñ 
˜Cð 
Ð$9ñ 
rƒ   c                	ó^   € V P                  4       pTpV F  pWB9   d   W$,          pK   R # 	  V# rÃ   )rE  )r8  rV  r/  Ú	sub_cacher�   s   &*   r„   ÚlookupÚLocalCache.lookup„  s6   € Ø×$Ñ$Ó&ˆàˆ	ÛˆCØŒ|Ø!�J’	âñ	 ð Ðrƒ   c               ó$   € V ^8„  d   QhRRRRRR/# )r»   rV  rˆ   Úvaluer   r½   r4  r{   )r¾   s   "r„   r¿   rX  �  s!   € ÷ 	'ñ 	'˜sð 	'¨3ð 	'°4ñ 	'rƒ   c               	ó®   € V P                  4       pTpV^ R  F  pVP                  V/ 4       WE,          pK  	  WVR,          &   V P                  V4       R# )r   Néÿÿÿÿ)rE  Ú
setdefaultrO  )r8  r^  rV  r/  rZ  r�   s   &$*   r„   Ú	set_valueÚLocalCache.set_value�  sX   € Ø×$Ñ$Ó&ˆàˆ	Ø˜˜"“:ˆCØ× Ñ   bÔ)Ø!�ŠIñ ð $�$�r•(Ñà×Ñ Ö&rƒ   r{   N)r}   r~   r   r€   r[  rb  r‚   r{   rƒ   r„   rT  rT  ƒ  s   † õ
÷	'ñ 	'rƒ   rT  c                  ó&   € ] tR tRtRR R lltRtR# )ÚPersistentCacheiœ  Nc               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r»   Úchoiceszlist[ChoiceCaller]Úoprˆ   ÚinputsÚ	benchmarkz1Callable[[Any], dict[ChoiceCaller, float]] | NoneÚhint_overridez
int | Noner½   zdict[ChoiceCaller, float]r{   )r¾   s   "r„   r¿   ÚPersistentCache.__annotate__�  sG   € ÷ 7ñ 7à#ð7ð ð7ð ð	7ð
 Eð7ð "ð7ð 
#ñ7rƒ   c                óè  aaaaa€ \         P                  ! 4       oVe   V RV 2MTo/ oR VVVVV3R llp\        P                  '       d   V P	                  4       M/ pV! V4      '       Eg    Veü   V! S4      o\
        ;QJ d    V3R lS 4       F  '       d   K   RM	  RM! V3R lS 4       4      '       g(   S Uu. uF  qˆS9  g   K  VNK  	  p	p\        RV	 24      hVP                  S/ 4       VS,          P                  S/ 4      P                  S/ 4       SP                  4        F,  w  r«W·S,          S,          S,          V
P                  4       &   K.  	  V P                  V4       S# u upi )a©  
Check to see if we have benchmarked the given choice callers. For each
choice caller:

    1. Check local_cache[op][inputs][choice][precision], return benchmark if cached.
    2. If benchmark is not None:
        a. `max_autotune_gemm=True`: benchmark the choice, update
            local_cache[op][inputs][choice], and return the benchmark.
        b. `max_autotune_gemm=False`: don't benchmark the choice, return nothing.
Ú_c               ó    € V ^8„  d   QhRRRR/# )r»   r/  r<  r½   r¢   r{   )r¾   s   "r„   r¿   Ú,PersistentCache.lookup.<locals>.__annotate__´  s   € ÷ 	ñ 	˜~ð 	°$ñ 	rƒ   c                óö   <€ RpS Fo  pVP                  4       pW0P                  S/ 4      P                  S/ 4      P                  S/ 4      9   d$   V S,          S,          S,          V,          SV&   Kl  Rp V# 	  V# )z2Check if `cache` contains data for all the choicesTF)Úhash_keyÚget)	r/  ÚhitÚchoiceÚchoice_hashÚ	cache_keyrg  rh  Ú	precisionÚtimingss	   &   €€€€€r„   Úcheck_cacheÚ+PersistentCache.lookup.<locals>.check_cache´  s‚   ø€ àˆCÛ!�Ø$Ÿo™oÓ/�Ø§)¡)¨B°Ó"3×"7Ñ"7¸	À2Ó"F×"JÑ"JØ˜ró#ô ð ',¨B¥i°	Õ&:¸9Õ&EÀkÕ&R�G˜F“Oð  �CØØˆJñ "ð ˆJrƒ   c              3  ó,   <"  € T F	  qS9   x € K  	  R # 5irÃ   r{   )rÅ   ru  ry  s   & €r„   rÇ   Ú)PersistentCache.lookup.<locals>.<genexpr>È  s   øé € Ð?±w¨V Ö(³wùó   ƒFTz'Benchmark results missing for choices: )rØ   Úget_float32_matmul_precisionr)   Úautotune_local_cacherE  Úallr%  ra  Úitemsrr  rO  )r8  rg  rh  ri  rj  rk  rz  rD  ÚcÚmissingru  Útimingrw  rx  ry  s   &ff&&&      @@@r„   r[  ÚPersistentCache.lookup�  sB  ü€ ô$ ×6Ò6Ó8ˆ	Ø3@Ò3L�v�h˜a ˜Ñ/ÐRXˆ	àˆ÷	ô 	ô  17×0K×0KÐ0K�d×*Ñ*Ô,ÐQSˆÙ˜K×(Ó(¨yÒ/Dá Ó(ˆGß“3Ô?±wÓ?—3—3’3Ô?±wÓ?×?Ò?Ù&-ÓB¡g ¸'Ñ1AŸ1˜1¡g�ÐBÜ$Ø=¸g¸YÐGóð ð ×"Ñ" 2 rÔ*Ø˜�O×&Ñ& y°"Ó5×@Ñ@ÀÈBÔOØ")§-¡-¦/‘�ØKQ˜B• 	Õ*¨9Õ5°f·o±oÓ6GÓHñ #2ð ×#Ñ# KÔ0àˆùò Cs   Â>E/ÃE/r{   rÃ   )r}   r~   r   r€   r[  r‚   r{   rƒ   r„   re  re  œ  s   † ÷7ó 7rƒ   re  c               ó   € V ^8„  d   QhRR/# rà   r{   )r¾   s   "r„   r¿   r¿   ×  s   € ÷ ñ �cñ rƒ   c                 óÐ   € \         P                  P                  \        4       R 4      p \         P                  P	                  V 4      '       g   \         P
                  ! V RR7       V # )ÚlocksT©Úexist_ok)rù   rú   rÉ   rO   rû   Úmakedirs)Úlock_dirs    r„   Úget_lock_dirrŽ  ×  s>   € Ü�w‰w�|‰|œI›K¨Ó1€HÜ�7‰7�>‰>˜(×#Ò#Ü
�Š�H tÕ,Ø€Orƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   ÚdataÚbytesr½   rˆ   r{   )r¾   s   "r„   r¿   r¿   Þ  s   € ÷ 0ñ 0�eð 0 ñ 0rƒ   c                ó.   € \         P                  ! V 4      # rÃ   )rk   r�   )r�  s   &r„   Úsha256_hashr“  Þ  s   € Ü%×)Ò)¨$Ó/Ð/rƒ   c               ó$   € V ^8„  d   QhRRRRRR/# )r»   Úcodeústr | bytesÚextrar½   rˆ   r{   )r¾   s   "r„   r¿   r¿   â  s!   € ÷ -ñ -�Kð -¨ð -¸Sñ -rƒ   c                ój   € V'       d   \         P                  ! W4      # \         P                  ! V 4      # rÃ   )rj   r�   )r•  r—  s   &&r„   Ú	code_hashr™  â  s'   € ßÜ&×*Ò*¨4Ó7Ð7Ü"×&Ò& tÓ,Ð,rƒ   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r»   Úbasenamerˆ   Ú	extensionÚspecified_dirr½   útuple[str, str, str]r{   )r¾   s   "r„   r¿   r¿   è  s,   € ÷ "ñ "Øð"Ø!ð"Ø25ð"àñ"rƒ   c                ób  € V'       dR   \         P                  P                  V4      '       d   TpMX\         P                  P                  \	        4       V4      pM/\         P                  P                  \	        4       V R ,          4      p\         P                  P                  W0 RV 24      pWV3# )ºé   é   NrÁ   )rù   rú   ÚisabsrÉ   rO   )r›  rœ  r�  Úsubdirrú   s   &&&  r„   Úget_pathr¥  è  sw   € ÷ Ü�7‰7�=‰=˜×'Ò'Ø"‰Fä—W‘W—\‘\¤)£+¨}Ó=‰Fä—‘—‘œi›k¨8°C­=Ó9ˆÜ�7‰7�<‰<˜ *¨A¨i¨[Ð 9Ó:€DØ˜TÐ!Ð!rƒ   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r»   Úcontentr–  r—  rˆ   Ú	hash_typer½   r{   )r¾   s   "r„   r¿   r¿   ö  s)   € ÷ ;ñ ;�kð ;¨#ð ;¸sð ;ÐPSñ ;rƒ   c                ó†   € VR9   d   \        W4      # VRR\        09   d   \        \        V 4      4      # \        RV 24      h)Úamdgcnrç   rè   zUnknown hash type >   ÚptxÚspvr•  rª  )r™  rW   rË   r%  )r§  r—  r¨  s   &&&r„   Úget_hashr­  ö  sH   € ØÐ4Ô4Ü˜Ó(Ð(Ø�W˜gÔ'8Ð9Ô9Üœ˜g›Ó'Ð'Ü
Ð-¨i¨[Ð9Ó
:Ð:rƒ   c                  óN   € ] tR tRtRtRRRRR/R R llltR R	 ltR
 R ltRtR# )ÚWritableTempFileiþ  aO  
Avoid "Permission denied error" on Windows:
  with tempfile.NamedTemporaryFile("w", suffix=".gv") as temp_file:
    # Not writable on Windows:
    # https://docs.python.org/3/library/tempfile.html#tempfile.NamedTemporaryFile

Example:
    with WritableTempFile("w", suffix=".gv") as temp_file:
        tree.to_dotfile(temp_file.name)
ÚencodingNÚsuffixc               ó(   € V ^8„  d   QhRRRRRRRR/# )r»   Úmoderˆ   r°  r   r±  r½   r4  r{   )r¾   s   "r„   r¿   ÚWritableTempFile.__annotate__
  s,   € ÷ ñ ØðØ,/ðØ@Cðà	ñrƒ   c               	ó*   € Wn         W n        W0n        R # rÃ   )r³  r°  r±  )r8  r³  r°  r±  s   &&$$r„   r9  ÚWritableTempFile.__init__
  s   € ð Œ	Ø ŒØŽrƒ   c               ó   € V ^8„  d   QhRR/# )r»   r½   z_TemporaryFileWrapper[Any]r{   )r¾   s   "r„   r¿   r´    s   € ÷ ñ Ð5ñ rƒ   c                	ó”   € \         P                  ! V P                  V P                  V P                  R R7      V n        V P
                  # )F)r°  r±  Údelete)ÚtempfileÚNamedTemporaryFiler³  r°  r±  Ú	temp_filer7  s   &r„   Ú	__enter__ÚWritableTempFile.__enter__  s5   € Ü!×4Ò4Ø�I‰I §¡°d·k±kÈ%ô
ˆŒð �~‰~Ðrƒ   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r»   Úexc_typer   Úexc_valÚexc_tbr½   r4  r{   )r¾   s   "r„   r¿   r´    s(   € ÷ 	ñ 	 ð 	¨sð 	¸Cð 	ÀDñ 	rƒ   c                	óÞ   € V P                   P                  4         \        P                  ! V P                   P                  4       R #   \
         d   p\        '       d    R p?R # ThR p?ii ; irÃ   )r¼  Úcloserù   Úunlinkrz   ÚOSErrorÚ_IS_WINDOWS)r8  rÀ  rÁ  rÂ  Úes   &&&& r„   Ú__exit__ÚWritableTempFile.__exit__  sJ   € Ø�‰×ÑÔð	Ü�IŠI�d—n‘n×)Ñ)Ö*øÜô 	ß‹{åà�ûð	ús   œ*A ÁA,ÁA'Á%A'Á'A,)r°  r³  r±  r¼  )Úw)	r}   r~   r   r€   Ú__doc__r9  r½  rÉ  r‚   r{   rƒ   r„   r¯  r¯  þ  s0   † ñ	ñØ26ðØFJ÷ð õ÷	ñ 	rƒ   r¯  c               ó4   € V ^8„  d   QhRRRRRRRRRRRR	R
R/# )r»   r§  r–  rœ  rˆ   r—  r¨  r�  r�   ry   r½   útuple[str, str]r{   )r¾   s   "r„   r¿   r¿   #  sN   € ÷ ñ Øðàðð ðð ð	ð
 ðð 
ðð ñrƒ   c                óÆ   € Vf   \        V P                  4       W#4      p\        WQV4      w  rgp\        P                  P                  V4      '       g   \        W€RR7       Wh3# )NTrK  )r­  Ústripr¥  rù   rú   rû   rM  )	r§  rœ  r—  r¨  r�  r�   r›  Ú_subdirrú   s	   &&&&&&   r„   ÚwriterÒ  #  sS   € ð ‚{ô �w—}‘}“¨Ó9ˆÜ& s°}ÓEÑ€H�tÜ�7‰7�>‰>˜$×ÒÜ�T¨dÕ3Øˆ>Ðrƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   Útextrˆ   r½   r{   )r¾   s   "r„   r¿   r¿   6  s   € ÷ !ñ !�Sð !˜Sñ !rƒ   c                ó(   € \        V R4      ^,          # )zL
Write the `text` to a file and return the path computed based on the hash.
Útxt©rÒ  )rÔ  s   &r„   Ú
write_textrØ  6  s   € ô ��uÓ˜aÕ Ð rƒ   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r»   Úpath_rˆ   r§  r–  rL  r¢   Úencode_utf_8r½   r4  r{   )r¾   s   "r„   r¿   r¿   =  s:   € ÷ ñ Øðàðð ðð ð	ð
 
ñrƒ   c                óÈ  € \        V\        \        34      '       g   \        R 4      h\	        V 4      pV'       d   VP
                  P                  RRR7       VP
                  R\        P                  ! 4        R\        P                  ! 4        R2,          p\        V\        4      '       d   RMRpTP                  Yc'       d   RMRR	7      ;_uu_ 4       pVP                  V4       RRR4        VP                  VR
7       R#   + '       g   i     L%; i  \         d?    \        '       g   h \         P"                  ! YTR7       \        P$                  ! T4        R# i ; i)z6Only strings and byte arrays can be saved in the cacheT)Úparentsr‹  rÁ   z.tmprË  Úwbúutf-8N©r°  rÌ   )ÚsrcÚdst)Ú
isinstancerˆ   r‘  r%  r   ÚparentÚmkdirrù   ÚgetpidÚ	threadingÚ	get_identr?  rÒ  ÚrenameÚFileExistsErrorrÇ  ÚshutilÚcopy2Úremove)rÚ  r§  rL  rÛ  rú   Útmp_pathÚ
write_modeÚfs   &&&&    r„   rM  rM  =  sÿ   € ô �g¤¤U˜|×,Ò,ÜÐUÓVÐVÜ�‹;€DßØ�‰×Ñ $°ÐÔ6Ø�{‰{˜q¤§¢£ ¨Q¬y×/BÒ/BÓ/DÐ.EÀTÐJÕJ€HÜ" 7¬C×0Ò0‘°d€JØ	�‰�z¶|©GÈˆ×	NÔ	NÐRSØ	�‰�Ô÷ 
Oð
Ø�‰˜tˆÖ$÷ 
O×	Nûô ô ß‹{Øô 	�Š˜Õ,ä
�	Š	�(×ðús$   ÃDÃ1D ÄD	ÄE!Ä/.E!Å E!c                  ó0   € ] tR tRt$ RtR]R&   R]R&   RtR# )	ÚTensorMetadataAndValuesi[  z_
TensorMetadata plus the elements as a list of raw values.
Used for hashing inlined constants.
r]   Útensor_metadataú	list[Any]Úvaluesr{   N©r}   r~   r   r€   rÌ  r�   r‚   r{   rƒ   r„   rò  rò  [  s   ‡ ñð
 $Ó#Ø×rƒ   rò  c               ó    € V ^8„  d   QhRRRR/# )r»   rÆ   rv   r½   r{   )r¾   s   "r„   r¿   r¿   f  s   € ÷ ñ ˆað �Añ rƒ   c                ó   € V # rÃ   r{   ©rÆ   s   &r„   Ú_identrú  f  s   € Ø€Hrƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r�   rˆ   r½   r   r{   )r¾   s   "r„   r¿   r¿   j  s   € ÷ ñ ˜Cð  Hñ rƒ   c                ó"   € \        R V : R24      h)zmAttempted to unpickle an object that was pickled only for cache-key hashing and cannot be reconstructed (key=Ú))rý   rÒ   s   &r„   Ú_unpicklable_errorrþ  j  s    € Ü
ð4Ø47±7¸!ð	=óð rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   Útr"   r½   r]   r{   )r¾   s   "r„   r¿   r¿   q  s   € ÷ 	ñ 	¨Vð 	¸ñ 	rƒ   c                ór   € \        V 4      p\        V R4      '       g   \        P                  ! V^ RR7      pV# )zg
Extracts the tensor metadata and removes fields of the TensorMetadata
that are not needed for caching
Ú_is_inductor_staticN)Ústorage_offsetÚstorage_bytes)r[   ÚhasattrÚdataclassesÚreplace)r   Úmetas   & r„   Ú%extract_tensor_metadata_for_cache_keyr	  q  s5   € ô
 # 1Ó%€DÜ�1Ð+×,Ò,Ü×"Ò" 4¸ÈÔNˆà€Krƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   ÚobjÚobjectr½   ry   r{   )r¾   s   "r„   r¿   r¿   ‹  s   € ÷ ñ ˜Vð ¨
ñ rƒ   c                ó
  € \        V 4      pVP                   RVP                   2p. pR R R 3 F$  p VP                  \	        V! V 4      4      4       K&  	  V'       d   V R\        V4       2# R#   \
         d     KP  i ; i)aÇ  Produce a deterministic string key for an otherwise-unpicklable object.

Used by FxGraphCachePickler.reducer_override as a fallback for objects
whose types don't support default pickling (e.g. pybind11 enums).

The key is derived from the object's fully-qualified type name plus
values obtained via known accessor patterns (pybind11 enum, Python enum,
etc.).  Returns ``None`` if no accessor succeeds, letting the caller
decide how to handle the failure.
rÁ   c                ó.   € V P                   P                  # rÃ   )Útyperz   ©Úos   &r„   Ú<lambda>Ú%_get_stable_obj_key.<locals>.<lambda>š  s   € �!—&‘&—+’+rƒ   c                ó   € V P                   # rÃ   ©rz   r  s   &r„   r  r  ›  s   € �!—&’&rƒ   c                ó   € V P                   # rÃ   ©r^  r  s   &r„   r  r  œ  s   € �!—'’'rƒ   Ú:N)r  r~   r   rÛ   rˆ   Ú	ExceptionrË   )r  r   Útype_idÚpartsÚaccessors   &    r„   Ú_get_stable_obj_keyr  ‹  s‹   € ô 	ˆS‹	€AØ—‘�˜a §¡Ð/Ð0€GØ€EáÙÙóˆð
	Ø�L‰Lœ™X c›]Ó+Ö,ñ÷ Ø�˜!œD ›K˜=Ð)Ð)Ùøô	 ô 	Úð	ús   µ A3Á3BÂBc                  óì   a € ] tR tRt$ Rt/ tR]R&   R"R V 3R llltR R lt]	R	 R
 l4       t
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR!tV ;t# )#ÚFxGraphCachePickleri§  a&  
Custom pickler to customize the pickling of some objects (Tensors), only for the
purpose of computing a hash for keying into the FxGraphCache. Tensors contain
objects that don't pickle and/or vary between runs, and we want to capture the
data that allow us to compute a stable, but safe hash.
zdict[type, bool]Ú_pickleable_type_cachec               ó(   € V ^8„  d   QhRRRRRRRR/# )r»   Úgmútorch.fx.GraphModuleÚhas_user_defined_triton_kernelsr¢   Údevice_id_agnosticr½   r4  r{   )r¾   s   "r„   r¿   Ú FxGraphCachePickler.__annotate__´  s2   € ÷ )ñ )à ð)ð *.ð)ð !ð	)ð
 
ñ)rƒ   c                óB  <€ \         P                  ! 4       V n        W0n        \        SV `  V P                  4       \        P                  P                  4       V n        V P                  P                  \        \        P                  ! V P                  4      \        P                  \        P                  ! V P                   4      \        P"                  P$                  P&                  \        P                  ! V P                   4      \        P(                  \        P                  ! V P*                  4      \        P,                  \        P                  ! V P.                  4      \        P0                  P2                  P4                  P6                  \        P                  ! V P8                  4      \:        \        P                  ! V P<                  4      /4       V'       d8   \        P                  ! V P>                  4      V P                  VP@                  &   RV n!        R# )a   
Create an FX graph pickler. If include_non_inlined=True, then pickling will
include the _values_ for all Tensors. (Note that any tensors are constants
attached as attributes to the GraphModule). Otherwise, pickling will include
only the metadata for these tensors.

If device_id_agnostic=True, device indices in TensorMetadata are normalized
to 0, so that the same graph on different GPUs produces identical bytes.
TN)"ÚioÚBytesIOÚ_streamÚ_device_id_agnosticÚsuperr9  ÚcopyregÚdispatch_tabler   Úupdater\   rR  r   Ú_reduce_fake_tensorrØ   r"   Ú_reduce_tensorÚnnÚ	parameterÚ	Parameterr!   Ú_reduce_symintÚSymBoolÚ_reduce_symboolÚfxÚexperimentalÚ_backward_stateÚBackwardStateÚ_reduce_unsupportedrX   Ú_reduce_fake_script_objectÚ_reduce_graph_moduleÚ	__class__Úfast)r8  r"  r$  r%  r?  s   &&&&€r„   r9  ÚFxGraphCachePickler.__init__´  sa  ø€ ô —z’z“|ˆŒØ#5Ô Ü‰Ñ˜Ÿ™Ô&ä%×4Ñ4×9Ñ9Ó;ˆÔØ×Ñ×"Ñ"äœI×-Ò-¨d×.FÑ.FÓGÜ—‘œi×/Ò/°×0CÑ0CÓDÜ—‘×"Ñ"×,Ñ,¬i×.?Ò.?À×@SÑ@SÓ.TÜ—‘œi×/Ò/°×0CÑ0CÓDÜ—‘œy×0Ò0°×1EÑ1EÓFÜ—‘×%Ñ%×5Ñ5×CÑCÄY×EVÒEVØ×,Ñ,óFô !¤)×"3Ò"3°D×4SÑ4SÓ"Tð
ô	
÷ +ä09×0AÒ0AØ×)Ñ)ó1ˆD×Ñ §¡Ñ-ð ˆŽ	rƒ   c               ó    € V ^8„  d   QhRRRR/# ©r»   r  r   r½   r{   )r¾   s   "r„   r¿   r&  à  s   € ÷ !ñ ! Cð !¨Cñ !rƒ   c                ób  € \        V4      pW P                  9   g   \        V\        4      '       d   \        # V P
                  P                  V4      ;pe    V'       g   V P                  V4      # \        #  VP                  \        P                  4      pRT P
                  T&   T#   \        \        \        P                  3 d$    RT P
                  T&   T P                  T4      u # \         d<   pR\        T4      9   d&   RT P
                  T&   T P                  T4      u Rp?# h Rp?ii ; i)a7  Fallback reducer for objects not registered in dispatch_table.

This handles extension types (e.g. pybind11 enums) that don't support
default pickling.  Instead of bypassing the FX graph cache entirely,
we serialize a deterministic string representation of the object which
is sufficient for cache-key hashing.
NFúis not pickleableT)r  r.  rã  Ú_PICKLE_NATIVE_TYPES_TUPLEÚNotImplementedr   rs  Ú_reduce_unpicklableÚ__reduce_ex__ÚpickleÚDEFAULT_PROTOCOLÚ	TypeErrorÚAttributeErrorÚPicklingErrorrý   rˆ   )r8  r  r   Ú
pickleableÚresultrÈ  s   &&    r„   Úreducer_overrideÚ$FxGraphCachePickler.reducer_overrideà  s  € ô �‹Iˆð
 ×#Ñ#Ô#¤z°#Ô7Q×'RÒ'RÜ!Ð!à×5Ñ5×9Ñ9¸!Ó<Ð<ˆJÒIßØ×/Ñ/°Ó4Ð4Ü!Ð!ð		Ø×&Ñ&¤v×'>Ñ'>Ó?ˆFð *.ˆ×#Ñ# AÑ&Øˆøô œ>¬6×+?Ñ+?Ð@ô 	1Ø-2ˆD×'Ñ'¨Ñ*Ø×+Ñ+¨CÓ0Ò0Üô 	Ø"¤c¨!£fÔ,Ø16�×+Ñ+¨AÑ.Ø×/Ñ/°Ó4Õ4Øûð		ús1   Á7B' Â'A D.Ã)D.Ã2D.Ã3/D)Ä"D.Ä(D)Ä)D.c               ó    € V ^8„  d   QhRRRR/# rC  r{   )r¾   s   "r„   r¿   r&    s   € ÷ *ñ * ð *¨ñ *rƒ   c                	ót   € \        V 4      pVf"   \        R\        V 4      P                   24      h\        V33# )Nz5Cannot produce stable cache key for unpicklable type )r  ÚBypassFxGraphCacher  r   rþ  )r  r�   s   & r„   rH  Ú'FxGraphCachePickler._reduce_unpicklable  sE   € ä! #Ó&ˆØŠ;Ü$ØGÜ˜“9×)Ñ)Ð*ð,óð ô " C 6Ð)Ð)rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r   r"   r½   z.tuple[Callable[[T], T], tuple[TensorMetadata]]r{   )r¾   s   "r„   r¿   r&    s   € ÷ %ñ %Øð%à	7ñ%rƒ   c                óÐ   € \        V4      pV P                  '       dB   \        P                  ! V\        P
                  ! VP
                  P                  ^ 4      R7      p\        V33# )z'
Custom reducer to pickle FakeTensors.
rë   )r	  r+  r  r  rØ   r�   r  rú  )r8  r   r  s   && r„   r0  Ú'FxGraphCachePickler._reduce_fake_tensor  sS   € ô 9¸Ó;ˆØ×#×#Ð#Ü"×*Ò*Ø¤§¢¨h¯o©o×.BÑ.BÀAÓ!FôˆHô ˜˜Ð$Ð$rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r   r"   r½   zHtuple[Callable[[T], T], tuple[TensorMetadata | TensorMetadataAndValues]]r{   )r¾   s   "r„   r¿   r&    s    € ÷ $Fñ $FØð$Fà	Qñ$Frƒ   c                ó:  € ^RI Hp VP                  '       d   \        P	                  V4       \        V4      pV P                  '       dB   \        P                  ! V\        P                  ! VP                  P                  ^ 4      R7      p\        V4      '       d"   VP                  ! V4      '       g
   \        V33# \        4       pVP!                  4       p\        4       V,
          pVR8”  d   \"        P$                  ! RVR R24       \        \'        W54      33# )zz
Custom reducer to pickle Tensors.  If we see tensors, we know they're constants
stored as attributes on the GraphModule.
r«   rë   g      ð?z0FX graph cache copying of a large constant took z.1zs. Please file an issue.)Úgraphr¬   Ú	is_mkldnnÚCacheabilityValidatorÚcheck_tensorr	  r+  r  r  rØ   r�   r  rM   Úcan_inline_constantrú  r   ÚtolistÚwarningsÚwarnrò  )r8  r   r¬   r  Ústartrõ  Úelapseds   &&     r„   r1  Ú"FxGraphCachePickler._reduce_tensor  sæ   € õ 	)à�;�;ˆ;ô "×.Ñ.¨qÔ1ä8¸Ó;ˆØ×#×#Ð#Ü"×*Ò*Ø¤§¢¨h¯o©o×.BÑ.BÀAÓ!FôˆHô
 ˜1×Ò m×&GÒ&GÈ×&JÒ&JÜ˜X˜KÐ(Ð(ô “ˆØ—‘“ˆÜ“&˜5•.ˆØ�SŒ=Ü�MŠMØBÀ7È2À,ð O(ð (ôô
 Ô0°ÓBÐDÐEÐErƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   Úsr!   r½   ú#tuple[Callable[[T], T], tuple[str]]r{   )r¾   s   "r„   r¿   r&  @  s   € ÷ #ñ # ð #Ð+Nñ #rƒ   c                ó&   € \         \        V4      33# )z#
Custom reducer to pickle SymInts.
©rú  rˆ   ©r8  rh  s   &&r„   r5  Ú"FxGraphCachePickler._reduce_symint@  s   € ô œ˜Q›˜	Ð"Ð"rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   rh  ztorch.SymBoolr½   ri  r{   )r¾   s   "r„   r¿   r&  I  s   € ÷ #ñ # ð #Ð3Vñ #rƒ   c                ó&   € \         \        V4      33# )z$
Custom reducer to pickle SymBools.
rk  rl  s   &&r„   r7  Ú#FxGraphCachePickler._reduce_symboolI  s   € ô œ˜Q›˜	Ð"Ð"rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   rh  r   r½   r   r{   )r¾   s   "r„   r¿   r&  Q  s   € ÷ ;ñ ; Sð ;¨Xñ ;rƒ   c                ó0   € \         P                  R4       R# )zc
Custom reducer to handle any objects that we don't support and therefore
raise to bypass caching.
úReduce unsupportedN)r^  Úbypassrl  s   &&r„   r<  Ú'FxGraphCachePickler._reduce_unsupportedQ  s   € ô
 	×$Ñ$Ð%9Ö:rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r"  r#  r½   z&tuple[Any, tuple[dict[str, Any], str]]r{   )r¾   s   "r„   r¿   r&  X  s   € ÷ #ñ #Ø&ð#à	/ñ#rƒ   c                ó°   € VP                  4       w  pw  r4VR,          p\        P                  ! RRV4      p\        P                  ! RRV4      pWSR&   W#V33# )a½  
Custom reducer for graph module to handle irrelevant data for user
defined triton kernels
Essentially what we are doing here is a huge hack where user defined
triton kernel contain a dynamo time side table and the arguments to the
call_function are indices into this side table. These arguments are not
for hashing purposes since we included the source code into the cache
key and the numbers are prone to give false negatives due to ordering.
Ú_codezkernel_idx = \d+rê   zconstant_args_idx = \d+)Ú
__reduce__ÚreÚsub)r8  r"  Úfnr�  Úimportsr•  s   &&    r„   r>  Ú(FxGraphCachePickler._reduce_graph_moduleX  sY   € ð !Ÿm™m›oÑˆ‰OˆTØ�G�}ˆÜ�vŠvÐ)¨2¨tÓ4ˆÜ�vŠvÐ0°"°dÓ;ˆØˆW‰Ø˜'�?Ð"Ð"rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r   rX   r½   z*tuple[Callable[..., Any], tuple[Any, ...]]r{   )r¾   s   "r„   r¿   r&  k  s    € ÷ Jñ JØ!ðJà	3ñJrƒ   c                	ó®  € VP                   e    \        VP                   4      p\        P                  ! V4      '       dL   \        P                  ! V4      '       d0   \        P
                  ! V4      '       g   \        VP                  33# \        P                  ! V4      '       d   RV n        \        VP                  VP                  VP                   33# )NF)
Úreal_objr  Úopaque_objectÚis_custom_classÚshould_hoistÚhas_membersrú  Úscript_class_namer@  Úwrapped_obj)r8  r   Úclss   && r„   r=  Ú.FxGraphCachePickler._reduce_fake_script_objectk  sŸ   € ð �:‰:Ò!Ü�q—z‘zÓ"ˆCô
 ×-Ò-¨c×2Ò2Ü!×.Ò.¨s×3Ò3Ü%×1Ò1°#×6Ò6ä ×!4Ñ!4Ð 6Ð7Ð7Ü×,Ò,¨S×1Ò1ð "�”	Ü˜Ÿ™¨×(;Ñ(;¸Q¿Z¹ZÐHÐIÐIrƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r  r   r½   r‘  r{   )r¾   s   "r„   r¿   r&  €  s   € ÷ %ñ %˜ð % ñ %rƒ   c                óÄ  €  V P                  V4       V P                  P                  4       V P                  P                  ^ 4       V P                  P	                  ^ 4       #   \
        \        \        P                  \        3 d    p\        P                  T4        Rp?MLRp?i\         d<   pR\        T4      9   d&   R\        T4      9   d   \        P                  T4       h Rp?ii ; i T P                  P                  ^ 4       T P                  P	                  ^ 4       R#   T P                  P                  ^ 4       T P                  P	                  ^ 4       i ; i)z,
Pickle an object and return a byte string.
NÚpybind11rE  )Údumpr*  ÚgetvalueÚseekÚtruncaterL  rM  rJ  rN  Ú
ValueErrorr^  Úbypass_for_pickle_errorrý   rˆ   )r8  r  rÈ  s   && r„   rN  ÚFxGraphCachePickler.dumps€  s  € ð	%Ø�I‰I�cŒNØ—<‘<×(Ñ(Ó*ð �L‰L×Ñ˜aÔ Ø�L‰L×!Ñ! !Õ$øô œ>¬6×+?Ñ+?ÄÐLô 	=Ü!×9Ñ9¸!×<Ñ<ûÜô 	ð œS ›VÔ#Ð(;¼sÀ1»vÔ(EÜ%×=Ñ=¸aÔ@Øûð	úð =ð �L‰L×Ñ˜aÔ Ø�L‰L×!Ñ! !Ö$øð �L‰L×Ñ˜aÔ Ø�L‰L×!Ñ! !Õ$ús;   ‚*A# Á#%C+ÂB"ÂD' Â"C+Â/C+Â06C&Ã&C+Ã+D' Ä'8Ec               ó    € V ^8„  d   QhRRRR/# ©r»   r  r   r½   rˆ   r{   )r¾   s   "r„   r¿   r&  ”  s   € ÷ ?ñ ?˜Cð ? Cñ ?rƒ   c                óP   € V P                  V4      p\        P                  ! V4      # )z5
Serialize an object and return a hash of the bytes.
)rN  rk   r�   ©r8  r  Úserialized_datas   && r„   r­  ÚFxGraphCachePickler.get_hash”  s"   € ð Ÿ*™* S›/ˆÜ)×-Ò-¨oÓ>Ð>rƒ   c               ó    € V ^8„  d   QhRRRR/# r•  r{   )r¾   s   "r„   r¿   r&  ›  s   € ÷ @ñ @˜3ð @ 3ñ @rƒ   c                óP   € V P                  V4      p\        P                  ! V4      # )z7
Serialize an object and return an FX graph cache key.
)rN  rl   r�   r—  s   && r„   Úget_keyÚFxGraphCachePickler.get_key›  s"   € ð Ÿ*™* S›/ˆÜ*×.Ò.¨Ó?Ð?rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   ÚinpÚFxGraphHashDetailsr½   rž   r{   )r¾   s   "r„   r¿   r&  ¢  s   € ÷  ñ  Ð1ð  °iñ  rƒ   c                óx  a € R V 3R llp. p\        V4      P                  4        EF  w  rE\        V\        4      '       d^   \	        \        V4      4       FC  pS P                  WV,          4      pVP                  RV RV RV RV! WV,          4       24       KE  	  Ky  \        V\        4      '       dP   VP                  4        F9  w  r‰S P                  V	4      pVP                  RV RV RV RV! V	4       24       K;  	  KÞ  S P                  V4      pVP                  RV RV RV! V4       24       EK  	  V# )z©
Get a printable string describing in more detail all the attributes
comprising an object. Useful for debugging when one graph hashes
to a different value than another.
c               ó    € V ^8„  d   QhRRRR/# r•  r{   )r¾   s   "r„   r¿   Ú5FxGraphCachePickler.debug_lines.<locals>.__annotate__©  s   € ÷ 
	 ñ 
	 ˜ð 
	  ñ 
	 rƒ   c                ó°  <€ \        V \        P                  4      '       d   \        \	        V 4      4      # \        V \
        4      '       d6   V P                  R RR7      p\        V4      R8:  d   V# VR,          R,           # \        V 4      SP                  9   d3   \        SP                  \        V 4      ,          ! V 4      ^,          4      # \        V 4      # )rß  r  )Úerrorsé   :Ni   Nz...)
rã  rØ   r"   rˆ   r	  r‘  ÚdecodeÚlenr  r.  )r  Úvalr8  s   & €r„   Úget_strÚ0FxGraphCachePickler.debug_lines.<locals>.get_str©  s¢   ø€ Ü˜#œuŸ|™|×,Ò,ÜÔ@ÀÓEÓFÐFÜ˜C¤×'Ò'Ø—j‘j °�jÓ;�Ü! #›h¨$Ô.�sÐF°C¸µJÀÕ4FÐFÜ�c“˜d×1Ñ1Ô1ä˜4×.Ñ.¬t°C«yÖ9¸#Ó>¸qÕAÓBÐBä˜3“x�rƒ   Ú[z] z]: z: )	Úvarsr‚  rã  ÚlistÚranger¨  r­  rÛ   Údict)
r8  rŸ  rª  ÚlinesÚattrr  ÚiiÚhÚkÚvs
   f&        r„   Údebug_linesÚFxGraphCachePickler.debug_lines¢  s  ø€ ÷
	 ð 
	 ð ˆÜ˜c›Ÿ™×*‰IˆDÜ˜#œt×$Ò$Ü¤ C£ž/�BØŸ™ c¥gÓ.�AØ—L‘L 1 Q C r¨$¨¨q°°°C¹ÀÅÓ8HÐ7IÐ!JÖKó *ô ˜C¤×&Ò&ØŸI™IžK‘D�AØŸ™ aÓ(�AØ—L‘L 1 Q C r¨$¨¨q°°°3±w¸q³z°lÐ!CÖDó (ð —M‘M #Ó&�Ø—‘˜q   2 d V¨2©g°c«l¨^Ð<×=ñ +ð ˆrƒ   )r+  r*  r.  r@  ©FF)r}   r~   r   r€   rÌ  r   r�   r9  rQ  rQ  rH  r0  r1  r5  r7  r<  r>  r=  rN  r­  rœ  r·  r‚   Ú__classcell__©r?  s   @r„   r  r  §  s{   ø‡ ñð 02ÐÐ,Ó1÷)ò )õX!ðF ô*ó ð*õ%õ$FõL#õ#õ;õ#õ&Jõ*%õ(?õ@÷ ó  rƒ   r  c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r»   Úrootsúlist[str] | NoneÚprefixrˆ   Úhasherzhashlib._Hashr½   r4  r{   )r¾   s   "r„   r¿   r¿   Å  s2   € ÷ Vñ VØðVØ%(ðVØ2?ðVà	ñVrƒ   c                ó”  € \        \        P                  ! W4      R  R7       EF  pVP                  P	                  VP
                  R4      pVf   \        RVP
                   24      hVP                  pVf   \        RVP
                   R24      h\        VR4      ;_uu_ 4       pVP                  VP
                  P                  R4      4       VP                  VP                  4       4       RRR4       VP                  '       g   Ké  \        VP                  VP
                   R2V4       EK  	  R#   + '       g   i     LO; i)	c                ó   € V P                   # rÃ   r  rù  s   &r„   r  Ú!build_code_hash.<locals>.<lambda>È  s   € ÈÏÊrƒ   rÒ   NzFailed to find spec for module úModule spec for z has no originÚrbrß  rÁ   )rÔ   ÚpkgutilÚiter_modulesÚmodule_finderÚ	find_specrz   r%  Úoriginr?  r/  ÚencodeÚreadÚispkgÚbuild_code_hashÚsubmodule_search_locations)r½  r¿  rÀ  ÚlibÚspecÚmodulerð  s   &&&    r„   rÎ  rÎ  Å  sõ   € ô ”g×*Ò*¨5Ó9Ñ?O×PÐPˆØ× Ñ ×*Ñ*¨3¯8©8°TÓ:ˆØŠ<Ü Ð#BÀ3Ç8Á8À*Ð!MÓNÐNØ—‘ˆØŠ>Ü Ð#3°C·H±H°:¸^Ð!LÓMÐMÜ�&˜$×Ô 1Ø�M‰M˜$Ÿ)™)×*Ñ*¨7Ó3Ô4Ø�M‰M˜!Ÿ&™&›(Ô#÷  ð �9�9Š9ä˜D×;Ñ;ÀÇ	Á	¸{È!¸_Èf×Uó Q÷  ×ús   Â&A
D7Ä7Ec               ó   € V ^8„  d   QhRR/# ©r»   r½   r‘  r{   )r¾   s   "r„   r¿   r¿   Ø  s   € ÷ Xñ X�5ñ Xrƒ   c                 ó@  € \        RRR7      ;_uu_ 4        \        P                  ! 4       '       g   R R lp V ! \        4      uuRRR4       # ^ RIHp VP                  R4      P                  4       P                  R	4      uuRRR4       #   + '       g   i     R# ; i)
zK
Compute a key that contains relevant information about torch source files
Úinductor_codecache_torch_keyF©Úlog_pt2_compile_eventc               ó    € V ^8„  d   QhRRRR/# )r»   Úrootrˆ   r½   r‘  r{   )r¾   s   "r„   r¿   Útorch_key.<locals>.__annotate__ß  s   € ÷ 'ñ ' Cð '¨Eñ 'rƒ   c                ót  € Rp\         P                  P                  \        4      pV Uu. uF"  p\         P                  P	                  W#4      NK$  	  pp\
        P                  ! 4       pVP                  \        P                  P                  R4      4       \        V .RV4       V Ff  p\         P                  P                  V4      '       g   K*  \        VR4      ;_uu_ 4       pVP                  VP                  4       4       RRR4       Kh  	  VP                  4       # u upi   + '       g   i     K�  ; i)ú"codegen/aoti_runtime/interface.cpprß  rê   rÅ  N)rÝ  zcodegen/aoti_runtime/streams.hz	script.ld)rù   rú   ÚdirnameÚ__file__rÉ   ÚhashlibÚsha256r/  rØ   Ú__version__rË  rÎ  rû   r?  rÌ  Údigest)rÚ  Úextra_filesÚinductor_rootrÆ   rÀ  rú   rð  s   &      r„   Úget_code_hashÚ torch_key.<locals>.get_code_hashß  sÛ   € ð�ô
 !#§¡§¡´Ó 9�ÙGRÓSÁ{À!œrŸw™wŸ|™|¨MÖ=Á{�ÐSÜ ŸšÓ)�Ø—‘œe×/Ñ/×6Ñ6°wÓ?Ô@Ü  ¨¨FÔ3Û'�DÜ—w‘w—~‘~ d×+Ô+Ü! $¨×-Ô-°Ø"ŸM™M¨!¯&©&«(Ô3÷ .Ñ-ñ (ð —}‘}“Ð&ùò T÷ .×-Ð-ús   ª(D!Ã% D&Ä&D7N)Úparutilztorch/src_hash.txtÚascii)	r'   r)   Ú	is_fbcoder6   Úlibfb.pyrè  Úget_file_contentsÚrstriprË  )ræ  rè  s     r„   Ú	torch_keyrî  ×  sq   € ô
 
Ð4ÈE×	RÖ	RÜ×Ò×!Ò!õ'ñ( !¤Ó-÷/ 
SÒ	Rõ2 	%à×(Ñ(Ð)=Ó>×EÑEÓG×NÑNÈwÓW÷7 
S×	R×	RÓ	Rús   –-BÁ3BÂB	c               ó   € V ^8„  d   QhRR/# rà   r{   )r¾   s   "r„   r¿   r¿   ú  s   € ÷ %ñ %˜3ñ %rƒ   c                 óH   € \         P                  P                  \        4      # rÃ   )rù   rú   rÞ  rß  r{   rƒ   r„   Úget_inductor_rootrñ  ú  s   € Ü�7‰7�?‰?œ8Ó$Ð$rƒ   c                  ó&   € ] tR tRt$ RtR]R&   RtR# )ÚOrderedSetHolderiþ  zV
See FxGraphHashDetails. Holds a sorted list to support stable hashing
of set kwargs.
rô  r‚  r{   Nrö  r{   rƒ   r„   ró  ró  þ  s   ‡ ñð
 ×rƒ   ró  c                  ó   € ] tR tRtRtRtR# )rU  i  zA
Exception to indicate that the FxGraphCache should be bypassed.
r{   N)r}   r~   r   r€   rÌ  r‚   r{   rƒ   r„   rU  rU    s   † õrƒ   rU  T)Úfrozenc                  ó&  € ] tR tRt$ RtR]R&   R)tR]R&   RtR]R	&   R
tR]R&   Rt	R]R&   R R lt
R R lt]R R l4       t]R R l4       t]R R l4       t]R R l4       tR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR*R' R( lltR)tR# )+r^  i  zä
Centralized validation for deciding whether an FX graph can use the cache.

The cache key pickler still defends itself when serializing arbitrary objects,
but non-cacheable inputs should be rejected here before hashing starts.
r#  r"  úSequence[InputType]Úexample_inputsNú_CompileFxKwargs | NoneÚ	fx_kwargsTr¢   Úrequire_shape_envúShapeEnv | NoneÚ	shape_envc               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   Ú"CacheabilityValidator.__annotate__  s   € ÷ 
9ñ 
9˜$ñ 
9rƒ   c                	óv  € V P                  4        V P                  4        V P                  4        V P                  4        V P	                  4        V P                  4        V P                  R R7       V P                  V P                  4       V P                  e   V P                  V P                  4       R# R# )T©Úinclude_constantsN)
Ú_check_custom_passesÚ,_check_nested_region_inductor_config_patchesÚ_check_frozen_paramsÚ_check_runtime_constant_foldingÚ_check_compiler_bisectorÚ_check_shape_envÚvalidate_graphÚ_check_cache_key_objectrø  rú  r7  s   &r„   ÚvalidateÚCacheabilityValidator.validate  s�   € Ø×!Ñ!Ô#Ø×9Ñ9Ô;Ø×!Ñ!Ô#Ø×,Ñ,Ô.Ø×%Ñ%Ô'Ø×ÑÔØ×Ñ¨dÐÔ3Ø×$Ñ$ T×%8Ñ%8Ô9Ø�>‰>Ò%Ø×(Ñ(¨¯©Ö8ñ &rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r  r¢   r½   r4  r{   )r¾   s   "r„   r¿   rÿ  )  s   € ÷ 7ñ 7°ð 7¸ñ 7rƒ   c                	ór  € V P                   P                  4        EF„  p\        V\        P                  P
                  4      '       g   K0  VP                  P                   EF9  p\        VP                  \        P                  P                  4      '       dM   VP                  P                  4       '       g-   V P                  R VP                  P                  4        24       VP                  R8X  dZ   \        \        V P                   VP                  4      \        P                   P"                  4      '       d   V P                  R4       V'       g   Kø  VP                  R8X  g   EK   V P%                  W#P                  4      pT P)                  T4       EK<  	  EK‡  	  R#   \&         d     EKT  i ; i)z!Can't cache HigherOrderOperator: rÊ   zCan't cache torchbind objectsÚget_attrN)r"  Úmodulesrã  rØ   r8  ÚGraphModuler\  Únodesr¼   Ú_opsÚHigherOrderOperatorÚ	cacheablert  rz   rh  rÊ   Ú_CÚScriptObjectÚ	_get_attrrM  r
  )r8  r  rÒ  Únoder²  s   &&   r„   r	  Ú$CacheabilityValidator.validate_graph)  s*  € Ø—g‘g—o‘o×'ˆFÜ˜f¤e§h¡h×&:Ñ&:×;Ò;ÙØŸ™×*Õ*�ä˜tŸ{™{¬E¯J©J×,JÑ,J×KÒKØ ŸK™K×1Ñ1×3Ò3à—K‘KØ;¸D¿K¹K×<LÑ<LÓ<NÐ;OÐPôð —7‘7˜iÔ'¬JÜ˜DŸG™G T§[¡[Ó1´5·8±8×3HÑ3H÷-ò -ð —K‘KÐ ?Ô@ß$Ñ$¨¯©°J×)>ð!Ø#Ÿ~™~¨f·k±kÓB˜ð ×0Ñ0°×6ô- +ó (øô. *ô !Û ð!ús   Å.F&Æ&F6Æ5F6c               ó    € V ^8„  d   QhRRRR/# )r»   r   r"   r½   r4  r{   )r¾   s   "r„   r¿   rÿ  F  s   € ÷ Hñ H˜ð H 4ñ Hrƒ   c                	óX   € V P                   '       d   \        P                  R 4       R# R# )zmkldnn tensors unpickleableN)r]  r^  rt  ©r   s   &r„   r_  Ú"CacheabilityValidator.check_tensorE  s   € à�;�;ˆ;Ü!×(Ñ(Ð)FÖGñ rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   Úreasonrˆ   r½   r   r{   )r¾   s   "r„   r¿   rÿ  K  s   € ÷ )ñ )�sð )˜xñ )rƒ   c                	ó   € \        V 4      hrÃ   )rU  )r   s   &r„   rt  ÚCacheabilityValidator.bypassJ  s   € ä  Ó(Ð(rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   rÈ  r  r½   r   r{   )r¾   s   "r„   r¿   rÿ  O  s   € ÷ Fñ F 9ð F°ñ Frƒ   c                	ór   € \         P                  R \        V 4      W P                  3R7       \	        R 4      V h)zFailed to pickle cache key©Úexc_info)ÚlogÚwarningr  Ú__traceback__rU  )rÈ  s   &r„   r’  Ú-CacheabilityValidator.bypass_for_pickle_errorN  s6   € ä�‰Ø(Ü˜1“g˜q§/¡/Ð2ð 	ô 	
ô !Ð!=Ó>ÀAÐErƒ   c               ó$   € V ^8„  d   QhRRRRRR/# )r»   rÒ  r#  r¼   rˆ   r½   r   r{   )r¾   s   "r„   r¿   rÿ  W  s"   € ÷ )ñ )Ð.ð )¸ð )Àñ )rƒ   c                	ó   € ^ RI Hp V! W4      # )r   )r  )Útorch.fx.graph_moduler  )rÒ  r¼   r  s   && r„   r  ÚCacheabilityValidator._get_attrV  s   € å3á˜Ó(Ð(rƒ   c               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   rÿ  \  s   € ÷  Hñ  H dñ  Hrƒ   c                	óÐ  € \        4       R 8w  d`   \        \        P                  4       FB  p\	        V\
        4      '       d   VP                  4       '       d   K1  V P                  R4       KD  	  \        P                  ! \        \        P                  4      \        \        P                  4      4       FB  p\	        V\
        4      '       d   VP                  4       '       d   K1  V P                  R4       KD  	  \        P                  ! \        \        P                  4      \        \        P                  4      4       FB  p\	        V\
        4      '       d   VP                  4       '       d   K1  V P                  R4       KD  	  \        P                  e6   \	        \        P                  \        4      '       g   V P                  R4       \        P                   e6   \	        \        P                   \        4      '       g   V P                  R4       \        P"                   F?  p\%        V4      '       g   K  \	        V\
        4      '       d   K.  V P                  R4       KA  	  R# )Úearlyz Unsupported pre grad custom passz!Unsupported post grad custom passzUnsupported joint custom passNz#Unsupported _pre_fusion_custom_passz$Unsupported _post_fusion_custom_passz(Unsupported _fuse_ddp_communication_pass)Úresolve_pre_grad_pass_timingrK   r)   Úpre_grad_custom_passrã  rE   Úuuidrt  Ú	itertoolsÚchainÚpost_grad_custom_pre_passÚpost_grad_custom_post_passÚjoint_custom_pre_passÚjoint_custom_post_passÚ_pre_fusion_custom_passrJ   Ú_post_fusion_custom_passÚ_fuse_ddp_communication_passesÚcallable)r8  Úps   & r„   r  Ú*CacheabilityValidator._check_custom_passes\  s…  € ô
 (Ó)¨WÔ4Ü,¬V×-HÑ-HÖI�Ü! !¤_×5Ò5¸Q¿V¹V¿X¼XØ—K‘KÐ BÖCñ Jô —’Ü#¤F×$DÑ$DÓEÜ#¤F×$EÑ$EÓFö
ˆAô ˜a¤×1Ò1¸¿¹¿¼Ø—‘Ð?Ö@ñ
ô —’Ü#¤F×$@Ñ$@ÓAÜ#¤F×$AÑ$AÓBö
ˆAô ˜a¤×1Ò1¸¿¹¿¼Ø—‘Ð;Ö<ñ
ô ×)Ñ)Ò5Üœf×<Ñ<Ô>Q×RÒRØ—‘ÐAÔBÜ×*Ñ*Ò6Üœf×=Ñ=Ô?R×SÒSØ—‘ÐBÔCÜ×6Ô6ˆAÜ˜�{Œ{¤:¨a´×#AÔ#AØ—‘ÐFÖGó 7rƒ   c               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   rÿ  ~  s   € ÷ ñ ¸dñ rƒ   c                	ó¬  € \        V P                  4       Fº  w  rVP                  4        F¡  w  r4\        V\        \
        34      '       d   TMV3p\        ;QJ d    R  V 4       F  '       g   K   RM	  RM! R  V 4       4      '       d   V P                  RV R24       V\        9   g   K‚  V'       g   KŒ  V P                  RV R24       K£  	  K¼  	  R# )c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5irÃ   )r>  )rÅ   r¶  s   & r„   rÇ   ÚUCacheabilityValidator._check_nested_region_inductor_config_patches.<locals>.<genexpr>‹  s   é € Ð3©F q”x —{�{«Fùó   ‚TFz"Uncacheable nested region config 'z': callable valuez': custom passN)	Ú._collect_nested_region_inductor_config_patchesr"  r‚  rã  r®  rÓ   Úanyrt  Ú&_NESTED_REGION_UNCACHEABLE_CONFIG_KEYS)r8  rn  Úconfig_patchesr�   r^  rõ  s   &     r„   r  ÚBCacheabilityValidator._check_nested_region_inductor_config_patches~  s±   € ô "PØ�G‰Gö"
ÑˆAð -×2Ñ2Ö4‘
�ô #-¨U´T¼5°M×"BÒ"B™ÈÈ�ß“3Ñ3©FÓ3—3—3’3Ñ3©FÓ3×3Ò3Ø—K‘KØ<¸S¸EÐARÐSôð Ô@Ö@ÇUÁUØ—K‘KØ<¸S¸EÀÐPöó 5ó"
rƒ   c               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   rÿ  ”  s   € ÷ @ñ @ dñ @rƒ   c                	ó°   € \        V P                  4      '       d;   \        P                  P	                  R 4      '       g   V P                  R4       R# R# R# )z,pytorch/inductor:allow_freezing_with_cachingz$Skipping graph with frozen constantsN)rL   r"  rØ   Ú_utils_internalÚjustknobs_checkrt  r7  s   &r„   r  Ú*CacheabilityValidator._check_frozen_params”  sC   € ä˜TŸW™W×%Ò%¬e×.CÑ.C×.SÑ.SØ:÷/
ò /
ð �K‰KÐ>Ö?ñ/
Ñ%rƒ   c               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   rÿ  ›  s   € ÷ ñ °ñ rƒ   c                	ól   € \         P                  P                  '       d   V P                  R 4       R# R# )zORuntime constant folding can introduce constants that aren't static across runsN)r)   Úaot_inductorÚuse_runtime_constant_foldingrt  r7  s   &r„   r  Ú5CacheabilityValidator._check_runtime_constant_folding›  s*   € Ü×Ñ×;×;Ð;Ø�K‰Kð%öñ <rƒ   c               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   rÿ  ¢  s   € ÷ 5ñ 5¨$ñ 5rƒ   c                	ó†   € ^ RI Hp VP                  '       d)   \        P	                  R4       V P                  R4       R# R# )r   )ÚCompilerBisectorz%don't cache graph when bisect enabledzcompiler bisector enabledN)Ú!torch._inductor.compiler_bisectorrW  Úbisection_enabledr'  Údebugrt  )r8  rW  s   & r„   r  Ú.CacheabilityValidator._check_compiler_bisector¢  s0   € ÝFà×-×-Ð-Ü�I‰IÐ=Ô>Ø�K‰KÐ3Ö4ñ .rƒ   c               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   rÿ  ©  s   € ÷ (ñ ( $ñ (rƒ   c                	óš   € V P                   '       d9   V P                  f)   \        P                  R4       V P	                  R4       R # R # R # )Nzfx graph cache no shape envzNo shape env)rû  rý  r'  rZ  rt  r7  s   &r„   r  Ú&CacheabilityValidator._check_shape_env©  s:   € ð ×!×!Ð! d§n¡nÒ&<Ü�I‰IÐ3Ô4Ø�K‰K˜Ö'ñ '=Ñ!rƒ   c               ó$   € V ^8„  d   QhRRRRRR/# )r»   r  r   Úseenzset[int] | Noner½   r4  r{   )r¾   s   "r„   r¿   rÿ  °  s(   € ÷ 9ñ 9àð9ð ð9ð 
ñ	9rƒ   c                	ó’  € Vf   \        4       p\        V4      pW29   d   R # VP                  V4       \        V\        P
                  4      '       d   V P                  V4       R # \        V\        P                  P                  P                  P                  4      '       d   V P                  R4       R # \        V\        4      '       d>   VP                  4        F'  w  rEV P                  WB4       V P                  WR4       K)  	  R # \        V\        \         \"        34      '       d   V F  pV P                  Wb4       K  	  R # R # )Nrs  )ÚsetÚidÚaddrã  rØ   r"   r_  r8  r9  r:  r;  rt  r°  r‚  r
  r®  rÓ   ÚAbstractSet)r8  r  r`  Úobj_idr�   r^  Úitems   &&&    r„   r
  Ú-CacheabilityValidator._check_cache_key_object°  sí   € ð
 Š<Ü“5ˆDä�C“ˆØŒ>ÙØ�‰�Ôä�cœ5Ÿ<™<×(Ò(Ø×Ñ˜cÔ"ÙÜ˜œUŸX™X×2Ñ2×BÑB×PÑP×QÒQØ�K‰KÐ,Ö-Ü˜œT×"Ò"Ø!Ÿi™ižk‘
�Ø×,Ñ,¨SÔ7Ø×,Ñ,¨UÖ9ó *ô ˜œd¤E¬;Ð7×8Ò8Û�Ø×,Ñ,¨TÖ8ó ñ 9rƒ   r{   rÃ   )r}   r~   r   r€   rÌ  r�   rø  rú  rû  rý  r  r	  rQ  r_  rt  r’  r  r  r  r  r  r  r  r
  r‚   r{   rƒ   r„   r^  r^    sÃ   ‡ ñð 	ÓØ*,€NÐ'Ó,Ø)-€IÐ&Ó-Ø"Ð�tÓ"Ø!%€IˆÓ%õ
9õ7ð8 ôHó ðHð ô)ó ð)ð ôFó ðFð ô)ó ð)õ
 HõDõ,@õõ5õ(÷9ó 9rƒ   r^  úOrderedSet[str]Ú"_warned_pre_grad_pass_missing_uuidc               ó    € V ^8„  d   QhRRRR/# )r»   Úcustom_passr   r½   r¢   r{   )r¾   s   "r„   r¿   r¿   Î  s   € ÷ Wñ W sð W¨tñ Wrƒ   c                óV   € \        V \        4      ;'       d    V P                  4       R J# rÃ   )rã  rE   r4  ©rl  s   &r„   Ú_custom_pass_has_uuidro  Î  s&   € Ü�k¤?Ó3×VÐV¸×8HÑ8HÓ8JÐRVÐ8VÐVrƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   rl  r   r½   rˆ   r{   )r¾   s   "r„   r¿   r¿   Ò  s   € ÷ Xñ X 3ð X¨3ñ Xrƒ   c                óV   € \        V R R4      ;'       g    \        V 4      P                  # )r   N)rÊ   r  r   rn  s   &r„   Ú_custom_pass_namerr  Ò  s$   € Ü�; °Ó5×WÐW¼¸kÓ9J×9WÑ9WÐWrƒ   c               ó   € V ^8„  d   QhRR/# )r»   r½   zLiteral['early', 'late']r{   )r¾   s   "r„   r¿   r¿   Ö  s   € ÷ 0ñ 0Ð&>ñ 0rƒ   c                 ó  € \         P                  p \        \         P                  4      pV Uu. uF  p\	        V4      '       d   K  VNK  	  ppV'       d   RP                  R V 4       4      MRpV R8X  dr   V'       * pV'       d   RMRp V R8X  dX   V'       dP   V\        9  dE   \        P                  V4       \        P                  RV4       \        P                  ! RR	VR
7       V R8X  d   V'       d   \        RV R24      hV # u upi )a‡  Resolve the effective pre-grad pass timing from the config.

"default" is resolved based on whether the custom pass provides a UUID:
passes with a UUID (or no custom pass) run "late" (after cache lookup),
passes without a UUID run "early" (before cache lookup).

Raises RuntimeError if a custom pass without a UUID is explicitly set to
run "late", since the cache key cannot account for it.
ú, c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5irÃ   )rr  )rÅ   rl  s   & r„   rÇ   Ú/resolve_pre_grad_pass_timing.<locals>.<genexpr>è  s   é € ÐXÑDW°[Ô# K×0Ð0ÓDWùrE  z<none>ÚdefaultÚlater1  z³pre_grad_custom_pass %s does not implement uuid(); falling back to early timing (pre-grad pass cache will be bypassed). Implement uuid() on your CustomGraphPass to enable caching.Úbackend_compileT)Úpre_grad_pass_missing_uuidÚpre_grad_pass_namezpre_grad_custom_pass zx must implement uuid() to run late (after cache lookup). Either implement uuid() or set pre_grad_pass_timing to 'early'.)r)   Úpre_grad_pass_timingrK   r3  ro  rÉ   rj  rd  r'  r(  r%   Útry_add_pt2_compilerý   )r…  Úcustom_passesrl  Úpasses_missing_uuidÚmissing_uuid_pass_namesÚsupports_lates         r„   r2  r2  Ö  s  € ô 39×2MÑ2M€FÜ+¬F×,GÑ,GÓH€Mñ )óá(ˆKÜ$ [×1÷ 	ˆÙ(ð ð ÷ ð 	�	‰	ÑXÑDWÓXÔXàð ð �ÔØ/Ô/ˆß(‘¨gˆØ�WÔ§Ø&Ô.PÔPÜ2×6Ñ6Ð7NÔOÜ—‘ðRð ,ô	ô #×6Ò6Ø%Ø/3Ø'>õð �Ô×/ÜØ#Ð$;Ð#<ð =/ð /ó
ð 	
ð €MùòIs   ®DÁDc                  ó"   € ] tR tRt$ R]R&   RtR# )ÚHashableOpaqueValuei	  r—   Úordinalr{   Nr|   r{   rƒ   r„   r„  r„  	  s   ‡ à‡Lrƒ   r„  c               ó    € V ^8„  d   QhRRRR/# )r»   r"  r#  r½   z&tuple[tuple[str, dict[str, Any]], ...]r{   )r¾   s   "r„   r¿   r¿     s   € ÷ ñ Øðà+ñrƒ   c           	     ó  a€ . oR  V3R llpV P                  4        FÛ  w  r#\        V\        P                  P                  4      '       g   K1  V! V\        VR/ 4      P                  R4      4       VP                  P                  R\        P                  P                  P                  R7       FD  pV! V RVP                   2VP                  P                  R/ 4      P                  R4      4       KF  	  KÝ  	  \        S4      # )c               ó$   € V ^8„  d   QhRRRRRR/# )r»   rz   rˆ   Únested_configr   r½   r4  r{   )r¾   s   "r„   r¿   ÚD_collect_nested_region_inductor_config_patches.<locals>.__annotate__!  s!   € ÷ 3ñ 3˜#ð 3¨cð 3°dñ 3rƒ   c                óZ   <€ \        VR R4      pV'       d   SP                  W34       R# R# )Úinductor_config_patchesN)rÊ   rÛ   )rz   r‰  rI  Úpatchess   && €r„   Úadd_patchesÚC_collect_nested_region_inductor_config_patches.<locals>.add_patches!  s)   ø€ Ü  Ð0IÈ4ÓPˆßØ�N‰N˜DÐ1Ö2ñ rƒ   r  Únested_region_configÚcall_function©rh  r¼   rÁ   Úcustom)Únamed_modulesrã  rØ   r8  r  rÊ   rs  r\  Ú
find_nodesrÙ   Úhigher_orderÚinvoke_subgraphrz   r  rÓ   )r"  rŽ  rz   rÒ  r  r�  s   &    @r„   rF  rF    sÝ   ø€ ð 13€G÷3ð 3ð
 ×(Ñ(Ö*‰ˆÜ˜&¤%§(¡(×"6Ñ"6×7Ò7ÙÙ�Dœ' &¨&°"Ó5×9Ñ9Ð:PÓQÔRØ—L‘L×+Ñ+Ø¤u§y¡y×'=Ñ'=×'MÑ'Mð ,ö 
ˆDñ Ø�&˜˜$Ÿ)™)˜Ð%Ø—	‘	—‘˜h¨Ó+×/Ñ/Ð0FÓGöó
ñ	 +ô �‹>Ðrƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r"  r#  r½   z3tuple[tuple[str, tuple[tuple[str, Any], ...]], ...]r{   )r¾   s   "r„   r¿   r¿   4  s   € ÷ 	ñ 	Øð	à8ñ	rƒ   c                ó~   € \         ;QJ d    . R  \        V 4       4       F  NK  	  5# ! R  \        V 4       4       4      # )c              3  ó¶   a"  € T FN  w  poT\         ;QJ d     . V3R  l\        S4       4       F  NK  	  5M! V3R  l\        S4       4       4      3x € KP  	  R# 5i)c              3  ó8   <"  € T F  qSV,          3x € K  	  R # 5irÃ   r{   )rÅ   r�   rI  s   & €r„   rÇ   ÚT_collect_nested_region_inductor_config_patches_for_hash.<locals>.<genexpr>.<genexpr>:  s   øé € ÐOÑ8N°˜ sÕ+Õ,Ó8Nùs   ƒN)rÓ   rÔ   )rÅ   rz   rI  s   & @r„   rÇ   ÚJ_collect_nested_region_inductor_config_patches_for_hash.<locals>.<genexpr>7  sN   øé € ð ñ
 %WÑ ˆD�.ð ßŒEÔO¼¸~Ô8NÓO�E‰EÔO¼¸~Ô8NÓOÓOõ	
ó %Wùs   ƒA—AA)rÓ   rF  ©r"  s   &r„   Ú7_collect_nested_region_inductor_config_patches_for_hashrŸ  4  sH   € ÷ Œ5ñ ô
 %SÐSUÔ$Vó�5ð ˆ5ñ ô
 %SÐSUÔ$Vóó ð rƒ   c                  óD  € ] tR tRtRtRR.tRt]P                  ]P                  ]P                  ]P                  ]P                  ]P                  ]P                  3t]P                   P"                  P                  ]P                   P"                  P                  ]P                   P"                  P                  ]P                   P"                  P                  ]P                   P"                  P                  ]P                   P"                  P                  ]P                   P"                  P                  3t]R R l4       t]R R l4       t]R	 R
 l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       tR R ltR R ltR R ltR R ltRt R# )r   i@  zn
Object to capture all the details for a compiled FX graph relevant to computing
a safe and stable cache key.
Úgraph_idÚcompile_region_namec               ó    € V ^8„  d   QhRRRR/# ©r»   r^  r   r½   r¢   r{   )r¾   s   "r„   r¿   ÚFxGraphHashDetails.__annotate___  s   € ÷ 
ñ 
 Sð 
¨Tñ 
rƒ   c                	óp  a € \        V\        P                  4      '       d   R # \        V\        \        \
        \        34      '       d;   \        ;QJ d    V 3R lV 4       F  '       g   K   R # 	  R# ! V 3R lV 4       4      # \        V\        4      '       d�   \        ;QJ dP    V 3R l\        P                  ! VP                  4       VP                  4       4       4       F  '       g   K   R # 	  R# ! V 3R l\        P                  ! VP                  4       VP                  4       4       4       4      # R# )Tc              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5irÃ   ©Ú_contains_tensor©rÅ   rÆ   rˆ  s   & €r„   rÇ   Ú6FxGraphHashDetails._contains_tensor.<locals>.<genexpr>c  s   øé € Ð>¹°1�s×+Ñ+¨A×.Ð.»ùó   ƒ!Fc              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5irÃ   r¨  rª  s   & €r„   rÇ   r«  e  s&   øé € ð áF�Að ×$Ñ$ Q×'Ð'ÛFùr¬  )rã  rØ   r"   r®  rÓ   ri   Ú	frozensetrG  r°  r5  r6  rV  rõ  ©rˆ  r^  s   f&r„   r©  Ú#FxGraphHashDetails._contains_tensor^  sÑ   ø€ ä�eœUŸ\™\×*Ò*ÙÜ�eœd¤E¬:´yÐA×BÒBß“3Ô>¹Ó>—3”3Ð>’3Ð>�3Ô>¹Ó>Ó>Ð>Ü�eœT×"Ò"ß“3ô ä"Ÿš¨¯©«°u·|±|³~ÔFó—3”3ð ’3ð �3ô ä"Ÿš¨¯©«°u·|±|³~ÔFóó ð ñ rƒ   c               ó    € V ^8„  d   QhRRRR/# r¤  r{   )r¾   s   "r„   r¿   r¥  l  s   € ÷ 
ñ 
¨ð 
°ñ 
rƒ   c                	óž  a € \        V\        P                  4      '       d   VP                  P                  R 8H  # \        V\
        \        \        \        34      '       d;   \        ;QJ d    V 3R lV 4       F  '       g   K   R# 	  R# ! V 3R lV 4       4      # \        V\        4      '       d�   \        ;QJ dP    V 3R l\        P                  ! VP                  4       VP                  4       4       4       F  '       g   K   R# 	  R# ! V 3R l\        P                  ! VP                  4       VP                  4       4       4       4      # R# )Úcpuc              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5irÃ   ©Ú_contains_cpu_tensorrª  s   & €r„   rÇ   Ú:FxGraphHashDetails._contains_cpu_tensor.<locals>.<genexpr>p  s   øé € ÐB¹E°q�s×/Ñ/°×2Ð2»Eùr¬  TFc              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5irÃ   rµ  rª  s   & €r„   rÇ   r·  r  s&   øé € ð áF�Að ×(Ñ(¨×+Ð+ÛFùr¬  )rã  rØ   r"   r�   r  r®  rÓ   ri   r®  rG  r°  r5  r6  rV  rõ  r¯  s   f&r„   r¶  Ú'FxGraphHashDetails._contains_cpu_tensork  sã   ø€ ä�eœUŸ\™\×*Ò*Ø—<‘<×$Ñ$¨Ñ-Ð-Ü�eœd¤E¬:´yÐA×BÒBß“3ÔB¹EÓB—3”3ÐB’3ÐB�3ÔB¹EÓBÓBÐBÜ�eœT×"Ò"ß“3ô ä"Ÿš¨¯©«°u·|±|³~ÔFó—3”3ð ’3ð �3ô ä"Ÿš¨¯©«°u·|±|³~ÔFóó ð ñ rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r^  r   r½   ry   r{   )r¾   s   "r„   r¿   r¥  y  s   € ÷ ñ ˜Cð  Jñ rƒ   c                	óð   € \        V \        P                  4      '       d   V P                  # \        V \        4      '       d"    \        P                  ! V 4      P                  # R #   \
         d     R # i ; irÃ   )rã  rØ   r�   r  rˆ   rý   r  s   &r„   Ú_device_typeÚFxGraphHashDetails._device_typex  s]   € ä�eœUŸ\™\×*Ò*Ø—:‘:ÐÜ�eœS×!Ò!ðÜ—|’| EÓ*×/Ñ/Ð/ñ øô  ô Úðús   ÁA& Á&A5Á4A5c               ó(   € V ^8„  d   QhRRRRRRRR/# )r»   r¼   r   ÚtargetsrÐ   rÜ   r½   r¢   r{   )r¾   s   "r„   r¿   r¥  „  s,   € ÷ *ñ *Øð*Ø#2ð*Ø=Lð*à	ñ*rƒ   c                	ó@   € W9   g   W9   d   R # \        VRR4      pWC9   # )TÚoverloadpacketN)rÊ   )rˆ  r¼   r¿  rÜ   Úoverload_packets   &&&& r„   Ú_is_factory_targetÚ%FxGraphHashDetails._is_factory_targetƒ  s*   € ð Ô Ô 1ÙÜ! &Ð*:¸DÓAˆØÑ)Ð)rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r  útorch.fx.Noder½   rÐ   r{   )r¾   s   "r„   r¿   r¥  �  s   € ÷ 
ñ 
 Mð 
°oñ 
rƒ   c                	ó�   a€ \         ;QJ d!    . V3R  lV P                   4       F  NK  	  5# ! V3R  lV P                   4       4      # )c              3  ón   <"  € T F*  qSP                   9   g   K  SP                   V,          x € K,  	  R # 5irÃ   )r  )rÅ   r�   r  s   & €r„   rÇ   Ú6FxGraphHashDetails._tensor_metadata.<locals>.<genexpr>Ž  s*   øé € ð 
Ù&>˜sÈÏÉÑBRŒNˆD�I‰I�c�NŠNÓ&>ùs   ƒ5š5)rÓ   ÚTENSOR_METADATA_KEYS)rˆ  r  s   &fr„   Ú_tensor_metadataÚ#FxGraphHashDetails._tensor_metadataŒ  sA   ø€ çŒuô 
Ø&)×&>Ò&>ó
�uð 	
ˆuô 
Ø&)×&>Ò&>ó
ó 
ð 	
rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r  rÆ  r½   ry   r{   )r¾   s   "r„   r¿   r¥  “  s   € ÷ =ñ =¨ð =¸*ñ =rƒ   c                	óÂ  € VP                   R 8w  d   R# V P                  VP                  \        4       \	        4       4      pV P                  VP                  V P
                  V P                  4      pV'       g   V'       g   R# V P                  VP                  P                  R4      4      pVe   V# \        VP                  RR4      pVeV   \        VP                  VP                  4       F1  w  rgVP                  R8X  g   K  V P                  V4      pVf   K/  Vu # 	  V'       d   R# \        P                   ! \        P"                  ! 4       4      P$                  # )r‘  Nr�   Ú_schema)rh  rÃ  r¼   rÕ   rÞ   ÚLIKE_FACTORY_TARGETSÚLIKE_FACTORY_PACKETSr¼  Úkwargsrs  rÊ   ÚzipÚ	argumentsÚargsrz   rØ   r�   Úget_default_devicer  )rˆ  r  Úis_default_device_factoryÚis_like_factoryr  ÚschemaÚargr^  s   &&      r„   Ú_factory_device_typeÚ'FxGraphHashDetails._factory_device_type’  s  € à�7‰7�oÔ%Ùà$'×$:Ñ$:Ø�K‰KÜ/Ó1Ü8Ó:ó%
Ð!ð
 ×0Ñ0Ø�K‰KØ×$Ñ$Ø×$Ñ$ó
ˆ÷
 *¯_Ùà×&Ñ& t§{¡{§¡°xÓ'@ÓAˆØÒ"ØÐä˜Ÿ™ i°Ó6ˆØÒÜ! &×"2Ñ"2°D·I±IÖ>‘
�Ø—8‘8˜xÖ'Ø"%×"2Ñ"2°5Ó"9�KØ"Ô.Ø*Ò*ñ	 ?÷ ÙÜ�|Š|œE×4Ò4Ó6Ó7×<Ñ<Ð<rƒ   c               ó$   € V ^8„  d   QhRRRRRR/# )r»   r"  útorch.fx.GraphModule | Nonerø  r÷  r½   r¢   r{   )r¾   s   "r„   r¿   r¥  µ  s$   € ÷ ñ Ø,ðØ>Qðà	ñrƒ   c                	óÂ  € V P                  V4      '       d   R # Vf   R# VP                  4        F«  p\        V\        P                  P
                  4      '       g   K/  VP                  P                   Fb  pV P                  V4      pV P                  V4      '       d     R # V P                  V4      '       d   KH  V P                  V4      R8X  g   K`    R # 	  K­  	  R# )TFr³  )r¶  r  rã  rØ   r8  r  r\  r  rË  r©  rÛ  )rˆ  r"  rø  rÒ  r  ró  s   &&&   r„   Ú_may_generate_cpu_cpp_codeÚ-FxGraphHashDetails._may_generate_cpu_cpp_code´  s®   € ð ×#Ñ# N×3Ò3ÙØŠ:ÙØ—j‘j–lˆFÜ˜f¤e§h¡h×&:Ñ&:×;Ò;ÙØŸ™×*Ô*�Ø"%×"6Ñ"6°tÓ"<�Ø×+Ñ+¨O×<Ò<ÛØ×+Ñ+¨O×<Ô<Ø×,Ñ,¨TÓ2°eÖ;ãó +ñ #ñ rƒ   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r»   r"  rÞ  rø  r÷  rú  r©   Úinputs_to_checkúSequence[int]r½   r4  r{   )r¾   s   "r„   r¿   r¥  É  sC   € ÷ gñ gà'ðgð ,ðgð $ð	gð
 'ðgð 
ñgrƒ   c           
     	óp  € Wn         . p/ pV F�  p\        \        V4      4      '       dT   \        V4      V9  d!   \	        \        V4      4      V\        V4      &   VP                  V\        V4      ,          4       Kp  VP                  V4       Kƒ  	  WPn        \        P                  V n	        Ve   \        V4      MRV n        / V n        \        VP                  4       4       Fb  w  r‰W€P                  9  g   K  \        V	4      \         \"        39   d$   \%        \        V	4      4      V P                  V&   KT  W�P                  V&   Kd  	  ^ RIHp
HpHp ^ RIHp . V n        VEea   VP5                  4        EFK  p\7        V\8        P:                  P<                  4      '       g   K0  \>        P@                  ! VPB                  PE                  RVR7      VPB                  PE                  RVR7      4       FÊ  p^ RI#H$p V
PK                  VPL                  R,          4      pR p\7        VV4      '       dD   VPN                  '       d&   \Q        \        R VPN                   4       4      4      pVPR                  pV! V4      pV
PU                  VPL                  R,          4      pV P2                  P                  VVV34       KÌ  	  EKN  	  \V        ;QJ d    R	 V 4       F  '       g   K   R
M	  RM! R	 V 4       4      '       * pV'       dH   \8        PX                  P[                  4       '       d$   \8        PX                  P]                  4       V n/        \8        P`                  ! 4       \8        Pb                  ! 4       \8        Pd                  Pf                  Ph                  3V n5        \l        Pn                  Pp                  ^8  dG   \l        Pn                  Pr                  '       g'   V Pu                  W4      '       d   \w        4       V n<        \l        Pz                  ! 4       V n>        \l        P~                  P€                  V n@        \8        P‚                  ! 4       V nB        \8        P†                  Pˆ                  PŠ                  PŒ                  \8        P†                  Pˆ                  PŠ                  PŽ                  \8        P†                  Pˆ                  PŠ                  P�                  3V nI        ^ RIJHKp V! 4       V nL        VeË   VPš                  P�                  R4      pVe¬   \l        Pž                  P                   pVP¢                  VP¤                  8X  d2   VP¢                  e$   VP¢                  V8w  d   VP¢                  V nS        MEVP¢                  e   VP¢                  V8w  g    VP¤                  e   VP¤                  V8w  d   VV nT        \«        4       V nV        \®        P±                  4       V nY        \l        P´                  ! RR
R7      V n[        \¸        P´                  ! RR
R7      V n]        \½        4       R8w  d%   V P¿                  \l        PÀ                  4      V n`        V P¿                  \l        PÂ                  4      V na        \8        PÄ                  Pl                  PÆ                  V nd        V P¿                  \l        PÊ                  4      V ne        V P¿                  \l        PÌ                  4      V nf        V P¿                  \l        PÎ                  4      V ng        V PÑ                  \l        PÒ                  4      V ni        V PÑ                  \l        PÔ                  4      V nj        V PÑ                  \l        PÖ                  4      V nk        \Ù        4        \Û        \Ý        V P¾                  \Þ        Pà                  ! 4       4      4      V no        \â        P                  ! 4        UUu/ uF   w  ppVf   K  VVPµ                  RR
R7      bK"  	  uppV nq        V På                  \l        Pæ                  4      V nt        / V nu        \ì        Pï                  4       pVea   VPê                  '       dM   \        VPê                  P                  4       R R7       UUu/ uF  w  pp\Q        V4      VbK  	  uppV nu        R # R # R # u uppi u uppi )N)Úkernel_side_tableÚ triton_kernel_wrapper_functionalÚtriton_kernel_wrapper_mutation)Ú9user_defined_triton_kernel_transitive_closure_source_coder‘  r’  )Ú	AutotunerÚ
kernel_idxc              3  ó~   "  € T F3  p\        R  VP                  4       P                  4        4       4      x € K5  	  R# 5i)c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5irÃ   ©rˆ   )rÅ   Úkvs   & r„   rÇ   Ú8FxGraphHashDetails.__init__.<locals>.<genexpr>.<genexpr>  s   é € Ð*TÑ=S°r¬3¨r¯7¨7Ó=SùrE  N)rÔ   Ú
all_kwargsr‚  )rÅ   rƒ  s   & r„   rÇ   Ú.FxGraphHashDetails.__init__.<locals>.<genexpr>  s4   é € ð '"á-;¨ô %+Ñ*T¸Q¿\¹\»^×=QÑ=QÔ=SÓ*T×$TÐ$TÛ-;ùs   ‚;=Úconstant_args_idxc              3  óV   "  € T F  p\        V\        P                  4      x € K!  	  R # 5irÃ   )rã  rØ   r"   rÄ   s   & r„   rÇ   rò  $  s   é € Ð"WÉÀ1¤:¨a´·±×#>Ð#>Ëùs   ‚')TF)Ú_coor_enabledÚcudagraph_annotation)Úignore_private_configsÚreadonly_valuesr1  c                ó&   € \        V ^ ,          4      # ©r   rî  rù  s   &r„   r  Ú-FxGraphHashDetails.__init__.<locals>.<lambda>®  s   € Ì#ÈaÐPQÍdÌ)rƒ   rÒ   r{   )xr"  rY   r  rc  r„  r¨  rÛ   rø  ÚcconfigÚcache_key_tagrŸ  Únested_inductor_config_patchesrú  rÔ   r‚  ÚEXCLUDED_KWARGSrb  ri   ró  Ú*torch._higher_order_ops.triton_kernel_wrapræ  rç  rè  Útorch._inductor.codegen.wrapperré  Úuser_defined_triton_sourcer  rã  rØ   r8  r  r5  r6  r\  r•  Útriton.runtime.autotunerrê  Ú
get_kernelrÒ  Úconfigsrˆ   r|  Úget_constant_argsrG  ÚacceleratorÚis_availableÚcurrent_device_indexÚdefault_cuda_device_indexÚ$are_deterministic_algorithms_enabledÚ-is_deterministic_algorithms_warn_only_enabledÚutilsÚdeterministicÚfill_uninitialized_memoryÚ!deterministic_algorithms_settingsr)   ÚcppÚthreadsÚdynamic_threadsrà  rV   Úcpp_runtime_thread_countÚ#effective_provenance_tracking_levelÚprovenance_tracking_levelÚtraceÚprovenance_tracking_to_timelineÚget_default_dtypeÚdefault_dtypeÚbackendsr‰   ÚmatmulÚfp32_precisionÚ&allow_fp16_reduced_precision_reductionÚ&allow_bf16_reduced_precision_reductionÚcuda_matmul_settingsÚ"torch.fx.experimental.proxy_tensorrõ  Úcompile_on_one_rankr  rs  r‡   Ú
cudagraphsÚfwdÚbwdÚcudagraph_overriderö  rî  Útorch_versionr  r+  Úsystem_infoÚsave_config_portableÚinductor_configr*   Úinductor_config_commsr2  Ú_get_custom_pass_detailr3  r7  Ú
_functorchÚbundled_autograd_cacheÚprecompile_enabledr8  r9  r:  Ú_get_custom_pass_detail_unsafer;  r<  r=  r/   rÓ   Úmapr.   rõ  r-   Ú!_get_custom_partitioner_fn_detailÚcustom_partitioner_fnÚ_custom_partitioner_fnÚvar_to_hint_overrideÚFxGraphCacheÚ_get_shape_env)r8  r"  rø  rú  rã  Úprocessed_inputsÚseen_opaquesrŸ  rµ  r¶  ræ  rç  rè  ré  rÒ  r  rê  Úkernelr  Úkernel_sourceÚconstant_argsÚno_tensor_inputsrõ  Ú
annotationrx  r�   Úcustom_configrý  Úsymr©  s   &&&&&                         r„   r9  ÚFxGraphHashDetails.__init__É  sõ  € ð Œð CEÐØ79ˆÛ!ˆCÜ&¤t¨C£y×1Ò1Ü�c“7 ,Ô.Ü,?ÄÀLÓ@QÓ,R�L¤ C£Ñ)Ø ×'Ñ'¨´R¸³WÕ(=Ö>à ×'Ñ'¨Ö,ñ "ð /ÔÜ$×2Ñ2ˆÔð Š~ô DÀBÔGàð 	Ô+ð -/ˆŒÜ˜9Ÿ?™?Ó,Ö-‰DˆAØ×,Ñ,Ö,Ü˜“7œs¤JÐ/Ô/ô )9¼À»Ó(C�D—N‘N 1Ó%à()—N‘N 1Ó%ñ .÷	
ñ 	
õ
	
ð 68ˆÔ'Ø‹>ØŸ*™*Ÿ,�Ü! &¬%¯(©(×*>Ñ*>×?Ò?ÙÜ%ŸOšOØ—L‘L×+Ñ+Ø*Ð3Sð ,ó ð —L‘L×+Ñ+Ø*Ð3Qð ,ó ö	�Dõ Cà.×9Ñ9¸$¿+¹+ÀlÕ:SÓT�FØ"�GÜ! &¨)×4Ò4Ø!Ÿ>Ÿ>˜>Ü&)Ü &ñ '"à-3¯^ª^ó'"ó !"ó'˜Gð "(§¡˜ñ RØ"óð "ð
 %6×$GÑ$GØŸ™Ð$7Õ8ó%�Mð ×3Ñ3×:Ñ:Ø&¨°wÐ?öô=ñ '÷J  #›sÑ"WÉÓ"WŸsŸsšsÑ"WÉÓ"WÓWÔWÐ÷ ¤× 1Ñ 1× >Ñ >× @Ò @Ü-2×->Ñ->×-SÑ-SÓ-UˆDÔ*ô ×6Ò6Ó8Ü×?Ò?ÓAÜ�K‰K×%Ñ%×?Ñ?ð2
ˆÔ.ô �J‰J×Ñ Ô"Ü—J‘J×.×.Ð.Ø×/Ñ/°×CÒCä,@Ó,BˆDÔ)ô *0×)SÒ)SÓ)UˆÔ&ä�L‰L×8Ñ8ð 	Ô,ô #×4Ò4Ó6ˆÔô �N‰N×Ñ×&Ñ&×5Ñ5Ü�N‰N×Ñ×&Ñ&×MÑMÜ�N‰N×Ñ×&Ñ&×MÑMð%
ˆÔ!õ 	Eá#0£?ˆÔ ð Š>ØŸ™Ÿ™Ð%;Ó<ˆJØÒ%Ü Ÿ-™-×2Ñ2�Ø—>‘> Z§^¡^Ô3¸
¿¹Ò8RØ!—~‘~¨Ô0Ø2<·.±.˜Ô/øØ —n‘nÒ0°Z·^±^ÀwÔ5NØ—N‘NÒ.°:·>±>ÀWÔ3Là0:�DÔ-ô '›[ˆÔÜ$×/Ñ/Ó1ˆÔÜ%×:Ò:Ø#(¸$ô 
ˆÔô &2×%FÒ%FØ#(¸$ô&
ˆÔ"ô
 (Ó)¨WÔ4Ø(,×(DÑ(DÜ×+Ñ+ó)ˆDÔ%ð *.×)EÑ)EÜ×,Ñ,ó*
ˆÔ&ô #(×"2Ñ"2×"9Ñ"9×"PÑ"PˆÔØ*.×*FÑ*FÜ×-Ñ-ó+
ˆÔ'ð &*×%AÑ%AÜ×(Ñ(ó&
ˆÔ"ð '+×&BÑ&BÜ×)Ñ)ó'
ˆÔ#ð (,×'JÑ'JÜ×*Ñ*ó(
ˆÔ$ð )-×(KÑ(KÜ×+Ñ+ó)
ˆÔ%ð /3×.QÑ.QÜ×1Ñ1ó/
ˆÔ+ô
 	"Ô#Ü%*Ü�×,Ñ,Ô.C×.JÒ.JÓ.LÓMó&
ˆÔ"ô *H×)MÒ)MÔ)Oô	/
ñ *PÑ%�˜Øô	ˆF�M×6Ñ6Ø',¸dð 7ó ò ñ *Pò	/
ˆÔ+ð '+×&LÑ&LÜ×(Ñ(ó'
ˆÔ#ð 57ˆÔ!Ü ×/Ñ/Ó1ˆ	ØÒ  Y×%C×%CÐ%Cô !'Ø×2Ñ2×8Ñ8Ó:Ñ@Sõ!ô)ñ!‘H�C˜ô �C“˜#’ñ!ò)ˆDÖ%ñ &DÑ ùó#/
ùó$)s   ß	b,ß&b,âb2c               ó    € V ^8„  d   QhRRRR/# )r»   rl  r   r½   ú
Any | Noner{   )r¾   s   "r„   r¿   r¥  ¼  s   € ÷ Oñ O¸#ð OÀ*ñ Orƒ   c                	ó  a € V'       g   R # \        V\        4      '       d"   V Uu. uF  pS P                  V4      NK  	  up# \        V\        4      '       d3   \        ;QJ d    . V 3R lV 4       F  NK  	  5# ! V 3R lV 4       4      # \        V\        4      '       d   V# \        V\
        4      '       d   VP                  4       # \        V4      '       d   R # \        R\	        \        V4      4       24      hu upi )Nc              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5irÃ   )r0  ©rÅ   rÆ   r8  s   & €r„   rÇ   ÚDFxGraphHashDetails._get_custom_pass_detail_unsafe.<locals>.<genexpr>Â  s   øé € ÐUÉÀA˜×<Ñ<¸Q×?Ð?Ëùr¬  zunknown config type: )
rã  r®  r0  rÓ   rˆ   rI   r4  r>  r%  r  )r8  rl  rÆ   s   f& r„   r0  Ú1FxGraphHashDetails._get_custom_pass_detail_unsafe¼  sÈ   ø€ ßÙÜ�k¤4×(Ò(ÙDOÓPÁK¸q�D×7Ñ7¸Ö:ÁKÑPÐPÜ�k¤5×)Ò)ß”5ÔUÉÓU—5ÐU�5ÔUÉÓUÓUÐUÜ�k¤3×'Ò'ØÐÜ�k¤>×2Ò2Ø×#Ñ#Ó%Ð%Ü�K× Ò ñ ÜÐ4´S¼¸kÓ9JÓ5KÐ4LÐMÓNÐNùò Qs   ¦C<c               ó    € V ^8„  d   QhRRRR/# )r»   rl  z|CustomGraphPassCallable | list[CustomGraphPassCallable] | tuple[CustomGraphPassCallable, ...] | CustomGraphModulePass | Noner½   rC  r{   )r¾   s   "r„   r¿   r¥  Í  s    € ÷ "ñ "ðð"ð 
ñ"rƒ   c                	óL  a € V'       g   R # \        V\        \        34      '       d3   \        ;QJ d    . V 3R lV 4       F  NK  	  5# ! V 3R lV 4       4      # \        V\        \        34      '       g!   \        R\        \        V4      4       24      hVP                  4       # )Nc              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5irÃ   )r,  rF  s   & €r„   rÇ   Ú=FxGraphHashDetails._get_custom_pass_detail.<locals>.<genexpr>Û  s   øé € ÐNÁ+¸Q˜×5Ñ5°a×8Ð8Ã+ùr¬  zunknown custom pass type: )	rã  r®  rÓ   rE   rD   r%  rˆ   r  r4  )r8  rl  s   f&r„   r,  Ú*FxGraphHashDetails._get_custom_pass_detailÍ  s~   ø€ ÷ áÜ�k¤D¬% =×1Ò1ß”5ÔNÁ+ÓN—5ÐN�5ÔNÁ+ÓNÓNÐNÜ˜+¬Ô9NÐ'O×PÒPÜ Ð#=¼cÄ$À{ÓBSÓ>TÐ=UÐ!VÓWÐWØ×ÑÓ!Ð!rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r3  rH   r½   rC  r{   )r¾   s   "r„   r¿   r¥  à  s   € ÷ 	,ñ 	,Ø%<ð	,à	ñ	,rƒ   c                	ó�   € V'       g   R # \        V\        4      '       g   \        R\        V4       24      hVP	                  4       # )Nz"Expected CustomPartitionerFn, got )rã  rG   r%  r  r4  )r8  r3  s   &&r„   r2  Ú4FxGraphHashDetails._get_custom_partitioner_fn_detailà  sH   € ÷ %ÙÜÐ/Ô1D×EÒEÜ Ø4´TÐ:OÓ5PÐ4QÐRóð ð %×)Ñ)Ó+Ð+rƒ   )!r4  r=  r<  r;  rý  r"  r  r   rö  r&  r-   r.   r
  r  r  rø  rú  r"  r*  r+  r:  r9  rþ  r8  r7  r3  r/  r  r  r(  r'  r  r5  N)r©  Úexample_value)!r}   r~   r   r€   rÌ  rÿ  rÊ  rØ   Ú
empty_likeÚ	full_likeÚ	ones_likeÚ	rand_likeÚrandint_likeÚ
randn_likeÚ
zeros_likerÐ  rÙ   rÚ   rÑ  Úclassmethodr©  r¶  rQ  r¼  rÃ  rË  rÛ  rà  r9  r0  r,  r2  r‚   r{   rƒ   r„   r   r   @  s…  † ñð "Ð#8Ð9€OØ3Ðà×ÑØ�‰Ø�‰Ø�‰Ø×ÑØ×ÑØ×ÑðÐð 	�	‰	�‰×!Ñ!Ø�	‰	�‰× Ñ Ø�	‰	�‰× Ñ Ø�	‰	�‰× Ñ Ø�	‰	�‰×#Ñ#Ø�	‰	�‰×!Ñ!Ø�	‰	�‰×!Ñ!ðÐð ô
ó ð
ð ô
ó ð
ð ôó ðð ô*ó ð*ð ô
ó ð
ð
 ô=ó ð=ðB ôó ðõ(gõfOõ""÷&	,ñ 	,rƒ   r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r»   r"  r#  rø  r÷  rú  r©   rã  rä  r½   ztuple[str, list[str]]r{   )r¾   s   "r„   r¿   r¿   ì  s:   € ÷ ñ Øðà'ðð  ðð #ð	ð
 ñrƒ   c                ó  € \        WW#4      p\        VP                  4      ^ 8g  p\        W4      pVP	                  V4      pVP                  V4      pRP                  V4      p	\        P                  RV RV	 24       Wx3# )z5
Generate a unique hash of the FX graph for caching.
Ú
z$FX graph cache hash details for key z:
)	r   r¨  r  r  rœ  r·  rÉ   r'  rZ  )
r"  rø  rú  rã  Údetailsr$  Úpicklerr�   r·  Ú	debug_strs
   &&&&      r„   Úcompiled_fx_graph_hashr`  ì  s‚   € ô ! °YÓP€GÜ&)¨'×*LÑ*LÓ&MÐQRÑ&RÐ#Ü! "ÓF€Gð �/‰/˜'Ó
"€CØ×%Ñ% gÓ.€KØ—	‘	˜+Ó&€IÜ‡I�IÐ4°S°E¸¸Y¸KÐHÔIØÐÐrƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   r˜   r—   r½   r{   )r¾   s   "r„   r¿   r¿     s   € ÷ !ñ !À#ð !È#ñ !rƒ   c                ó  € \         P                  P                  4       '       d%   \         P                  P                  4       '       g   ^ # \	        V R,          4      p\
        P                  ! 4       '       dV   \         P                  P                  R4      p\        P                  RVV4       V\	        W,          ^d,          4      ,          p\        P                  RV4       \        P                  P                  \        VR7      4       V# )zq
Ephemerally increases the NCCL timeout when compiling for a distributed job
Returns amount of seconds increased
g    eÍÍAz>pytorch/remote_cache:ephemeral_timeout_fudge_factor_percentagezNEphemeral NCCL timeout increase fudge factor %d and original increase value %dzIncreasing NCCL timeout by %d)Úseconds)rØ   Údistributedr  Úis_initializedr—   r)   rê  rM  Újustknobs_getval_intr'  ÚinfoÚdistÚdistributed_c10dÚ"_add_ephemeral_timeout_for_all_pgsr
   )r˜   Úincreased_timeout_secÚfudge_factors   &  r„   Ú.add_ephemeral_timeout_increase_for_distributedrm    sÏ   € ô
 ×Ñ×)Ñ)×+Ò+´5×3DÑ3D×3SÑ3S×3UÒ3UÙä °Õ 4Ó5Ðä×Ò×ÒÜ×,Ñ,×AÑAØLó
ˆô 	�‰Ø\ØØ!ô	
ð
 	¤Ð%:Õ%IÈCÕ%OÓ!PÕPÐä‡H�HÐ,Ð.CÔDÜ×Ñ×<Ñ<ÜÐ/Ô0ôð !Ð rƒ   c                  óž   € ] tR tRtRt]R R l4       t]R R l4       t]R R l4       t]R	 R
 l4       t	]R R l4       t
]R R l4       tRtR# )ÚGuardedCachei  zB
Mixin for caches that have guards associated with their entries.
c               ó$   € V ^8„  d   QhRRRRRR/# )r»   rˆ  útype[GuardedCache[T]]Ú_keyrˆ   r½   r{   )r¾   s   "r„   r¿   ÚGuardedCache.__annotate__$  s'   € ÷ Tñ TÐ"7ð T¸sð TÀsñ Trƒ   c                	ó   € \        R 4      h)z.Implement _get_tmp_dir_for_key on parent class©ÚNotImplementedError)rˆ  rr  s   &&r„   Ú_get_tmp_dir_for_keyÚ!GuardedCache._get_tmp_dir_for_key#  s   € ä!Ð"RÓSÐSrƒ   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	RR
R/# )r»   rˆ  rq  r�   rˆ   Ú	local_hitr¢   Ú
local_missÚ
remote_hitÚremote_missr½   r4  r{   )r¾   s   "r„   r¿   rs  (  sW   € ÷ Nñ NØ"ðNàðNð ðNð ð	Nð
 ðNð ðNð 
ñNrƒ   c                	ó   € \        R 4      h)z(Implement _record_result on parent classru  ©rˆ  r�   rz  r{  r|  r}  s   &&&&&&r„   Ú_record_resultÚGuardedCache._record_result'  s   € ô "Ð"LÓMÐMrƒ   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r»   rˆ  rq  Úlocalr¢   Úremote_cacheúRemoteCache[JsonDataTy] | Noner�   rˆ   r½   z,Generator[tuple[T, bytes, bool], None, None]r{   )r¾   s   "r„   r¿   rs  3  s:   € ÷ 'ñ 'Ø"ð'àð'ð 5ð'ð ð	'ð
 
6ñ'rƒ   c              #  	ó2  "  € V'       dÜ   V P                  V4      p\        P                  P                  V4      '       d¦   \	        \        P
                  ! V4      4       F‚  pVP                  R 4      '       d   K   \        \        P                  P                  WE4      R4      ;_uu_ 4       pVP                  4       p\        P                  ! V4      VR3x € RRR4       K„  	  V'       dµ    VP                  V4      ;pe�   \!        V\"        4      '       g   \%        R\'        V4       24      hVR,          p	\!        V	\(        \*        34      '       g   \%        R\'        V	4       24      h\,        P.                  ! V	4      p\        P                  ! V4      VR	3x € R# R# R#   + '       g   i     EKV  ; i  \         d    \        P                  RRR7        EK  i ; i  \         d'    \        P                  R
T P0                  RR7        R# i ; i5i)rÁ   rÅ  TNz,fx graph cache unable to load compiled graphr%  z%Expected dict from remote cache, got r�  z*Expected str or bytes for cache data, got Fz %s unable to load compiled graph)rw  rù   rú   rû   rÔ   ÚlistdirÚ
startswithr?  rÉ   rÌ  rJ  Úloadsr  r'  r(  rs  rã  r°  r%  r  rˆ   r‘  Úbase64Ú	b64decoder}   )
rˆ  rƒ  r„  r�   r¤  rú   rð  r§  Ú
cache_datar�  s
   &&&&      r„   Úiterate_over_candidatesÚ$GuardedCache.iterate_over_candidates2  s»  é € ÷ Ø×-Ñ-¨cÓ2ˆFÜ�w‰w�~‰~˜f×%Ò%Ü"¤2§:¢:¨fÓ#5Ö6�DØ—‘ s×+Ò+Ù ðÜ!¤"§'¡'§,¡,¨vÓ"<¸d×CÔCÀqØ&'§f¡f£h˜GÜ"(§,¢,¨wÓ"7¸À$Ð"FÒF÷ DÑCñ	 7÷ ðØ".×"2Ñ"2°3Ó"7Ð7�JÒDÜ% j´$×7Ò7Ü,ØCÄDÈÓDTÐCUÐVóð ð & fÕ-�DÜ% d¬S´%¨L×9Ò9Ü,ØHÌÈdËÈÐUóð ô %×.Ò.¨tÓ4�GÜ Ÿ,š, wÓ/°¸%Ð?Ô?ñ Eñ ÷ D×CÑCûô %ô ÜŸ™ØJØ%)ð $÷ ð ðûô( ô Ü—‘Ø6¸¿¹Ètð ÷ ðüsx   ‚>HÁ;HÁ=1F9Â.,F$ÃF9Ã"HÃ/B/G# ÆHÆ$F6Æ/F9Æ3HÆ6F9Æ9"G ÇHÇG Ç HÇ#-HÈHÈHÈHc               ó4   € V ^8„  d   QhRRRRRRRRR	R
RRRR/# )r»   rˆ  rq  r�   rˆ   rƒ  r¢   r„  r…  Úevaluate_guardsz5Callable[[str, list[int] | list[torch.SymInt]], bool]Úhintsz	list[int]r½   z(tuple[T | None, bytes | None, CacheInfo]r{   )r¾   s   "r„   r¿   rs  ]  sX   € ÷ O,ñ O,Ø"ðO,àðO,ð ðO,ð 5ð	O,ð
 OðO,ð ðO,ð 
2ñO,rƒ   c                ó@  € RpRpRpRp	Rp
V P                  W#V4       F�  w  r¼p
\        VR4      '       g   \        R\        V4       R24      hVP                  '       g	   TpTpRp MJ\        V! VP                  V4      4      pV'       d   TpTpRpVP                  p	 MRpVP                  p	K’  	  R	V/pV	e   WžR
&   VRJ;'       d    T
pVRJ;'       d    V
'       * pVRJ ;'       g    T;'       d    TpVRJ ;'       d    VRJpV P                  VVVVVR7       WgV3# )a  
Find the first cache entry in iterate_over_candidates that passes `evaluate_guards`.

Args:
    key: The cache key to look up
    local: Whether to check the local cache
    remote_cache: The remote cache to check, if any
    evaluate_guards: Function that evaluates whether a guard passes the check,
        given a list of hint values and the guard expression.
    hints: List of symint hints paired with evaluate_guards

Returns:
    A tuple of (graph, pickled_content) if found, or (None, None) if not found
NÚ	full_missFÚguards_exprzCache candidate z  missing 'guards_expr' attributert  Ú
guard_missr”   r•   )rz  r{  r|  r}  )r�  r  r%  r  r”  r¢   r€  )rˆ  r�   rƒ  r„  r�  r‘  r\  Úpickled_contentÚresult_statusÚsample_guards_exprÚin_localÚ	candidater§  rt  rg  rz  r|  r{  r}  s   &&&&&&             r„   Úfind_guarded_entryÚGuardedCache.find_guarded_entry\  s{  € ð. ˆØˆØ#ˆØ!ÐØˆð
 -0×,GÑ,GØ ö-
Ñ(ˆI ô ˜9 m×4Ò4Ü$Ø&¤t¨I£Ð&7Ð7WÐXóð ð ×(×(Ð(à!�Ø")�Ø %�Ùô ‘ y×'<Ñ'<¸eÓDÓEˆCßØ!�Ø")�Ø %�Ø%.×%:Ñ%:Ð"Ùð !-�Ø%.×%:Ñ%:Ò"ñ9-
ð< 3°MÐBˆØÒ)Ø.@Ð*Ñ+ð  Ð%×2Ð2¨(ˆ	Ø $Ð&×7Ð7¨x¬<ˆ
Ø˜t�m×1Ð1 z×<Ð<°uˆ
Ø˜t�m×@Ð@¨¸DÐ(@ˆØ×ÑØØØ!Ø!Ø#ð 	ô 	
ð  tÐ+Ð+rƒ   c               ó$   € V ^8„  d   QhRRRRRR/# )r»   rˆ  rq  ri  r÷  r½   zlist[torch.SymInt]r{   )r¾   s   "r„   r¿   rs  ¯  s$   € ÷ 	
ñ 	
Ø"ð	
Ø,?ð	
à	ñ	
rƒ   c                óš   € V Uu. uF:  p\        V\        P                  4      '       g   K%  \        V4      '       g   K8  VNK<  	  up# u upi )zw
Get the backed SymInt objects from the input list. Note that we can never
have guards that depend on unbacked symint.
)rã  rØ   r!   rf   )rˆ  ri  rh  s   && r„   Ú_filter_backed_symintsÚ#GuardedCache._filter_backed_symints®  s?   € ñ ó
Ù�!¤¨A¬u¯|©|×!<ŒAÔARÐST×AU�AˆA‘vñ
ð 	
ùò 
s   …"A¬A¿Ac               ó    € V ^8„  d   QhRRRR/# )r»   rˆ  rq  r½   rü  r{   )r¾   s   "r„   r¿   rs  »  s   € ÷ 'ñ 'Ð1ð '°oñ 'rƒ   c                ó¶   € \         P                  P                  P                  4       pV'       d   VP                  '       g   R# VP                  P
                  # )z7
Helper to get the shape env from the tracing context.
N)rØ   Ú_guardsÚTracingContextÚtry_getÚ	fake_moderý  )rˆ  Úctxs   & r„   r7  ÚGuardedCache._get_shape_envº  s:   € ô
 �m‰m×*Ñ*×2Ñ2Ó4ˆß˜#Ÿ-Ÿ-˜-ÙØ�}‰}×&Ñ&Ð&rƒ   r{   N)r}   r~   r   r€   rÌ  rY  rw  r€  r�  r›  rŸ  r7  r‚   r{   rƒ   r„   ro  ro    s‡   † ñð ôTó ðTð ôNó ðNð ô'ó ð'ðR ôO,ó ðO,ðb ô	
ó ð	
ð ô'ó ô'rƒ   ro  c                  óL   € ] tR tRt]R R l4       t]]R R l4       4       tRtR# )ÚInductorCacheArtifactiÅ  c               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   Ú"InductorCacheArtifact.__annotate__È  s   € ÷ Cñ C ñ Crƒ   c                	óZ   € \         P                  V P                  V P                  4       R # rÃ   )r6  Ú_write_to_local_cacher�   r§  r7  s   &r„   Úpopulate_cacheÚ$InductorCacheArtifact.populate_cacheÇ  s   € ä×*Ñ*¨4¯8©8°T·\±\ÖBrƒ   c               ó   € V ^8„  d   QhRR/# rà   r{   )r¾   s   "r„   r¿   r¬  Í  s   € ÷ ñ �#ñ rƒ   c                 	ó   € R # )Úinductorr{   r{   rƒ   r„   r  ÚInductorCacheArtifact.typeË  s   € ñ rƒ   r{   N)	r}   r~   r   r€   r   r¯  rQ  r  r‚   r{   rƒ   r„   rª  rª  Å  s2   † àôCó ðCð Øôó ó ôrƒ   rª  c                  óD  € ] tR tRtRt]R R l4       t]R R l4       t]R R l4       t	]R	 R
 l4       t
]RR R ll4       t]R R l4       t]R R l4       t]R R l4       t]R R R ll4       t]R R l4       t]R R l4       t]RR R ll4       t]R R l4       tRtR# )!r6  iÑ  aÖ  
Supports caching and reusing compiled Fx graphs.

The overall strategy is as follows:
- This cache stores entries on disk. When saving an entry, we can't
  serialize callables (that could be C++, Triton, etc.), so we serialize
  their own disk cache location. We then recreate the compiled artifact
  after fetching from disk.
- For indexing the cache, we gather the fields relevant to identifying an
  FxGraph (the graph module, graph inputs, system settings etc.) into an
  FxGraphCacheDetails object, pickle it, and compute a hash for the key.
  See FxGraphCachePickler.
- Among the metadata we store, we also include a guards expression that's
  appropriate for validating any symbols for Tensor arguments that have
  symbolic bounds. On cache lookup then, we evaluate those guards in the
  current context to validate that a cached entry can be served.
- A given graph could have multiple compiled versions, corresponding to
  different sets of guards. Therefore, we store cache entries in the form:
      <temp dir>/<fx graph hash>/<serialized metadata>
- On lookup, we compute the key from the graph details, iterate over all
  leaf files in the corresponding subdirectory, deserialize the entry, and
  evaluate its guards expression. If the evaluation succeeds, we have a
  cache hit. If it fails, we compile the graph and store a new entry.
- Finally, on a cache hit, we need to make sure any guards that would
  have been created during compilation are added to the current context.
c               ó   € V ^8„  d   QhRR/# rà   r{   )r¾   s   "r„   r¿   ÚFxGraphCache.__annotate__ð  s   € ÷ 4ñ 4˜#ñ 4rƒ   c                 óR   € \         P                  P                  \        4       R4      # )zC
Get the toplevel temporary directory for storing compiled graphs.
Úfxgraph)rù   rú   rÉ   rO   r{   rƒ   r„   Ú_get_tmp_dirÚFxGraphCache._get_tmp_dirï  s   € ô
 �w‰w�|‰|œI›K¨Ó3Ð3rƒ   c               ó$   € V ^8„  d   QhRRRRRR/# )r»   rˆ  útype[FxGraphCache]r�   rˆ   r½   r{   )r¾   s   "r„   r¿   r·  ÷  s'   € ÷ Hñ HÐ"4ð H¸3ð HÀ3ñ Hrƒ   c                óv   € \         P                  P                  \        P	                  4       VR,          V4      # )z1
Return the disk location for a given cache key.
r   )rù   rú   rÉ   r6  rº  ©rˆ  r�   s   &&r„   rw  Ú!FxGraphCache._get_tmp_dir_for_keyö  s(   € ô
 �w‰w�|‰|œL×5Ñ5Ó7¸¸S½À3ÓGÐGrƒ   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	RR
R/# )r»   rˆ  r½  r�   rˆ   rz  r¢   r{  r|  r}  r½   r4  r{   )r¾   s   "r„   r¿   r·  þ  sN   € ÷ *ñ *Øð*àð*ð ð*ð ð	*ð
 ð*ð ð*ð 
ñ*rƒ   c                ób  € V'       d<   \         P                  ! R4       \        P                  ! \        P                  R4       V'       dL   \        P                  ! \        P                  R4       \        P                  ! \        P
                  RV4       V'       d<   \         P                  ! R4       \        P                  ! \        P                  R4       V'       dN   \        P                  ! \        P                  R4       \        P                  ! \        P
                  RV4       R# R# )	z7
Called by GuardedCache to record hit/miss statistics.
ÚLocalFxGraphCacheÚ!inductor_fx_local_cache_hit_countÚ"inductor_fx_remote_cache_hit_countÚ!inductor_fx_remote_cache_hit_keysÚ"inductor_fx_local_cache_miss_countÚ#inductor_fx_remote_cache_miss_countÚ"inductor_fx_remote_cache_miss_keysN)rp   rt  r%   Útry_Úincrement_toplevelÚadd_to_set_toplevelÚmissr  s   &&&&&&r„   r€  ÚFxGraphCache._record_resultý  sÝ   € ÷ Ü�OŠOÐ/Ô0Ü×#Ò#Ü"×5Ñ5Ø3ô÷ Ü×#Ò#Ü"×5Ñ5Ø4ôô ×#Ò#Ü"×6Ñ6Ø3Øô÷
 Ü×ÒÐ0Ô1Ü×#Ò#Ü"×5Ñ5Ø4ô÷ Ü×#Ò#Ü"×5Ñ5Ø5ôô ×#Ò#Ü"×6Ñ6Ø4Øöñ rƒ   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r»   r\  ro   Ú
cache_infor’   Ú	constantsr®   r½   ú(tuple[CompiledFxGraph | None, CacheInfo]r{   )r¾   s   "r„   r¿   r·  +  s6   € ÷ d!ñ d!Øðd!àðd!ð ,ðd!ð 
2ñ	d!rƒ   c                ó*  a aa	€ S P                   ;p'       d®   \        P                  ! V4      pT;pe’   \        V4      VR&   \        P
                  ! RVP                  R7       \        P
                  ! RVP                  R7       \        VP                  4      ^ 8”  d&   \        P                  ! \        P                  R4        S P                  V4      o^RIHp VP                  e   VP                  ! S P                  4       \         P"                  ! 4       pS P                  o	\$        P&                  ! TS	R7       S P)                  4        \*        P,                  P/                  S P0                  4       \2        R	;;,          S P4                  ,          uu&   \6        P9                  R
S	4       \6        P9                  RS4       \;        RR T 3R lR7       \;        RT 3R lR7       \;        RT3R lT	3R lR7       \;        RR T 3R lR7       \;        RR T 3R lR7       \=        4       P?                  4       '       d7   S P@                  '       d%   \=        4       PC                  RS P@                  4       S T3#   \         d    RT3u # i ; i)a8  
Cache specific post compile steps that need to run if we find a graph in the cache
This includes putting bundled triton artifacts in the right place,
reloading the PyCodeCache artifact, etc.

These don't always happen (i.e. on a cache miss, so they are in a separate function from
CompiledFxGraph.post_compile)
Nr–   Úinductor_compile)Úcached_kernel_nameszAOTAutogradCache.inductor_loadÚnum_triton_bundlesr«   ©r•  r³  zOutput code: 
%szOutput code written to: %sÚartifactc                 ó   € R RRR/# )rz   Úfx_graph_runnabler°  Ústringr{   r{   rƒ   r„   r  Ú5FxGraphCache.cache_hit_post_compile.<locals>.<lambda>f  s   € ØÐ+Ø˜Hñ!rƒ   c                 ó   <€ S P                   # rÃ   )Úrunnable_graph_str©r\  s   €r„   r  rÜ  j  s   ø€ ˜u×7Ò7rƒ   )Úmetadata_fnÚ
payload_fnÚinductor_post_grad_graphc                 ó   <€ S P                   # rÃ   )Úinductor_post_grad_graph_strrß  s   €r„   r  rÜ  n  s   ø€ ˜u×AÒArƒ   ©rá  Úinductor_output_codec                 óJ   <€ R S R\         P                  P                  S 4      /# )ÚfilenameÚ	file_path)rù   rú   Úabspath)Úartifact_paths   €r„   r  rÜ  r  s   ø€ Ø˜MØœRŸW™WŸ_™_¨]Ó;ñrƒ   c                 ó   <€ S # rÃ   r{   r×  s   €r„   r  rÜ  v  s   ø€ ™trƒ   c                 ó   € R RRR/# )rz   Ú*inductor_provenance_tracking_node_mappingsr°  r@  r{   r{   rƒ   r„   r  rÜ  z  s   € ØÐDØ˜Fñ!rƒ   c                 ó   <€ S P                   # rÃ   )Úinductor_provenance_mapping_strrß  s   €r„   r  rÜ  ~  s   ø€ ˜u×DÒDrƒ   c                 ó   € R RRR/# )rz   Ú0inductor_provenance_tracking_kernel_stack_tracesr°  r@  r{   r{   rƒ   r„   r  rÜ  ‚  s   € ØÐJØ˜Fñ!rƒ   c                 ó   <€ S P                   # rÃ   )Ú$inductor_provenance_stack_traces_strrß  s   €r„   r  rÜ  †  s   ø€ ˜u×IÒIrƒ   Úinductor_provenance)"Ú_triton_bundlert   Úread_and_emitrˆ   r%   r~  rÕ  r¨  rÊ  rË  Úafter_deserializationr\  r¬   Úsave_output_codeÚsource_coderÆ  rr   Úinductor_meta_from_configrs   Úbegin_compileÚ'_set_compile_context_for_autotune_cacher,   ÚCachedMetricsHelperÚapply_deltasÚmetrics_deltasr&   Úcounter_deltasÚoutput_code_logrZ  rZ   r(   Úin_progressrô  Ú
add_to_set)
r\  rÐ  rÑ  Úbundler–   r  r¬   Úinductor_metarë  r•  s
   f&&     @@r„   Úcache_hit_post_compileÚ#FxGraphCache.cache_hit_post_compile*  s>  ú€ ð ×)Ñ)Ð)ˆ6Ö)Ü"/×"=Ò"=¸fÓ"EÐØ+Ð+�Ò8Ü47¸³I�
Ð0Ñ1Ü"×6Ò6Ø&¸D×<TÑ<Tõô #×6Ò6Ø4Ø(,×(@Ñ(@õô �t×/Ñ/Ó0°1Ô4Ü&×+Ò+Ü*×=Ñ=Ð?Sôð	$Ø!×7Ñ7¸	ÓBˆMå,ð ×-Ñ-Ò9Ø×.Ò.¨u×/@Ñ/@ÔAô '×@Ò@ÓBˆØ× Ñ ˆÜ×*Ò*¨=¸tÕDØ×5Ñ5Ô7ô
 	×#Ñ#×0Ñ0°×1EÑ1EÔFÜ�× × 4Ñ 4Õ4Óä×ÑÐ1°4Ô8Ü×ÑÐ:¸MÔJäØñô 8õ	
ô 	Ø&ÜAõ	
ô 	Ø"ôô $õ	
ô 	Øñô Eõ	
ô 	Øñô Jõ	
ô  Ó!×-Ñ-×/Ò/Ø×:×:Ð:äÓ!×,Ñ,Ø% u×'QÑ'Qôð �jÐ Ð øô} ô 	$ð ˜Ð#Ò#ð	$ús   ÃAJ  Ê JÊJNc               ó4   € V ^8„  d   QhRRRRRRRRR	R
RRRR/# )r»   r�   rˆ   rø  r÷  rƒ  r¢   r„  r…  rÑ  r®   r�  ú<Callable[[str, list[int] | list[torch.SymInt]], bool] | Noner½   rÒ  r{   )r¾   s   "r„   r¿   r·  ’  s`   € ÷ DQñ DQØðDQà+ðDQð ðDQð 5ð	DQð
 ,ðDQððDQð 
2ñDQrƒ   c                óÎ  € \         P                  4       pVf   \        R4      h\         P                  V4      pV Uu. uF  p\	        V4      NK  	  p	p\
        P                  '       d   R pVf   VP                  p/ p
\         P                  WW5V	4      w  r¼pV
P                  V4       Vf   RV
3# VP                  el    \        P                  P                  P                  4       p\        P                  P                  P                  V4      pWûP                  8w  d
   RV
R&   RV
3# \#        \$        P'                  4       V 4      P)                  V4       VP*                  '       dQ   \-        V! VP*                  V4      4      pVRJd   \        RV 24      h\.        P1                  RWP2                  4       \         P5                  WºV4      # u upi   \          d    Rp LÒi ; i)	a¶  
Lookup a compiled graph in the cache by key. On a hit, return the
deserialized CompiledFxGraph object. On a miss, return None.
`constants` tracks a list of constants, or a way to obtain the list of constants
associated with a given cache entry
`evaluate_guards` allows AOTAutogradCache and other callers to customize
what constitutes a guard success. Normally, a guard hit happens if
`shape_env.evaluate_guards_expression` returns True.
Nz(ShapeEnv is not set for guard evaluationc                ó   € R # )Tr{   )rÆ   Úys   &&r„   r  Ú,FxGraphCache._lookup_graph.<locals>.<lambda>¯  s   € ©4rƒ   r•  r”   Tzexpected check to be True, got z*fx graph cache key %s post-load guards: %s)r6  r7  r%  rŸ  re   r)   Ú&unsafe_skip_cache_dynamic_shape_guardsÚevaluate_guards_expressionr›  r/  Úextern_libs_keyrØ   r  Ú_tritonÚtriton_backendÚ_extern_libs_keyr  ra   rª  r  Úrecord_if_presentr”  r¢   r'  rZ  Úguardsr  )r�   rø  rƒ  r„  rÑ  r�  rý  Úsymintsrh  r‘  rÐ  r\  r–  Ú
guard_infoÚbackendÚcurrentÚchecks   &&&&&&           r„   Ú_lookup_graphÚFxGraphCache._lookup_graph‘  sÊ  € ô& !×/Ñ/Ó1ˆ	ØÒÜ Ð!KÓLÐLä×5Ñ5°nÓEˆÙ4;Ó<±G¨qÔ'¨Ö*±GˆÐ<ô ×8×8Ð8ñ 0ˆOàÒ"Ø'×BÑBˆOà "ˆ
ô .:×-LÑ-LØ˜°uó.
Ñ*ˆ 
ð 	×Ñ˜*Ô%ØŠ=Ø˜Ð#Ð#ð × Ñ Ò,ðÜŸ+™+×-Ñ-×<Ñ<Ó>�ÜŸ+™+×-Ñ-×>Ñ>¸wÓG�ð ×/Ñ/Ô/Ø6B�
Ð2Ñ3Ø˜ZÐ'Ð'äÔ3×8Ñ8Ó:¸CÓ@×RÑRØô	
ð
 ××ÐÜ™¨×):Ñ):¸GÓDÓEˆEØ˜DÓ Ü$Ð'FÀuÀgÐ%NÓOÐOÜ�I‰IØ<¸c×CSÑCSôô ×2Ñ2°5ÀiÓPÐPùò[ =øô4 ô Ø’ðús   ½GÃ AG ÇG$Ç#G$c               ó$   € V ^8„  d   QhRRRRRR/# )r»   r�   rˆ   r§  r‘  r½   r4  r{   )r¾   s   "r„   r¿   r·  Ù  s!   € ÷ 	4ñ 	4 3ð 	4°ð 	4¸4ñ 	4rƒ   c                	ó  € \         P                  V 4      p\        P                  P	                  V4      '       g   \        P
                  ! VR R7       \        P                  P                  V\        V4      4      p\        W1R R7       R# )TrŠ  rK  N)	r6  rw  rù   rú   rû   rŒ  rÉ   r“  rM  )r�   r§  r¤  rú   s   &&  r„   r®  Ú"FxGraphCache._write_to_local_cacheØ  sX   € ä×2Ñ2°3Ó7ˆÜ�w‰w�~‰~˜f×%Ò%Ü�KŠK˜¨Õ.ô
 �w‰w�|‰|˜F¤K°Ó$8Ó9ˆÜ�T¨d×3rƒ   c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r»   r�   rˆ   Úcompiled_graphr¯   rø  r÷  rƒ  r¢   r„  r…  r½   r4  r{   )r¾   s   "r„   r¿   r·  å  sL   € ÷ >Cñ >CØð>Cà"ð>Cð ,ð>Cð ð	>Cð
 5ð>Cð 
ñ>Crƒ   c                ó  € ^RI Hp \        W4      '       g   \        R\	        V4       R24      h\
        P                  4       pVf   \        R4      h\
        P                  V4      pVP                  V4      pVP                  WxR7      Vn
         \        P                  P                  P                  4       p	\        P                  P                  P                  V	4      Vn        \%        V4      p
V
P'                  4         \(        P*                  ! V
4      p \3        \4        P	                  4       T 4      P7                  T4       T'       d,   \
        P9                  Y4       \:        P<                  ! R4       T'       dc   \?        T
P@                  ;'       g    ^ R,          4      pR\B        PD                  ! T4      PG                  R4      RT/pTP=                  Y4       R# R#   \"         d     ELi ; i  \"         d<    \,        P/                  RRR	7       \0        R
,          R;;,          ^,          uu&    R# i ; i  \"         d<    \,        P/                  RRR	7       \0        R
,          R;;,          ^,          uu&    R# i ; i)z-
Store a serialized CompiledFxGraph on disk.
rn   zserialization for z NYINz+ShapeEnv is not set for cache serialization)Úplaceholdersr  z1fx graph cache unable to serialize compiled graphTr%  r³  Úfxgraph_cache_pickle_errorrÃ  g    €„.Ar�  ré  Útime_taken_msz!fx graph unable to write to cacheÚfxgraph_cache_write_error)$Ú
compile_fxro   rã  r%  r  r6  r7  rŸ  Úget_pruned_guardsÚproduce_guards_expressionr”  rØ   r  r  r  r  r  r  r   Úprepare_for_serializationrJ  rN  r'  r(  r&   ra   rª  Úrecordr®  rp   Úputr—   Ú_time_taken_nsrŠ  Ú	b64encoder§  )r�   r"  rø  rƒ  r„  ro   rý  r  r  r  Údisk_compiled_graphr§  r&  rŒ  s   &&&&&         r„   Ú_save_graphÚFxGraphCache._save_graphä  s$  € õ 	0ä˜.×:Ò:Ü Ð#5´d¸>Ó6JÐ5KÈ4Ð!PÓQÐQô !×/Ñ/Ó1ˆ	ØÒÜ Ð!NÓOÐOÜ×5Ñ5°nÓEˆØ×,Ñ,¨WÓ5ˆØ%.×%HÑ%HØ ð &Ió &
ˆÔ"ð	Ü—k‘k×)Ñ)×8Ñ8Ó:ˆGÜ-2¯[©[×-@Ñ-@×-QÑ-QØó.ˆNÔ*ô
 # >Ó2ÐØ×5Ñ5Ô7ð	Ü—l’lÐ#6Ó7ˆGð	CÜ!Ô"7×"<Ñ"<Ó">ÀÓD×KÑKÈGÔTßÜ×2Ñ2°3Ô@Ü—’Ð 3Ô4çÜ #Ð%8×%GÑ%G×%LÐ%LÈ1ÐQTÕ$TÓ U�àœF×,Ò,¨WÓ5×<Ñ<¸WÓEØ# ]ð*�
ð × Ñ  Ö1ñ øô) ô 	Úð	ûô ô 	Ü�K‰KØCÈdð ô ô �ZÕ Ð!=×>À!ÕCÓ>Úð	ûô( ô 	CÜ�K‰KÐ;ÀdˆKÔKÜ�ZÕ Ð!<×=ÀÕBÖ=ð	CúsG   ÂAG& ÄG8 ÄA'I ÆI ÆAI Ç&G5Ç4G5Ç8AH>È=H>ÉAJÊJc               ó    € V ^8„  d   QhRRRR/# )r»   r"  r#  r½   r4  r{   )r¾   s   "r„   r¿   r·  &	  s   € ÷ 
ñ 
Ð/ð 
°Dñ 
rƒ   c                	ó@   € \        V R R7      P                  R R7       R# )F)rû  r  N)r^  r	  rž  s   &r„   Ú_check_for_hopÚFxGraphCache._check_for_hop%	  s    € ä˜b°EÔ:×IÑIØ#ð 	Jö 	
rƒ   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r»   r"  r#  rø  r÷  rú  rù  rû  r¢   r½   r4  r{   )r¾   s   "r„   r¿   r·  ,	  s:   € ÷ ñ Ø ðà+ðð +ðð  ð	ð
 
ñrƒ   c                ó~   € V'       d   \         P                  4       MRp\        V VVVVR7      P                  4        R# )z{
Check some conditions that would preclude caching and raise BypassFxGraphCache
to bypass in case caching is not possible.
N)rø  rú  rû  rý  )r6  r7  r^  r  )r"  rø  rú  rû  rý  s   &&&& r„   Ú_check_can_cacheÚFxGraphCache._check_can_cache+	  s7   € ÷ 6G”L×/Ñ/Ô1ÈDˆ	ÜØØ)ØØ/Øô	
÷ ‰(Ž*rƒ   c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r»   r"  r#  rø  r÷  rú  r©   rã  rä  Úremoter¢   r½   z.tuple[tuple[str, list[str]] | None, CacheInfo]r{   )r¾   s   "r„   r¿   r·  @	  sD   € ÷ "&ñ "&Ø ð"&à+ð"&ð $ð"&ð 'ð	"&ð
 ð"&ð 
8ñ"&rƒ   c                óf  €  \         P                  WV4       \        WW#4      w  rVYV3/ 3#   \         d{   p\        R,          R;;,          ^,          uu&   \
        P                  RT4       T'       d   \        R\        T4      4       RRR\        T4      R\        4       /pR	T3u R	p?# R	p?ii ; i)
a�  
Checks that the inductor input is cacheable, then computes
and returns the cache key for the input.
Returns (key_info, cache_info) where:
- key_info is (hash_key, debug_lines), and
- cache_info will contain debug info in the event of BypassFxGraphCache.

NB: It is possible to have this function return a union instead. But
I personally believe it is more annoying/difficult to read in that format.
r³  Úfxgraph_cache_bypassz%Bypassing FX Graph Cache because '%s'Úbypass_fx_graphr“   rt  r›   rœ   N)
r6  r9  r`  rU  r&   r'  rg  r^   rˆ   r   )	r"  rø  rú  rã  r<  r�   r·  rÈ  rÐ  s	   &&&&&    r„   Úprepare_keyÚFxGraphCache.prepare_key?	  s«   € ð$	$Ü×)Ñ)¨"¸iÔHÜ5Ø Ió ÑˆCð Ð! 2Ð%Ð%øô "ô 
	$Ü�ZÕ Ð!7×8¸AÕ=Ó8Ü�H‰HÐ<¸aÔ@ßÜ Ð!2´C¸³FÔ;à˜xØ%¤s¨1£vØ"¤G£Ið%ˆJð
 ˜Ð#Õ#ûð
	$ús   ‚$+ «B0¶A/B+Â%B0Â+B0c               ó   € V ^8„  d   QhRR/# )r»   r½   r…  r{   )r¾   s   "r„   r¿   r·  e	  s   € ÷ 

ñ 

Ð<ñ 

rƒ   c                 óH   € Rp \        V \        P                  ! 4       RR4      # )z;
Attempts to load the remote cache, returns None on error.
zfx-graph-v1ÚFbRemoteFxGraphCacheÚRemoteFxGraphCache)rq   r)   rê  )Úcache_ids    r„   Úget_remote_cacheÚFxGraphCache.get_remote_cached	  s+   € ð
 !ˆÜØÜ×ÒÓØ"Ø ó	
ð 	
rƒ   c               ó<   € V ^8„  d   QhRRRRRRRRR	R
RRRRRRRR/	# )r»   r�   rˆ   r·  rž   rø  r÷  rƒ  r¢   r„  r…  Úis_backwardrÑ  r®   r�  r
  r½   rÒ  r{   )r¾   s   "r„   r¿   r·  r	  sb   € ÷ /*ñ /*Øð/*àð/*ð ,ð/*ð ð	/*ð
 5ð/*ð ð/*ð ,ð/*ðð/*ð 
2ñ/*rƒ   c                ó
  € \         P                  WW4Wg4      w  r‰/ V	CRV RVR\        4       /Cp	Ve–   \        P	                  RV 4       \
        R,          R;;,          ^,          uu&   RV	R&   VP                  ;p
eH   W©R	&   \        P                  ! \        P                  R
V
R,          4       \        V
4      ;p^ 8w  d   W¹R&   W‰3# \        P	                  RV 4       \
        R,          R;;,          ^,          uu&   RV	R&   W‰3# )z²
Lookup the graph with the given key, and return results and metadata.
Doesn't do any logging on its own, because AOTAutograd handles a cache miss
differently from FXGraphCache.
r�   rŸ   rœ   zfx graph cache hit for key %sr³  Úfxgraph_cache_hitrt  r“   r˜   Ú distributed_ephemeral_timeout_usiè  rš   zfx graph cache miss for key %sÚfxgraph_cache_missrÍ  )r6  r  r   r'  rg  r&   r.  r%   rÊ  rË  rm  )r�   r·  rø  rƒ  r„  rJ  rÑ  r�  r"  rÐ  r˜   Úephemeral_increases   &&&&&&&&    r„   Úload_with_keyÚFxGraphCache.load_with_keyq	  s#  € ô" &2×%?Ñ%?Ø °ió&
Ñ"ˆð!
Øð!
à�3Ø˜+Ø¤£	ñ	!
ˆ
ð Ò%Ü�H‰HÐ4°cÔ:Ü�ZÕ Ð!4×5¸Õ:Ó5Ø(-ˆJ�}Ñ%à!/×!>Ñ!>Ð>�ÒKØ.;˜?Ñ+Ü"×'Ò'Ü&×9Ñ9Ø6Ø! TÕ)ôô FÀmÓTðUÐ&àôð @RÐ;Ñ<ð Ð)Ð)ô	 �H‰HÐ5°sÔ;Ü�ZÕ Ð!5×6¸!Õ;Ó6Ø(.ˆJ�}Ñ%àÐ)Ð)rƒ   c               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   r·  ¤	  s   € ÷ ñ �4ñ rƒ   c                 ó|   €  \         P                  ! \        P                  4       4       R#   \         d     R# i ; i)z
Clear out the on-disk cache.
N)rë  Úrmtreer6  rº  ÚFileNotFoundErrorr{   rƒ   r„   ÚclearÚFxGraphCache.clear£	  s.   € ð
	Ü�MŠMœ,×3Ñ3Ó5Ö6øÜ ô 	Úð	ús   ‚(, ¬;º;r{   rÃ   )r{   NT)r}   r~   r   r€   rÌ  rQ  rº  rY  rw  r€  r  r  r®  r1  r5  r9  r@  rG  rP  rV  r‚   r{   rƒ   r„   r6  r6  Ñ  s  † ñð: ô4ó ð4ð ôHó ðHð ô*ó ð*ðX ôd!ó ðd!ðL öDQó ðDQðL ô	4ó ð	4ð ô>Có ð>Cð@ ô
ó ð
ð
 öó ðð& ô"&ó ð"&ðH ô

ó ð

ð ö/*ó ð/*ðb ôó ôrƒ   r6  c               ó    € V ^8„  d   QhRRRR/# )r»   rú   rˆ   r½   rÎ  r{   )r¾   s   "r„   r¿   r¿   ¯	  s   € ÷ ñ ¨ð °ñ rƒ   c                óú   € R  R lp V P                  V! 4       4      '       d    \        P                  P                  V 4      # V P                  R4      '       d    \        P                  P                  V 4      # V R3# )c               ó   € V ^8„  d   QhRR/# rà   r{   )r¾   s   "r„   r¿   Ú4split_aot_inductor_output_path.<locals>.__annotate__°	  s   € ÷ ñ  ñ rƒ   c                 ó"   € \         '       d   R # R# )z.pydú.so©rÇ  r{   rƒ   r„   Úget_module_ext_typeÚ;split_aot_inductor_output_path.<locals>.get_module_ext_type°	  s   € ß‹;Ùárƒ   z.pt2rê   )Úendswithrù   rú   rÿ   )rú   r_  s   & r„   Úsplit_aot_inductor_output_pathrb  ®	  s^   € õð OØ‡}�}Ñ(Ó*×+Ò+Ü�w‰w�}‰}˜TÓ"Ð"Ø	�‰�v×	Ò	Ü�w‰w�}‰}˜TÓ"Ð"à�Rˆxˆrƒ   c                  ó�   € ] tR tRt$ / tR]R&   ]! ]P                  4      t]	RR R ll4       t
]	R R l4       t]	R	 R
 l4       tRtR# )ÚCudaKernelParamCachei¿	  údict[str, dict[str, Any]]r/  Nc               ó4   € V ^8„  d   QhRRRRRRRRRRR	RR
R/# )r»   r�   rˆ   Úparamszdict[str, str | None]rç   Úbin_typeÚasmry   Úasm_typer½   r4  r{   )r¾   s   "r„   r¿   Ú!CudaKernelParamCache.__annotate__Å	  sY   € ÷ S ñ S àðS ð &ðS ð ð	S ð
 ðS ð ðS ð ðS ð 
ñS rƒ   c                	óH  € R p\         P                  P                  '       dO   \         P                  P                  '       g   \        R4      hVR,          '       g   \        R4      hVR,          p\        VVV\        \         P                  P                  4      ^ ,          VR7      w  r‰T	p
\        V	4      w  rx\         P                  P                  '       dN   RR\        RRR	/pWK9  d   \        R
4      h\        P                  P                  V	4      w  rÈWËV,          ,           p	Rp\         P                  P                  '       g!   \         P                  P                  '       d˜   \        P                   P"                  e   V'       dt   V'       dl   V'       g   \        R4      hV'       g   \        R4      hVR9   d   TMRp\        VVV\        \         P                  P                  4      ^ ,          VR7      w  r�W’\%        4       &   W¢R&   WÒR&   W P&                  V&   R # )Nz:package_cpp_only requires triton kernel names to be uniqueÚmangled_namezMissing kernel name)r¨  r�  r�   rç   z.fatbinz.spvrè   z_multiarch.hsacoz8multi_arch_kernel_binary only supported in CUDA/XPU/ROCmrê   zMissing kernel assembly codezMissing kernel assembly typer•  Úruntime_bin_pathri  >   r«  r¬  rª  )r)   rR  Úpackage_cpp_onlyr‡   Úunique_kernel_namesr%  rÒ  rb  Úoutput_pathr?   Úemit_multi_arch_kernelrW   rù   rú   ÚsplitextrØ   r�   rŠ   rä   r/  )rˆ  r�   rg  rç   rh  ri  rj  r›  rn  Úbin_pathrn  Úbin_type_to_extÚ	base_pathÚasm_pathÚ	hash_kinds   &&&&&&&        r„   rb  ÚCudaKernelParamCache.setÄ	  sæ  € ð ˆÜ×Ñ×/×/Ð/Ü—=‘=×4×4Ð4Ü$ØPóð ð ˜.×)Ô)Ü$Ð%:Ó;Ð;Ø˜nÕ-ˆHäØØØÜ8Ü×#Ñ#×/Ñ/óàõð ô
‰ˆð $Ðä<¸XÓF‰ˆä×Ñ×5×5Ð5ð ˜Ü! 6ØÐ+ðˆOð
 Ô.Ü$ØNóð ô Ÿ7™7×+Ñ+¨HÓ5‰LˆIØ °8Õ#<Õ<ˆHàˆô ×Ñ×6×6Ð6Ü×"Ñ"×3×3Ð3ô �}‰}× Ñ Ò(¯S·XßÜ(Ð)GÓHÐHßÜ(Ð)GÓHÐHð )1Ð4LÔ(L™HÐRX�	ä#ØØØ'Ü"@Ü×+Ñ+×7Ñ7ó#àõ#ð !ô‘�ð 5=Ô.Ó0Ñ1Ø%5Ð!Ñ"Ø ˆu‰Ø�	‰	�#‹rƒ   c               ó    € V ^8„  d   QhRRRR/# ©r»   r�   rˆ   r½   rW  r{   )r¾   s   "r„   r¿   rk  
  ó   € ÷ (ñ (�cð (Ð3ñ (rƒ   c                	ó:   € V P                   P                  VR 4      # rÃ   ©r/  rs  r¿  s   &&r„   rs  ÚCudaKernelParamCache.get
  ó   € à�y‰y�}‰}˜S $Ó'Ð'rƒ   c               ó   € V ^8„  d   QhRR/# ©r»   r½   zKeysView[str]r{   )r¾   s   "r„   r¿   rk  
  ó   € ÷  ñ  ˜ñ  rƒ   c                	ó6   € V P                   P                  4       # rÃ   ©r/  rV  ©rˆ  s   &r„   Úget_keysÚCudaKernelParamCache.get_keys
  ó   € à�y‰y�~‰~ÓÐrƒ   r{   ©NN)r}   r~   r   r€   r/  r�   rQ  rV  Úcache_clearrY  rb  rs  r‡  r‚   r{   rƒ   r„   rd  rd  ¿	  sX   ‡ à')€EÐ$Ó)Ù˜uŸ{™{Ó+€KàöS ó ðS ðj ô(ó ð(ð ô ó ô rƒ   rd  c                  ó�   € ] tR tRt$ Rt/ tR]R&   ]! ]P                  4      t	]
R R l4       t]
R R l4       t]
R	 R
 l4       tRtR# )ÚCpuTritonKernelCachei#
  z@AOTI counterpart of CudaKernelParamCache for CPU Triton kernels.re  r/  c               ó0   € V ^8„  d   QhRRRRRRRRRRR	R
/# )r»   r�   rˆ   Úkernel_bytesr‘  Úlauncher_bytesÚkernel_symbolÚ	signaturer<  r½   r4  r{   )r¾   s   "r„   r¿   Ú!CpuTritonKernelCache.__annotate__+
  sF   € ÷ 
ñ 
àð
ð ð
ð ð	
ð
 ð
ð "ð
ð 
ñ
rƒ   c                	óÌ   € \        \        P                  P                  4      ^ ,          p\	        VRRVR7      w  rx\	        VRRVR7      w  ryRVRV	RVRV/V P
                  V&   R# )	r   Úsor•  )r¨  r�  Úkernel_so_pathÚlauncher_so_pathr‘  r’  N)rb  r)   rR  rq  rÒ  r/  )
rˆ  r�   r�  r�  r‘  r’  Úout_dirrn  r–  r—  s
   &&&&&&    r„   rb  ÚCpuTritonKernelCache.set*
  st   € ô 1´×1DÑ1D×1PÑ1PÓQÐRSÕTˆÜ!Ø˜$¨&Àô
Ñˆô $Ø˜D¨FÀ'ô
Ñˆð ˜nØÐ 0Ø˜]Ø˜ð	
ˆ�	‰	�#‹rƒ   c               ó    € V ^8„  d   QhRRRR/# r{  r{   )r¾   s   "r„   r¿   r“  B
  r|  rƒ   c                	ó:   € V P                   P                  VR 4      # rÃ   r~  r¿  s   &&r„   rs  ÚCpuTritonKernelCache.getA
  r€  rƒ   c               ó   € V ^8„  d   QhRR/# r‚  r{   )r¾   s   "r„   r¿   r“  F
  rƒ  rƒ   c                	ó6   € V P                   P                  4       # rÃ   r…  r†  s   &r„   r‡  ÚCpuTritonKernelCache.get_keysE
  r‰  rƒ   r{   N)r}   r~   r   r€   rÌ  r/  r�   rQ  rV  r‹  rY  rb  rs  r‡  r‚   r{   rƒ   r„   r�  r�  #
  sX   ‡ áJà')€EÐ$Ó)Ù˜uŸ{™{Ó+€Kàô
ó ð
ð, ô(ó ð(ð ô ó ô rƒ   r�  c                  ó0   € ] tR tRtRt]R R l4       tRtR# )ÚAotCodeCompileriJ
  z&
Compile AOT Inductor generated code.
c               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# )r»   r\  r¬   Úwrapper_coderˆ   Úkernel_codeÚserialized_extern_kernel_nodesry   r  Úadditional_filesrž   r½   zlist[str | Weights] | strr{   )r¾   s   "r„   r¿   ÚAotCodeCompiler.__annotate__P
  sY   € ÷ Vñ VàðVð ðVð ð	Vð
 )3ðVð ðVð $ðVð 
#ñVrƒ   c               óx6  aaaaanaoapaqarasatauavawaxayaz€ Tp\        4        \        4       p\        RR\        VSSP                  R7      R7      p	\        V	P                  4       4      p
\        P                  ! 4       ;'       d    SR8H  ;'       d    SP                  oy\        \        P                  P                  4      w  pp\        P                  P                  '       d   RP                  SS34      oRo\        SRV
V\        P                  P                  R	7      w  pozR
Sz R2S,           o\        SRV
V\        P                  P                  R	7      w  potRorRos\        P                  P                   '       gù   \#        \$        P&                  P                  \$        P&                  P)                  \$        P&                  P)                  \*        4      4      RRRR4      4      ;_uu_ 4       p\        P                  P                  pRV 2pVP-                  4       orSrP/                  RRV R24      P/                  RV R24      P/                  RV R24      or\        SrRVVR7      w  posRRR4       \1        R4      ;_uu_ 4       p VP3                  SRSR34       VP5                  4        \6        P8                  P;                  VP<                  RR7       RRR4       \        P                  P>                  '       dt   VPA                  Sz4       \        P                  P                  '       g   VPA                  St4       \        P                  P                   '       g   VPA                  Ss4       \B        PE                  RSz4       \B        PE                  RSt4       \G        R Vz3R! lV3R" lR#7       \G        R Vt3R$ lV3R% lR#7       \        P                  P                   '       g-   \B        PE                  R&Ss4       \G        R Vs3R' lVr3R( lR#7       \I        Sz4      p\I        St4      pVPJ                  V,          oxSxPM                  4       '       g   SxPO                  R)R*7       \Q        \I        Sx4      R+,          4      pR, VVVxVy3R- llp^ R.I)H*p \W        4       pV! \$        P&                  P                  VVR/,           4      \X        R07      pT;_uu_ 4        V'       dz   \Q        VP[                  R14      4      p\#        VR24      ;_uu_ 4       pVP                  V4       RRR4       \        P                  P>                  '       d   VPA                  V4       \        P                  P\                  pSVR3&   VP_                  \a        S4      4       \Q        VPc                  VPd                   R424      4      p\        P                  P\                  Pg                  4        F=  w  pp\i        V\P        4      '       d   \i        V\P        4      '       d   K4  \k        R54      h	  \#        VR24      ;_uu_ 4       pVP                  \l        Pn                  ! \        P                  P\                  4      4       RRR4       \Q        VPc                  VPd                   R424      4      p\p        Pr                  ! VV4       \        P                  P>                  '       dC   VPA                  V4       \        P                  P                  '       g   VPA                  V4       V'       d   \        P                  P                  M\Q        VP[                  R64      4      p \t        ;QJ d)    V3R7 lSPv                   4       F  '       d   K   R8M	  R)M! V3R7 lSPv                   4       4      p!^ RI<opR9 R: lp"\        P                  Pz                  '       g!   \        P                  P|                  R;8X  Edv   \        R<R)R=7      ;_uu_ 4        SPv                   U#u. uF  p#V#SP€                  9  g   K  V#NK  	  up#ooSo'       Ed   ^ R>IAHBp$ . ov. ow^ p%So Fy  p#SP‡                  V#4      pV"! V4      p&SvPA                  V%4       SwPA                  V&4       T%V!'       d   T&M)V&\ˆ        ,           ^,
          \ˆ        ,          \ˆ        ,          ,          p%K{  	  \‹        V%4      p'SpPŒ                  V%,          P�                  V'4      p(SpP‘                  V(4      onR? VnVoVpVVvVw3R@ llp)V$! 4       ;_uu_ 4       p*V*P“                  V)\•        \—        So4      4      4       F  pK  	  RRR4       ?(MRAp'RRR4       MRAp'\        P                  P|                  RB8X  d‡   \™        SPv                   U#u/ uFU  p#V#SP€                  9  g   K  SPš                  V#,          SP‡                  V#4      \�        SPv                  V#,          4      3bKW  	  up#4      p+VPA                  V+4       \—        X'4      p,\Ÿ        V,4      w  p-p.V-'       d   V.'       d   \¡        RC4      hRp/V-'       d*   VPd                   RD2p0\Q        VPc                  V04      4      p/RESP                  RFSRGV.RHV-RISyRJV/p1\        RƒRKR)RL\        P                  P                  '       * /V1B p2\        RƒRKR)/V1B p3\        P                  P¢                  '       d˜   \¤        '       gŒ   \        RMR)R=7      ;_uu_ 4        \§        SSP                  RN7      p4\©        V4V
3RL\        P                  P                  '       * /V1B V2nU        \­        S4      ;p5'       d   \©        V5V
3/ V1B V3nU        RRR4       \        \Q        VPd                  4      Sz\Q        VPJ                  4      V2RO7      p6V6P                  4       p7V6P¯                  4       p8\        \Q        VPd                  4      St\Q        VPJ                  4      V3RO7      p9V9P                  4       p:V9P¯                  4       p;\°        P9                  RPV74       \°        P9                  RQV:4       \        P                  P                  '       d€   \Q        VPc                  VPd                   RR24      4      p<V2P³                  V<4       VPA                  V<4       V6Pµ                  VS4       V6P·                  VSz4       VPA                  V4       M! V6P¹                  4        T9P¹                  4        V.'       gs   T'p>^ p?V-'       df   \À        PÂ                  ! RUV,4      p>V/f   \k        RV4      h\#        V/RW4      ;_uu_ 4       p@V@P                  V'4       RRR4       VPA                  V/4       M\Å        \Æ        \È        PÊ                  ! ^ \È        PÌ                  ! \È        PÎ                  4      PÐ                  R„4      PÓ                  4       4      p?\À        PÂ                  ! RXV,^,           V?4      p>V! V>\Ô        PÖ                  4      pA^ pB/ pC\Ù        SPÚ                  Pg                  4       4       EF  w  pBw  p#pD\i        VD\È        PÜ                  PÞ                  Pà                  4      '       d   XDPâ                  pD\i        XD\È        Pä                  Pæ                  4      '       g   \k        RY\é        XD4       24      h\ê         XB 2pE\°        P9                  RZV#VE4       VEXCV#&   \È        Pä                  Pí                  XD4      pF\$        P&                  P                  VPJ                  VE4      pG\ï        VGVFR)4       VPA                  VG4       EK  	  XC'       d~   \$        P&                  P                  VPJ                  R[4      pH\#        VHR24      ;_uu_ 4       pVP                  \l        Pn                  ! XC4      4       RRR4       VPA                  XH4       R\\ð        R]\ò        R^\ô        /P÷                  \È        Pø                  Pú                  '       d   R\MS\ò        4      pIVI! 4       pJVJPü                  Ps                  4       pKVJPü                  Pÿ                  4        VK'       d-   \        P                  EP                   '       d   \k        R_4      h. pL. pM. pN\¤        '       Eg   . pOE\        Sy4      w  pPpQE\        \6        EP                  EP                  R`/ 4      pRE\
        EP                  Pg                  4        EFe  w  pSpTVSXR9  d   K  XTRa,          ;pU'       d   XMPA                  XU4       XTE\        4       ,          pV\        P                  EP                   '       dÊ   SR]8X  dÃ   \È        Pø                  Pú                  f5   XNPA                  XUXVXTP÷                  Rb4      VTP÷                  Rc4      34       Mr^ RdIˆH‰pW \$        P&                  PM                  XU4      '       g   \¡        ReXU Rf24      hXW! XUXVRRg7      pXVX'       g   \¡        RhXS Ri24      h\°        PE                  RjXV4       \        P                  EP                  '       g   EKR  XOPA                  XVXS34       EKh  	  XN'       Ed   ^ R>IAHBp$ E\        EP                  ! 4       ou\p        EP                  ! Rk4      oqSueo   \$        P&                  P)                  Su4      ;pY'       dH   \$        P&                  P                  XYRk4      pZ\$        P&                  PM                  VZ4      '       d   XZoqRl VqVu3Rm llp[\        RnR)R=7      ;_uu_ 4        V$! 4       ;_uu_ 4       p*E\        V*P“                  V[XN4      4       RRR4       RRR4       XO'       dH    E\        XO\$        P&                  P)                  V 4      E\!        4       Ro7      p\XLPA                  V\4       E\+        V 4      w  p]p^\        VSSP                  SyRq7      p_XK'       d%   SR^8X  d   \        RrVSSP                  Sy. R…ORs7      p_V8V;XA.XKOXLOp`\        X]V`X^X_RO7      paVaP                  4       pbVaP¯                  4       p \°        P9                  RtVb4       \#        SzRu4      ;_uu_ 4       pVP                  R4       VP                  RvV7 R24       VP                  RwVb R24       RRR4       \#        StRu4      ;_uu_ 4       pVP                  R4       VP                  RvV: R24       VP                  RwXb R24       RRR4       \        P                  P                  '       EdÂ   \Q        VPc                  VPd                   Rx24      4      pcX_P³                  Vc4       VPA                  Vc4       VPA                  E\,        4       V.'       dŽ   \Q        VPc                  VPd                   Ry24      4      pd\#        VdRW4      ;_uu_ 4       p@V@P                  V'4       V@P                  \À        PÂ                  ! RUV?4      4       RRR4       VPA                  Xd4       M#VPA                  XA4       XaP·                  VVA4       \        P                  EP                   '       dC   \È        Pø                  Pú                  f'   XaEP/                  VXM4       VEP1                  VM4       M3. XKOXLOp`VEP1                  V`4       V` F  peXaP·                  VVe4       K  	  XaEP3                  V4       EMAXaP¹                  4        X` F#  pfVfXK9   d   K  \$        EP4                  ! Xf4       K%  	  V.'       dÐ   \        P                  EP6                  Rz8X  d   \¡        R{4      hR| R} lpgVg! 4       ph\Ñ        R~Vh4      pi\#        V R4      ;_uu_ 4       pjVjEP9                  4       pkVjP                  R€ViVkVi,          ,
          ,          4       VjP                  V'4       VjP                  \À        PÂ                  ! RUV?4      4       RRR4       \        P                  P>                  '       d   VPA                  V 4       RRR4       \        EP:                  ! 4       ^ 8w  dª   \È        EP<                  P8                  EP?                  4       pl\$        P&                  P                  VPJ                  R�4      pm\#        VmR24      ;_uu_ 4       pVP                  \l        Pn                  ! Vl^R‚7      4       RRR4       VPA                  Xm4       \        P                  P>                  '       d   V# X #   + '       g   i     ELÛ; i  + '       g   i     EL‚; i  + '       g   i     ELI; i  + '       g   i     EL	; iu up#i   + '       g   i     ELF; i  + '       g   i     ELK; iu up#i   + '       g   i     ELP; i  \º        P¼                  \¾        3 d$   p=RS\Q        T=4      9   d   \¡        RT4      T=hT=hRp=?=ii ; i  + '       g   i     EL§; i  + '       g   i     E
L[; i  + '       g   i     ELÌ; i  + '       g   i     ELØ; i  E\"        EP$                   dE    \°        EP'                  Rp4       XO F$  w  pVpSXLPA                  E\)        TVTSXPXQ4      4       K&  	   ELæi ; i  + '       g   i     EL; i  + '       g   i     EL½; i  + '       g   i     ELÎ; i  + '       g   i     ELó; i  + '       g   i     ELÎ; i  + '       g   i     EL/; i)†zk
Returns the .so path, or returns a list of files that were generated if
config.aot_inductor.package=True.
r  Úi)Úvec_isar  Úaot_mode©rz   ÚsourcesÚBuildOptionr³  r\  rê   zwrapper.cpp)r—  r�  r�   z.// Triton kernels are embedded as comments in z
kernel.cppÚcsrcr³  Úaoti_runtimezmodel.hÚAOTInductorModelz<AOTInductorModel>Ú<Ú>zAOTInductorModel(Ú(zAOTInductorModel :z :r´  ©r�  r�   Nzw+r  )rœ  zAOT wrapper code written to: %szAOT kernel code written to: %sÚ
graph_dumpc                 ó   <€ R RRRRS /# )rz   Úinductor_aot_wrapper_coder  r  rè  r{   )Úwrapper_paths   €r„   r  Ú)AotCodeCompiler.compile.<locals>.<lambda>Ò
  s   ø€ ØÐ3Ø˜Ø˜Lñrƒ   c                 ó   <€ S # rÃ   r{   )r£  s   €r„   r  rº  ×
  s   ø€ ™|rƒ   rå  c                 ó   <€ R RRRRS /# )rz   Úinductor_aot_kernel_coder  r  rè  r{   )Úkernel_paths   €r„   r  rº  Û
  s   ø€ ØÐ2Ø˜Ø˜Kñrƒ   c                 ó   <€ S # rÃ   r{   )r¤  s   €r„   r  rº  à
  s   ø€ ™{rƒ   zHeader code written to: %sc                 ó   <€ R RRRRS /# )rz   Úinductor_aot_header_coder  r  rè  r{   )Úheader_paths   €r„   r  rº  æ
  s   ø€ ØÐ6Ø˜EØ ñrƒ   c                 ó   <€ S # rÃ   r{   )Úheader_codes   €r„   r  rº  ë
  s   ø€ ¡;rƒ   TrŠ  zCMakeLists.txtc               ó$   € V ^8„  d   QhRRRRRR/# )r»   Úconstsúbytes | bytearrayr  rˆ   r½   r{   )r¾   s   "r„   r¿   Ú-AotCodeCompiler.compile.<locals>.__annotate__ø
  s'   € ÷ @	ñ @	Ð$5ð @	Àð @	Èñ @	rƒ   c                ó.  <a€ \         P                  P                  pVR 8X  d^   SP                  \	        SP
                  P                  4       4      ,          '       d   \        V 4      R8”  d   \        R4      hRoMRoRpM&VR8X  d   RoRpMVR	8X  d   RpR
pM\        RV 24      hSR8X  d   R
p\        V 4      R8„  p\        V 4      ^ 8H  pR V3R llpR R lpR V3R llpV'       d   V! V \        W44      w  ršM(V'       d   V! \        V4      w  ršMV! V \        V4      w  rš\        V	V
\        S4      \         P                  P                  R7      w  r¼\        V4      p\        SSP                   RSR7      p\#        \        VP$                  4      \        V4      \        VP&                  4      VR7      pVP)                  4       pVR
J d3   V'       d+   \+        \        V4      V\        VP&                  4      4       MVP-                  4        V'       dÔ   V'       dÌ   \/        VR4      ;_uu_ 4       pVP1                  ^ 4       VP3                  R4      p\4        P6                  R8X  d   VP9                  R4      MVP9                  R4      pVR8X  d   \;        R4      hVP1                  V4       ^ pV\        V 4      8  d    VP                  V VR 4      pVV,          pK/   RRR4       \<        P>                  ! V4       V#   + '       g   i     L(; i)Úlinuxi ”5wzPModels with buffer mutation included doesn't support constants greater than 2GB!z.ldata, "aw"z.lrodata, "a"rê   Údarwinz__DATA,__datarn  r¶   FzUnsupported platform: ré   r¦  c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r»   rÆ  rÇ  Úalign_bytesr—   Úsymbol_prefixrˆ   Úis_large_constsr¢   r½   rÎ  r{   )r¾   s   "r„   r¿   ÚFAotCodeCompiler.compile.<locals>._compile_consts.<locals>.__annotate__  s:   € ÷ /ñ /Ø)ð/à ð/ð  #ð/ð "&ð	/ð
 !ñ/rƒ   c                ó>  <€ R S R2pVRV R2,          pVRV R2,          pWB R2,          pV'       g)   V  F  pVRV R2,          pK  	  V '       g
   VR,          pM&VR,          pVR	\        V 4      ^,
           R2,          pVR
V R2,          pWB R2,          pVR3# )ú
	.section	r\  ú		.balign ú	.globl	ú_binary_constants_bin_start
ú_binary_constants_bin_start:
z	.byte z
	.space 1
z	.quad 0x1234567899abcdef
z	.space ú.globl	ú_binary_constants_bin_end
ú_binary_constants_bin_end:
z	weights.S©r¨  )rÆ  rÍ  rÎ  rÏ  Ú
consts_asmrƒ  Úsection_attrs   &&&&  €r„   Úformat_consts_to_gnu_asmÚRAotCodeCompiler.compile.<locals>._compile_consts.<locals>.format_consts_to_gnu_asm  sÐ   ø€ ð  ,¨L¨>¸Ð<�
Ø 
¨;¨-°rÐ:Õ:�
Ø 
¨=¨/Ð9VÐWÕW�
Ø Ð/MÐNÕN�
ß&Û#˜Ø"¨°°°2Ð&6Õ6š
ñ $÷ "Ø" nÕ4˜
øàÐ"@Õ@�JØ I¬c°&«k¸A­oÐ->¸bÐ"AÕA�JØ ¨¨Ð7RÐSÕS�
Ø Ð/KÐLÕL�
Ø! ;Ð.Ð.rƒ   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r»   rÆ  rÇ  rÍ  r—   rÎ  rˆ   r½   rÎ  r{   )r¾   s   "r„   r¿   rÐ  4  s,   € ÷ 0ñ 0Ø)ð0Ø8;ð0ØLOð0à ñ0rƒ   c                ó  € \        V 4      pR pTpVRV R2,          pVRV RV R2,          p^ pV  F0  pWW R2,          pV^,           pV^,          ^ 8X  g   K'  VR,          pK2  	  VR,          pVRV R	V R
2,          pVR3# )zÔ#if defined(__clang__) || defined (__GNUC__)	
#define ATTRIBUTE_NO_SANITIZE_ADDRESS __attribute__((no_sanitize("address")))	
#else	
#define ATTRIBUTE_NO_SANITIZE_ADDRESS	
#endif	
	
ATTRIBUTE_NO_SANITIZE_ADDRESS	
zalignas(z	) extern zunsigned char z_binary_constants_bin_start[z] = {	
ru  z	
z};	
z) extern unsigned char * z_binary_constants_bin_end;	
zweights.cpprÚ  )rÆ  rÍ  rÎ  Úconsts_sizeÚ	asan_attrÚ	const_cppÚcount_bytesrƒ  s   &&&     r„   Úformat_consts_to_cppÚNAotCodeCompiler.compile.<locals>._compile_consts.<locals>.format_consts_to_cpp4  sº   € ô " &›k�ð%�	ð &�	Ø˜x¨ }°IÐ>Õ>�	Ø˜~¨m¨_Ð<XÐYdÐXeÐeoÐpÕp�	Ø�Û�AØ 3 b Õ)�IØ"-°¥/�KØ" RÕ'¨1Ö,Ø! VÕ+š	ñ	  ð
 ˜XÕ%�	Ø˜x¨ }Ð4MÈmÈ_Ð\zÐ{Õ{�	Ø  -Ð/Ð/rƒ   c               ó$   € V ^8„  d   QhRRRRRR/# )r»   rÍ  r—   rÎ  rˆ   r½   rÎ  r{   )r¾   s   "r„   r¿   rÐ  L  s&   € ÷ ,)ñ ,)Ø ð,)à"ð,)ð !ñ,)rƒ   c                óº   <€ \         '       d   RpRpW#3# RS R2pVRV  R2,          pVRV R2,          pW! R2,          pVR	V R
2,          pW! R2,          pRpW#3# )aÖ  
This function handles zero-sized constants because the C++ standard prohibits zero-length arrays:
https://stackoverflow.com/questions/9722632/what-happens-if-i-define-a-0-size-array-in-c-c

On Windows (MSVC):
    The compiler reports error C2466 for zero-sized arrays:
    https://learn.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/compiler-error-c2466
    Solution: Use assembly compilation to handle this case.

Why not use Win32 assembly for all paths?
    ml64 only supports alignment up to 16 bytes, which isn't optimal for performance.

Cross-platform implementation:
    Linux: Added '-pedantic' to disable zero-sized arrays in C++ compiler
    Windows: MSVC naturally rejects zero-sized arrays by default
zÍ
option casemap:none
.data
?_binary_constants_bin_start@@3PAEA:
align 16
?_binary_constants_bin_end@@3PAEA:
align 16
public ?_binary_constants_bin_start@@3PAEA
public ?_binary_constants_bin_end@@3PAEA
end
ri  rÒ  r\  rÓ  rÔ  rÕ  rÖ  r×  rØ  rÙ  ÚSr^  )rÍ  rÎ  Úasm_codeÚasm_extrÜ  s   &&  €r„   Úget_zero_consts_asm_codeÚRAotCodeCompiler.compile.<locals>._compile_consts.<locals>.get_zero_consts_asm_codeL  s¡   ø€ ÷( “;ð
 �Hð $�Gð  Ð(Ð(ð ".¨l¨^¸2Ð>�HØ *¨[¨M¸Ð <Õ<�HØØ$ ] OÐ3PÐQõ�Hð  /Ð1OÐ PÕP�HØ (¨=¨/Ð9TÐ UÕU�HØ /Ð1MÐ NÕN�HØ!�GØÐ(Ð(rƒ   rµ  T)r  r«  Úcompile_onlyÚuse_relative_path©rz   r­  Ú
output_dirr®  zr+bÚlittles   ïÍ«™xV4s   4Vx™«Íïz*Magic number not found in constants headerNr`  ) r)   rR  Úuse_consts_asm_buildÚmutated_buffersri   rÑ  rV  r¨  r‘  rý   rQ   rÒ  rˆ   Úmodel_name_for_generated_filesr   r;   r«  r9   Ústemrä  Úget_target_file_pathrA   Úbuildr?  r�  rÌ  r  Ú	byteorderÚfindr%  rù   rí  )rÆ  r  Úuse_asm_buildrÎ  rÏ  Úis_zero_size_constsrÝ  rå  rì  Úconsts_codeÚcode_extrn  Úconsts_sÚobject_build_optionsÚobject_builderÚconsts_orð  ÚhdrÚ	start_idxÚposÚrcrÜ  r  r\  Úspecified_sub_dirrï  s   &&                   @€€€€r„   Ú_compile_constsÚ0AotCodeCompiler.compile.<locals>._compile_constsø
  sÌ  ù€ ä"(×"5Ñ"5×"JÑ"JˆMà˜7Ô"Ø×(Ñ(¬:°e·o±o×6JÑ6JÓ6LÓ+M×MÔMô ˜6“{ ]Ô2Ü(Ønóð ð $2‘Là#2�LØ "‘Ø˜XÔ%Ø.�Ø #‘Ø˜WÔ$Ø "�à %‘ä"Ð%;¸H¸:Ð#FÓGÐGð ˜eÔ#Ø %�ä! &›k¨DÑ0ˆOÜ"% f£+°Ñ"2Ð÷/ð /õ20÷0,)ð ,)÷\ Ù(@ØœK¨ó)Ñ%�˜X÷ 'Ù,DÜ# ]ó-Ñ)�K ñ -AØ¤¨]ó-Ñ)�Kô  ØØÜ!Ð"3Ó4Ü×'Ñ'×FÑFô	‰KˆAô ˜H“~ˆHÜ#8Ø'ØŸ™Ø!Ø"3ô	$Ð ô (Ü˜Ÿ™Ó'Ü˜H›Ü˜xŸ™Ó/Ø0ô	ˆNð &×:Ñ:Ó<ˆHØ Ó%×*=Ü$¤S¨£]°H¼cÀ(Ç/Á/Ó>RÕSà×$Ñ$Ô&ç§=Ü˜( E×*Ô*¨aØ—F‘F˜1”IØŸ&™& ›,�Cô Ÿ=™=¨HÔ4ð Ÿ™Ð!DÔEà ŸX™XÐ&IÓJð ð
 ! B”Ü,ØHóð ð —F‘F˜9Ô%Ø�CØ¤ F£Ô+ØŸW™W V¨C¨D \Ó2˜Ø˜r�	šð ,÷ +ô( �IŠI�hÔàˆO÷- +×*ús   È5B.LÌL	©ÚFileLockú.lock©Útimeoutz.jsonrË  ÚAOTI_DEVICE_KEYz_metadata.jsonz"Metadata must only contain stringsr]  c              3  ó€   <"  € T F3  pVSP                   9  g   K  SP                  V4      P                  x € K5  	  R # 5irÃ   )Úfolded_constantsÚget_original_value_of_constantÚis_cuda)rÅ   rz   r\  s   & €r„   rÇ   Ú*AotCodeCompiler.compile.<locals>.<genexpr>ï  s:   øé € ð á+�DØ˜u×5Ñ5Ñ5ô C�×4Ñ4°TÓ:×BÖBÛ+ùs   ƒ>›#>Fc               ó    € V ^8„  d   QhRRRR/# )r»   r   ztorch.Tensorr½   r—   r{   )r¾   s   "r„   r¿   rÈ  ÷  s   € ÷ 4ñ 4 Lð 4°Sñ 4rƒ   c                óâ   € V P                  4       ^ 8X  d   ^ # V P                  '       d*   \        P                  P                  P                  V 4      # V P                  4       P                  4       # rú  )Únumelr]  rØ   rÙ   ÚmkldnnÚ_nbytesÚuntyped_storageÚnbytesr  s   &r„   Ú_constant_nbytesÚ1AotCodeCompiler.compile.<locals>._constant_nbytes÷  sN   € Ø—7‘7“9 ”>ÙØ—;—;�;Ü Ÿ9™9×+Ñ+×3Ñ3°AÓ6Ð6Ø×(Ñ(Ó*×1Ñ1Ó3Ð3rƒ   Úbinary_blobÚaoti_serialize_constantsr×  )ÚThreadPoolExecutorc               ó    € V ^8„  d   QhRRRR/# )r»   r©  r—   r½   r4  r{   )r¾   s   "r„   r¿   rÈ  %  s   € ÷ "ñ " sð "¨tñ "rƒ   c                ó°  <€ S
V ,          pV^ 8X  d   R# SP                  SV ,          4      pVP                  '       dL   \        P                  P                  P                  V4      pSP                  SS	V ,          ,           W14       R# VP                  4       P                  4       pSP                  SS	V ,          ,           VP                  4       V4       R# )r   N)	r  r]  rØ   rÙ   r  Údata_ptrÚmemmover  r³  )r©  Únr   r#  Út_cpuÚ	base_addrÚconstant_namesÚctypesr\  ÚoffsetsÚsizess   &    €€€€€€r„   Ú_workerÚ(AotCodeCompiler.compile.<locals>._worker%  s¢   ø€ Ø % a¥˜AØ  AœvÙ &Ø %× DÑ DÀ^ÐTUÕEVÓ W˜AØ Ÿ{Ÿ{˜{Ü+0¯9©9×+;Ñ+;×+DÑ+DÀQÓ+G Ø &§¡¨y¸7À1½:Õ/EÀxÖ Sð )*×(9Ñ(9Ó(;×(?Ñ(?Ó(A Ø &§¡Ø$-°¸µ
Õ$:¸E¿N¹NÓ<LÈaö!"rƒ   rƒ   Úpickle_weightsz?use_external_weights and  use_mmap_weights cannot both be True.z_weights.blobr«  r  Úuse_mmap_weightsÚuse_mmap_weights_externalrï  rª  rî  Úmin_optimizeÚaoti_precompile_header)r«  rð  z#aot wrapper compilation command: %sz"aot kernel compilation command: %sz_compile_flags.jsonz is too big to optimizezUPlease use torch._inductor.config.aot_inductor.compile_wrapper_opt_level = 'O0' flag.ÚqzCexternal_weights_path must be set when use_external_weights is TruerÞ  ÚqqzExpected ScriptObject, got zsaving script object %s as %szcustom_objs_config.jsonÚrocmr‰   ré   z<TODO: add emit_multi_arch_kernel support for cutlass kernelsÚ_kernel_name_to_bodyri  rn  Ú	cuda_arch)Ú%compile_multiarch_bundle_from_llvm_irz7Multi-arch ROCm compilation requires LLVM IR file, but zD not found. Ensure asm_type='ll' is captured in triton_heuristics.py)Úllvm_ir_pathÚoutput_bundle_pathÚtarget_archsz/Failed to compile multi-arch bundle for kernel z>. Check that ROCm toolchain is available and LLVM IR is valid.zCreated multi-arch bundle: %srò   c               ó    € V ^8„  d   QhRRRR/# )r»   Úasm_cubin_and_rawz'tuple[str, str, str | None, str | None]r½   r4  r{   )r¾   s   "r„   r¿   rÈ  H  s   € ÷ "ñ "Ø+Rð"àñ"rƒ   c                ó8  <€ V w  rr4\        WVSSV4      p \        P                  ! VR R R R7       R#   \        P                   dR   p\	        \
        P                  ! T4       RTP                   RTP                   2\        P                  R7       h Rp?ii ; i)T)Úcapture_outputrÔ  r  z failed with:
stdout:
z	
stderr:
)ÚfileN)
r  Ú
subprocessÚrunÚCalledProcessErrorÚprintrþ   rÉ   ÚstdoutÚstderrr  )	r=  Úasm_fÚcubin_fÚraw_cubin_fr7  r  rÈ  rò   rñ   s	   &      €€r„   Ú_compile_fatbinÚ0AotCodeCompiler.compile.<locals>._compile_fatbinH  s—   ø€ ð BSÑ>˜¨Ü2Ø!¨K¸¸yÈ)ó˜ð	"Ü&ŸNšNØ #°D¸tÈ4÷øô  *×<Ñ<ô "Ü!Ü#(§:¢:¨c£?Ð"3Ð3KÈAÏHÉHÈ:ÐU`Ðab×aiÑaiÐ`jÐ kÜ%(§Z¡Zõð "ûð"ús   —3 ³BÁABÂBÚaoti_compile_fatbin)Úcpp_compilerzABatched cubin embedding failed, falling back to per-cubin objcopy)rª  r  r«  rï  Úicpx)Úcompilerrª  r  r«  rï  Úextra_flagszaot linkage command: %sr¹   z// Compile cmd
// z// Link cmd
// z_linker_flags.jsonz_serialized_weights.binÚwindowszKwhen cross_target_platform is windows, use_mmap_weights should not be true.c               ó   € V ^8„  d   QhRR/# )r»   r½   r—   r{   )r¾   s   "r„   r¿   rÈ  æ  s   € ÷ "-ñ "-¨3ñ "-rƒ   c                 ó   aaa	€ \         '       d[   ^ RIHp HpHp ^ RIHoHoHo	  ! VVV	3R lRV4      pV! 4       pVP                  P                  V ! V4      4       VP                  pV# ^ RIpVP                  4       pV# )r   )ÚbyrefÚ	StructureÚwindll©ÚDWORDÚLPVOIDÚWORDc                  ót   <€ ] tR tRtR Z3R Z3R Z 3R Z3R Z3R Z 3R Z 3R	 Z 3R
 Z 3R Z3R Z3.tRtR# )ÚCAotCodeCompiler.compile.<locals>.get_page_size.<locals>.SYSTEM_INFOiñ  ÚwProcessorArchitectureÚ	wReservedÚ
dwPageSizeÚlpMinimumApplicationAddressÚlpMaximumApplicationAddressÚdwActiveProcessorMaskÚdwNumberOfProcessorsÚdwProcessorTypeÚdwAllocationGranularityÚwProcessorLevelÚwProcessorRevisionr{   N)r}   r~   r   r€   Ú_fields_r‚   rW  s   €€€r„   ÚSYSTEM_INFOr\  ñ  sb   ø† à%=¹tÐ$DØ%0±$Ð$7Ø%1±5Ð$9Ø%BÁFÐ$KØ%BÁFÐ$KØ%<¹eÐ$DØ%;¹UÐ$CØ%6¹Ð$>Ø%>ÁÐ$FØ%6¹Ð$=Ø%9¹4Ð$@ð,"¤rƒ   ri  N)rÇ  r)  rT  rU  rV  Úctypes.wintypesrX  rY  rZ  Úkernel32ÚGetSystemInfor_  ÚresourceÚgetpagesize)
rT  rU  rV  ri  ÚsiÚsys_page_sizerm  rX  rY  rZ  s
          @@@r„   Úget_page_sizeÚ.AotCodeCompiler.compile.<locals>.get_page_sizeæ  sw   ú€ ÷ '›;÷ñ ÷
 LÑK÷"ñ "¨iô "ñ "-£˜BØ"ŸO™O×9Ñ9¹%À»)ÔDØ,.¯M©M˜Mð  -Ð,ó	 ,à,4×,@Ñ,@Ó,B˜Mà,Ð,rƒ   i @  za+bó    zkernel_information.jsonrI  r{   )r¡  )z-fsyclz-fsycl-targets=intel_gpu_pvcz-Xspirv-translatorzi-spirv-ext=+SPV_INTEL_split_barrier,+SPV_INTEL_2d_block_io,+SPV_INTEL_subgroup_matrix_multiply_accumulate) r5   rC   r9   r;   r«  rË   Úget_command_liner)   rê  rb  rR  rq  ro  rÉ   rÒ  rõ  Údynamic_linkager?  rù   rú   rÞ  rß  rÌ  r  r¯  Ú
writelinesÚflushru   rZ  r·   rz   ÚpackagerÛ   r  rg  rZ   r   rä  rû   rå  rˆ   Útorch.utils._filelockr  rŽ  ÚLOCK_TIMEOUTÚwith_suffixr  r/  r  Ú	with_namerö  r‚  rã  r%  r@  rN  rë  r   r�  rÑ  r)  Úpackage_constants_in_soÚ package_constants_on_disk_formatr'   r  Úconcurrent.futuresr   r  rQ   Ú	bytearrayÚc_ubyteÚfrom_bufferÚ	addressofr1  r¯  r¨  rc   Úallocated_constant_namerb   rS   rý   Úprecompile_headersrÇ  Ú_get_cpp_wrapper_headerÚ_precompile_headerÚprecompiled_headerÚ_get_cpp_prefix_headerr÷  r'  Úsave_flags_to_jsonÚsave_compile_cmd_to_cmakeÚsave_src_to_cmakerø  r+   ÚCppCompileErrorr$   ÚstructÚpackr   r—   rØ   ÚrandintÚiinfoÚint64Úmaxrg  r  r  Ú	enumerateÚtorchbind_constantsÚ_libraryÚfake_class_registryrX   r�  r  r  r  rd   Ú_pickle_saverM  ÚROCmCodeCacheÚCUDACodeCacheÚXPUCodeCachers  r�   rŠ   Úaot_kernels_orV  rr  r>   rÊ   r\  r£  rd  r/  rä   Ú$torch._inductor.rocm_multiarch_utilsr8  Úembed_kernel_binaryrö   Ú_cuda_compilerÚwhichr®  r7   r=   rA  rC  r(  r8   r?   r4   Úsave_kernel_asm_to_cmaker   Úsave_link_cmd_to_cmakerí  Úcross_target_platformÚtellr  r  Úcreate_kernel_information_json){rˆ  r\  r£  r¤  r¥  r  r¦  Úgenerated_filesÚpicked_vec_isaÚvec_isa_cmd_genÚcpp_commandÚspecified_output_pathÚspecified_artifact_nameÚwrapper_keyrn  rð  Úmodel_class_nameÚ
class_namer   Úwrapper_path_operatorÚkernel_path_operatorÚ
cmake_pathr  r  r�  ÚlockÚextern_kernel_nodes_jsonr  Ú	meta_jsonrµ  r¶  Úkernel_meta_jsonÚ	output_soÚall_cudar  rz   r   Ú
total_sizer%  Úserialized_weightsÚbuf_viewr,  ÚpoolÚweights_dictrá  Úuse_external_weightsr/  Úexternal_weights_pathÚexternal_weights_filenameÚcompile_commandÚwrapper_build_optionsÚkernel_build_optionsÚheader_fileÚ
cpp_prefixÚwrapper_builderÚwrapper_compile_cmdÚ	wrapper_oÚkernel_builderÚkernel_compile_cmdÚkernel_oÚcompile_flagsrÈ  Úaot_constantsÚmagic_numberÚ	f_weightsr  Úcustom_obj_idxÚqual_name_to_idÚconstantÚcustom_obj_nameÚcustom_obj_bytesÚcustom_obj_pathÚconstants_config_jsonÚ	cache_clsÚgpu_codecacheÚgpu_kernels_oÚcubins_oÚ	asm_filesÚfatbin_cmdsÚcubins_to_embedÚldÚobjcopyÚkernelsÚkernel_namer^  rî   rï   r8  ÚsuccessÚnvcc_dirrš  rJ  Úcombined_objÚoutput_namerñ  Úso_build_optionsÚobj_srcsÚ
so_builderÚlink_cmdÚlinker_flagsÚweight_filer  Úo_filerq  Ú
page_size_Ú	page_sizeÚf_soÚso_sizeÚkernel_infoÚkernel_info_jsonr'  r(  r)  rò   rÄ  rÂ  r¾  rñ   r*  r+  r  rï  r¹  s{   &fff&d$                                                                                                       @@@@@@@@@@@@@r„   ÚcompileÚAotCodeCompiler.compileO
  sÑ  ÿÿø€ ð 0@ˆäÔä%›ˆÜ$ØØÜ-Ø&Ø'ØŸ™ôô
ˆô ˜?×;Ñ;Ó=Ó>ˆô ×ÒÓ×JÐJ ;°%Ñ#7×JÐJ¸E¿N¹Nð 	ô +¬6×+>Ñ+>×+JÑ+JÓKñ	
Ø!Ø#ô ×Ñ×/×/Ð/ØŸ9™9 l°KÐ%@ÓAˆLØˆKä$)ØØØØ/Ü×#Ñ#×BÑBô%
Ñ!ˆ�\ð =¸\¸NÈ"ÐMØõð 	ô ØØØØ/Ü×#Ñ#×BÑBô
‰ˆˆ;ð ˆØˆÜ×"Ñ"×2×2Ð2äÜ—‘—‘Ü—G‘G—O‘O¤B§G¡G§O¡O´HÓ$=Ó>ØØØ"Øó÷ô ð ä#)×#6Ñ#6×#UÑ#UÐ Ø/Ð0@Ð/AÐB�
ØŸf™f›h�ð
  ×'Ñ'Ð(<ÀÀ*ÀÈQÐ>OÓPß‘WÐ0°Z°LÀÐ2BÓCß‘WÐ1°j°\ÀÐ3DÓEð ô
 "'ØØØ"7Ø(ô	"‘��;÷+ô: ˜d×#Ô# qð	ð �L‰L˜,¨¨k¸4Ð@ÔAØ�G‰GŒIÜ�G‰G×Ñ §¡°%ÐÔ8÷ $ô ×Ñ×&×&Ð&Ø×"Ñ" <Ô0Ü×&Ñ&×7×7Ð7Ø×&Ñ& {Ô3Ü×&Ñ&×6×6Ð6Ø×&Ñ& {Ô3ä×ÑÐ>ÀÔMÜ×ÑÐ=¸{ÔKÜØôô
 ,õ	
ô 	Øôô
 +õ	
ô ×"Ñ"×2×2Ð2Ü× Ñ Ð!=¸{ÔKÜØôô
 /õô !% \Ó 2ÐÜ# KÓ0ÐØ1×8Ñ8¸;ÕFÐØ ×'Ñ'×)Ò)Ø×#Ñ#¨TÐ#Ô2ÜœÐ/Ó0Ð3CÕCÓDˆ
÷@	ó @	õD 	3ä“>ˆÙÜ�G‰G�L‰L˜ ;°Õ#8Ó9Ä<ô
ˆ÷ ŠTß-Ü+.Ø)×5Ñ5°gÓ>ó,Ð(ô Ð2°C×8Ô8¸AØ—G‘GÐ:Ô;÷ 9ô ×&Ñ&×.×.Ð.Ø#×*Ñ*Ð+CÔDä×*Ñ*×3Ñ3ˆHØ*5ˆHÐ&Ñ'ð �O‰OÔ2°;Ó?Ô@ô Ø%×/Ñ/Ø,×1Ñ1Ð2°.ÐAóóˆIô
 ×+Ñ+×4Ñ4×:Ñ:Ö<‘��1Ü! !¤S×)Ò)´¸A¼s×1CÔ1CÜ(Ð)MÓNÐNñ =ô �i ×%Ô%¨Ø—‘œŸ
š
¤6×#6Ñ#6×#?Ñ#?Ó@ÔA÷ &ô  #Ø$×.Ñ.Ø+×0Ñ0Ð1°Ð@óó Ðô
 �KŠK˜	Ð#3Ô4ä×"Ñ"×*×*Ð*Ø×&Ñ& yÔ1Ü×*Ñ*×;×;Ð;Ø#×*Ñ*Ð+;Ô<÷ +ô ×#Ñ#×/Ò/äÐ.×:Ñ:¸5ÓAÓBð ÷
 “sô à!ŸOšOó—s—s’sô à!ŸOšOóó ˆHó õ4ô ×#Ñ#×;×;Ð;Ü×&Ñ&×GÑGÈ=ÕXä!Ø.Àd÷ö ð
 %*§O¢Oó&á$3˜DØ u×'=Ñ'=Ñ=÷ ˜Ù$3ñ&�N÷
 &�~ÝIð .0˜Ø+-˜Ø%&˜
Û$2˜DØ %× DÑ DÀTÓ J˜AÙ 0°Ó 3˜AØ#ŸN™N¨:Ô6Ø!ŸL™L¨œOØ&ç#+ñ !"à&'¬+¥o¸Õ&9¼kÕ%IÌKÕ%WõšJñ %3ô .7°zÓ-BÐ*ð %+§N¡N°ZÕ$?×#LÑ#LØ.ó$˜ð %+×$4Ñ$4°XÓ$>˜	÷"õ "ñ  0×1Ô1°Tà%)§X¡X¨g´u¼SÀÓ=PÓ7QÖ%R Ù $ñ &S÷ 2ñ
 %à-0Ð*÷uð ðx &)Ð"ä×"Ñ"×CÑCÐGWÔWä&ð %*§O¢Oóñ
 %4˜DØ u×'=Ñ'=Ñ=ô˜×5Ñ5°dÕ;Ø!×@Ñ@ÀÓFÜ,¨U¯_©_¸TÕ-BÓCð>ò ñ %4ñó	 �ð  ×&Ñ& |Ô4äÐ0Ó1ˆKä5NØó6Ñ2Ð Ð"2÷ $×(8ä"ØUóð ð %)Ð!ß#Ø/D×/IÑ/IÐ.JÈ-Ð,XÐ)Ü(+Ø)×3Ñ3Ð4MÓNó)Ð%ð
 ˜EŸN™NØ˜{Ø"Ð$4Ø+Ð-AØ#Ð%6Ø˜>ð/ˆOô %:ñ %Ø!ð%ä!'×!4Ñ!4×!EÑ!EÔEð%ð "ñ%Ð!ô
 $9ñ $Ø!ð$à!ñ$Ð ô ×"Ñ"×5×5Ð5¿k»kÜ!Ð":ÐRV×WÖWÜ"9Ø#¨e¯n©nô#�Kô @RØ#Ø#ñ@ô *0×)<Ñ)<×)MÑ)MÔ%Mð@ð *ñ	@Ð)Ô<ô &<¸KÓ%HÐH�zÖHÜBTØ&Ø'ñCð .ñCÐ,Ô?÷ Xô" )ÜÐ.×3Ñ3Ó4Ø$ÜÐ4×;Ñ;Ó<Ø1ô	ˆOð #2×"BÑ"BÓ"DÐØ'×<Ñ<Ó>ˆIä'ÜÐ-×2Ñ2Ó3Ø#ÜÐ4×;Ñ;Ó<Ø0ô	ˆNð "0×!@Ñ!@Ó!BÐØ%×:Ñ:Ó<ˆHä�I‰IÐ;Ð=PÔQÜ�I‰IÐ:Ð<NÔOÜ×"Ñ"×3×3Ð3ä #Ø)×3Ñ3Ø0×5Ñ5Ð6Ð6IÐJóó!�ð
 &×8Ñ8¸ÔGØ×&Ñ& }Ô5Ø×9Ñ9¸*ÀkÔRØ×1Ñ1°*¸lÔKØ×&Ñ& zÕ2ðØ#×)Ñ)Ô+ð ×$Ñ$Ô&ç#Ø 2�Ø �ß'Ü$*§K¢K°°[Ó$A�MØ,Ò4Ü,Øaóð ô Ð3°T×:Ô:¸iØ!Ÿ™Ð(:Ô;÷ ;à#×*Ñ*Ð+@ÔAøô  $ÜœŸš q¬%¯+ª+´e·k±kÓ*B×*FÑ*FÈÓM×RÑRÓTó �ô !'§¢¨D°+Àµ/À<Ó P�á& }´c·l±lÓCˆHØˆNð !ˆOÜ4=Ø×)Ñ)×/Ñ/Ó1÷5Ñ0�Ñ 0  xô ØœeŸn™n×@Ñ@×QÑQ÷ò ð  (×0Ñ0�HÜ! (¬E¯H©H×,AÑ,A×BÒBÜ(Ð+FÄtÈHÃ~ÐFVÐ)WÓXÐXÜ%?Ð$@ÀÐ@PÐ"Q�ä—	‘	Ð9¸4ÀÔQà(7� Ñ%Ü#(§8¡8×#8Ñ#8¸Ó#BÐ Ü"$§'¡'§,¡,Ø)×0Ñ0°/ó#�ô ˜_Ð.>ÀÔEØ×&Ñ& ×7ñ)5÷, Ü(*¯©¯©Ø)×0Ñ0Ð2Kó)Ð%ô Ð/°×5Ô5¸Ø—G‘GœDŸJšJ Ó7Ô8÷ 6à×&Ñ&Ð'<Ô=ð œØœØ”|ð÷ ‰cœEŸM™M×-×-Ð-‘&°;ÄÓNð	 ñ &›KˆMØ)×7Ñ7×<Ñ<Ó>ˆMà×'Ñ'×-Ñ-Ô/çÜ×&Ñ&×=×=Ñ=Ü(ØVóð ð ˆHØˆIØIKˆKß”;Ø9;�Ý0Ð1BÓC‘��GÝ!¤!§'¢'×"6Ò"6Ð8NÐPRÓS�Ý*>×*DÒ*D×*JÑ*J×*LÑ&�K Ø"¨'Ô1ñ !à#(¨¥<Ð/�xÖ/Ø!×(Ñ(¨Ô2à!&Õ'FÓ'HÕ!I�Jä×+Ñ+×B×BÑBØ'¨6Ô1ä Ÿ=™=×,Ñ,Ò4Ø'×.Ñ.à$,Ø$.Ø$)§I¡IÐ.@Ó$AØ$)§I¡I¨kÓ$:ð	!"õõô
 $&§7¡7§>¡>°(×#;Ò#;Ü&2ð'+à+3¨*ð 5_ð%`ó'"ð !"ñ 'Là-5Ø3=Ø-1ô	'˜G÷ $+Ü&2Ø&UÐVaÐUbð ccð %dó'"ð !"ô
  ŸH™HÐ%DÀjÔQä×*Ñ*×>×>Ô>Ø'×.Ñ.°
¸KÐ/H×Iñq +M÷v �;ÝEå-×<Ó<Ó>�DÜ &§£¨[Ó 9�IØÒ'¼¿¹¿¹ÈÓ9NÐ-N¨XÖ-NÜ$&§G¡G§L¡L°¸;Ó$G˜	ÜŸ7™7Ÿ>™>¨)×4Ò4Ø(1˜I÷"ñ "ô& %Ð%:ÐRV×WÖWÙ*×,Ô,°å˜TŸX™X o°{ÓCÔD÷ -÷ X÷
 #ðÝ'BØ+ÜŸG™GŸO™O¨IÓ6Ý)9Ó);ô(˜ð
 !Ÿ™¨Ô5õ 'MÈYÓ&WÑ#ˆK˜Ü4Ø&Ø'ØŸ™Ø"3ô	 Ð÷  °Ô!5Ü#8Ø#Ø*Ø +Ø"Ÿ^™^Ø&7ò
!ô$Ð ð& " 8¨XÐQ¸ÐQÈÐQˆHÜ#Ø Ø Ø%Ø,ô	ˆJð "×2Ñ2Ó4ˆHØ"×7Ñ7Ó9ˆIä�I‰IÐ/°Ô:ô �l C×(Ô(¨AØ—‘˜”Ø—‘Ð-Ð.AÐ-BÀ"ÐEÔFØ—‘Ð*¨8¨*°BÐ7Ô8÷ )ô
 �k 3×'Ô'¨1Ø—‘˜”Ø—‘Ð-Ð.@Ð-AÀÐDÔEØ—‘Ð*¨8¨*°BÐ7Ô8÷ (ô
 ×"Ñ"×3×3Ñ3Ü"Ø)×3Ñ3Ø0×5Ñ5Ð6Ð6HÐIóó �ð
 !×3Ñ3°LÔAØ×&Ñ& |Ô4Ø×&Ñ&¥~Ô6÷ $Ü"%Ø-×7Ñ7Ø4×9Ñ9Ð:Ð:QÐRóó#�Kô
 ˜k¨4×0Ô0°IØ!Ÿ™Ð(:Ô;Ø!Ÿ™¬¯ª°C¸Ó(FÔG÷ 1ð $×*Ñ*¨;Õ7ð $×*Ñ*¨8Ô4Ø×0Ñ0°¸XÔFô ×'Ñ'×>×>Ñ>ÜŸ™×)Ñ)Ò1à×7Ò7¸
ÀIÔNØ#×*Ò*¨9Õ5ð  ; Ð:°Ð:�HØ#×*Ò*¨8Ô4Û'˜Ø"×4Ñ4°ZÀÖEñ  (ð ×1Ò1°*Ö=à× Ñ Ô"Û&�FØ Ô.Ù ä—I“I˜fÖ%ñ	 '÷ $Ü×*Ñ*×@Ò@ÀIÔMÜ*Øióð õ"-ñH "/£�JÜ # E¨:Ó 6�Iä˜i¨×/Ô/°4Ø"&§)¢)£+˜àŸ
™
 4¨9°wÀÕ7JÕ+JÕ#KÔLØŸ
™
Ð#5Ô6ØŸ
™
¤6§;¢;¨s°LÓ#AÔB÷ 0ô ×&Ñ&×.×.Ð.Ø#×*Ñ*¨9Ô5÷k ôn ×5Ó5Ó7¸1Ô<ÜŸ/š/×/Ñ/×NÒNÓPˆKÜ!Ÿw™wŸ|™|Ø%×,Ñ,Ð.Gó Ðô Ð&¨×,Ô,°Ø—‘œŸ
š
 ;°qÔ9Ô:÷ -à×"Ñ"Ð#3Ô4ä×Ñ×&×&Ð&ð #Ð"àÐ÷W÷ ð ú÷: $×#Ð#ú÷Z 9×8Ð8ú÷, &×%Ð%üòT&÷` 2×1Ð1ú÷g÷ ð üòB÷d X×WÐWûôh ×+Ñ+¬YÐ7ô Ø0´C¸³FÔ:Ü*Øsóà ð!ð �Gûðú÷$ ;×:Ð:ú÷X 6×5Ð5ú÷j -×,Ð,ú÷ X×WÐWûõ  &×8Ò8ô 
ÜŸšð@ôó 8GÑ3˜J¨Ø$ŸO™OÝ 4Ø$.°¸RÀó!"öô 8Gð
ú÷j )×(Ð(ú÷
 (×'Ð'ú÷. 1×0Ð0ú÷b 0×/Ð/ú÷[ �TˆTú÷x -×,Ð,úsT  Ç/A>Ad?ÊAAeÓ7AlÔAe'	Ô''AlÕCAlØ!AlØ=>Ae;	Ù;BAlÜAlÜ+>AlÝ*AlÞAAlß5AlàAf(	àAfà3Afà9Af(	áC&Af(	ä+,AfåAf(	å#=Alæ Af<æ8AAf<ç;A Alè<AléB%Alë7AlìA.Ag	í:E=Aló8AgôAlô Alô,:Alõ&Ah	õ8G;Alý4>Alþ2&Ah*	ÿAAlÁ@.AAlÁA> AlÁBAlÁB=A9AlÁD7CAlÁG=!AlÁHAAlÁI( AlÁJ	AAlÁK(AAlÁL-!AlÁMAi	ÁMAh>ÁM;Ai	ÁNAlÁNAAi&ÁOB6AlÁR<Ak	ÁSAlÁS(<Ak	ÁT$(AlÁUB"AlÁW/8Ak,	ÁX'AAlÁZC	AlÁ]AAlÁ^'A/Al 	Á`'AlÁ`>AlÁc(Al(Ád?Ae	ÁeAe$	Áe'Ae8Áe2	AlÁe;AfÁf	AlÁfAf(	ÁfAf%Áf	Af(	Áf(Af9Áf3AlÁgAgÁg	AlÁgAhÁg0AhÁhAhÁhAlÁhAh'Áh!	AlÁh*Ah;Áh5	AlÁh>AiÁi		Ai	ÁiAi#Ái	AlÁi&AAkÁj=AlÁk AkÁkAlÁkAkÁk	AlÁkAk)Ák#	AlÁk,Ak=Ák7	AlÁl AlÁl	AlÁlAl%	Ál(Al9	r{   N)r}   r~   r   r€   rÌ  rY  rò  r‚   r{   rƒ   r„   r¡  r¡  J
  s   † ñð ôVó ôVrƒ   r¡  zCDLL | NoneÚ_libgompc               ó$   € V ^8„  d   QhRRRRRR/# )r»   rh  rˆ   rÕ  r   r½   z list[c_void_p] | c_void_p | Noner{   )r¾   s   "r„   r¿   r¿   ,  s'   € ÷ 0Dñ 0D˜#ð 0D cð 0DÐ.Nñ 0Drƒ   c                óˆ  a€ R  V3R lloV Uu. uF  pS! V4      NK  	  ppV P                  R4      '       g   \        V R,           4      hRp\        V P                  R4      4       F-  w  rVV^ 8X  d   \        P
                  ! V4      p\        WF4      pK/  	  \        V4      '       g   \        V R,           4      h\        4       p\        VP                  P                  V4       F'  w  r‰VP                  '       g   K  W—VP                  &   K)  	  V'       d   V\        V4      ) R1 V! V/ VB p
V
f   R# \        V
\         \"        34      '       d�   V
 Uu. uF  q»f   \$        P&                  ! . 4      MTNK   	  p
pV
 F5  p\        V\$        P(                  4      '       d   K%  \        V R,           4      h	  \$        P*                  P,                  P/                  V
4      # \        V
\$        P(                  4      '       g   \        V R,           4      h\$        P*                  P,                  P1                  V
4      # u upi u upi )	c               ó    € V ^8„  d   QhRRRR/# )r»   rÚ  r   r½   r{   )r¾   s   "r„   r¿   Ú'custom_op_wrapper.<locals>.__annotate__/  s   € ÷ ñ ˜ð  ñ rƒ   c                óú   <€ \        \        V 4      4      R 8X  d*   \        P                  P                  P                  V 4      # \        V \        \        34      '       d   \        V 4      ! V3R lV  4       4      # V # )z<class 'PyCapsule'>c              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5irÃ   r{   )rÅ   r¹   Úconvert_args   & €r„   rÇ   Ú9custom_op_wrapper.<locals>.convert_arg.<locals>.<genexpr>4  s   øé € Ð9±S°™[¨Ÿ^˜^³Sùs   ƒ)	rˆ   r  rØ   r  Ú_aotiÚ&alloc_tensor_by_stealing_from_void_ptrrã  r®  rÓ   )rÚ  rû  s   &€r„   rû  Ú&custom_op_wrapper.<locals>.convert_arg/  sX   ø€ ÜŒt�C‹y‹>Ð2Ô2ä—8‘8—>‘>×HÑHÈÓMÐMÜ˜œd¤E˜]×+Ò+Ü˜”9Ô9±SÓ9Ó9Ð9àˆJrƒ   z
torch.ops.z, can not be called through custom_op_wrapperNrÁ   z, can not be loaded through custom_op_wrapperz returns a list of non-tensorsz returns a non-tensor)rˆ  r%  r”  rÿ   Ú	importlibÚimport_modulerÊ   r>  r°  rÓ  rÏ  rÔ  Ú
kwarg_onlyrz   r¨  rã  r®  rÓ   rØ   Útensorr"   r  rý  Ú#unsafe_alloc_void_ptrs_from_tensorsÚ!unsafe_alloc_void_ptr_from_tensor)rh  rÕ  rÚ  Úconverted_argsÚfuncr©  rh  rÒ  Úfunc_argÚconv_argrP  Úrrû  s   &*          @r„   Úcustom_op_wrapperr  ,  sÒ  ø€ ÷ð ñ 37Ó7±$¨3‘k #Ö&±$€NÐ7à�=‰=˜×&Ò&Ü˜RÐ"PÕPÓQÐQØ€DÜ˜"Ÿ(™( 3›-Ö(‰ˆØ�Œ6Ü×*Ò*¨1Ó-ˆDÜ�tÓŠñ )ô
 �D�>Š>Ü˜RÐ"PÕPÓQÐQô ‹V€Fä! $§,¡,×"8Ñ"8¸.ÖIÑˆØ××ÒØ$,�8—=‘=Ó!ñ J÷ ØœC ›K˜<™>Ð*á�>Ð, VÑ,€FØ‚~Ùä�&œ4¤˜-×(Ò(á@FÓGÁ¸1¢i”%—,’,˜rÔ"°QÒ6ÁˆÐGÛˆAÜ˜a¤§¡×.Ô.Ü$ RÐ*JÕ%JÓKÐKñ ô �x‰x�~‰~×AÑAÀ&ÓIÐIä�fœeŸl™l×+Ò+Ü˜RÐ"9Õ9Ó:Ð:Ü�8‰8�>‰>×;Ñ;¸FÓCÐCùòI 8ùò8 Hs   �H:Å$H?Úprecompiled_headersr‰  c               ó(   € V ^8„  d   QhRRRRRRRR/# )r»   Úheaderrˆ   Úhashable_cmd_linerÀ  r   r½   r{   )r¾   s   "r„   r¿   r¿   h  s6   € ÷ Cñ CØðCàðCð ðCð 	ñ	Crƒ   c                ó"  € \         '       d   \        R 4      hVP                  RR4       \        P                  ! 4       ;_uu_ 4       p\        V4      R,          pVP                  RV  R24       \        \        V4      RR \        V4      \        R/ VBRR/B R7      pVP                  4        R	 R
 lpV! VP                  4       4      pRRR4       \        R/ VBRR/B p\        RV  R2RVX,           \        VP                  4       4      ,           \        R7      w  rš\        V
V
VR7      p\         P"                  ! \$        RR7       \'        \         P(                  P+                  \$        V	 R24      V34       V
#   + '       g   i     L»; i)z>CppBuilder does not currently support precompiling on Windows!rP  Nz
header.hppz
#include <z>
ÚpreprocessingTr¬  c               ó    € V ^8„  d   QhRRRR/# )r»   rè  rˆ   r½   r{   )r¾   s   "r„   r¿   Ú(_precompile_header.<locals>.__annotate__ˆ  s   € ÷ 	1ñ 	1¨ð 	1°ñ 	1rƒ   c                ó|   € \         P                  ! RRV 3RRR7      pVP                  P                  4       R,          # )z„Reading the whole preprocessed header in for hashing is very expensive,
but calling a fast hashing utility in a subprocess is cheap.ÚopensslÚsha512T)r?  rÔ  r`  )rA  rB  rE  rÿ   )rè  Ú
cmd_outputs   & r„   Ú_get_file_checksumÚ._precompile_header.<locals>._get_file_checksumˆ  s<   € ô $ŸšØ˜H hÐ/ÀÈ4ôˆJð ×$Ñ$×*Ñ*Ó,¨RÕ0Ð0rƒ   Úprecompilingr´  )r§  rœ  r—  r�  rŠ  r  éüÿÿÿr{   )rÇ  r%  Úpoprº  ÚTemporaryDirectoryr   rØ  r9   rˆ   r;   rø  r÷  rÒ  r<   Úget_compilerÚ_HEADER_DIRrù   rŒ  Ú_HEADER_LOCK_DIRÚ_worker_compile_cpprú   rÉ   )r  r  rÀ  Úpreprocessing_dirÚpreprocessing_headerÚpreprocessorr  Úpreprocessor_hashÚheader_build_optionÚheader_hashÚheader_full_pathÚcpp_builders   &&,         r„   r‡  r‡  g  s�  € ÷ ƒ{ÜØLó
ð 	
ð ×Ñ˜ tÔ,ô 
×	$Ò	$×	&Ô	&Ð*;Ü#Ð$5Ó6¸ÕEÐØ×'Ñ'¨*°V°H¸CÐ(@ÔAÜ!ÜÐ)Ó*¨3¨BÐ/ÜÐ,Ó-Ü-ÑT°ÑTÈtÒTô
ˆð
 	×ÑÔõ	1ñ /¨|×/PÑ/PÓ/RÓSÐ÷' 
'ô* 0ÑU°/ÑUÐPTÒUÐÜ$)Ø˜V˜H CÐ(ØàØõ ä'Ð(;×(HÑ(HÓ(JÓKõLô "ô	%Ñ!€Kô ØØ Ø'ô€Kô ‡K‚KÔ ¨4Õ0ÜÜ
�‰�‰Ô%¨+¨°eÐ'<Ó=Ø	ˆôð
 Ð÷[ 
'×	&ús   ÁBE>Å>F	c               ó    € V ^8„  d   QhRRRR/# ©r»   r�   rˆ   r½   ry   r{   )r¾   s   "r„   r¿   r¿   ®  s   € ÷ ñ  3ð ¨:ñ rƒ   c                ó8   € V P                  R 4      '       d   R# R# )r³  z torch/csrc/inductor/cpp_prefix.hN)rˆ  rë   s   &r„   r‰  r‰  ®  s   € Ø×Ñ˜×ÒÙ1Ùrƒ   c               ó$   € V ^8„  d   QhRRRRRR/# )r»   r�   rˆ   r«  r¢   r½   r{   )r¾   s   "r„   r¿   r¿   ´  s!   € ÷ 	ñ 	 Cð 	°4ð 	ÀCñ 	rƒ   c                ó¾   € V P                  R^R7      ^ ,          p\        P                  P                  ;'       d    VR8H  pRV'       d   RMR RV'       d   RMT R	2# )
z‹Given a device type (and optionally whether we're in AOT Inductor mode), returns
the path to the cpp_wrapper header file to be precompiled.r  ©Úmaxsplitr³  ztorch/csrc/inductor/Úaoti_includeÚcpp_wrapperÚ/Ú	array_refz.h)rÿ   r)   rR  Úallow_stack_allocation)r�   r«  Úbase_deviceÚis_array_refs   &&  r„   r†  r†  ´  s_   € ð —,‘,˜s¨Q�,Ó/°Õ2€KÜ×&Ñ&×=Ñ=×VÐVÀ+ÐQVÑBV€Làß%‰>¨=Ð
9¸ß&‰;¨KÐ
8¸ð	<ðrƒ   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r»   Úbase_device_typerˆ   Úsourcery   Úexplicitúbool | Noner½   r¢   r{   )r¾   s   "r„   r¿   r¿   À  s2   € ÷ 	Kñ 	KØð	KØ#-ð	KØ9Dð	Kà	ñ	Krƒ   c                ó²   a€ Ve   V# Sf   R# V R8X  d   R# \         ;QJ d#    V3R l\         4       F  '       g   K   R# 	  R# ! V3R l\         4       4      # )NFr³  Tc              3  ó,   <"  € T F	  qS9   x € K  	  R # 5irÃ   r{   )rÅ   Úmarkerr:  s   & €r„   rÇ   Ú)_resolve_needs_vec_isa.<locals>.<genexpr>É  s   øé € ÐJÑ.I F˜ÖÓ.Iùr~  )rG  Ú_VEC_ISA_CPP_SOURCE_MARKERS)r9  r:  r;  s   &f&r„   Ú_resolve_needs_vec_isarB  À  sN   ø€ ð ÒØˆØ‚~ÙØ˜5Ô Ùß‹3ÔJÕ.IÓJ�3Œ3ÐJŠ3ÐJˆ3ÔJÕ.IÓJÓJÐJrƒ   c                  óÎ   € ] tR tRt$ Rt/ tR]R&   ]! ]P                  4      t	/ t
R]R&   ]R R l4       t]R	 R
 l4       t]R R l4       t]RR R ll4       t]R R l4       tRtR# )ÚCppCodeCacheiÌ  z�Compiles and caches C++ libraries.  Users of this class supply the source code to
be compiled, while compilation flags are set by CppBuilder.ú*dict[str, Callable[[], CDLL | ModuleType]]r/  r<  Úcpp_compile_command_flagsc               ó$   € V ^8„  d   QhRRRRRR/# ©r»   rú   rˆ   r�   r½   zCDLL | ModuleTyper{   )r¾   s   "r„   r¿   ÚCppCodeCache.__annotate__Ö  s"   € ÷ &ñ & #ð &¨Cð &Ð4Eñ &rƒ   c                	ó.   € \         P                  ! V 4      # rÃ   )r	   ÚLoadLibrary)rú   r�   s   &&r„   Ú_load_library_innerÚ CppCodeCache._load_library_innerÕ  s   € ä×Ò Ó%Ð%rƒ   c               ó$   € V ^8„  d   QhRRRRRR/# rH  r{   )r¾   s   "r„   r¿   rI  Ú  s"   € ÷ ñ  ð ¨3ð Ð3Dñ rƒ   c           	     	óÒ  €  V P                  W4      pW#n        V#   \        \        3 d»   pR \	        T4      9   dZ   \
        P                  P                  R4      '       d5   \        P                  ! R4      s
T P                  Y4      pY#n        Tu Rp?# R\	        T4      9   d<   \        T R\        P                  ! 4        R\        P                  ! 4        R24      Thh Rp?ii ; i)Úgompz/usr/lib64/libgomp.so.1Nz(failed to map segment from shared objectz3.  The most common reason this may occur is if the zl folder is mounted with noexec (e.g., by default Docker mounts tmp file systems as noexec).  Please remount zi with exec enabled, or set another temporary directory with TORCHINDUCTOR_CACHE_DIR environment variable.)rL  r�   ÚImportErrorrÆ  rˆ   rù   rú   rû   r	   rK  rô  rº  Ú
gettempdir)rˆ  rú   r�   rP  rÈ  s   &&&  r„   Ú_load_libraryÚCppCodeCache._load_libraryÙ  sÝ   € ð	Ø×,Ñ,¨TÓ7ˆFØŒJØˆMøÜœWÐ%ô 	Øœ˜Q›Ô¤B§G¡G§N¡NÐ3L×$MÒ$Mô  ×+Ò+Ð,EÓF�Ø×0Ñ0°Ó;�Ø ”
Ø•Ø9¼SÀ»VÔCÜØ�cÐLÌX×M`ÒM`ÓMbÐLcð d3ä3;×3FÒ3FÓ3HÐ2Ið J]ð]óð
 ðð ûð	ús'   ‚ ›C&¬4C!Á!.C!ÂC&ÂAC!Ã!C&c               ó    € V ^8„  d   QhRRRR/# r+  r{   )r¾   s   "r„   r¿   rI  ñ  s   € ÷ ñ ¨Cð °Jñ rƒ   c                ó   € R# )zO
Given a device type, returns the path to a CPP header file to be precompiled.
Nr{   ©rˆ  r�   s   &&r„   Ú_get_uncompiled_headerÚ#CppCodeCache._get_uncompiled_headerð  s   € ñ
 rƒ   Nc               ó8   € V ^8„  d   QhRRRRRRRRRR	R
RRRRR/# )r»   Ú	main_coderˆ   r  Ú	submit_fnr   rP  úSequence[str]Úoptimized_codery   Úneeds_vec_isar<  Úkernel_needs_vec_isar½   r{   )r¾   s   "r„   r¿   rI  ø  sd   € ÷ uñ uàðuð ðuð ð	uð
 #ðuð #ðuð #ðuð *ðuð 
ñurƒ   c           	     ó
  a a!a"a#a$a%€ VP                  R^R7      ^ ,          p\        W�V4      p	\        W…V4      pV	'       g	   V'       d   \        4       M\        p
/ S P                  CRVRVR\
        P                  ! 4       /Cp/ VCRV	'       d   T
M\        /Cp/ VCRV'       d   T
M\        /Cp\        4        VRJ;'       g    VR8g  p\        RR	\        V4      R
V/VB p\        RR	R/VB pR R lpV! V4      pV! V4      p\        VRV RV 2R7      w  o#pV'       d   \        VRVR7      w  ppM\        P                  pS#S P                  9  Ed
   ^ RIHp \        P                   P#                  \%        4       S#R,           4      pRo"Ro$\
        P&                  '       dg   \(        '       g[   S P+                  V4      ;p'       d   \-        VV3R
V/VB Vn        V'       d&   \1        V4      ;p'       d   \-        VV3/ VB Vn        \3        V4      w  pp\5        VVVVR7      pV'       d�   \3        V4      w  pp\5        VVVVR7      p\5        VVP7                  4       VP7                  4       .\        R/ VB VR7      p\8        P:                  ! \<        VVVV34      o%\?        VP7                  4       4      o!M6\8        P:                  ! \<        VV34      o%\?        VP7                  4       4      o!R V!V V"V#V$V%3R llp VeM   V! V\@        R7      ;_uu_ 4        \        P                   PC                  S!4      '       g	   V! S%4      o"RRR4       V S P                  S#&   S P                  S#,          #   + '       g   i     L2; i)zTCompile and load a C++ library.  Returns a callable that returns the loaded
library.r  r/  r  rP  rï  rª  Nr³  rî  r1  Tc               ó    € V ^8„  d   QhRRRR/# )r»   Úbuild_optionrª   r½   rˆ   r{   )r¾   s   "r„   r¿   Ú-CppCodeCache.load_async.<locals>.__annotate__5  s   € ÷ 	!ñ 	!Ð4Dð 	!Èñ 	!rƒ   c                ó:   € \        RRV R7      P                  4       # )z¡Writing the code to file will calculate a hash, which we need to vary if
the command line flags change.  This implements a mostly-generic way of
validating that.r  r©  r¬  )r9   rt  )rc  s   &r„   Úget_hashable_command_lineÚ:CppCodeCache.load_async.<locals>.get_hashable_command_line5  s!   € ô Ø #°<ôçÑÓ ð!rƒ   zmain.cppÚ ©r—  zoptimized.cppr
  r  )rz   r­  r®  rñ  c               ó   € V ^8„  d   QhRR/# ©r»   r½   r   r{   )r¾   s   "r„   r¿   rd  •  s   € ÷ ñ ˜Sñ rƒ   c                 óÄ   <€ Sf[   Se   SP                  4        S! 4       p V e   \        R\        V 4       24      hSP                  SS4      oSf   \        RS 24      hS# )Nz'worker_fn expected to return None, got zFailed to load library from )rP  r%  r  rS  )rP  Úbinary_pathrˆ  Úfuturer�   rÐ  Ú	worker_fns    €€€€€€r„   Úload_fnÚ(CppCodeCache.load_async.<locals>.load_fn•  sv   ø€ à’;ØÒ)ØŸ™œÙ&›[�FØÒ)Ü,ØEÄdÈ6ÃlÀ^ÐTóð ð ×+Ñ+¨K¸Ó=�CØ’{Ü,Ø:¸;¸-ÐHóð ð �
rƒ   r  r{   )"rÿ   rB  rC   rB   rF  r)   rê  r5   r;   r¢   rÒ  rù   Údevnullr/  ry  r  rú   rÉ   rŽ  Úcpp_cache_precompile_headersrÇ  rX  r‡  rˆ  r‰  r?   r9   r÷  rR  r   r!  r@   rz  rû   )&rˆ  r[  r  r\  rP  r^  r_  r`  r9  Úmain_needs_vec_isar§  Úshared_compile_commandÚmain_compile_commandÚoptimized_compile_commandr1  Úmain_build_optionÚoptimized_build_optionrf  Úmain_cmd_lineÚoptimized_cmd_lineÚ	main_pathrn  Úoptimized_pathr  Ú	lock_pathr  Ú	main_namerñ  Úmain_builderÚoptimized_nameÚoptimized_builderÚlinkerrp  rm  rn  r�   rÐ  ro  s&   f&&&&&&&                         @@@@@r„   Ú
load_asyncÚCppCodeCache.load_async÷  s¸  ý€ ð '×,Ñ,¨S¸1Ð,Ó=¸aÕ@ÐÜ3Ø¨ó
Ðô  6ØÐ.Bó 
Ð÷
 "×%9ô ŒNä ð 	ð
"
Ø×+Ñ+ð"
à˜;Ø˜;Ø¤×!1Ò!1Ó!3ñ	"
Ðð 
Ø$ð 
à×);‘~Äñ 
Ðð%
Ø$ð%
à×)=‘~Ä?ñ%
Ð!ô
 	Ôð &¨TÐ1×IÐI°[ÀEÑ5IˆÜ1ñ 
Ü˜nÓ-ð
à%ð
ð #ñ	
Ðô "7ñ "
àð"
ð (ñ	"
Ðõ	!ñ 2Ð2CÓDˆÙ6Ð7MÓNÐäØ�z¨NÐ+;¸1¸]¸OÐ)Lô
‰ˆˆY÷
 Ü %Ø Ð7Iô!ÑˆA‰~ô
  ŸZ™ZˆNà�c—i‘iÕÝ6äŸ™Ÿ™¤\£^°S¸7µ]ÓCˆIØ)-ˆFØˆCô ×2×2Ð2¿;»;Ø ×7Ñ7¸ÓDÐD�6ÖDÜ;MØØ%ñ<ð &2ð<ð /ñ	<Ð%Ô8÷ "Ô1GÈÓ1TÐ'T vÖ'TÜ@RàØ*ñAð 4ñ	AÐ*Ô=ô %KÈ9Ó$UÑ!ˆI�zÜ%ØØ!Ø-Ø%ô	ˆL÷ Ü$JØ"ó%Ñ!� ô %/Ø'Ø*Ø 6Ø)ô	%Ð!ô $Ø"à$×9Ñ9Ó;Ø)×>Ñ>Ó@ðô
 !6Ñ OÐ8NÑ OØ)ô	�ô &×-Ò-Ü'ØØ!Ð#4°fÐ=ó�	ô
 7°v×7RÑ7RÓ7TÓU‘ä%×-Ò-Ü'¨°\°Oó�	ô 7Ø ×5Ñ5Ó7ó�÷õ ð" Ò$Ù˜i´×>Ö>ÜŸ7™7Ÿ>™>¨+×6Ò6Ù!*¨9Ó!5˜÷ ?ð %ˆC�I‰I�c‰Nà�y‰y˜�~Ð÷ ?×>ús   Ì.M2Í2N	c               ó$   € V ^8„  d   QhRRRRRR/# ©r»   rÕ  r   rÒ  r½   r{   )r¾   s   "r„   r¿   rI  °  s!   € ÷ 1ñ 1˜ð 1¨ð 1°ñ 1rƒ   c                	ó0   € V P                   ! V/ VB ! 4       # rÃ   )r„  ©rˆ  rÕ  rÒ  s   &*,r„   rA  ÚCppCodeCache.load¯  s   € à�~Š~˜tÐ. vÒ.Ó0Ð0rƒ   r{   )r³  Nr{   NNN)r}   r~   r   r€   rÌ  r/  r�   rQ  rV  r‹  rF  rL  rY  rS  rX  r„  rA  r‚   r{   rƒ   r„   rD  rD  Ì  s“   ‡ ñCð 9;€EÐ5Ó:Ù˜uŸ{™{Ó+€KØ02Ð˜~Ó2àô&ó ð&ð ôó ðð, ôó ðð öuó ðuðn ô1ó ô1rƒ   rD  c               ó$   € V ^8„  d   QhRRRRRR/# )r»   r~  rˆ   Úcpp_builderszSequence[CppBuilder]r½   r4  r{   )r¾   s   "r„   r¿   r¿   ´  s&   € ÷ 	 ñ 	 Øð	 à&ð	 ð 
ñ	 rƒ   c                ó  € ^ RI Hp V! V \        R7      ;_uu_ 4        V FH  p\        P                  P                  VP                  4       4      '       d   K8  VP                  4        KJ  	  RRR4       R#   + '       g   i     R# ; i)r   r
  r  N)ry  r  rz  rù   rú   rû   r÷  rø  )r~  rŒ  r  Úbuilders   &&  r„   r!  r!  ´  sR   € õ /á	�)¤\×	2Ö	2Û#ˆGÜ—7‘7—>‘> '×">Ñ">Ó"@×AÔAØ—‘–ñ $÷ 
3×	2×	2Ò	2ús   �6A6ÁA6Á6B	c                  óì   € ] tR tRt$ / tR]R&   ]! 4       tR]R&   ]R R l4       t	RR	R
R/t
RtRtRt]P                  ! R4      t]R R l4       t]R R l4       t]RR R ll4       t]R R l4       tRtR# )ÚCppPythonBindingsCodeCacheiÁ  rE  r/  ri  Ú_loaded_module_namesc               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   Ú'CppPythonBindingsCodeCache.__annotate__Ç  s   € ÷ @ñ @˜ñ @rƒ   c                 	óì   € \         P                  P                  4        \         P                   F#  p \        P
                  P                  V R 4       K%  	  \         P                  P                  4        R # rÃ   )r�  r/  rV  r‘  r  r  r  r  s    r„   r‹  Ú&CppPythonBindingsCodeCache.cache_clearÆ  sI   € ä"×(Ñ(×.Ñ.Ô0Ü.×CÔCˆDÜ�K‰K�O‰O˜D $Ö'ñ Dä"×7Ñ7×=Ñ=Ö?rƒ   Úinclude_pytorchFÚsharedTr:  zkernel({}); Py_RETURN_NONE;rê   a?  
        // Python bindings to call {entry_func}():
        #define PY_SSIZE_T_CLEAN
        #include <Python.h>
        #include <sstream>
        #include <cstdlib>
        #include <cerrno>

        // This is defined in guards.cpp so we don't need to import PyTorch headers that are slooow.
        // We manually link it below to workaround issues with fbcode build.
        static void* (*_torchinductor_pyobject_tensor_data_ptr)(PyObject* obj);

        template <typename T> static inline T parse_arg(PyObject* args, size_t n) {{
            static_assert(std::is_pointer_v<T>, "arg type must be pointer or long");
            return static_cast<T>(_torchinductor_pyobject_tensor_data_ptr(PyTuple_GET_ITEM(args, n)));
        }}
        template <> inline int64_t parse_arg<int64_t>(PyObject* args, size_t n) {{
            auto result = PyLong_AsSsize_t(PyTuple_GET_ITEM(args, n));
            if(result == -1 && PyErr_Occurred()) [[unlikely]]
                throw std::runtime_error("expected int arg");
            return result;
        }}
        template <> inline uintptr_t parse_arg<uintptr_t>(PyObject* args, size_t n) {{
            auto result = PyLong_AsVoidPtr(PyTuple_GET_ITEM(args, n));
            if(result == reinterpret_cast<void*>(-1) && PyErr_Occurred()) [[unlikely]]
                throw std::runtime_error("expected int arg");
            return reinterpret_cast<uintptr_t>(result);
        }}
        template <> inline float parse_arg<float>(PyObject* args, size_t n) {{
            auto result = PyFloat_AsDouble(PyTuple_GET_ITEM(args, n));
            if(result == -1.0 && PyErr_Occurred()) [[unlikely]]
                throw std::runtime_error("expected float arg");
            return static_cast<float>(result);
        }}

        {extra_parse_arg}

        static PyObject* {entry_func}_py(PyObject* self, PyObject* args) {{
            try {{
                if(!PyTuple_CheckExact(args)) [[unlikely]]
                    throw std::runtime_error("tuple args required");
                if(PyTuple_GET_SIZE(args) != {arg_len}) [[unlikely]]
                    throw std::runtime_error("requires {arg_len} args");
                {call_entry_func}
            }} catch(std::exception const& e) {{
                PyErr_SetString(PyExc_RuntimeError, e.what());
                return nullptr;
            }} catch(...) {{
                PyErr_SetString(PyExc_RuntimeError, "unhandled error");
                return nullptr;
            }}
        }}

        static PyMethodDef py_methods[] = {{
            {{"{entry_func}", {entry_func}_py, METH_VARARGS, ""}},
            {{NULL, NULL, 0, NULL}}}};

        static struct PyModuleDef py_module =
            {{PyModuleDef_HEAD_INIT, "{entry_func}", NULL, -1, py_methods}};

        PyMODINIT_FUNC PyInit_{entry_func}(void) {{
            const char* str_addr = std::getenv("_TORCHINDUCTOR_PYOBJECT_TENSOR_DATA_PTR");
            if(!str_addr) {{
                PyErr_SetString(PyExc_RuntimeError, "_TORCHINDUCTOR_PYOBJECT_TENSOR_DATA_PTR must be set");
                return nullptr;
            }}

            char* endptr = nullptr;
            errno = 0;
            uintptr_t addr = std::strtoull(str_addr, &endptr, 10);
            if(errno != 0 || endptr == str_addr || addr == 0) {{
                PyErr_SetString(PyExc_RuntimeError, "Failed to parse _TORCHINDUCTOR_PYOBJECT_TENSOR_DATA_PTR");
                return nullptr;
            }}
            _torchinductor_pyobject_tensor_data_ptr =
                reinterpret_cast<decltype(_torchinductor_pyobject_tensor_data_ptr)>(addr);
            PyObject* module = PyModule_Create(&py_module);
            if (module == NULL) {{
                return NULL;
            }}
            #ifdef Py_GIL_DISABLED
                PyUnstable_Module_SetGIL(module, Py_MOD_GIL_NOT_USED);
            #endif
            return module;
        }}
        c               ó$   € V ^8„  d   QhRRRRRR/# )r»   rú   rˆ   r�   r½   r   r{   )r¾   s   "r„   r¿   r“  0  s!   € ÷ ñ  sð °ð ¸ñ rƒ   c                	ó„  € \        \        P                  P                  P                  P
                  4      \        P                  R &   V RV P                   2p \        P                  V,          #   \         d     Mi ; i\        P                  P                  Y14      pTf   \        RT RT 24      h\        P                  P!                  T4      pT\        P                  T&   \"        P$                  P'                  T4       TP(                  f   \        RT R24      hTP(                  P+                  T4       T# )Ú'_TORCHINDUCTOR_PYOBJECT_TENSOR_DATA_PTRrÁ   z!Failed to create module spec for z from rÄ  z has no loader)rˆ   rØ   r  Ú_dynamor  Ú'_torchinductor_pyobject_tensor_data_ptrrù   ÚenvironÚentry_functionr  r  ÚKeyErrorr   ÚutilÚspec_from_file_locationr%  Úmodule_from_specr�  r‘  rd  ÚloaderÚexec_module)rˆ  rú   r�   Úmodule_namerÑ  rÒ  s   &&&   r„   rL  Ú.CppPythonBindingsCodeCache._load_library_inner.  s  € ô ADÜ�H‰H×Ñ×#Ñ#×KÑKóA
Œ�
‰
Ð<Ñ=ð ˜˜Q˜s×1Ñ1Ð2Ð3ˆð	Ü—;‘;˜{Õ+Ð+øÜô 	Ùð	úä�~‰~×5Ñ5°kÓHˆØŠ<Ü Ø3°K°=ÀÀtÀfÐMóð ô —‘×0Ñ0°Ó6ˆØ#)Œ�‰�KÑ Ü"×7Ñ7×;Ñ;¸KÔHØ�;‰;ÒÜ Ð#3°K°=ÀÐ!OÓPÐPØ�‰×Ñ Ô'Øˆs   ÁA2 Á2B Á?B c               ó    € V ^8„  d   QhRRRR/# r+  r{   )r¾   s   "r„   r¿   r“  G  s   € ÷ .ñ .¨Cð .°Jñ .rƒ   c                	ó   € \        V4      # rÃ   )r‰  rW  s   &&r„   rX  Ú1CppPythonBindingsCodeCache._get_uncompiled_headerF  s   € ä% fÓ-Ð-rƒ   Nc               ó@   € V ^8„  d   QhRRRRRRRRRRR	R
RRRRRRRR/
# )r»   Úargtypesr]  r[  rˆ   r  r_  r<  r`  Únum_outputsr—   r\  r   rP  r¤  ry   r½   r{   )r¾   s   "r„   r¿   r“  K  sn   € ÷ =ñ =àð=ð ð=ð ð	=ð
 #ð=ð *ð=ð ð=ð ð=ð #ð=ð  ð=ð 
ñ=rƒ   c
           
     ón  a aa€ RP                  R \        V4       4       4      p
S P                  P                  \	        V4      S P
                  P                  V
4      S P                  S P                  P                  VR7      R7      pS P                  W+,           VVVV	VVR7      oRoR V VV3R llpV# )	ab  
Wrap a C++ function in fast Python bindings.

Args:
    argtypes: The types of args to ENTRY_FUNCTION(), e.g. ["float*", "long"]
    main_code: C++ source code containing ENTRY_FUNCTION().  Will be built at
        -O3 if kernel_code is None (to maximize performance in any kernels that
        are present), or -O1 otherwise (to minimize compile time).
    needs_vec_isa: Whether the generated wrapper requires CPU vectorized
        host helpers. If omitted, this is inferred from the generated
        source as a conservative fallback.
    kernel_needs_vec_isa: Whether the separately compiled kernel source
        requires CPU vectorized host helpers. Only relevant when
        kernel_code is provided.
    kernel_code: If present, C++ source code that will be built at -O3 and
        linked to main_code.

Returns:
    A python version of ENTRY_FUNCTION()
ru  c              3  óX   "  € T F   w  rR VP                  RR4       RV R2x € K"  	  R# 5i)z
parse_arg<zconst rê   z>(args, rý  N)r  )rÅ   r%  Úargtypes   &  r„   rÇ   ÚBCppPythonBindingsCodeCache.load_pybinding_async.<locals>.<genexpr>k  s4   é € ð 
á1‘
�ð ˜Ÿ™¨°2Ó6Ð7°xÀ¸sÀ!ÕDÛ1ùs   ‚(*)Ú	array_len)Úarg_lenÚcall_entry_funcÚ
entry_funcÚextra_parse_arg)r\  rP  r^  r_  r`  Nc               ó   € V ^8„  d   QhRR/# rk  r{   )r¾   s   "r„   r¿   ÚECppPythonBindingsCodeCache.load_pybinding_async.<locals>.__annotate__€  s   € ÷ 	7ñ 	7˜ñ 	7rƒ   c                 ó    <€ Sf5   S! 4       o\        S\        4      '       g   \        R\        S4       24      h\	        SS P
                  4      # )NzExpected ModuleType, got )rã  r   r%  r  rÊ   rž  )rˆ  Ú
get_resultrP  s   €€€r„   rn  Ú?CppPythonBindingsCodeCache.load_pybinding_async.<locals>.future€  sF   ø€ àŠ~Ù#›�Ü! &¬*×5Ò5Ü(Ð+DÄTÈ&Ã\ÀNÐ)SÓTÐTÜ˜6 3×#5Ñ#5Ó6Ð6rƒ   )	rÉ   r”  Úsuffix_templater¾   r¨  Úcall_entry_functionrž  rµ  r„  )rˆ  r«  r[  r  r_  r`  r¬  r\  rP  r¤  Ú	parseargsr±  rn  r¹  rP  s   f&&&&&&&&&   @@r„   Úload_pybinding_asyncÚ/CppPythonBindingsCodeCache.load_pybinding_asyncJ  sÃ   ú€ ðB —I‘Iñ 
ä'¨Ô1ó
ó 
ˆ	ð ×$Ñ$×+Ñ+Ü˜“MØ×3Ñ3×:Ñ:¸9ÓEØ×)Ñ)Ø×/Ñ/×6Ñ6ÀÐ6ÓMð	 ,ó 
ˆð —^‘^ØÕØØØ#Ø&Ø'Ø!5ð $ó 
ˆ
ð ˆ÷	7ò 	7ð ˆrƒ   c               ó$   € V ^8„  d   QhRRRRRR/# r‡  r{   )r¾   s   "r„   r¿   r“  ‹  s!   € ÷ ;ñ ; 3ð ;°#ð ;¸#ñ ;rƒ   c                	ó0   € V P                   ! V/ VB ! 4       # rÃ   )r¾  r‰  s   &*,r„   Úload_pybindingÚ)CppPythonBindingsCodeCache.load_pybindingŠ  s   € à×'Ò'¨Ð8°Ò8Ó:Ð:rƒ   r{   )r³  NNr`  Nr{   N)r}   r~   r   r€   r/  r�   ri   r‘  rQ  r‹  rF  rž  r¼  rµ  ÚtextwrapÚdedentr»  rY  rL  rX  r¾  rÂ  r‚   r{   rƒ   r„   r�  r�  Á  s»   ‡ à8:€EÐ5Ó:Ù,6«LÐ˜/Ó8àô@ó ð@ð 	˜5Ø�$ð!Ðð
 €NØ7ÐØ€OØ—o’oðU	óW€Oðr ôó ðð, ô.ó ð.ð ö=ó ð=ð~ ô;ó ô;rƒ   r�  c                  ó¬   a € ] tR tRt$ / tR]R&   ]R R l4       t]R V 3R ll4       t	RR	R
R	/t
RtRt]P                  ! R4      t]R R l4       tRtV ;t# )ÚCppWrapperCodeCachei�  rE  r/  c               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   Ú CppWrapperCodeCache.__annotate__”  s   € ÷ *ñ *˜ñ *rƒ   c                 	óB   € \         P                  P                  4        R # rÃ   )rÇ  r/  rV  r{   rƒ   r„   r‹  ÚCppWrapperCodeCache.cache_clear“  s   € ä×!Ñ!×'Ñ'Ö)rƒ   c               ó$   € V ^8„  d   QhRRRRRR/# r‡  r{   )r¾   s   "r„   r¿   rÉ  ˜  s!   € ÷ ;ñ ; 3ð ;°#ð ;¸#ñ ;rƒ   c                	óŒ   <€ \        R RR7      ;_uu_ 4        \        SV `  ! V/ VB uuRRR4       #   + '       g   i     R# ; i)Úcpp_wrapper_compileTr×  N)r'   r,  rÂ  )rˆ  rÕ  rÒ  r?  s   &*,€r„   rÂ  Ú"CppWrapperCodeCache.load_pybinding—  s5   ø€ ô Ð/Àt×LÖLÜ‘7Ò)¨4Ð:°6Ñ:÷ M×L×LÓLús	   —2²A	r–  Tr—  Úinductor_entry_cppzreturn inductor_entry_cpp({});a¼
  
        #include <torch/csrc/inductor/aoti_torch/c/shim.h>

        static inline std::vector<AtenTensorHandle> unpack_tensor_handle_list(PyObject* pyvec) {{
            std::vector<AtenTensorHandle> result;
            size_t result_len = PyList_GET_SIZE(pyvec);
            result.reserve(result_len);
            for (size_t i = 0; i < result_len; i++) {{
                PyObject* item = PyList_GET_ITEM(pyvec, i);
                if (item == Py_None) {{
                    result.push_back(nullptr);
                    continue;
                }}
                // AtenTensorHandle is essentially a pointer
                void* elem = PyCapsule_GetPointer(item, NULL);
                if (elem == nullptr && PyErr_Occurred()) {{
                    PyErr_Clear();
                    throw std::runtime_error(
                        "expected input handle to be a PyCapsule or None"
                    );
                }}
                result.push_back(reinterpret_cast<AtenTensorHandle>(elem));
            }}
            return result;
        }}

        static inline PyObject* pack_tensor_handle_list(const std::array<AtenTensorHandle, {array_len}>& arr) {{
            PyObject* result = PyList_New({array_len});
            for (size_t i = 0; i < {array_len}; i++) {{
                PyObject *elem =
                    arr[i] == nullptr
                        ? Py_NewRef(Py_None)
                        // Store AtenTensorHandle as PyCapsulate
                        : PyCapsule_New(reinterpret_cast<void*>(arr[i]), NULL, NULL);
                PyList_SET_ITEM(result, i, elem);
            }}
            return result;
        }}

        template <> inline std::vector<AtenTensorHandle> parse_arg<std::vector<AtenTensorHandle>>(PyObject* args, size_t n) {{
            return unpack_tensor_handle_list(PyTuple_GET_ITEM(args, n));
        }}

        PyObject* inductor_entry_cpp(std::vector<AtenTensorHandle>&& input_handles) {{
            // For outputs, we only allocate an array to hold returned tensor handles,
            // not the actual output tensor storage.
            std::array<AtenTensorHandle, {array_len}> output_handles{{}};
            try {{
                inductor_entry_impl(input_handles.data(), output_handles.data());
                if (PyErr_Occurred()) {{
                    return nullptr;
                }}
                return pack_tensor_handle_list(output_handles);
            }} catch(std::exception const& e) {{
                PyErr_SetString(PyExc_RuntimeError, e.what());
                return nullptr;
            }} catch(...) {{
                PyErr_SetString(PyExc_RuntimeError, "unhandled error");
                return nullptr;
            }}
        }}
        c               ó    € V ^8„  d   QhRRRR/# r+  r{   )r¾   s   "r„   r¿   rÉ  ê  s   € ÷ /ñ /¨Cð /°Jñ /rƒ   c                	ó   € \        V4      # rÃ   )r†  rW  s   &&r„   rX  Ú*CppWrapperCodeCache._get_uncompiled_headeré  s   € ä& vÓ.Ð.rƒ   r{   )r}   r~   r   r€   r/  r�   rQ  r‹  rY  rÂ  rF  rž  r¼  rÄ  rÅ  rµ  rX  r‚   rº  r»  s   @r„   rÇ  rÇ  �  s}   ø‡ à8:€EÐ5Ó:àô*ó ð*ð ÷;ó ð;ð 	˜4Ø�$ð!Ðð *€NØ:ÐØ—o’oð=	ó?€OðB ô/ó ö/rƒ   rÇ  c                  ó>  € ] tR tRt$ / tR]R&   ]! ]P                  4      tRt	R]R&   ]
P                  ! R4      t]]
P                  ! R4      ,           t]]
P                  ! R	4      ,           t]
P                  ! R
4      t]R R l4       t]R R l4       t]]P                  R R l4       4       t]R R l4       t]]P                  R R l4       4       t]]P                  R R l4       4       t]R R R ll4       t]R R l4       t]R R l4       t]R R l4       tRtR# )!ÚHalideCodeCacheiî  z*dict[str, Callable[[], ModuleType | CDLL]]r/  Nry   Ú_standalone_runtime_pathaØ  
        #include "{halideruntime_h}"
        #include "{headerfile}"
        #include <stdexcept>
        #include <cmath>

        namespace c10 {{
            inline long div_floor_integer(long a, long b) {{
                if ((a<0) != (b<0)) {{
                    const auto quot = a / b;
                    const auto rem = a % b;
                    return rem ? quot - 1 : quot;
                }}
                return a / b;
            }}
        }}
        zÌ
        void kernel({argdefs}) {{
            {buffers}
            int err = halide_kernel({buffer_names});
            if(err != 0) throw std::runtime_error("halide_kernel failed");
        }}
        a{  
        #include <cuda.h>
        static const halide_device_interface_t* cuda_interface = halide_cuda_device_interface();

        void kernel({argdefs}, uintptr_t stream) {{
            {buffers}
            int err = halide_kernel(reinterpret_cast<void*>(stream), {buffer_names});
            if(err != 0) throw std::runtime_error("halide_kernel failed");
        }}
        aÎ  
        #include "{}"
        #include <cuda.h>

        static int acquire_context(void* user_context,
                                   void** cuda_context_out,
                                   bool create) {{
            return cuCtxGetCurrent(reinterpret_cast<CUcontext*>(cuda_context_out));
        }}

        static int release_context(void* user_context) {{
            return 0;
        }}

        static int get_stream(void* user_context,
                              void* cuda_context,
                              void** stream_out) {{
            *stream_out = user_context;
            return 0;
        }}

        static int register_halide_hooks() {{
            halide_set_cuda_acquire_context(&acquire_context);
            halide_set_cuda_release_context(&release_context);
            halide_set_cuda_get_stream(&get_stream);
            return 0;
        }}

        int inductor_register_halide_hooks_result = register_halide_hooks();
        c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r»   rz   rˆ   rÚ  r²   r‰   r¢   r½   rž   r{   )r¾   s   "r„   r¿   ÚHalideCodeCache.__annotate__=  s(   € ÷ '
ñ '
 3ð '
¨_ð '
ÀDð '
ÈYñ '
rƒ   c                	ó^  € VP                   f   \        RV 24      hVP                  e.   \        VP                   4      \        VP                  4      8w  d)   \        RV RVP                    RVP                   24      hVP                  f   \        RV 24      hVP
                  ;'       g    VP                   RVP                   2pV'       d   RV R2pR	pR
pRpMRpR
pRV R2pRp. p	\        VP                   VP                  4       F  w  r«V	P                  RV
 RV R24       K  	  RV R2\        V	4      ^ 8”  d   RV RRP                  V	4       R2MRV R2V RV R2V RV R2V RV R2V RV R2V RVP                  4        R2V R\        V	4       R2V RV R2V R 2.
# )!Nzarg.shape is None for z7arg.stride is None or shape/stride length mismatch for z: shape=z	, stride=zarg.offset is None for z + zreinterpret_cast<uint64_t>(rý  Úcuda_interfaceÚnullptrÚhalide_buffer_flag_device_dirtyÚ0zreinterpret_cast<uint8_t*>(Úhalide_buffer_flag_host_dirtyzhalide_dimension_t(0, ru  zhalide_buffer_t Ú;zhalide_dimension_t z_dims[] = {z};zhalide_dimension_t * z_dims = nullptr;z
.device = z.device_interface = z.host = z	.flags = z.type = z.dimensions = z.dim = z_dims;z.padding = nullptr;)Úshaper%  Ústrider¨  ÚoffsetÚalias_ofrz   rÓ  rÛ   rÉ   Úhalide_type)rˆ  rz   rÚ  r‰   r#  r�   Údevice_interfaceÚhostÚflagsÚdimsÚsizerá  s   &&&&        r„   Ú_codegen_bufferÚHalideCodeCache._codegen_buffer<  s  € à�9‰9ÒÜ Ð#9¸$¸Ð!@ÓAÐAØ�:‰:Ò¤ S§Y¡Y£´3°s·z±z³?Ô!BÜ ØIÈ$Èð PØŸ™˜ 9¨S¯Z©Z¨Lð:óð ð �:‰:ÒÜ Ð#:¸4¸&Ð!AÓBÐBØ—l‘l×.Ð. c§h¡hÐ/¨s°3·:±:°,Ð?ˆßØ2°8°*¸AÐ>ˆFØ/ÐØˆDØ5‰EàˆFØ(ÐØ0°°
¸!Ð<ˆDØ3ˆEàˆÜ §	¡	¨3¯:©:Ö6‰LˆDØ�K‰KÐ0°°°b¸¸ÀÐBÖCñ 7ð ˜t˜f AÐ&ä�4‹y˜1Œ}ð " $  |°D·I±I¸d³OÐ3DÀCÑHà(¨¨Ð.>Ð?Øˆf�J˜v˜h aÐ(ØˆfÐ(Ð)9Ð(:¸!Ð<Øˆf�H˜T˜F !Ð$Øˆf�I˜e˜W AÐ&Øˆf�H˜SŸ_™_Ó.Ð/¨qÐ1Øˆf�N¤3 t£9 +¨QÐ/Øˆf�G˜D˜6 Ð(ØˆfÐ'Ð(ð
ð 	
rƒ   c               ó$   € V ^8„  d   QhRRRRRR/# )r»   r  r³   Ú
headerfiler  r½   rˆ   r{   )r¾   s   "r„   r¿   rØ  g  s!   € ÷ &ñ & ð &¸ð &ÀCñ &rƒ   c           	     	óª  € VP                  4       pVR VP                  9   Jd   \        RV RVP                   24      hRVP                  9  d   \        RVP                   24      h. p. p\        VP                  4       F™  w  rgVP                  4       '       d;   VP                  RV 24       VP                  V P                  RV 2Ws4      4       KU  RVP                  9   d   \        RVP                   24      hVP                  VP                  4       K›  	  R	P                  V Uu. uF  pR
V 2NK
  	  up4      P                  4       pV'       d   V P                  MV P                  p	T	P                  T P!                  V'       d   RMR4      VRP                  R VP                   4       4      VRP                  V4      R7      p
V
# u upi )Úuser_contextzis_cuda=z inconsistent with meta.target=Ú
no_runtimez&'no_runtime' not found in meta.target=z&hl_buf_Úhl_buf_Ú*z+Unexpected pointer type in non-buffer arg: r\  ú    úHalideRuntimeCuda.hzHalideRuntime.hru  c              3  ó€   "  € T F4  pVP                   e   K  VP                  4        RVP                   2x € K6  	  R # 5i)Nrh  )rã  Úbindings_typerz   )rÅ   r¹   s   & r„   rÇ   Ú0HalideCodeCache._codegen_glue.<locals>.<genexpr>…  s7   é € ð á&�AØ—:‘:ô 0�1—?‘?Ó$Ð% Q q§v¡v hÕ/Û&ùs   ‚>—'>)Úhalideruntime_hrí  ÚargdefsÚbuffersÚbuffer_names)r  r¼   r%  r”  r«  Ú	is_bufferrÛ   r   rê  Úctyperz   rÉ   ÚlstripÚglue_template_cudaÚglue_template_cppr¾   Úfind_header)rˆ  r  rí  r  rú  rû  r©  rÚ  ÚlineÚglue_templateÚ	glue_codes   &&&        r„   Ú_codegen_glueÚHalideCodeCache._codegen_gluef  s«  € à—,‘,“.ˆØ˜>¨T¯[©[Ñ8Ó9Ü Ø˜7˜)Ð#BÀ4Ç;Á;À-ÐPóð ð ˜tŸ{™{Ô*Ü Ð#IÈ$Ï+É+ÈÐ!WÓXÐXØˆØˆÜ §¡Ö.‰FˆAØ�}‰}�Šà×#Ñ# h¨q¨c NÔ3Ø—‘˜s×2Ñ2°W¸Q¸C°=À#ÓOÖPà˜#Ÿ)™)Ô#Ü(ØEÀcÇiÁiÀ[ÐQóð ð ×#Ñ# C§H¡HÖ-ñ /ð —)‘)±wÓ?±w¨t˜t D 6›]±wÑ?Ó@×GÑGÓIˆç29˜×.Ò.¸s×?TÑ?TˆØ!×(Ñ(ØŸO™Oß)0Ñ%Ð6Góð "Ø—I‘Iñ àŸšóó ð
 ØŸ™ <Ó0ð )ó 
ˆ	ð Ðùò! @s   Ä-Gc               ó   € V ^8„  d   QhRR/# rà   r{   )r¾   s   "r„   r¿   rØ  ‘  s   € ÷ 
ñ 
˜Cñ 
rƒ   c                	óä   € \        R R\        4       R7      pVP                  4       p\        RP	                  V P
                  V P                  V P                  V.4      P                  R4      4      # )ÚOÚIr¬  r\  rß  )	r9   r:   rt  r“  rÉ   r   rÿ  Ústandalone_runtime_cuda_initrË  )rˆ  Úcommand_genÚcommand_lines   &  r„   Úconfig_hashÚHalideCodeCache.config_hash�  sp   € ô !ØØÜ"›ô
ˆð
 #×3Ñ3Ó5ˆÜØ�I‰Ià×)Ñ)Ø×*Ñ*Ø×4Ñ4Ø ð	ó÷ ‰f�W‹oó	
ð 		
rƒ   c               ó$   € V ^8„  d   QhRRRRRR/# )r»   r±  rˆ   Úerrmsgr½   r{   )r¾   s   "r„   r¿   rØ  ¤  s!   € ÷ #ñ # ð #¨cð #°cñ #rƒ   c                	óª  € \         P                  P                  P                  R 4      pVe   VP                  '       g   \        R4      h VP                  ^ ,          p\        P                  ! V4       EF  pVP                  R4      '       g   K   \        P                  ! R\        P                  P                  W44      .4      p\        P                  ! RTP!                  R4      4      pT'       g   Kƒ  \        P                  P                  \        P                  P#                  TP%                  ^4      4      T 4      p\        P                  P'                  T4      '       g   Kö  \        P                  P#                  T4      u # 	  \        T4      h  \        P                   d     EK=  i ; i  \(         d   p\        T4      ThRp?ii ; i)ÚhalideNz$halide python bindings not installedr]  Úlddz(/.*)/libHalide.sorß  )r   Ú	machineryÚ
PathFinderrÉ  rÏ  rý   rù   r‡  ra  rA  Úcheck_outputrú   rÉ   ÚSubprocessErrorrz  Úsearchr§  rê  Úgrouprû   r  )	r±  r  rÑ  r  r@  ÚoutÚmrú   rÈ  s	   &&       r„   Ú_search_for_fileÚ HalideCodeCache._search_for_file£  sP  € ä×"Ñ"×-Ñ-×7Ñ7¸ÓAˆØŠ<˜t×>×>Ð>ÜÐEÓFÐFð	.Ø×4Ñ4°QÕ7ˆFÜŸ
š
 6×*�Ø—=‘= ×'Ô'ð!Ü(×5Ò5Ø"¤B§G¡G§L¡L°Ó$>Ð?ó˜ô
 Ÿ	š	Ð"7¸¿¹ÀGÓ9LÓM�Aß‘qÜ!Ÿw™wŸ|™|¬B¯G©G¯O©O¸A¿G¹GÀA»JÓ,GÈÓP˜ÜŸ7™7Ÿ>™>¨$×/Ô/Ü#%§7¡7§?¡?°4Ó#8Ò8ñ +ô ˜6Ó"Ð"øô &×5Ñ5ô !Û ð!ûô ô 	.Ü˜vÓ&¨AÐ-ûð	.úsP   ÁAF6 Â5FÃ+F6 Ã8A.F6 Å+ F6 ÆF6 ÆF3Æ.F6 Æ2F3Æ3F6 Æ6GÇGÇGc               ó    € V ^8„  d   QhRRRR/# ©r»   rz   rˆ   r½   r{   )r¾   s   "r„   r¿   rØ  ½  s   € ÷ 	@ñ 	@ 3ð 	@¨3ñ 	@rƒ   c                	óB  € R V P                  4        R2pR\        P                  9   d]   \        P                  P	                  \        P                  R,          V4      p\        P                  P                  V4      '       d   V# RV R2p\        P                  W4      # )Úlibautoschedule_r]  Ú
HALIDE_LIBúCan't find z3, set env HALIDE_LIB to the directory containing it)Úlowerrù   r�  rú   rÉ   rû   rÕ  r  )rz   Úsofilerú   r  s   &   r„   Úfind_libautoscheduleÚ$HalideCodeCache.find_libautoschedule»  s~   € ð $ D§J¡J£L >°Ð5ˆØœ2Ÿ:™:Ô%Ü—7‘7—<‘<¤§
¡
¨<Õ 8¸&ÓAˆDÜ�w‰w�~‰~˜d×#Ò#Ø�à˜&˜Ð!TÐUð 	ô ×/Ñ/°Ó?Ð?rƒ   c               ó    € V ^8„  d   QhRRRR/# r   r{   )r¾   s   "r„   r¿   rØ  Ê  s   € ÷ Nñ N˜#ð N #ñ Nrƒ   c                	óD  € R \         P                  9   d]   \         P                  P                  \         P                  R ,          V 4      p\         P                  P	                  V4      '       d   V# R\         P                  9   d}   \         P                  P                  \         P                  P                  \         P                  R,          RV  24      4      p\         P                  P	                  V4      '       d   V# RV  R2p\        P                  RV  2V4      # )ÚHALIDE_INCLUDEr#  z../include/r$  z7, set env HALIDE_INCLUDE to the directory containing it)rù   r�  rú   rÉ   rû   rê  rÕ  r  )rz   rú   r  s   &  r„   r  ÚHalideCodeCache.find_headerÈ  sÎ   € ð œrŸz™zÔ)Ü—7‘7—<‘<¤§
¡
Ð+;Õ <¸dÓCˆDÜ�w‰w�~‰~˜d×#Ò#Ø�Øœ2Ÿ:™:Ô%Ü—7‘7—?‘?Ü—‘—‘œRŸZ™Z¨Õ5¸ÀTÀFÐ7KÓLóˆDô �w‰w�~‰~˜d×#Ò#Ø�à˜$˜ÐVÐWð 	ô ×/Ñ/°+¸d¸VÐ0DÀfÓMÐMrƒ   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r»   r  r³   rú  rˆ   r\  r   r½   úCallable[[], Any]r{   )r¾   s   "r„   r¿   rØ  Û  s2   € ÷ Bñ BØðBØ,/ðBØ<?ðBà	ñBrƒ   c                	ó¶  aa€ \        \        \        V\        V P	                  4       V34      R 7      R4      ^,          4      p\
        P                  ! VRR7       Ro\        VR,          4      p\        VR,          4      p\        VR,          4      p\        VR,          4      p\        VR	,          4      p	\
        P                  P                  V4      '       * p
. pV
'       d¸   \        WR4       \        P                  VR
RRV RRRR.
pVP                  '       d-   VP                  RV P                  VP                  4      .4       VP                  VP!                  4       4       VP#                  \$        P&                  ! \(        P*                  V4      4       VP,                   Uu. uF"  qÝP.                  e   K  VP1                  4       NK$  	  ppVP3                  4       '       d   VP#                  R4       T P5                  TV P7                  W4      W`P9                  4       3V
'       d   VP"                  MRVP3                  4       '       d   RMRR7      oV
'       dh   VP#                  \$        P&                  ! \:        V4      4       \$        P&                  ! \<        W›4      pV'       d   V! V4      P>                  oMV! 4        R VV3R llpV# u upi )ri  r  TrŠ  Nzgenerate_kernel.pyzhalide_kernel.azhalide_kernel.hÚdoner²  z-gr:  rõ   z-fÚhalide_kernelz-ezstatic_library,h,schedulez-pÚ	uintptr_tr‰   r³  )rP  r\  r  c               ó   € V ^8„  d   QhRR/# )r»   r½   r.  r{   )r¾   s   "r„   r¿   Ú;HalideCodeCache.generate_halide_async.<locals>.__annotate__  s   € ÷ 	%ñ 	%Ð'ñ 	%rƒ   c                 ó0   <€ S'       d   S! 4        S ! 4       # rÃ   r{   )Úbindings_futureÚwait_for_compiles   €€r„   rA  Ú3HalideCodeCache.generate_halide_async.<locals>.load  s   ø€ ßÙ Ô"Ù"Ó$Ð$rƒ   ) r   r¥  r™  rË   r  rù   rŒ  rˆ   rú   rû   rM  r  Ú
executableÚ	schedulerr   r'  rÕ  rÛ   rR  r   rA  Ú
check_callr«  rã  rö  r  r¾  r  Úbuild_standalone_runtimeÚtouchÚ_worker_task_haliderP  )rˆ  r  rú  r\  ÚdirpathÚgenfileÚlibfilerí  ÚdonefileÚlockfileÚneed_compileÚjobsr  rÚ  Úbinding_typesÚtaskrA  r6  r7  s   &&&&             @@r„   Úgenerate_halide_asyncÚ%HalideCodeCache.generate_halide_asyncÚ  sP  ù€ ô ÜÜØÜ §¡Ó 1°4Ð8Ó9ôð óð õó
ˆô 	�Š�G dÕ+ØÐÜ�gÐ 4Õ4Ó5ˆÜ�gÐ 1Õ1Ó2ˆÜ˜Ð#4Õ4Ó5ˆ
Ü�w Õ'Ó(ˆÜ�w Õ'Ó(ˆÜŸ7™7Ÿ>™>¨(Ó3Ô3ˆØˆßÜ˜Ô.ä—‘ØØØØØ�)ØØØØ+ðˆCð �~�~ˆ~Ø—
‘
˜D #×":Ñ":¸4¿>¹>Ó"JÐKÔLØ�J‰J�t—y‘y“{Ô#Ø�K‰Kœ	×)Ò)¬*×*?Ñ*?ÀÓEÔFð ,0¯=ª=ó
Ù+8 C¿L¹LÔˆC×ÑÖ©=ð 	ð 
ð �<‰<�>Š>Ø× Ñ  Ô-Ø×2Ñ2ØØ×Ñ˜dÓ/Ø ×">Ñ">Ó"@ÐAß%1�d—k’k°tØ"&§,¡,§.¢.™°eð 3ó 
ˆ÷ Ø�K‰Kœ	×)Ò)¬%°Ó:Ô;Ü×$Ò$Ô%8¸(ÓIˆDßÙ#,¨T£?×#9Ñ#9Ñ á”÷	%ñ 	%ð
 ˆùò5
s   Æ*KÆ>Kc               ó$   € V ^8„  d   QhRRRRRR/# )r»   rÕ  r   rÒ  r½   r.  r{   )r¾   s   "r„   r¿   rØ     s"   € ÷ <ñ < Cð <°3ð <Ð;Lñ <rƒ   c                	ó0   € V P                   ! V/ VB ! 4       # rÃ   )rH  r‰  s   &*,r„   Úgenerate_halideÚHalideCodeCache.generate_halide  s   € à×(Ò(¨$Ð9°&Ò9Ó;Ð;rƒ   c               ó   € V ^8„  d   QhRR/# rà   r{   )r¾   s   "r„   r¿   rØ  $  s   € ÷ <ñ <¨ñ <rƒ   c                	ó†  € V P                   '       d<   \        P                  P                  V P                   4      '       d   V P                   # \        P
                  P                  4       '       d   R MRpRpVR 8X  d   RMRpV P                   '       dS   \        P                  P                  V P                   4      '       d   \        RV P                    24      h\        4       pM
\        4       p\        V4      RV RV P                  4        2,          p\        P                  ! VRR	7       \        VR
,          4      p\        VR,          4      p\        VR,          4      p\        VR,          4      p	\        WR,          4      p
\        P                  P                  V4      '       Eg5   ^ RIp^ RIHp V! V\"        4      ;_uu_ 4        \        P                  P                  V4      '       gè   \%        VR4      ;_uu_ 4       pVR 8X  d:   VP'                  V P(                  P+                  V P-                  R4      4      4       RRR4       VP/                  W›P1                  V4      4       \3        V
4      w  rï\5        VW‰.V\7        VR7      R7      p\8        P:                  ! \<        P>                  ! VPA                  4       4      4       \C        V4       RRR4       \        P                  P                  V
4      '       g   \        RV
 24      hW n         V
#   + '       g   i     LÝ; i  + '       g   i     L^; i)r‰   r³  zlibStandaloneHalideRuntime.soz	host-cudaræ  z(Standalone runtime path already exists: zhalide-runtime-Ú-TrŠ  r0  r²  z	hooks.cppzstandalone_halide_runtime.aNr
  rË  rô  )r  rð  z Halide runtime .so not found at )"rÖ  rù   rú   rû   rØ   r‰   r  r%  rP   rO   r   r  rŒ  rˆ   r  ry  r  rz  r?  rÒ  r  r¾   r  Úcompile_standalone_runtimeÚTargetr?   r9   r;   rA  r;  rþ   rÿ   rt  r=  )rˆ  r  Úlibnamer¼   Úbaser?  Ú	done_fileÚ	lock_fileÚ	hook_fileÚa_fileÚso_fileÚhlr  rð  rz   rñ  Úhalide_cmd_gens   &                r„   r<  Ú(HalideCodeCache.build_standalone_runtime#  sv  € à×'×'Ð'¬B¯G©G¯N©NØ×(Ñ(÷-
ò -
ð ×/Ñ/Ð/Ü %§
¡
× 7Ñ 7× 9Ò 9‘f¸uˆØ1ˆØ +¨vÔ 5‘¸6ˆØ×'×'Ð'Ü�w‰w�~‰~˜c×:Ñ:×;Ò;Ü$Ø>¸s×?[Ñ?[Ð>\Ð]óð ô %Ó&‰Dä“;ˆDÜ�t“* °°¸¸#¿/¹/Ó:KÐ9LÐMÕMˆÜ
�Š�G dÕ+Ü˜ &Õ(Ó)ˆ	Ü˜ &Õ(Ó)ˆ	Ü˜ +Õ-Ó.ˆ	Ü�WÐ<Õ<Ó=ˆÜ�gÕ'Ó(ˆÜ�w‰w�~‰~˜i×(Ó(Ûå6á˜)¤\×2Õ2Ü—w‘w—~‘~ i×0Ò0Ü˜i¨×-Ô-°Ø&¨&Ô0ØŸG™GØ #× @Ñ @× GÑ GØ$'§O¡OÐ4IÓ$Jó!"ô÷ .ð ×1Ñ1°&¿)¹)ÀFÓ:KÔLä'MÈgÓ'VÑ$�DÜ%/Ø!Ø!*Ð 3Ø#-Ü$9Ø(3ô%ô	&�Nô ×)Ò)ÜŸš N×$CÑ$CÓ$EÓFôô ˜)Ô$÷1 3ô2 �w‰w�~‰~˜g×&Ò&Ü Ð#CÀGÀ9Ð!MÓNÐNØ'.Ô$Øˆ÷5 .×-ú÷ 3×2ús&   Ç:L0ÈAL	ÉBL0ÌL-Ì(L0Ì0M 	c               ó    € V ^8„  d   QhRRRR/# r+  r{   )r¾   s   "r„   r¿   rØ  c  s   € ÷ ñ ¨Cð °Jñ rƒ   c                ó   € R# )z5Header precompiling is currently disabled for halide.Nr{   rW  s   &&r„   rX  Ú&HalideCodeCache._get_uncompiled_headerb  s   € ñ rƒ   r{   rÃ   )r}   r~   r   r€   r/  r�   rQ  rV  r‹  rÖ  rÄ  rÅ  r¿  r   rÿ  r  rY  rê  r  rR  r  r  r'  r  rH  rL  r<  rX  r‚   r{   rƒ   r„   rÕ  rÕ  î  s€  ‡ à8:€EÐ5Ó:Ù˜uŸ{™{Ó+€KØ+/Ð˜jÓ/Ø�_Š_ð	ó€Fð&  §¢ð	ó"õ Ðð   (§/¢/ð		ó#õ Ðð $,§?¢?ð	ó$Ð ðB ô'
ó ð'
ðR ô&ó ð&ðP Ø‡_�_ô
ó ó ð
ð$ ô#ó ð#ð. Ø‡_�_ô	@ó ó ð	@ð Ø‡_�_ôNó ó ðNð  öBó ðBðH ô<ó ð<ð ô<ó ð<ð| ôó ôrƒ   rÕ  c               ó$   € V ^8„  d   QhRRRRRR/# )r»   rC  rˆ   rE  zlist[partial[Any]]r½   r4  r{   )r¾   s   "r„   r¿   r¿   h  s"   € ÷ .ñ . #ð .Ð-?ð .ÀDñ .rƒ   c           	     óF  € ^ RI Hp  V! V \        4      ;_uu_ 4        V F
  pV! 4        K  	  RRR4       R#   + '       g   i     R# ; i  \        P                   Ed¿   p\
        P                  P                  R4      R8X  Ed”   \        TRR4      vrVp\
        P                  P                  T4      P                  R4      '       EdP   \        T4      P                  4       pRp	TP                  T	4      ^8w  d#   \        RT	: R	TP                  T	4       24      Th ! R
 R4      p
TP!                  R4      p\#        T\$        4      '       g   \        R\'        T4       24      ThT
! 4       Y{^,           &   \(        P*                  ! \(        P,                  ! RR.TO: R24      R4      pTP/                  Yœ4      p\1        RR4      ;_uu_ 4       pTP3                  TP5                  4       4       RRR4       M  + '       g   i     M; i\7        RT 24      Thh Rp?ii ; i)r   r
  NÚHALIDE_REPROÚ1r  Úpythonz    hl.main()z!Expected exactly 1 occurrence of z in code, found c                  ó"   € ] tR tRtR R ltRtR# )Ú _worker_task_halide.<locals>.Outi|  c               ó   € V ^8„  d   QhRR/# rà   r{   )r¾   s   "r„   r¿   Ú-_worker_task_halide.<locals>.Out.__annotate__}  s   € ÷ %ñ %¨#ñ %rƒ   c                	ó   € R # )r  r{   r7  s   &r„   Ú__repr__Ú)_worker_task_halide.<locals>.Out.__repr__}  s   € Ù$rƒ   r{   N)r}   r~   r   r€   rj  r‚   r{   rƒ   r„   ÚOutrf  |  s   † ÷%ñ %rƒ   rl  rõ   z'Expected int index from cmd.index, got z—                        import sys, tempfile
                        with tempfile.TemporaryDirectory() as out:
                            sys.argv = zrepro.pyz?
                            hl.main()
                        ró  rË  zwrote repro.py: )rê   rê   rê   )ry  r  rz  rA  r  rù   r�  rs  rÊ   rú   r›  rˆ  r   Ú	read_textÚcountr%  Úindexrã  r—   r  rÄ  rJ  rÅ  r  r?  rÒ  rþ  rý   )rC  rE  r  ÚjobrÈ  rd  Úscriptr  r•  Úmainrl  ÚciÚreplÚfds   &&            r„   r>  r>  h  sÙ  € Ý.ð+Ù�h¤×-Õ-Û�Ù–ñ ÷ .×-×-Ò-ûô ×%Ñ%õ 'Ü�:‰:�>‰>˜.Ó)¨SÕ0ä#*¨1¨e°\Ó#BÐ ˆF˜SÜ�w‰w×Ñ Ó'×2Ñ2°8×<Ó<Ü˜F“|×-Ñ-Ó/�Ø&�Ø—:‘:˜dÓ# qÔ(Ü(Ø;¸D¹8ð D!Ø!%§¡¨DÓ!1Ð 2ð4óð ð÷
%ñ %ð —Y‘Y˜t“_�Ü! "¤c×*Ò*Ü(ØAÄ$ÀrÃ(ÀÐLóàðñ "›e�˜•F‘Ü—’Ü—O’Oð(ð *4Ð(:°cÐ(:Ñ'=ð >ðóð ó
�ð —|‘| DÓ/�Ü˜* c×*Ô*¨bØ—H‘H˜TŸ[™[›]Ô+÷ +×*×*Ð*úä"Ð%5°a°SÐ#9Ó:ÀÐAØûðO'úsJ   ˆA �8®A ¸A		ÁA Á	A ÁH Á"E-HÇ G8Ç/	HÇ8HÈHÈH c               ó    € V ^8„  d   QhRRRR/# )r»   rè  rˆ   r½   r4  r{   )r¾   s   "r„   r¿   r¿   ™  s   € ÷ ñ �Cð ˜Dñ rƒ   c                ój   € \        V R 4      ;_uu_ 4         RRR4       R#   + '       g   i     R# ; i)r¹   N)r?  )rè  s   &r„   r=  r=  ™  s!   € Ü	ˆh˜×	Õ	Ø÷ 
×	×	Ò	ús   •!¡2	c                  óò   € ] tR tRt$ Rt. tR]R&   / tR]R&   / tR]R&   ]	RR	 R
 ll4       t
]	RRR/R R lll4       t]	RRR/R R lll4       t]	RR R ll4       t]	]P                  R R l4       4       tRtR# )ÚPyCodeCacheiž  z:Caches generated Python modules and their source mappings.zlist[ModuleType]r  zdict[str, ModuleType]Úmodules_no_attrz dict[str, list[tuple[Any, ...]]]Úlinemapsc               ó$   € V ^8„  d   QhRRRRRR/# )r»   rú  rˆ   r—  r½   rÎ  r{   )r¾   s   "r„   r¿   ÚPyCodeCache.__annotate__¯  s!   € ÷ 5ñ 5 ð 5¨Cð 5¸ñ 5rƒ   c                	ó   € \        VR VR7      # )Úpyri  r×  )rˆ  rú  r—  s   &&&r„   rÒ  ÚPyCodeCache.write®  s   € ä�[ $¨eÔ4Ð4rƒ   Úset_sys_modulesNc               ó(   € V ^8„  d   QhRRRRRRRR/# )r»   rú  rˆ   r—  r�  r<  r½   r   r{   )r¾   s   "r„   r¿   r}  ³  s8   € ÷ Pñ PàðPð ðPð
 %ðPð 
ñPrƒ   c               	óH   € \        VR VR7      w  rEV P                  WEVR7      # )r  ri  ©r�  )rÒ  Úload_by_key_path)rˆ  rú  r—  r�  r�   rú   s   &&&$  r„   rA  ÚPyCodeCache.load²  s*   € ô ˜+ t°5Ô9‰	ˆØ×#Ñ# C¸Ð#ÓOÐOrƒ   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r»   r�   rˆ   rú   Úlinemapzlist[tuple[int, str]] | NoneÚattrsrW  r�  r<  r½   r   r{   )r¾   s   "r„   r¿   r}  ¾  sF   € ÷ &ñ &àð&ð ð&ð .ð	&ð
 %ð&ð %ð&ð 
ñ&rƒ   c               	ó  € Vf   . p\        4       pVf   TMTpVfX   W P                  9   dH   V P                  V,          pV'       d+   \        P                  P	                  VP
                  V4       V# \        WVR7      pV'       d    \        \        V!  4      V P                  V&   Ve&   VP                  4        F  w  r‰\        WxV	4       K  	  V'       d.   Vf   WpP                  V&   V P                  P                  V4       V# )Nr„  )r3   rz  r  r  ra  r}   rN   r®  rÓ  r{  r‚  ÚsetattrrÛ   )
rˆ  r�   rú   rˆ  r‰  r�  Úin_toplevelÚmodrµ  r¶  s
   &&&&&$    r„   r…  ÚPyCodeCache.load_by_key_path½  sÝ   € ð Š?ØˆGä)Ó+ˆØ)8Ò)@™+Àoˆð Š=˜T×%8Ñ%8Ô8Ø×%Ñ% dÕ+ˆCßÜ—‘×&Ñ& s§|¡|°SÔ9ØˆJä# C¸ÔOˆ÷ Ü!%¤c¨7¡mÓ!4ˆC�L‰L˜ÑàÒØŸ™ž‘�Ü˜ Ö"ñ &÷ àŠ}Ø,/×#Ñ# DÑ)à�K‰K×Ñ˜sÔ#Øˆ
rƒ   c               ó    € V ^8„  d   QhRRRR/# )r»   Úpurger¢   r½   r4  r{   )r¾   s   "r„   r¿   r}  ç  s   € ÷ $ñ $ ð $°ñ $rƒ   c                óL  € V'       dV   V P                    FE  p VP                  '       g   \        RV R24      h\        P                  ! VP                  4       KG  	  V P                   P                  4        V P                  P                  4        R#   \
         d     K�  i ; i)zj
Clear the in-memory module cache. If purge=True, also delete all the
corresponding on-disk source files.
zModule z has no __file__ attributeN)r  rß  r%  rù   rí  rU  rV  rz  )rˆ  r�  r�  s   && r„   r‹  ÚPyCodeCache.cache_clearæ  s€   € ÷ Ø—{”{�ðØŸ<Ÿ<˜<Ü,¨w°s°eÐ;UÐ-VÓWÐWÜ—I’I˜cŸl™lÖ+ñ	 #ð 	�‰×ÑÔØ×Ñ×!Ñ!Ö#øô )ô Úðús   ™ABÂB#Â"B#c               ó$   € V ^8„  d   QhRRRRRR/# )r»   rú   rˆ   Úlinenor—   r½   zlist[dict[str, Any]] | Noner{   )r¾   s   "r„   r¿   r}  ù  s$   € ÷ (ñ (Øð(Ø #ð(à	$ñ(rƒ   c                	ó  € WP                   9  d   R # \        V P                   V,          4      ^ 8X  d   R # V P                   V,          w  r4\        W24      pV^ 8X  d   R # WE^,
          ,          pV'       g   R # R R lpV! V4      # )Nc               ó    € V ^8„  d   QhRRRR/# )r»   Ústack_tracerˆ   r½   zlist[dict[str, Any]]r{   )r¾   s   "r„   r¿   Ú7PyCodeCache.stack_frames_for_code.<locals>.__annotate__	  s   € ÷ 	ñ 	¨3ð 	Ð3Gñ 	rƒ   c                ó¢   € R p\         P                  ! W4      p\        V4       UUUu. uF  w  r4pRVR\        V4      RV/NK  	  uppp# u upppi )z"File "(.+)", line (\d+), in (.+)\nrè  r  rz   )rz  ÚfindallÚreversedr—   )r—  ÚregexÚmatchesrð  Úlr%  s   &     r„   Úparse_stack_traceÚ<PyCodeCache.stack_frames_for_code.<locals>.parse_stack_trace	  sX   € ð :ˆEÜ—j’j Ó4ˆGô  (¨Ô0õá0‘G�A˜!ð ˜Q ¬¨A«°¸Ó:Ù0óð ùô s   ¨A
)r{  r¨  r   )rˆ  rú   r”  r±  r  r?  ÚentryrŸ  s   &&&     r„   Ústack_frames_for_codeÚ!PyCodeCache.stack_frames_for_code÷  sq   € ð
 —|‘|Ô#ÙÜˆs�|‰|˜DÕ!Ó" aÔ'Ùà—|‘| DÕ)‰ˆÜ˜Ó'ˆØ�Œ6ÙØ˜!•e•ˆßÙõ	ñ ! Ó'Ð'rƒ   r{   ©rê   rŠ  ©F)r}   r~   r   r€   rÌ  r  r�   rz  r{  rY  rÒ  rA  r…  r‹  rR  r/  r¢  r‚   r{   rƒ   r„   ry  ry  ž  s°   ‡ áDð !#€GÐÓ"ð .0€OÐ*Ó/à13€HÐ.Ó3àö5ó ð5ð ñPð
 (,÷Pó ðPð ñ&ð (,÷&ó ð&ðP ö$ó ð$ð  Ø‡_�_ô(ó ó ô(rƒ   ry  c               ó$   € V ^8„  d   QhRRRRRR/# )r»   rà  rˆ   rú  r½   r´   r{   )r¾   s   "r„   r¿   r¿     s$   € ÷ ?ñ ?Øð?Ø#&ð?àñ?rƒ   c                ó@   € \        \        P                  V4      V 4      # rÃ   )rÊ   ry  rA  )rà  rú  s   &&r„   Ú_load_triton_kernel_from_sourcer¨    s   € ô ”;×#Ñ# KÓ0°+Ó>Ð>rƒ   c               ó   € V ^8„  d   QhRR/# rÔ  r{   )r¾   s   "r„   r¿   r¿     s   € ÷ "ñ "�Uñ "rƒ   c            	     ó  € \         P                  ! 4       '       dp   \        P                  P	                  RR4      ;_uu_ 4       p \        V 4      ;_uu_ 4       pVP                  4       P                  4       uuRRR4       uuRRR4       # \        P                  ! 4       p\        \         P                  P                  .RV4       VP                  4       #   + '       g   i     M; i RRR4       Ki    + '       g   i     Ly; i)zn
Compute a key representing the state of the CUTLASS library.

Note: OSS and fbcode will have different keys.
Úcutlass_libraryzsrc_hash.txtNrê   )r)   rê  r   Ú	resourcesrú   r?  rÌ  rË  rà  rá  rÎ  ÚcutlassÚcutlass_dirrã  )Úresource_pathÚresource_fileÚcombined_hashs      r„   Úcutlass_keyr²    s¿   € ô ×Ò×Òä×Ñ×$Ñ$Ø! >÷ô àÜ�×Ô =à ×%Ñ%Ó'×.Ñ.Ó0÷  Ñ÷ò ô —N’NÓ$€MÜ”V—^‘^×/Ñ/Ð0°"°mÔDØ×ÑÓ!Ð!÷  ×úÐ÷÷ ÷ ñ ús$   ÁC4ÁC	Á6
C4ÃC&Ã!C4Ã4D	c                  óz   € ] tR tRtRtR R ltR R ltR R ltR	 R
 ltR R lt	R R lt
R R ltR R ltRtR# )Ú
DLLWrapperi1  z A wrapper for a dynamic library.c               ó    € V ^8„  d   QhRRRR/# )r»   Úlib_pathrˆ   r½   r4  r{   )r¾   s   "r„   r¿   ÚDLLWrapper.__annotate__4  s   € ÷ ñ àðð 
ñrƒ   c                	ó@   € Wn         R V n        V P                  4        R# ©FN)r¶  Úis_openr?  )r8  r¶  s   &&r„   r9  ÚDLLWrapper.__init__4  s   € ð !ŒØˆŒØ�	‰	Žrƒ   c               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   r·  <  s   € ÷  ñ  �dñ  rƒ   c                	ó†   € V P                   '       g/   \        P                  ! V P                  4      V n        R V n         R# R# )TN)rº  r	   rK  r¶  ÚDLLr7  s   &r„   r?  ÚDLLWrapper.open<  s-   € Ø�|�|ˆ|Ü×'Ò'¨¯©Ó6ˆDŒHØˆDŽLñ rƒ   c               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   r·  A  s   € ÷ !ñ !�tñ !rƒ   c                	ó\   € V P                   '       d   V P                  4        R V n         R# R# r¹  )rº  Ú_dlcloser7  s   &r„   rÄ  ÚDLLWrapper.closeA  s    € Ø�<�<ˆ<Ø�M‰MŒOØ ˆDŽLñ rƒ   c               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   r·  F  s   € ÷ *ñ *˜$ñ *rƒ   c                	óÖ  € R p ^ R I pVP                  ! 4       '       d   R #  \        4       '       dH   \	        R 4      p\        TR4      '       g   \	        R4      p\        TR4      '       d   TP                  pM?\        4       '       d%   ^ R IpTP	                  RRR7      pTP                  pM\        R4      hTe‡   \        4       '       d+   \        .Tn        T! T P                  P                  4       R # \        4       '       d;   ^ R Ip^ RIHp TP                   .Tn        T! T P                  P                  4       R # R # \"        P%                  R4       R #   \         d     R # i ; i)	NÚdlclosezlibc.sork  T)Úuse_last_errorz&Unsupported env, failed to do dlclose!)ÚwintypeszKdll unloading function was not found, library may not be unloaded properly!)r  Úis_finalizingr  rT   r   r  rÆ  rU   r)  ÚFreeLibraryrv  r   r«  r¾  Ú_handlerÈ  ÚHMODULEr'  r(  )r8  Ú	f_dlcloser  Úsymsr)  rk  rÈ  s   &      r„   rÂ  ÚDLLWrapper._dlcloseF  s  € Øˆ	ð	Ûà× Ò ×"Ò"Ùð #ô
 �:Š:Ü˜“:ˆDÜ˜4 ×+Ò+ä˜I“�ä�t˜Y×'Ò'Ø ŸL™L�	øÜ�\Š\Ûà—{‘{ :¸d�{ÓCˆHà ×,Ñ,‰Iä%Ð&NÓOÐOàÒ Ü�zŠzÜ&. Z�	Ô"Ù˜$Ÿ(™(×*Ñ*Ö+Ü—’ÛÝ+à&.×&6Ñ&6Ð%7�	Ô"Ù˜$Ÿ(™(×*Ñ*Ö+ñ ô �K‰KØ]öøô? ô 	âð	ús   „E ÅE(Å'E(c               ó    € V ^8„  d   QhRRRR/# )r»   rz   rˆ   r½   zCallable[..., None]r{   )r¾   s   "r„   r¿   r·  r  s   € ÷ ñ  ð Ð(;ñ rƒ   c                	óš   a€ V P                   '       g   \        R V P                   24      h\        V P                  V4      oR V3R llpV# )zCannot use closed DLL library: c               ó    € V ^8„  d   QhRRRR/# ©r»   rÕ  r   r½   r4  r{   )r¾   s   "r„   r¿   Ú,DLLWrapper.__getattr__.<locals>.__annotate__x  s   € ÷ 	Lñ 	L ð 	L¨ñ 	Lrƒ   c                 óT   <€ S! V !  pV'       d   \        R SP                   24      hR# )zError in function: N)rý   r}   )rÕ  ÚerrÚmethods   * €r„   Ú_wrapped_funcÚ-DLLWrapper.__getattr__.<locals>._wrapped_funcx  s,   ø€ Ù˜$‘-ˆCßÜ"Ð%8¸¿¹Ð8IÐ#JÓKÐKñ rƒ   )rº  rý   r¶  rÊ   r¾  )r8  rz   rØ  r×  s   && @r„   Ú__getattr__ÚDLLWrapper.__getattr__r  sG   ø€ Ø�|�|ˆ|ÜÐ!@ÀÇÁÀÐPÓQÐQä˜Ÿ™ 4Ó(ˆ÷	Lð 	Lð
 Ðrƒ   c               ó   € V ^8„  d   QhRR/# )r»   r½   r   r{   )r¾   s   "r„   r¿   r·    s   € ÷ ñ ˜4ñ rƒ   c                	ó   € V # rÃ   r{   r7  s   &r„   r½  ÚDLLWrapper.__enter__  s   € Øˆrƒ   c               ó    € V ^8„  d   QhRRRR/# rÓ  r{   )r¾   s   "r„   r¿   r·  ‚  s   € ÷ ñ ˜cð  dñ rƒ   c                	ó&   € V P                  4        R # rÃ   ©rÄ  )r8  rÕ  s   &*r„   rÉ  ÚDLLWrapper.__exit__‚  ó   € Ø�
‰
Žrƒ   c               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   r·  …  s   € ÷ ñ ˜ñ rƒ   c                	ó&   € V P                  4        R # rÃ   rá  r7  s   &r„   Ú__del__ÚDLLWrapper.__del__…  rã  rƒ   )r¾  rº  r¶  N)r}   r~   r   r€   rÌ  r9  r?  rÄ  rÂ  rÚ  r½  rÉ  ræ  r‚   r{   rƒ   r„   r´  r´  1  s3   † Ù*õõ õ
!õ
*õXõõ÷ñ rƒ   r´  c               ó    € V ^8„  d   QhRRRR/# )r»   rq  rˆ   r½   r{   )r¾   s   "r„   r¿   r¿   Š  s   € ÷ "ñ " 3ð "¨3ñ "rƒ   c                ó   € V R,           # )z$
standard format for the error path
z.errorr{   )rq  s   &r„   Úbinary_error_pathrê  ‰  s   € ð
 ˜Õ!Ð!rƒ   c                  ó¨  € ] tR tRt$ Rt]P                   ! R R4      4       t/ tR]	R&   . t
R]	R&   R	tR
]	R&   R	tR
]	R&   ]P                  tR]	R&   ]R R l4       t]]! ^R7      R R l4       4       t]R R l4       t]R$R R ll4       t]R R l4       t]]! R4      R R l4       4       t]R$R R ll4       t]R R  l4       t]R$R! R" ll4       tR#tR# )%ÚCUTLASSCodeCachei‘  a.  
A cache for managing the compilation and loading source code specifically for CUTLASS.
This class handles writing source code to files, compiling them into shared objects, and caching
the results to avoid redundant compilations. It also manages error handling and logging for the
compilation process.
c                  ó:   € ] tR tRt$ R]R&   R]R&   RtR]R&   RtR# )	ÚCUTLASSCodeCache.CacheEntryi™  rˆ   Ú
input_pathrq  Nry   Ú
error_jsonr{   )r}   r~   r   r€   r�   rð  r‚   r{   rƒ   r„   Ú
CacheEntryrî  ™  s   ‡ à‹ØÓØ!%ˆ
�J×%rƒ   rñ  údict[str, CacheEntry]r/  rž   rœ  rê   rˆ   Ú_SOURCE_CODE_SUFFIXÚ_BACKENDútype[exc.CppCompileError]Ú_COMPILE_ERRORc               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   ÚCUTLASSCodeCache.__annotate__§  s   € ÷  ñ  ˜Dñ  rƒ   c                	ó¢   € V P                   P                  4        V P                  P                  4        V P                  P	                  4        R # rÃ   )r/  rV  rœ  rÒ  r‹  r†  s   &r„   r‹  ÚCUTLASSCodeCache.cache_clear¦  s2   € à�	‰	�‰ÔØ×Ñ×ÑÔ!Ø�	‰	×ÑÖrƒ   )Úmaxsizec               ó$   € V ^8„  d   QhRRRRRR/# )r»   Úcaching_enabledr¢   Úcaching_availabler½   rC  r{   )r¾   s   "r„   r¿   rø  ®  s$   € ÷ ñ ØðØ26ðà	ñrƒ   c                ó¾   € V '       g   \         P                  R4       R# V'       g   R#  ^ RIHp V! 4       #   \         d    \         P                  R4        R# i ; i)a,  
Get or create the class instance of the CUTLASSKernelBinaryRemoteCache.

Args:
    caching_enabled: Whether binary remote caching is enabled
    caching_available: Whether we're in fbcode environment

Returns:
    CUTLASSKernelBinaryRemoteCache: The class instance of the kernel binary remote cache
z6CUTLASSKernelBinaryRemoteCache not requested, skippingN)ÚCUTLASSKernelBinaryRemoteCachezECUTLASSKernelBinaryRemoteCache not available, remote caching disabled)r'  rZ  Ú-torch._inductor.fb.kernel_binary_remote_cacher 	  rQ  )rý  rþ  r 	  s   && r„   Úget_kernel_binary_remote_cacheÚ/CUTLASSCodeCache.get_kernel_binary_remote_cache¬  sU   € ÷ Ü�I‰IÐNÔOÙß Ùð
	õñ 2Ó3Ð3øÜô 	Ü�I‰IØWôò ð		ús   «8 ¸ AÁAc               ó   € V ^8„  d   QhRR/# ©r»   r½   r¢   r{   )r¾   s   "r„   r¿   rø  Î  s   € ÷ "ñ "˜dñ "rƒ   c                	ó   € \         hrÃ   ru  r†  s   &r„   Ú_use_re_buildÚCUTLASSCodeCache._use_re_buildÍ  ó   € ä!Ð!rƒ   Nc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# ©	r»   Ú	src_filesrž   Údst_filerˆ   Údst_file_extÚ
extra_argsr¾  r½   r{   )r¾   s   "r„   r¿   rø  Ò  s<   € ÷ "ñ "àð"ð ð"ð ð	"ð
 %ð"ð 
ñ"rƒ   c                	ó   € \         hrÃ   ru  ©rˆ  r	  r	  r	  r	  s   &&&&&r„   Ú_compile_commandÚ!CUTLASSCodeCache._compile_commandÑ  s
   € ô "Ð!rƒ   c               ó   € V ^8„  d   QhRR/# rà   r{   )r¾   s   "r„   r¿   rø  Ü  s   € ÷ "ñ " 3ñ "rƒ   c                	ó   € \         hrÃ   ru  r†  s   &r„   Ú_source_code_extraÚ#CUTLASSCodeCache._source_code_extraÛ  r		  rƒ   c               ó$   € V ^8„  d   QhRRRRRR/# ©r»   rú  rˆ   r	  r½   rÎ  r{   )r¾   s   "r„   r¿   rø  á  s!   € ÷ ñ  ð °3ð ¸?ñ rƒ   c                óÚ   € \         P                  P                  '       d!   \        V P	                  R.RV4      4      pTpMV P                  4       p\        WP                  VR7      w  rVWV3# ©zˆ
Writes source code into a file with dst_file_ext as the file extension.
Returns the hash key of source code, and the path to the file.
Údummy_inputÚdummy_outputri  )r)   r­  Úcutlass_hash_with_compile_cmdrË   r	  r	  rÒ  ró  )rˆ  rú  r	  rÀ  r—  r�   rï  s   &&&    r„   rÒ  ÚCUTLASSCodeCache.writeß  sc   € ô �>‰>×7×7Ð7Ü"Ø×$Ñ$ m _°nÀlÓSóˆOð $‰Eà×*Ñ*Ó,ˆEä ×-DÑ-DÈEÔR‰ˆØˆÐrƒ   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©r»   rú  rˆ   r	  r	  r¾  r½   rž  r{   )r¾   s   "r„   r¿   rø  ó  s8   € ÷ Fñ FØðFØ-0ðFØ>NðFà	ñFrƒ   c                óð  € VR8X  d0   V P                  VRV4      w  p pV P                  W4      w  rgV.Rr˜MV P                  W4      w  rgV.Rr˜Wb,           p
W P                  9  Ed   ^ RIHp \        4       pV! \        P                  P                  WÆR,           4      \        R7      pT;_uu_ 4        VR\        V P                  4      )  V,           p\        V4      pT P                  \        P                  P                   ;'       d    \        P"                  '       * \        P$                  ! 4       R	7      pVe   VP'                  Wï4       \        P                  P)                  V4      '       dÇ   \+        VR
R7      ;_uu_ 4       pVP-                  4       pRRR4       \.        P0                  ! X4      w  ppVeK   \        P                  P2                  '       d+   VP5                  V\        P                  P6                  4       V P9                  W~V4      V P                  V
&   V P;                  VV4      h\        P                  P)                  V4      '       Eg~   V P=                  WŽW#4      p\+        VR4      ;_uu_ 4       pVP                  R4       VP                  RV P>                   RV	 RV R24       RRR4       \A        4       p\B        PE                  RV P>                  V	V4       \F        PH                  ! V4      p V PK                  4       '       dL   ^ RI&H'p V! V\        P                  PQ                  V4      \        P                  PS                  V4      4       M6\T        PV                  ! V\T        PX                  \        PZ                  R7        \A        4       pV P>                   RV	 RVV,
           RV 2p\B        Pi                  V4       M"\B        PE                  RV P>                  V	V4       VeK   \        P                  P2                  '       d+   VP5                  V\        P                  P6                  4       V P9                  W~R4      V P                  V
&   RRR4       V P                  V
,          pVPj                  eE   \.        P0                  ! VPj                  4      w  ppV P;                  VVPm                  R
4      4      hV P                  V
,          Pn                  Wg3#   + '       g   i     ELg; i  + '       g   i     ELX; i  \T        P\                   dR   pT P_                  TP`                  Pc                  R
4      T
TTTT4       T P;                  TTP`                  4      ThRp?i\d         dS   pR\g        T4      9   d<   T P_                  \g        T4      T
TTTT4       T P;                  T\g        T4      4      ThThRp?ii ; i  + '       g   i     EL�; i)zÊ
Compiles CUDA source_code into a file with dst_file_ext extension.
If dst_file_ext is "so", first compiles to ".o" and then links to ".so".
Returns a tuple of dst_file_path, hash_key, source_code_path
r•  r  ÚLinkingÚCompilationr
  r  r  N)rý  rþ  rß  rà  r¹   r\  z// rh  z cmd
// z	%s %s: %s)Úrun_build_command)rF  ÚenvzCOMPILE FAILED WITHz took z seconds. Command: z-%s %s skipped: %s since output already exists)8rò  rÒ  r/  ry  r  rŽ  rù   rú   rÉ   rz  r¨  ró  rê  r	  r)   r­  Úuse_binary_remote_cacheÚforce_disable_cachesrê  rs  rû   r?  rÌ  r@  r‰  Úupload_to_binary_remote_cacher-  Úbinary_remote_cache_force_writerñ  rö  r	  rô  r   r'  rZ  rþ   rÿ   r	  Útriton.fb.re_build_helperr%	  rÞ  r›  rA  r  ÚSTDOUTr�  rC  Ú_record_compile_errorÚoutputr§  r  rˆ   rg  rð  rË  rq  )rˆ  rú  r	  r	  Úobj_pathrn  r�   rï  r	  Úoperation_nameÚkey_with_extr  r�  r²  rq  Ú
error_pathÚbinary_remote_cacheÚfhrð  Ú	cmd_partsÚerror_outputr  rð  Ú
start_timer%	  ÚerrorÚend_timeÚlog_duration_msgÚcache_entrys   &&&&                         r„   rò  ÚCUTLASSCodeCache.compileò  sÔ  € ð ˜4Ôà Ÿ[™[¨°c¸:ÓF‰NˆH�a˜Ø!Ÿi™i¨ÓB‰OˆCØ)1¨
°I‘~ð "Ÿi™i¨ÓB‰OˆCØ)3¨°m�~àÕ)ˆØŸy™yÕ(Ý6ä#“~ˆHÙœBŸG™GŸL™L¨¸µ=ÓAÌ<ÔXˆDß’Ø(Ð)H¬C°×0GÑ0GÓ,HÐ+HÐIÈLÕX�Ü.¨{Ó;�
Ø&)×&HÑ&HÜ$*§N¡N×$JÑ$J÷ %8ð %8Ü"×7Ñ7Ô7Ü&,×&6Ò&6Ó&8ð 'Ió 'Ð#ð
 'Ò2ð (×+Ñ+¨KÔDä—7‘7—>‘> *×-Ò-Ü˜j°7×;Õ;¸rØ%'§W¡W£Y˜
÷ <ä.2¯jªj¸Ó.DÑ+�I˜|à+Ò7Ü"ŸN™N×H×HÐHð
 ,×/Ñ/Ø&¬¯©×(VÑ(Vôð /2¯n©nØ"°ó/�C—I‘I˜lÑ+ð ×,Ñ,¨Y¸ÓEÐEÜ—w‘w—~‘~ k×2Ó2Ø×.Ñ.Ø!°ó�Cô ˜j¨#×.Ô.°!ØŸ™ œØŸ™ # c§l¡l ^°1°^Ð4DÀIÈcÈUÐRTÐ UÔV÷ /ô "&£�JÜ—I‘I˜k¨3¯<©<¸ÈÔMÜ %§¢¨CÓ 0�Ið"$Ø×,Ñ,×.Ò.ÝSá-Ø )Ü "§¡§¡°
Ó ;Ü "§¡× 0Ñ 0°Ó =õô '×3Ò3Ø )´*×2CÑ2CÌÏÉöô2  $›v�HØ*-¯,©,¨°q¸Ð8HÈÈxÐZdÕOdÐNeÐexÐy|Ðx}Ð'~Ð$Ü—H‘HÐ-Õ.ô —I‘IØGØŸ™Ø&Ø#ô	ð (Ò3ÜŸ™×D×DÐDð (×+Ñ+Ø#¤V§^¡^×%SÑ%Sôð +.¯.©.¸ÐRVÓ*W�—	‘	˜,Ñ'÷A ðD 47·9±9¸\Õ3JˆØ×!Ñ!Ò-ä&*§j¢j°×1GÑ1GÓ&HÑ#ˆI�|Ø×$Ñ$ Y°×0CÑ0CÀGÓ0LÓMÐMØ—	‘	˜,Õ'×3Ñ3°SÐEÐE÷s <×;Ð;ú÷* /×.Ð.ûô& &×8Ñ8ô 	UØ×1Ñ1Ø!ŸL™L×/Ñ/°Ó8Ø(Ø%Ø&Ø'Ø/ôð "×0Ñ0°¸E¿L¹LÓIÈuÐTûÜ$ô $Ø0´C¸³JÔ>Ø×5Ñ5Ü # E£
Ø ,Ø )Ø *Ø +Ø 3ôð #&×"4Ñ"4°YÄÀEÃ
Ó"KÐQVÐVØ#˜ûð$ú÷A —�úsŸ   Â3C W$Å4W$Æ	S8	ÆAW$ÇB W$É &W$Ê7T	Ê=A
W$ÌA T Í(W$Í)5T ÎBW$Ð#A	W$Ó8T	Ô	W$ÔTÔ	W$Ô W!Ô5AVÖW!ÖW!ÖAW×W!×!W$×$W5	c               ó$   € V ^8„  d   QhRRRRRR/# ©r»   rú  rˆ   r	  r½   ztuple[DLLWrapper, str, str]r{   )r¾   s   "r„   r¿   rø  u  ó'   € ÷ Gñ G˜sð G°#ð GÐ:Uñ Grƒ   c                ót   € VR8w  d   \        RV RV 24      hV P                  W4      w  r4p\        V4      WE3# ©zr
Compiles source code and loads the generated .so file.
Returns a tuple of DLLWrapper, hash_key, source_code_path
r•  zCOnly support loading a .so file for now. Requested file extension: z. Source code: ©rý   rò  r´  ©rˆ  rú  r	  Údst_file_pathrr  Úsource_code_paths   &&&   r„   rA  ÚCUTLASSCodeCache.loadt  óZ   € ð ˜4ÔÜð-Ø-9¨N¸/È+ÈðXóð ð 58·K±KØó5
Ñ1ˆÐ!1ô ˜=Ó)¨8ÐFÐFrƒ   c               ó4   € V ^8„  d   QhRRRRRRRRRRRR	R
R/# )r»   Ú	error_strrˆ   r1	  r5	  rž   rï  rq  r3	  r   r½   r4  r{   )r¾   s   "r„   r¿   rø  †  sP   € ÷ ñ àðð ðð ð	ð
 ðð ðð !ðð 
ñrƒ   c                	ó²  € \         P                  ! W1.4      pV P                  WEV4      V P                  V&   \	        V4      p\        VR RR7      ;_uu_ 4       p	V	P                  V4       RRR4       VeO   \        P                  P                  '       d-   VP                  V\        P                  P                  4       R# R# R#   + '       g   i     Ld; i)rË  rß  rà  N)r@  rN  rñ  r/  rê  r?  rÒ  r)   r­  r)	  r-  r*	  )
rˆ  rI	  r1	  r5	  rï  rq  r3	  rð  r2	  r4	  s
   &&&&&&&   r„   r-	  Ú&CUTLASSCodeCache._record_compile_error…  s¢   € ô —Z’Z Ð 6Ó7ˆ
Ø"%§.¡.°È*Ó"Uˆ�	‰	�,ÑÜ& {Ó3ˆ
Ü�*˜c¨G×4Õ4¸Ø�H‰H�ZÔ ÷ 5ð
  Ò+Ü—‘×<×<Ð<à×#Ñ#ØœFŸN™N×JÑJöñ =ñ ,÷ 5×4ús   ÁCÃC	r{   rÃ   )r}   r~   r   r€   rÌ  r  Ú	dataclassrñ  r/  r�   rœ  ró  rô  r+   ÚCUDACompileErrorrö  rY  r‹  rQ  r   r	  r	  r	  r	  rÒ  rò  rA  r-	  r‚   r{   rƒ   r„   rì  rì  ‘  s5  ‡ ñð ×Ñ÷&ð &ó ð&ð
 $&€EÐ Ó%Ø!€M�9Ó!à!Ð˜Ó!Ø€HˆcÓØ03×0DÑ0D€NÐ-ÓDàô ó ð ð
 Ù�qÔôó ó ðð> ô"ó ð"ð ö"ó ð"ð ô"ó ð"ð Ùˆtƒ_ôó ó ðð" öFó ðFðB ôGó ðGð  öó ôrƒ   rì  c                  ód   € ] tR tRtRtRt]R R l4       t]RR R ll4       t]R	 R
 l4       t	Rt
R# )rš  i¡  ÚcuÚCUDAc               ó   € V ^8„  d   QhRR/# r	  r{   )r¾   s   "r„   r¿   ÚCUDACodeCache.__annotate__§  s   € ÷ 1ñ 1˜dñ 1rƒ   c                	ó,   € \         P                  ! 4       # rÃ   )rö   Úuse_re_buildr†  s   &r„   r	  ÚCUDACodeCache._use_re_build¦  s   € ä!×.Ò.Ó0Ð0rƒ   Nc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# r	  r{   )r¾   s   "r„   r¿   rR	  «  ó<   € ÷ 	
ñ 	
àð	
ð ð	
ð ð		
ð
 %ð	
ð 
ñ	
rƒ   c                	ó2   € \         P                  ! WW4R 7      # ©)r	  )rö   Úcuda_compile_commandr	  s   &&&&&r„   r	  ÚCUDACodeCache._compile_commandª  s   € ô "×6Ò6Ø ô
ð 	
rƒ   c               ó   € V ^8„  d   QhRR/# rà   r{   )r¾   s   "r„   r¿   rR	  ·  s   € ÷ ñ  3ñ rƒ   c                	ó¦   € \        \        P                  ! 4       \        P                  ! 4       \        P                  ! 4       \        4       .4      pV# rÃ   )rË   rö   rŸ  Ú_nvcc_compiler_optionsÚ_nvcc_host_compiler_optionsr²  ©rˆ  r—  s   & r„   r	  Ú CUDACodeCache._source_code_extra¶  sC   € äô #×1Ò1Ó3ä"×9Ò9Ó;ä"×>Ò>Ó@ä“ð
ó
ˆð ˆrƒ   r{   rÃ   )r}   r~   r   r€   ró  rô  rY  r	  r	  r	  r‚   r{   rƒ   r„   rš  rš  ¡  sG   † àÐØ€Hàô1ó ð1ð ö	
ó ð	
ð ôó ôrƒ   rš  c                  óÎ   a € ] tR tRt$ RtRt]P                  tR]	R&   / t
R]	R&   ]R V 3R	 ll4       t]R
 R l4       t]RR R ll4       t]R R l4       t]R R l4       tRtV ;t# )r›  iË  r  ÚXPUrõ  rö  zdict[str, DLLWrapper]Ú	dll_cachec               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   ÚXPUCodeCache.__annotate__Ó  s   € ÷ ñ ˜Dñ rƒ   c                	óX   <€ \         SV `  4        V P                  P                  4        R # rÃ   )r,  r‹  rd	  rV  )rˆ  r?  s   &€r„   r‹  ÚXPUCodeCache.cache_clearÒ  s   ø€ ä‰ÑÔØ�‰×ÑÖrƒ   c               ó   € V ^8„  d   QhRR/# r	  r{   )r¾   s   "r„   r¿   rf	  Ø  s   € ÷ ñ ˜dñ rƒ   c                	ó   € R # r¥  r{   r†  s   &r„   r	  ÚXPUCodeCache._use_re_build×  s   € árƒ   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# r	  r{   )r¾   s   "r„   r¿   rf	  Ü  rW	  rƒ   c                	ó2   € \         P                  ! WW4R 7      # rY	  )Úxpu_compile_utilsÚxpu_compile_commandr	  s   &&&&&r„   r	  ÚXPUCodeCache._compile_commandÛ  s   € ô !×4Ò4Ø ô
ð 	
rƒ   c               ó   € V ^8„  d   QhRR/# rà   r{   )r¾   s   "r„   r¿   rf	  è  s   € ÷ ñ  3ñ rƒ   c                	ó~   € \        \        P                  ! 4       \        P                  ! 4       \	        4       .4      pV# rÃ   )rË   rn	  Ú_sycl_compilerÚ_sycl_compiler_optionsr²  r`	  s   & r„   r	  ÚXPUCodeCache._source_code_extraç  s5   € ää!×0Ò0Ó2Ü!×8Ò8Ó:Ü“ðó
ˆð ˆrƒ   c               ó$   € V ^8„  d   QhRRRRRR/# r>	  r{   )r¾   s   "r„   r¿   rf	  ó  s'   € ÷ Jñ J˜sð J°#ð JÐ:Uñ Jrƒ   c                óÔ   € VR8w  d   \        RV RV 24      hV P                  W4      w  r4pW0P                  9  d   \        V4      V P                  V&   V P                  V,          WE3# rA	  )rý   rò  rd	  r´  rC	  s   &&&   r„   rA  ÚXPUCodeCache.loadò  s{   € ð ˜4ÔÜð-Ø-9¨N¸/È+ÈðXóð ð 58·K±KØó5
Ñ1ˆÐ!1ð §¡Ô-Ü+5°mÓ+DˆC�M‰M˜-Ñ(à—‘˜mÕ,¨hÐIÐIrƒ   r{   rÃ   )r}   r~   r   r€   ró  rô  r+   ÚXPUCompileErrorrö  r�   rd	  rY  r‹  r	  r	  r	  rA  r‚   rº  r»  s   @r„   r›  r›  Ë  sŽ   ø‡ àÐØ€HØ03×0CÑ0C€NÐ-ÓCØ')€IÐ$Ó)à÷ó ðð ôó ðð ö	
ó ð	
ð ôó ðð ôJó öJrƒ   r›  c                  óÎ   € ] tR tRt$ Rt]P                   ! R R4      4       t/ tR]	R&   . t
R]	R&   R	tR
t]R R l4       t]R R l4       t]RR R ll4       t]R R l4       tRtR# )r™  i  zã
A cache for managing the compilation and loading source code specifically for ROCm.
This class handles writing source code to files, compiling them into shared objects, and caching
the results to avoid redundant compilations.
c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚROCmCodeCache.CacheEntryi  rˆ   rï  rq  r{   Nr|   r{   rƒ   r„   rñ  r|	    s   ‡ à‹Ø×rƒ   rñ  rò  r/  rž   rœ  r  Fc               ó   € V ^8„  d   QhRR/# r3  r{   )r¾   s   "r„   r¿   ÚROCmCodeCache.__annotate__  s   € ÷ ,ñ ,˜ñ ,rƒ   c                 	ó~   € \         P                  P                  4        \         P                  P                  4        R # rÃ   )r™  r/  rV  rœ  r{   rƒ   r„   r‹  ÚROCmCodeCache.cache_clear  s&   € ä×Ñ×!Ñ!Ô#Ü×#Ñ#×)Ñ)Ö+rƒ   c               ó$   € V ^8„  d   QhRRRRRR/# r	  r{   )r¾   s   "r„   r¿   r~	    s!   € ÷ ñ  ð °3ð ¸?ñ rƒ   c                óh   € \        \        R.RV4      4      p\        WP                  VR7      w  rEWE3# r	  )rË   r1   rÒ  ró  )rˆ  rú  r	  Úcuda_commandr�   rï  s   &&&   r„   rÒ  ÚROCmCodeCache.write  s?   € ô Ü  - °.À,ÓOó
ˆô  Ø×0Ñ0¸ô
‰ˆð ˆÐrƒ   Nc               ó(   € V ^8„  d   QhRRRRRRRR/# r!	  r{   )r¾   s   "r„   r¿   r~	  .  s,   € ÷ /=ñ /=Øð/=Ø-0ð/=Ø>Nð/=à	ñ/=rƒ   c           	     ó¨  € V P                   '       g7   RV n         \        P                  \        \	        \        4       4      4      4       V P                  W4      w  rEW@P                  9  Edx   ^ RIH	p \        4       pV! \        P                  P                  WtR,           4      \        R7      pT;_uu_ 4        VR\        V P                   4      )  V,           p	\        P                  P#                  V	4      '       g¥   \%        V.W’V4      p
\'        4       pV
P)                  R4      p \*        P,                  ! V\*        P.                  R\        P0                  R7      p\        P                  RV4       \'        4       pR	Yû,
           R
T
 2p\        P;                  T4       M\        P                  RVV	4       \<        P?                  WY4      V P                  V&   RRR4       V P                  V,          P@                  WE3#   \*        P2                   d'   p\4        P6                  ! YÎP8                  4      ThRp?ii ; i  + '       g   i     Lm; i)z¶
Compiles source_code into a file with dst_file_ext extension,
using the compile command specific for the ROCm platform.
Returns a tuple of dst_file_path, hash_key, source_code_path
Tr
  r  r  Nrh  )rF  rÔ  r&	  zCompilation output: %szCompilation took z seconds. Compile command: z+Skip compiling %s: output %s already exists)!Ú_logged_compiler_versionr'  rZ  r<   rˆ   r2   rÒ  r/  ry  r  rŽ  rù   rú   rÉ   rz  r¨  ró  rû   r1   r   rÿ   rA  r  r,	  r�  rC  r+   rM	  r.	  rg  r™  rñ  rq  )rˆ  rú  r	  r	  r�   rï  r  r�  r²  rq  r  r7	  r5	  r.	  r8	  r9	  r:	  s   &&&&             r„   rò  ÚROCmCodeCache.compile-  sÉ  € ð ×+×+Ð+Ø+/ˆCÔ(Ü�I‰IÔ/´´M³OÓ0DÓEÔFàŸ)™) KÓ>‰ˆØ—i‘iÕÝ6ä#“~ˆHÙœBŸG™GŸL™L¨¸µ=ÓAÌ<ÔXˆDß’Ø(Ð)H¬C°×0GÑ0GÓ,HÐ+HÐIÈLÕX�Ü—w‘w—~‘~ k×2Ò2Ü.Ø#˜ kÀó�Cô "&£�JØ #§	¡	¨#£�Ið	WÜ!+×!8Ò!8Ø%Ü#-×#4Ñ#4Ø!%Ü "§
¡
ô	"˜ô Ÿ	™	Ð":¸FÔCô  $›v�HØ):¸8Õ;PÐ:QÐQlÐmpÐlqÐ'rÐ$Ü—H‘HÐ-Õ.ä—I‘IØEØ"Ø#ôô
 "/×!9Ñ!9¸*Ó!R�—	‘	˜#‘÷7 ð: —	‘	˜#•×*Ñ*¨CÐ<Ð<øô &×8Ñ8ô WÜ!×2Ò2°9¿l¹lÓKÐQVÐVûðWú÷! —ús3   Â9A/IÄ)AHÅ5A'IÈH>È!H9È9H>È>IÉI	c               ó$   € V ^8„  d   QhRRRRRR/# r>	  r{   )r¾   s   "r„   r¿   r~	  `  r?	  rƒ   c                ót   € VR8w  d   \        RV RV 24      hV P                  W4      w  r4p\        V4      WE3# rA	  rB	  rC	  s   &&&   r„   rA  ÚROCmCodeCache.load_  rG	  rƒ   r{   rÃ   )r}   r~   r   r€   rÌ  r  rL	  rñ  r/  r�   rœ  ró  r‡	  rQ  r‹  rY  rÒ  rò  rA  r‚   r{   rƒ   r„   r™  r™    sš   ‡ ñð ×Ñ÷ð ó ðð $&€EÐ Ó%Ø!€M�9Ó!ØÐØ$Ðàô,ó ð,ð ôó ðð ö/=ó ð/=ðb ôGó ôGrƒ   r™  c                  ó&   € ] tR tRtRR R lltRtR# )ÚCodeCacheFutureiq  Nc               ó    € V ^8„  d   QhRRRR/# ©r»   r  úfloat | Noner½   úCallable[..., Any]r{   )r¾   s   "r„   r¿   ÚCodeCacheFuture.__annotate__r  s   € ÷ "ñ "˜lð "Ð6Hñ "rƒ   c                	ó   € \         hrÃ   ru  ©r8  r  s   &&r„   rP  ÚCodeCacheFuture.resultr  s   € Ü!Ð!rƒ   r{   rÃ   )r}   r~   r   r€   rP  r‚   r{   rƒ   r„   r�	  r�	  q  s   † ÷"ó "rƒ   r�	  c                  ó6   € ] tR tRtRR R lltRR R lltRtR# )	ÚLambdaFutureiv  Nc               ó$   € V ^8„  d   QhRRRRRR/# )r»   Ú	result_fnr‘	  rn  zFuture[Any] | Noner½   r4  r{   )r¾   s   "r„   r¿   ÚLambdaFuture.__annotate__w  s$   € ÷ ñ Ø+ðØ5Gðà	ñrƒ   c                	ó   € Wn         W n        R # rÃ   )r™	  rn  )r8  r™	  rn  s   &&&r„   r9  ÚLambdaFuture.__init__w  s   € ð #ŒØŽrƒ   c               ó    € V ^8„  d   QhRRRR/# r�	  r{   )r¾   s   "r„   r¿   rš	  }  s   € ÷  ñ  ˜lð  Ð6Hñ  rƒ   c                	ó~   € Ve+   V P                   e   V P                   P                  VR7       V P                  4       # )Nr  )rn  rP  r™	  r”	  s   &&r„   rP  ÚLambdaFuture.result}  s5   € ØÒ 4§;¡;Ò#:ð
 �K‰K×Ñ wÐÔ/Ø�~‰~ÓÐrƒ   )rn  r™	  rÃ   )r}   r~   r   r€   r9  rP  r‚   r{   rƒ   r„   r—	  r—	  v  s   † ÷÷ ó  rƒ   r—	  c                  ó6   € ] tR tRtRtR R ltR	R R lltRtR# )
ÚStaticAutotunerFuturei‡  zE
A statically launchable CachingAutotuner, loaded from TritonBundler
c               ó    € V ^8„  d   QhRRRR/# )r»   Ústatic_autotunerr´   r½   r4  r{   )r¾   s   "r„   r¿   Ú"StaticAutotunerFuture.__annotate__Œ  s   € ÷ Eñ EÐ)9ð E¸dñ Erƒ   c                	ó    € Wn         R V n        R # rÃ   )r£	  Úreload_kernel_from_src)r8  r£	  s   &&r„   r9  ÚStaticAutotunerFuture.__init__Œ  s   € à 0Ôð
 AEˆÖ#rƒ   Nc               ó    € V ^8„  d   QhRRRR/# )r»   r  r�	  r½   r´   r{   )r¾   s   "r„   r¿   r¤	  •  s   € ÷ )ñ )˜lð )Ð6Fñ )rƒ   c                	óL  € V P                   f   \        R4      h\        R4      ;_uu_ 4        V P                  P	                  V P                   R7       V P                  P                  RV P                   R R7       V P                  uuR R R 4       #   + '       g   i     R # ; i)Nz:reload_kernel_from_src must be set before calling result()z%StaticAutotunerFuture.warm_precompile)r¦	  F)Úwarm_cache_onlyÚreload_kernelÚstatic_triton_bundle_key)r¦	  r%  r'   r£	  Úrecheck_autotune_cacheÚ
precompiler”	  s   &&r„   rP  ÚStaticAutotunerFuture.result•  s•   € ð ×&Ñ&Ò.Ü ØLóð ô ÐA×BÕBØ×!Ñ!×8Ñ8Ø'+×'BÑ'Bð 9ô ð ×!Ñ!×,Ñ,Ø %Ø"×9Ñ9Ø)-ð -ô ð
 ×(Ñ(÷ C×B×BÓBús   ­ABÂB#	)r¦	  r£	  rÃ   )r}   r~   r   r€   rÌ  r9  rP  r‚   r{   rƒ   r„   r¡	  r¡	  ‡  s   † ñõE÷)ó )rƒ   r¡	  rÃ   r¤  )rê   r•  )rê   r•  rê   Nr¹  )r3  r:  r9  r8  r7  r3  r<  r;  )z	at::vec::zprod_masked_reduce(r¥  (F  Ú__conditional_annotations__Ú
__future__r   rŠ  r-  r  rR  rà  r   Úimportlib.resourcesr(  r5  r@  Úloggingrù   rJ  rÆ  r  rz  rþ   rë  rŽ  rA  r  rº  rÄ  rç  rb  Úbisectr   Úcollections.abcr   re  r   r)  r   r   r	   Údatetimer
   r   r   Úpathlibr   r   r   r   Útypesr   r   r   r   r   Útypingr   r   r   r   r   r   r   Útyping_extensionsr   r   r   r    rØ   Útorch._library.opaque_objectr–  r‚  Útorch.distributedrd  rh  r!   r"   Útorch._dynamo.device_interfacer#   Útorch._dynamo.excr$   Útorch._dynamo.utilsr%   r&   r'   r(   Útorch._inductorr)   r*   r+   r,   Útorch._inductor.codegen.commonr-   r.   r/   Útorch._inductor.codegen.cudar0   rö   Ú,torch._inductor.codegen.rocm.compile_commandr1   r2   Ú$torch._inductor.compile_worker.utilsr3   Útorch._inductor.cpp_builderr4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   Útorch._inductor.cpu_vec_isarB   rC   Ú!torch._inductor.custom_graph_passrD   rE   rF   rG   rH   rI   rJ   rK   Útorch._inductor.freezing_utilsrL   rM   Ú%torch._inductor.runtime.compile_tasksrN   Ú%torch._inductor.runtime.runtime_utilsrO   rP   Útorch._inductor.utilsrQ   rR   rS   rT   rU   rV   rW   Ú"torch._library.fake_class_registryrX   rY   Útorch._loggingrZ   Útorch._subclasses.fake_tensorr[   r\   r]   Útorch._utils_internalr^   Útorch.compilerrü  Útorch.compiler._cacher_   r`   ra   Ú)torch.export.pt2_archive._package_weightsrb   rc   Ú"torch.export.pt2_archive.constantsrd   Ú%torch.fx.experimental.symbolic_shapesre   rf   rg   Útorch.utils._devicerh   Útorch.utils._ordered_setri   rw  rj   rk   rl   rm   r·   ro   r„  rp   rq   Úruntimerr   Úruntime.autotune_cachers   Útriton_bundlerrt   Úvirtualizedru   rv   rx   r†   r�   r’   r¤   r¥   r¦   r§   r  r¨   r(  r©   r)  rª   r\  r¬   Úirr­   r®   r¯   r°   r±   Úruntime.hintsr²   r³   Úruntime.triton_heuristicsr´   r  rµ   rÇ  Úfile_lock_timeoutrz  Ú_loggingÚgetArtifactLoggerr}   r  Úautotuning_logÚ	getLoggerr'  ÚAOTAUTOGRAD_CACHE_PREFIXrÍ   rÕ   rÞ   rä   rì   r  r  Útorch.utils._functoolsr  Útorch_key_cacher  r  rT  re  rŽ  r“  r™  r¥  r­  r¯  rÒ  rØ  rM  rL	  rò  rú  rþ  r	  r  rF  r  ÚPicklerr  rÎ  rî  rñ  ró  r  rU  r^  rj  r�   ro  rr  r2  r„  rH  rF  rŸ  r   r`  rm  ro  Úregisterrª  r6  r/  rb  rd  r�  r¡  rô  r  rú   rÉ   r  r   rA  r‡  r‰  r†  rB  rD  r!  r�  rÇ  rÕ  r>  r=  ry  r¨  r²  r´  rê  rì  rš  Útorch._inductor.codegen.xpurn	  r›  r™  r�	  r—	  r¡	  )r°	  s   @r„   Ú<module>ré	     sÕ  øðß "Ð "ã Û Û Û Û Û Û Û 	Û Û Û Û 	Û Û Û Û 	Û Û Û Û Û 
Û Û Û Û Ý Ý .Ý ß 'Ñ 'Ý ß (Ý Ý *ß ÷õ ÷ Q× PÑ Pß DÓ Dã ß 4Ð 4Ý  ß  Ý CÝ '÷ó ÷ ?Ó >÷ñ õ
 M÷õ E÷÷ ÷ ÷ ÷  F÷	÷ 	ó 	÷ NÝ Gß N÷÷ ñ õ @Ý @Ý +÷ñ õ
 3Ý ,÷ñ ÷
 PÝ I÷ñ õ
 5Ý /÷ó õ )ß 3Ý #Ý 8Ý )Ý ñ ˆCƒL€ô�yô ô˜	¨õ ô,�ô ,ô&�	 õ &÷" ßGÓGÝ)å,Ý-Ý$Ý ßAß5ß:Ý;Ý ð �l‰l˜gÑ%€Ø×'Ò'€à—.’.×2Ò2°8¸]ÓK€Ø—’×1Ò1°(¸LÓI€Ø×Ó˜Ó!€àÐ õ
ñ ˆ4ƒôSó ðSñ ˆ4ƒôó ðõGõ÷*õZõ Ið ô
ó ð
÷7
ñ 7
ôt'�ô 'ô28�iô 8õvõ0÷-÷"÷;÷"ñ "÷Jõ&!÷ð< ×Ò÷ð ó ñööö	ð$ ØØØÙðÑ öô8[˜&Ÿ.š.õ [ö|Vð$ ôXó ñXöD%ð ×Ò÷ð ó ñô™õ ð ×Ó˜dÔ#÷y9ð y9ó $ñy9ñx 7A³lÑ " OÔ BöWöXö0ðf ×Ò÷ð ó ññ *4ò	ó*Ñ &öö0	÷i,ò i,öXö,!ô8d'�7˜1•:õ d'ðN ×Òô˜Mó ó ñôZ‘< Õ0õ Zðz ‡‚ôó ñð  ÷` ð ` ó ñ` ðF ÷# ð # ó ñ# ÷L\ò \ð~ �ˆ+Ô ö0Dðl �gŠg�lŠlÑ,Ó.Ð0EÓF�Ø—7’7—<’<¡¨WÓ5Ñ ØBÑ ð ‡‚ôCó ñCöL÷	ð 	ö	Kð ÷d1ð d1ó ñd1öN	 ð ôJ;¡ó J;ó ñJ;ðZ ô[/Ñ4ó [/ó ñ[/ð| ôvÑ0ó vó ñvör.öbð
 ÷t(ð t(ó ñt(ön?ð ô"ó ñ"÷(Uò Uðp ô"ó ñ"÷Mò Mð` ô#Ñ$ó #ó ñ#÷L Kð ô8JÑ#ó 8Jó ñ8Jðv ÷fGð fGó ñfG÷R"ò "ô
 ‘?õ  ô")™O÷ )rƒ   