+
    ˜°³jp¶  ã                   óF  a € Rj tV0 t R 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 ^ RIHtHt ^ RIHt ^ RIt^ RItR t ! R	 R
]4      t ! R R4      t]]]3,          tRt/ t] ^ k  RRRR/t. RNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR
NRNR.Nt ! R/ R]4      t R0 t! ! R1 R4      t" ! R2 R4      t#R3 R4 lt$R5 R6 lt%R7 t&RkR8 R9 llt'R: R; lt(R< R= lt)R> t*]PV                  ! R?4      t,R@ t-RA t.RB t/RC t0]PV                  ! RD4      t1RE t2]PV                  ! RF4      t3RG t4]PV                  ! RH4      t5RI t6RlRJ lt7RK RL lt8RM RN lt9RO t:RP RQ lt;RR t< ! RS RT4      t= ! RU R'4      t>]>! 4       t?/ t@] ^k ]
 FJ  tA]B! ]A]4      '       g	   ]C! RV4      h]AP‰                  4        F  w  tEtF]?P�                  ]E4       ]F]@]E&   K  	  KL  	  ]PV                  ! RW]?P‘                  4        RX24      tI]PV                  ! RY4      tJ]PV                  ! RZ4      tK]PV                  ! R[4      tL]PV                  ! R\4      tM R] R^ ltNRlR_ R` lltORa Rb ltPRc tQ]PV                  ! Rd4      tRRe tSRf Rg ltTRmRh Ri lltUR# )na  The Python Hipify script.
##
# Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
#               2017-2018 Advanced Micro Devices, Inc. and
#                         Facebook Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
N)ÚCUDA_TO_HIP_MAPPINGS)ÚMATH_TRANSPILATIONS)ÚCAFFE2_PATH_MAPPINGS)ÚIterator)ÚMappingÚIterable)ÚEnumc                 óF   € \         P                  ! R V  2\        ^R7       R# )z-hipify version 2.0.0 no longer uses function )Ú
stacklevelN)ÚwarningsÚwarnÚFutureWarning)Únames   &Úa/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/utils/hipify/hipify_python.pyÚ_deprecatedr   -   s   € Ü‡M‚MÐAÀ$ÀÐHÌ-Ðde×fó    c                   ó   € ] tR t^0t^t^tRtR# )ÚCurrentState© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚINITIALIZEDÚDONEÚ__static_attributes__r   r   r   r   r   0   s   † Ø€KØ„Dr   r   c                   óD   a € ] tR t^4t o V 3R lR ltV 3R lR ltRtV tR# )ÚHipifyResultc                ó   <€ V ^8„  d   QhRR/# ©é   ÚreturnNr   )ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚHipifyResult.__annotate__5   s   ø€ ÷ ñ ¸ñ r   c                ó,   € Wn         W n        R V n        R# )Ú N©Úcurrent_stateÚhipified_pathÚstatus)Úselfr)   r*   s   &&&r   Ú__init__ÚHipifyResult.__init__5   s   € Ø*ÔØ*ÔØˆŽr   c                ó    <€ V ^8„  d   QhRS[ /# ©r    r!   ©Ústr)r"   r#   s   "€r   r$   r%   :   s   ø€ ÷ Dñ D™ñ Dr   c                óT   € R V P                    RV P                   RV P                   2# )zHipifyResult:: current_state: z, hipified_path : z
, status: r(   ©r,   s   &r   Ú__str__ÚHipifyResult.__str__:   sF   € Ø0°×1CÑ1CÐ0DÐDVÐW[×WiÑWiÐVjÐjtÐuy÷  vAñ  vAð  uBð  Cð  	Dr   r(   N)r   r   r   r   r-   r5   r   Ú__classdictcell__©r#   s   @r   r   r   4   s   ø‡ € ÷ð ÷
Dö Dr   r   z;// !!! This is a file automatically generated by hipify!!!
ÚDtypeÚscalar_tÚTÚ
InputErrorÚopenfÚbcolorsÚGeneratedFileCleanerÚmatch_extensionsÚmatched_files_iterÚpreprocess_file_and_save_resultÚcompute_statsÚadd_dim3ÚprocessKernelLaunchesÚfind_closure_groupÚfind_bracket_groupÚfind_parentheses_groupÚreplace_math_functionsÚhip_header_magicÚreplace_extern_sharedÚget_hip_file_pathÚis_out_of_placeÚis_pytorch_fileÚis_cusparse_fileÚis_special_fileÚis_caffe2_gpu_fileÚTrieÚpreprocessorÚfile_specific_replacementÚfile_add_headerÚfix_static_global_kernelsÚextract_argumentsÚstr2boolÚhipifyc                   óP   a a€ ] tR t^Nt oV3R lV 3R lltV3R lR ltRtVtV ;t# )r<   c                ó   <€ V ^8„  d   QhRR/# r   r   )r"   r#   s   "€r   r$   ÚInputError.__annotate__Q   s   ø€ ÷ ñ  4ñ r   c                ó2   <€ \         SV `  V4       Wn        R # ©N)Úsuperr-   Úmessage)r,   r`   Ú	__class__s   &&€r   r-   ÚInputError.__init__Q   s   ø€ Ü‰Ñ˜Ô!ØŽr   c                ó    <€ V ^8„  d   QhRS[ /# r0   r1   )r"   r#   s   "€r   r$   r\   U   s   ø€ ÷ .ñ .™ñ .r   c                ó    € R V P                    2# )zInput error: ©r`   r4   s   &r   r5   ÚInputError.__str__U   s   € Ø˜tŸ|™|˜nÐ-Ð-r   re   )	r   r   r   r   r-   r5   r   r7   Ú__classcell__)ra   r#   s   @@r   r<   r<   N   s   ù‡ € ÷ó ÷.÷ .ð .r   c                 ó   € \        WR R7      # )Úignore)Úerrors)Úopen)ÚfilenameÚmodes   &&r   r=   r=   Y   s   € Ü� xÔ0Ð0r   c                   ó6   € ] tR t^^tRtRtRtRtRtRt	Rt
RtR	tR
# )r>   z[95mz[94mz[92mz[93mz[91mz[0mz[1mz[4mr   N)r   r   r   r   ÚHEADERÚOKBLUEÚOKGREENÚWARNINGÚFAILÚENDCÚBOLDÚ	UNDERLINEr   r   r   r   r>   r>   ^   s*   † Ø€FØ€FØ€GØ€GØ€DØ€DØ€DØ„Ir   c                   ób   a € ] tR t^qt o RtRV 3R lR lltR tR tRV 3R lR lltR t	R	t
V tR
# )r?   z+Context Manager to clean up generated filesc                ó   <€ V ^8„  d   QhRR/# r   r   )r"   r#   s   "€r   r$   Ú!GeneratedFileCleaner.__annotate__s   s   ø€ ÷  ñ  °Dñ  r   c                ó>   € Wn         \        4       V n        . V n        R # r^   )Úkeep_intermediatesÚsetÚfiles_to_cleanÚdirs_to_clean)r,   r{   s   &&r   r-   ÚGeneratedFileCleaner.__init__s   s   € Ø"4ÔÜ!›eˆÔØˆÖr   c                ó   € V # r^   r   r4   s   &r   Ú	__enter__ÚGeneratedFileCleaner.__enter__x   s   € Øˆr   c                óÚ   € \         P                  P                  V4      '       g9   V P                  P	                  \         P                  P                  V4      4       \        V.VO5/ VB # r^   )ÚosÚpathÚexistsr}   ÚaddÚabspathrk   )r,   ÚfnÚargsÚkwargss   &&*,r   rk   ÚGeneratedFileCleaner.open{   sK   € Ü�w‰w�~‰~˜b×!Ò!Ø×Ñ×#Ñ#¤B§G¡G§O¡O°BÓ$7Ô8ä�BÐ(˜Ò( Ñ(Ð(r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r"   r#   s   "€r   r$   ry   �   s   ø€ ÷ ;ñ ;¨dñ ;r   c                ó$  € \         P                  P                  V4      w  r4V'       g"   \         P                  P                  V4      w  r4V'       dA   V'       d9   \         P                  P                  V4      '       g   V P	                  VR R7       \         P                  P                  V4      '       d	   V'       gQ   \         P                  ! V4       V P                  P                  \         P                  P                  V4      4       R# R# )T)Úexist_okN)
r„   r…   Úsplitr†   ÚmakedirsÚisdirÚmkdirr~   Úappendrˆ   )r,   Údnr�   ÚparentÚns   &&&  r   r‘   ÚGeneratedFileCleaner.makedirs�   sš   € Ü—G‘G—M‘M "Ó%‰	ˆßÜŸ™Ÿ™ fÓ-‰IˆFß—a¤§¡§¡¨v× 6Ò 6Ø�M‰M˜&¨4ˆMÔ0Ü�w‰w�}‰}˜R× Ò ¯Ü�HŠH�RŒLØ×Ñ×%Ñ%¤b§g¡g§o¡o°bÓ&9Ö:ñ )1r   c                óæ   € V P                   '       g_   V P                   F  p\        P                  ! V4       K  	  V P                  R R R1,           F  p\        P
                  ! V4       K  	  R # R # )Néÿÿÿÿ)r{   r}   r„   Úunlinkr~   Úrmdir)r,   ÚtypeÚvalueÚ	tracebackÚfÚds   &&&&  r   Ú__exit__ÚGeneratedFileCleaner.__exit__‹   sU   € Ø×&×&Ð&Ø×(Ô(�Ü—	’	˜!–ñ )à×'Ñ'©¨"¨×-Ð-�Ü—’˜–ó .ñ 'r   )r~   r}   r{   N©F)r   r   r   r   Ú__doc__r-   r�   rk   r‘   r¢   r   r7   r8   s   @r   r?   r?   q   s0   ø‡ € Ù5÷ ò  ò
ò)÷;ò ;÷ð r   c                ó0   € V ^8„  d   QhR\         R\         /# )r    r…   r!   r1   )r"   s   "r   r$   r$   “   s   € ÷ %ñ %œð %¤ñ %r   c                 óB   € V P                  \        P                  R 4      # )Ú/)Úreplacer„   Úsep)r…   s   &r   Ú_to_unix_pathr«   “   s   € Ø�<‰<œŸ™ Ó$Ð$r   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r    rl   Ú
extensionsr!   )r2   r   Úbool)r"   s   "r   r$   r$   –   s!   € ÷ 9ñ 9œsð 9´ð 9¼Tñ 9r   c                óx   a € \         ;QJ d    V 3R lV 4       F  '       g   K   R# 	  R# ! V 3R lV 4       4      # )z<Helper method to see if filename ends with certain extensionc              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir^   ©Úendswith)Ú.0Úerl   s   & €r   Ú	<genexpr>Ú#match_extensions.<locals>.<genexpr>˜   s   øé € Ð8©Z¨ˆx× Ñ  ×#Ð#«Zùs   ƒ!TF©Úany)rl   r­   s   f&r   r@   r@   –   s,   ø€ ç‹3Ô8©ZÓ8�3Œ3Ð8Š3Ð8ˆ3Ô8©ZÓ8Ó8Ð8r   c                 óx   a € \         ;QJ d    V 3R  lV 4       F  '       g   K   R# 	  R# ! V 3R  lV 4       4      # )c              3   óR   <"  € T F  p\         P                   ! SV4      x € K  	  R # 5ir^   )Úfnmatch)r³   ÚpatternÚfilepaths   & €r   rµ   Ú_fnmatch.<locals>.<genexpr>œ   s   øé € ÐJÁ°gŒw�Š˜x¨×1Ð1Ãùs   ƒ$'TFr·   )r½   Úpatternss   f&r   Ú_fnmatchrÀ   ›   s,   ø€ ß‹3ÔJÁÓJ�3Œ3ÐJŠ3ÐJˆ3ÔJÁÓJÓJÐJr   c                ó‚   € V ^8„  d   QhR\         R\        R\        R\        R\        R\        R\        \         ,          /# )r    Ú	root_pathÚincludesÚignoresr­   Úout_of_place_onlyÚis_pytorch_extensionr!   )r2   r   r®   r   )r"   s   "r   r$   r$   Ÿ   sR   € ÷ #ñ #Üð#äð#ô ð#ô ð	#ô
  ð#ô #ð#ô 08¼­}ñ#r   c              #   óN  "  € \        V4      p\        P                  ! V R R7       Fù  w  rxp	\        P                  P	                  Wp4      p
V
R8X  dZ   RV9   d   VP                  R4       RV9   d   VP                  R4       RV9   d#   VP                  R4       VP                  R4       V	 Fn  p\        \        P                  P                  W{4      4      p\        WÁ4      '       g   K>  \        WÂ4      '       d   KQ  \        WÃ4      '       g	   WÆ9   g   Kj  Vx € Kp  	  Kû  	  R# 5i)T)ÚtopdownÚ.z.gitÚbuildÚthird_partyzthird_party/nvfuserN)r|   r„   Úwalkr…   ÚrelpathÚremover”   r«   ÚjoinrÀ   r@   )rÂ   rÃ   rÄ   r­   rÅ   rÆ   Úexact_matchesÚabs_dirpathÚdirsÚ	filenamesÚrel_dirpathrl   r½   s   &&&&&&       r   rA   rA   Ÿ   sÜ   é € ô ˜“M€Mô +-¯'ª'°)ÀT×*JÑ&ˆ˜IÜ—g‘g—o‘o kÓ=ˆØ˜#Ôà˜Œ~Ø—‘˜FÔ#Ø˜$ŒØ—‘˜GÔ$Ø Ô$Ø—‘˜MÔ*Ø—‘Ð1Ô2Û!ˆHÜ$¤R§W¡W§\¡\°+Ó%HÓIˆHô ˜×,Ô,Ü! (×4Ô4Ü% h×;Ò;¸xÖ?Xà”ó "ó +Kùs   ‚C$D%Ã+D%Ã>D%ÄD%c                óª   € V ^8„  d   QhR\         R\         R\        R\        R\        \         \        3,          R\        R\        R\
        R	\        R
R/
# )r    Úoutput_directoryr½   Ú	all_filesÚheader_include_dirsÚstatsÚhip_clang_launchrÆ   Ú	clean_ctxÚshow_progressr!   N)r2   r   ÚdictÚlistr®   r?   )r"   s   "r   r$   r$   Å   st   € ÷ +ñ +Üð+äð+ô ð+ô &ð	+ô
 ”Cœ�I�ð+ô ð+ô #ð+ô (ð+ô ð+ð !%ñ+r   c	                 óp  € \         P                  P                  \         P                  P                  W4      4      p	\	        \
        P                  V	R 7      p
V
\        V	&   \        WW#VWVWx4	      pV'       d6   RVP                  9  d%   \        V	RVP                  VP                  RR7       V\        V	&   R# ))r)   r*   Úignoredz->T)ÚflushN)r„   r…   rˆ   rÏ   r   r   r   ÚHIPIFY_FINAL_RESULTrS   r+   Úprintr*   )rÖ   r½   r×   rØ   rÙ   rÚ   rÆ   rÛ   rÜ   Úfin_pathÚhipify_resultÚresults   &&&&&&&&&   r   rB   rB   Å   s•   € ô �w‰w�‰œrŸw™wŸ|™|Ð,<ÓGÓH€HÜ ¬|×/GÑ/GÐW_Ô`€MØ$1Ô˜Ñ!ÜÐ*°iÐV[Ø*À)ó\€F÷ ˜¨&¯-©-Ô7ÜØ�dØ× Ñ  &§-¡-°tõ	=ð %+Ô˜Ó!r   c                ó   € V ^8„  d   QhRR/# r   r   )r"   s   "r   r$   r$   Þ   s   € ÷ 
\ñ 
\˜Dñ 
\r   c                 óì   € V R ,           UUu0 uF  w  rVkK	  	  ppp\        R\        V4      R 24       \        RP                  V4      4       \        R\        V R,          4      R 24       R# u uppi )Úunsupported_callsz1Total number of unsupported CUDA function calls: r¡   ú, z+
Total number of replaced kernel launches: Úkernel_launchesN)rã   ÚlenrÏ   )rÙ   Ú	cuda_callÚ	_filepathré   s   &   r   rC   rC   Þ   sy   € ØAFÐGZÖA[Ô\ÑA[Ñ'=¨	›ÑA[ÐÑ\ô 
Ð=¼cÐBSÓ>TÐUVÐ=WÐ
XÔYô 
ˆ$�)‰)Ð%Ó
&Ô'ô 
Ð8¼¸UÐCTÕ=UÓ9VÐWXÐ8YÐ
ZÖ[ùó ]s   �A0c                ó  € ^ p^ pV P                  RR4      P                  RR4      p \        ^4       Uu. uF  p/ NK  	  pp^ WR,          R&   \        V 4       F�  w  rgV^8”  d    M†VR8X  d   V^,          pMVR8X  d
   V^,          pVR8X  g   V\        V 4      ^,
          8X  g   KO  V^ 8X  g   KX  WgR8g  ,           WR,          R&   V^,          pV^8  g   K~  V^,           WR,          R&   K’  	  W^ ,          R,          V^ ,          R,          ^,            pW^,          R,          V^,          R,           p	W^ ,          R,          V^ ,          R,           P                  R	R4      P	                  R
4      p
W^,          R,          V^,          R,           P                  R	R4      P	                  R
4      pRV
 R2pRV R2pVP                  W¬4      pV	P                  W½4      pVP                  W‰,           Wï,           4      pV# u upi )zBadds dim3() to the second and third arguments in the kernel launchú<<<r'   ú>>>ÚstartÚ(Ú)Ú,ÚendÚ
Ú zdim3()r©   ÚrangeÚ	enumeraterì   Ústrip)Úkernel_stringÚcuda_kernelÚcountÚclosureÚ_Úarg_locsÚindÚcÚfirst_arg_rawÚsecond_arg_rawÚfirst_arg_cleanÚsecond_arg_cleanÚfirst_arg_dim3Úsecond_arg_dim3Úfirst_arg_raw_dim3Úsecond_arg_raw_dim3s   &&              r   rD   rD   ë   sï  € à€EØ€GØ!×)Ñ)¨%°Ó4×<Ñ<¸UÀBÓG€MÜ27¸´(Ó%;±(¨Q£b±(€HÐ%;Ø €H…O�GÑÜ˜MÖ*‰ˆØ�1Œ9ÙØ�Œ8Ø�q�L‰GØ�#ŒXØ�q�LˆGØ�ŒH˜œs =Ó1°AÕ5Ö5¸7Àa¾<Ø%(°©HÕ%5ˆH�O˜EÑ"Ø�Q�JˆEØ�qŽyØ+.°­7�• Ó(ñ +ð "¨1¥+¨gÕ"6°xÀµ{À5Õ7IÈAÕ7MÐN€MØ"¨A¥;¨wÕ#7¸À½ÀEÕ8JÐK€Nà#¨Q¥K°Õ$8¸À!½ÀUÕ9KÐL×TÑTÐUYÐ[]Ó^×dÑdÐehÓi€OØ$¨a¥[°Õ%9¸(À1½+ÀeÕ:LÐM×UÑUÐVZÐ\^Ó_×eÑeÐfiÓjÐà˜_Ð-¨QÐ/€NØÐ.Ð/¨qÐ1€Oà&×.Ñ.¨ÓOÐØ(×0Ñ0Ð1AÓSÐØ×%Ñ% mÕ&DÐFXÕFnÓo€KØÐùò7 &<s   ´G>z([ ]+)(detail?)::[ ]+\\\n[ ]+c           
     ór  a € \         P                  R S 4      o V 3R lpR pR p\        V! V! S 4      4      4      pS pV EFr  pV! V4      pS P                  RVR,          4      p	S V^ ,          R,          V	^,            p
S VR,          VR,           pV^,          R,          R8X  d   ^ M^pS V^ ,          R,          WŒ,          R,          ^,            p\	        Wº4      p\        \        ^ VR,          P                  R	R4      P                  R
R4      4      4      pRV^ R P                  R
R^V,
          ,          R
,           4      P                  R	R4      P                  R
R4      P                  VRV,           R,           4      ,           pVP                  V
V4      pVR,          P                  V4       EKu  	  V# )zJReplace the CUDA style Kernel launches with the HIP style kernel launches.c                 óL   € V P                  ^4       V P                  ^4       R2# )é   z::©Úgroup©Úinps   &r   Ú<lambda>Ú'processKernelLaunches.<locals>.<lambda>  s   € °·±¸1³°¸s¿y¹yÈ»|¸nÈBÑ.Or   c           	      ó   <€ R RV R,          RV R,          /RRR	RR	/RRR	RR	//pR^ /p^ p^p^p^pTp\        VR ,          R,          ^,
          R	R	4       EF%  pS
V,          p	WsV39   dm   V	R8X  d)   Ws8X  d   TpW�R,          R&   VR;;,          ^,          uu&   V	R8X  d7   VR;;,          ^,          uu&   VR,          ^ 8X  d   Wt8X  d   W�R,          R&   TpWt8w  g   K‰  S
V,          P                  4       '       g   S
V,          R
9   dE   Wv8w  d   TpW�R,          R&   V^ 8X  d)   ^ VR,          R&   VR,          VR,          VR ,          .u # Kø  Wv8X  g   EK  W�R,          R&   VR,          VR,          VR ,          .u # 	  R# )Úkernel_launchrò   rö   Úkernel_nameÚtemplatez<>Ú>Ú<Nrš   >   Ú#ró   rô   Ú:r   )rù   Úisalnum)Ú	in_kernelÚposrþ   ÚSTARTÚAT_TEMPLATEÚAFTER_TEMPLATEÚAT_KERNEL_NAMEr+   ÚiÚcharÚstrings   &         €r   Úgrab_method_and_templateÚ7processKernelLaunches.<locals>.grab_method_and_template  s¯  ø€ ð ˜g y°Õ'9¸5À)ÈEÕBRÐSØ˜G R¨°Ð3Ø˜ " e¨RÐ0ð
ˆð �q�	ˆð ˆØˆØˆØˆàˆô �s˜?Õ+¨GÕ4°qÕ8¸"¸b×AˆAØ˜!•9ˆDð  Ð-Ô-Ø˜3”;Ø”Ø!,˜Ø12˜J�¨Ñ.Ø˜$—K 1Õ$“Kà˜3”;Ø˜$—K 1Õ$“KØ˜T•{ aÔ'¨VÔ-BØ34˜J�¨Ñ0Ø!/˜ð Ö$Ø˜!•9×$Ñ$×&Ò&¨&°­)Ð7PÔ*PØÔ/Ø!/˜Ø45˜MÕ*¨5Ñ1ð ˜A”vØ67˜˜MÕ*¨7Ñ3ð "% ]Õ!3°s¸:µÈ#ÈoÕJ^Ð`Ò`ñ	 ð ×/Ø67˜MÕ*¨7Ñ3ð "% ]Õ!3°s¸:µÈ#ÈoÕJ^Ð`Ò`óK Br   c           
     óì   € ^ p. pV P                  RV4      R8w  dY   V P                  RV4      pV P                  RV4      ^,           pV^ 8:  d   \        R4      hVP                  RVRVRWV /4       Ko  V# )zKFinds the starting and ending points for all kernel launches in the string.rð   rñ   zno kernel end foundrò   rö   r  rš   )Úfindr<   r”   )r&  Ú
kernel_endÚkernel_positionsÚkernel_starts   &   r   Úfind_kernel_boundsÚ1processKernelLaunches.<locals>.find_kernel_boundsQ  s�   € àˆ
ØÐð �k‰k˜% Ó,°Ô2à!Ÿ;™; u¨jÓ9ˆLð  Ÿ™ U¨LÓ9¸AÕ=ˆJØ˜QŒÜ Ð!6Ó7Ð7ð ×#Ñ# W¨l¸EÀ:Ø%,¨fÀ:Ð.Nð%Pö Qð  Ðr   c                 ól  € R pR pR pV  F§  pVR 8X  d;   VR8X  d   VR8X  d   RpMpVR8X  d   VR8X  d   RpM_VR8X  d   VR8w  d
   VR8w  d   RpMGVR8X  d   VR8X  g   VR	8X  d   R pM/VR8X  d   VR8X  d
   VR8X  d   R pMVR8X  d   VR8X  d
   VR8w  d   R pTpVR 8X  d   W4,          pKž  VR
,          pK©  	  V# )r'   r¨   z//Ú*z/*Ú"Ú\Ú'Úr÷   Úxr   )r&  Ú
in_commentÚprev_cÚ
new_stringr  s   &    r   Úmask_commentsÚ,processKernelLaunches.<locals>.mask_commentsi  sÖ   € Øˆ
ØˆØˆ
ÛˆAØ˜RÔà˜”8 ¨#¤Ø!%‘JØ˜#”X &¨C¤-Ø!%‘JØ˜#”X &¨D¤.°V¸s´]Ø!$�JøØ˜tÔ#à˜”9  T¤	Ø!#�JøØ˜tÔ#à˜”8 ¨#¤Ø!#�JøØ˜sÔ"à˜”8 ¨$¤Ø!#�JØˆFØ˜RÔØ•’
à˜cÕ!’
ñ3 ð4 Ðr   ró   rö   rò   r  rð   rñ   rô   zhipLaunchKernelGGL(z, 0rê   rë   rš   )	ÚRE_KERNEL_LAUNCHÚsubrÞ   r*  rD   rì   rW   r©   r”   )r&  rÙ   r'  r.  r:  Úget_kernel_positionsÚoutput_stringÚkernelÚparamsÚparenthesisrý   rü   Úend_param_indexÚkernel_name_with_templateÚcuda_kernel_dim3Únum_klpÚ
hip_kernels   f&               r   rE   rE     sµ  ø€ ô ×!Ñ!Ñ"OÐQWÓX€Fõ9aòv ò0ôB  Ñ 2±=ÀÓ3HÓ IÓJÐØ€Mô 'ˆá)¨&Ó1ˆð —k‘k # v¨e¥}Ó5ˆð ˜V A�Y wÕ/°¸aµÐ@ˆØ˜v g�¨v°e­}Ð=ˆØ% a�y¨Õ/°2Ô5™!¸1ˆØ$*¨6°!­9°WÕ+=¸fÕ>UÐV[Õ>\Ð_`Õ>`Ð$aÐ!Ü# MÓ?ÐäÔ'¨¨6°'­?×+BÑ+BÀ5È#Ó+N×+VÑ+VÐW\Ð^aÓ+bÓcÓdˆà*Ð-=¸aÀÐ-C×-KÑ-KØ�5˜A �KÕ(¨5Õ0ó.2ß29±'¸%ÀÓ2FÇwÁwØ�4óHß ™Ð!:¸CÐB[Õ<[Ð^aÕ<aÓbõcˆ
ð
 &×-Ñ-¨k¸:ÓFˆð 	ÐÕ ×'Ñ'¨
×3ñ1 'ð4 Ðr   c                ó  € Rp^ pTpRRrvV\        V 4      8  dh   W,          V^ ,          8X  d   VRJ d   Rp^pTpM;V^,          pM1W,          V^,          8X  d   V'       d   V^,          pV^ 8X  d   TpWg3# V^,          pKw  R# )aª  Generalization for finding a balancing closure group

     if group = ["(", ")"], then finds the first balanced parentheses.
     if group = ["{", "}"], then finds the first balanced bracket.

Given an input string, a starting position in the input string, and the group type,
find_closure_group returns the positions of group[0] and group[1] as a tuple.

Example:
    >>> find_closure_group("(hi)", 0, ["(", ")"])
    (0, 3)
FTrš   )NN)rì   )Úinput_stringrò   r  Úinside_parenthesisÚparensr  Úp_startÚp_ends   &&&     r   rF   rF   «  s–   € ð ÐØ€FØ
€CØ˜ˆUà
”�LÓ!Ô
!ØÕ  a¥Ô(Ø! UÓ*Ø%)Ð"Ø�Ø‘à˜!•‘ØÕ %¨¥(Ô*×/AØ�a�KˆFà˜Œ{Ø�Ø�~Ð%àˆq�ŠØÐr   c                ó    € \        WRR.R7      # )z%Finds the first balanced parentheses.Ú{Ú}r  ©rF   ©rI  rò   s   &&r   rG   rG   Ñ  ó   € ä˜l¸#¸s¸ÔDÐDr   c                ó    € \        WRR.R7      # )z!Finds the first balanced bracket.ró   rô   r  rQ  rR  s   &&r   rH   rH   Ö  rS  r   z\bassert[ ]*\(c                ój   € T p\          F&  pVP                  V R2\         V,           R24      pK(  	  V# )a_  FIXME: Temporarily replace std:: invocations of math functions
with non-std:: versions to prevent linker errors NOTE: This
can lead to correctness issues when running tests, since the
correct version of the math function (exp/expf) might not get
called.  Plan is to remove this function once HIP supports
std:: math function calls inside device code

ró   )r   r©   )rI  r?  Úfuncs   &  r   rI   rI   Þ  sC   € ð !€Mß#ˆØ%×-Ñ-°$°°q¨kÔ>QÐRVÕ>WÐ=XÐXYÐ;ZÓ[Šñ $ð Ðr   z:?:?\b(__syncthreads)\b(\w*\()c                ó0  a€ V oRR.p\         ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d   S# RS9   pVRS9   ,          pVRS9   ,          pV\        P                  S4      R	J,          pV'       d
   R
V ,           oS# )a  If the file makes kernel builtin calls and does not include the cuda_runtime.h header,
then automatically add an #include to match the "magic" includes provided by NVCC.
TODO:
    Update logic to ignore cases where the cuda_runtime.h is included by another file.
zhip/hip_runtime.hzhip/hip_runtime_api.hc              3   ó`   <"  € T F#  p\         P                  ! R V RV R2S4      x € K%  	  R# 5i)z#include ("z"|<z>)N)ÚreÚsearch)r³   Úextr?  s   & €r   rµ   Ú#hip_header_magic.<locals>.<genexpr>ý  s.   øé € Ð
WÉwÈŒ2�9Š9˜ C 5¨¨C¨5°Ð3°]×CÐCËwùs   ƒ+.TFÚhipLaunchKernelGGLÚ
__global__Ú
__shared__Nz#include "hip/hip_runtime.h"
)r¸   ÚRE_SYNCTHREADSrZ  )rI  ÚheadersÚhasDeviceLogicr?  s   &  @r   rJ   rJ   ñ  s—   ø€ ð !€Mð #Ð$;Ð<€Gß
ƒsÔ
WÉwÓ
W‡s‡s‚sÔ
WÉwÓ
W×WÒWØÐð *¨]Ñ:€NØ�l mÑ3Õ3€NØ�l mÑ3Õ3€NØ”n×+Ñ+¨MÓ:À$ÐFÕF€N÷ Ø8¸<ÕGˆàÐr   zGextern\s+([\w\(\)]+)?\s*__shared__\s+([\w:<>\s]+)\s+(\w+)\s*\[\s*\]\s*;c                ó8   € T p\         P                  R V4      pV# )a‚  
Match 'extern __shared__ type foo[];' syntax and use HIP_DYNAMIC_SHARED() MACRO instead.
See: https://github.com/ROCm/hip/blob/master/docs/markdown/hip_kernel_language.md#__shared__
Examples:
    "extern __shared__ char smemChar[];"
        => "HIP_DYNAMIC_SHARED( char, smemChar)"
    "extern __shared__ unsigned char smem[];"
        => "HIP_DYNAMIC_SHARED( unsigned char, my_smem)"
c                 óˆ   € R V P                  ^4      ;'       g    R RV P                  ^4       RV P                  ^4       R2# )zHIP_DYNAMIC_SHARED(r'   rø   rê   rô   r  r  s   &r   r  Ú'replace_extern_shared.<locals>.<lambda>  s=   € Ð)¨#¯)©)°A«,×*<Ð*<¸"Ð)=¸Q¸s¿y¹yÈ»|¸nÈBÈsÏyÉyÐYZË|ÈnÐ\]Ñ^r   )ÚRE_EXTERN_SHAREDr=  )rI  r?  s   & r   rK   rK     s(   € ð !€MÜ$×(Ñ(Ù^Ð`móo€Mð Ðr   c                ó  € \         P                  P                  V 4      '       d   \        R4      hV'       g   \	        V 4      '       g   V # \         P                  P                  V 4      w  r#\         P                  P                  V4      w  rEVR8X  d   RpTpTpVP                  RR4      pVP                  RR4      pVP                  RR	4      pVP                  RR4      pVP                  RR4      pVR
8w  d   VP                  RR	4      pV'       g'   W'8X  d!   \         P                  P                  VR4      pV'       d   W'8X  d   WE,           V8X  d
   VR,           p\         P                  P                  W$V,           4      # )z+
Returns the new name of the hipified file
ú$rel_filepath must be a relative pathú.cuú.hipÚcudaÚhipÚCUDAÚHIPÚTHCÚTHHzcaffe2/coreÚ_hip)	r„   r…   ÚisabsÚAssertionErrorrM   r�   Úsplitextr©   rÏ   )Úrel_filepathrÆ   Údirpathrl   Úrootr[  Úorig_filenameÚorig_dirpaths   &&      r   rL   rL   "  s/  € ô 
‡w�w‡}�}�\×"Ò"ÜÐCÓDÐDß¬¸×(EÒ(EØÐäŸ™Ÿ™ lÓ3Ñ€GÜ—‘× Ñ  Ó*�I€DðH ˆe„|Øˆà€MØ€Là�o‰o˜f eÓ,€GØ�o‰o˜f eÓ,€GØ�o‰o˜e UÓ+€Gà�<‰<˜ Ó&€DØ�<‰<˜ Ó&€Dà�-ÔØ�|‰|˜E 5Ó)ˆç GÔ$;Ü—'‘'—,‘,˜w¨Ó.ˆç Ô 7¸T½ZÈMÔ<YØ�f�}ˆä�7‰7�<‰<˜¨¥Ó,Ð,r   c                ó$   € V ^8„  d   QhR\         /# r0   ©r®   )r"   s   "r   r$   r$   k  s   € ÷ 	ñ 	¤Tñ 	r   c                 óü   € \         P                  P                  V 4      '       d   \        R 4      hV P	                  R4      '       d   R# V P	                  R4      '       d   R# V P	                  R4      '       d   R# R# )rh  útorch/Fúthird_party/nvfuser/útools/autograd/templates/T)r„   r…   rr  rs  Ú
startswith©ru  s   &r   rM   rM   k  sb   € Ü	‡w�w‡}�}�\×"Ò"ÜÐCÓDÐDØ×Ñ˜x×(Ò(ÙØ×ÑÐ5×6Ò6ÙØ×ÑÐ:×;Ò;ÙÙr   c                ó$   € V ^8„  d   QhR\         /# r0   r{  )r"   s   "r   r$   r$   x  s   € ÷ ñ ¤Tñ r   c                 ó  € \        R 4       \        P                  P                  V 4      '       d   \	        R4      hV P                  R4      '       d   V P                  R4      '       d   R# R# V P                  R4      '       d   R# V P                  R4      '       d   R# V P                  R4      '       d   R# V P                  R	4      '       d   R# V P                  R
4      '       d   R# V P                  R4      '       d   R# R# )rN   rh  zaten/zaten/src/ATen/core/FTr}  r~  zthird_party/fbgemm/zthird_party/mslk/r  ztest/cpp/c10d/)r   r„   r…   rr  rs  r€  r�  s   &r   rN   rN   x  sÓ   € ÜÐ!Ô"Ü	‡w�w‡}�}�\×"Ò"ÜÐCÓDÐDØ×Ñ˜w×'Ò'Ø×"Ñ"Ð#8×9Ò9ÙÙØ×Ñ˜x×(Ò(ÙØ×ÑÐ5×6Ò6ÙØ×ÑÐ4×5Ò5ÙØ×ÑÐ2×3Ò3ÙØ×ÑÐ:×;Ò;ÙØ×ÑÐ/×0Ò0ÙÙr   c                 ód   € \        R 4       \        V 4      '       d   RV P                  4       9   # R# )rO   ÚsparseF©r   rN   Úlowerr�  s   &r   rO   rO   �  s-   € ÜÐ"Ô#Ü�|×$Ò$Ø˜<×-Ñ-Ó/Ñ/Ð/Ùr   c                ó$   € V ^8„  d   QhR\         /# r0   r{  )r"   s   "r   r$   r$   –  s   € ÷ 	ñ 	¤Tñ 	r   c                 óÈ   € \        R 4       \        V 4      '       dF   RV P                  4       9   d   R# RV P                  4       9   d   RV P                  4       9   d   R# R# R# )rP   r…  TÚlinalgÚbatchlinearalgebralibblasFr†  r�  s   &r   rP   rP   –  sU   € ÜÐ!Ô"Ü�|×$Ò$Ø�|×)Ñ)Ó+Ô+ÙØ˜×+Ñ+Ó-Ô-Ø*¨l×.@Ñ.@Ó.BÔBÙÙÙr   c                 óh  € \        R 4       \        P                  P                  V 4      '       d   \	        R4      hV P                  R4      '       d   R# \        P                  P                  V 4      p\        P                  P                  V4      w  r#RV9   ;'       g    VR9   ;'       d    RV9  # )rQ   rh  zc10/cudaTÚgpuÚcudnn©ri  ú.cuh)r   r„   r…   rr  rs  r€  Úbasenamert  )ru  rl   r   r[  s   &   r   rQ   rQ   ¢  s�   € ÜÐ$Ô%Ü	‡w�w‡}�}�\×"Ò"ÜÐCÓDÐDØ×Ñ˜z×*Ò*ÙÜ�w‰w×Ñ Ó-€HÜ�W‰W×Ñ˜hÓ'�F€Aà�XÑ×7Ð7 ¨Ñ!7×VÐV¸gÈXÑ>UÐVr   c                   ó6   a € ] tR tRt o RtV 3R lR ltRtV tR# )ÚTrieNodei®  zwA Trie node whose children are represented as a dictionary of char: TrieNode.
A special char '' represents end of word
c                ó   <€ V ^8„  d   QhRR/# r   r   )r"   r#   s   "€r   r$   ÚTrieNode.__annotate__³  s   ø€ ÷ ñ ˜$ñ r   c                ó   € / V n         R # r^   ©Úchildrenr4   s   &r   r-   ÚTrieNode.__init__³  s	   € ØˆŽr   r—  N)r   r   r   r   r¥   r-   r   r7   r8   s   @r   r“  r“  ®  s   ø‡ € ñ÷ö r   r“  c                   óŠ   a € ] tR tRt o RtV 3R lR ltV 3R lR ltR tR tR	 t	]
P                  R
 4       tR tR tRtV tR# )rR   i·  zŸCreates a Trie out of a list of words. The trie can be exported to a Regex pattern.
The corresponding Regex should match much faster than a simple Regex union.c                ó   <€ V ^8„  d   QhRR/# r   r   )r"   r#   s   "€r   r$   ÚTrie.__annotate__»  s   ø€ ÷ +ñ +˜$ñ +r   c                óš   € \        4       V n        \        P                  ! RR7      V n        V P                  P                  4       V n        R# )z,Initialize the trie with an empty root node.F)ÚusedforsecurityN)r“  rw  ÚhashlibÚmd5Ú_hashÚdigestÚ_digestr4   s   &r   r-   ÚTrie.__init__»  s/   € ä“JˆŒ	Ü—[’[°Ô7ˆŒ
Ø—z‘z×(Ñ(Ó*ˆŽr   c                ó   <€ V ^8„  d   QhRR/# r   r   )r"   r#   s   "€r   r$   rœ  Á  s   ø€ ÷ 	!ñ 	!˜4ñ 	!r   c                óL  € V P                   P                  VP                  4       4       V P                   P                  4       V n        V P
                  pV F:  pVP                  P                  V\        4       4       VP                  V,          pK<  	  RVP                  R&   R# )zAdd a word to the Trie. Tr'   N)	r¡  ÚupdateÚencoder¢  r£  rw  r˜  Ú
setdefaultr“  ©r,   ÚwordÚnoder%  s   &&  r   r‡   ÚTrie.addÁ  su   € à�
‰
×Ñ˜$Ÿ+™+›-Ô(Ø—z‘z×(Ñ(Ó*ˆŒØ�y‰yˆãˆDØ�M‰M×$Ñ$ T¬8«:Ô6Ø—=‘= Õ&ŠDñ ð !ˆ�‰�bÓr   c                ó   € V P                   # )zReturn the root node of Trie. )rw  r4   s   &r   ÚdumpÚ	Trie.dumpÌ  s   € à�y‰yÐr   c                ó.   € \         P                  ! V4      # )zEscape a char for regex. )rY  Úescape)r,   r%  s   &&r   ÚquoteÚ
Trie.quoteÐ  s   € ä�yŠy˜‹Ðr   c                ó–   € V P                   pV F)  pW2P                  9   d   VP                  V,          pK(   R# 	  RVP                  9   # )zRSearch whether word is present in the Trie.
Returns True if yes, else return FalseFr'   )rw  r˜  rª  s   &&  r   rZ  ÚTrie.searchÔ  sC   € ð �y‰yˆÛˆDØ—}‘}Ô$Ø—}‘} TÕ*’âñ	 ð �T—]‘]Ñ"Ð"r   c                óæ  € TpRVP                   9   d+   \        VP                   P                  4       4      ^8X  d   R# . p. p^ p\        VP                   P                  4       4       Fƒ  p\	        VP                   V,          \
        4      '       dX    V P                  VP                   V,          V P                  4      pVP                  V P                  V4      V,           4       K�  ^pK…  	  \        V4      ^ 8”  * p	\        V4      ^ 8”  dX   \        V4      ^8X  d   VP                  V^ ,          4       M.VP                  RRP                  V4      ,           R,           4       \        V4      ^8X  d   V^ ,          p
MRRP                  V4      ,           R,           p
V'       d   V	'       d   V
R,          p
V
# RV
 R	2p
V
#   \         d&    TP                  T P                  T4      4        EKˆ  i ; i)
z†Convert a Trie into a regular expression pattern

Memoized on the hash digest of the trie, which is built incrementally
during add().
r'   NÚ[Ú]z(?:Ú|rô   Ú?z)?)r˜  rì   ÚkeysÚsortedÚ
isinstancer“  Ú_patternr£  r”   r³  Ú	ExceptionrÏ   )r,   rw  r¢  r¬  ÚaltÚccÚqr%  ÚrecurseÚcconlyræ   s   &&&        r   r¿  ÚTrie._patterná  sˆ  € ð ˆà�—‘Ô¤3 t§}¡}×'9Ñ'9Ó';Ó#<ÀÔ#AÙàˆØˆØˆÜ˜4Ÿ=™=×-Ñ-Ó/Ö0ˆDÜ˜$Ÿ-™-¨Õ-¬x×8Ò8ð0Ø"Ÿm™m¨D¯M©M¸$Õ,?ÀÇÁÓN�GØ—J‘J˜tŸz™z¨$Ó/°'Õ9Ö:ð ’ñ 1ô ˜“X Ò!ˆäˆr‹7�QŒ;Ü�2‹w˜!Œ|Ø—
‘
˜2˜a�5Õ!à—
‘
˜3 §¡¨£Õ,¨sÕ2Ô3äˆs‹8�qŒ=Ø˜•V‰Fà˜SŸX™X c›]Õ*¨SÕ0ˆFçßØ˜#•�ð ˆð ˜v˜h bÐ)�Øˆøô- !ô 0Ø—I‘I˜dŸj™j¨Ó.×/Ð/ð0ús   ÂAG Ç +G0Ç/G0c                óN   € V P                  V P                  V P                  4      # ©z#Export the Trie to a regex pattern.©r¿  rw  r£  r4   s   &r   r¼   ÚTrie.pattern  ó   € à�}‰}˜TŸY™Y¨¯©Ó5Ð5r   c                óN   € V P                  V P                  V P                  4      # rÈ  rÉ  r4   s   &r   Úexport_to_regexÚTrie.export_to_regex  rË  r   )r£  r¡  rw  N)r   r   r   r   r¥   r-   r‡   r¯  r³  rZ  Ú	functoolsÚ	lru_cacher¿  r¼   rÍ  r   r7   r8   s   @r   rR   rR   ·  sX   ø‡ € ñS÷+ð +÷	!ð 	!òòò#ð ×Ññ)ó ð)òV6÷6ð 6r   z=Expected each mapping in CUDA_TO_HIP_MAPPINGS to be a Mappingz(?<=\W)(z)(?=\W)z#include "([^"]+)"z#include <([^>]+)>z"#define THC_GENERIC_FILE "([^"]+)"z\.cu\bc                ó²   € V ^8„  d   QhR\         R\         R\        R\        R\        \         \        3,          R\        R\        R\
        R	\        R
\        /
# )r    rÖ   r½   r×   rØ   rÙ   rÚ   rÆ   rÛ   rÜ   r!   )r2   r   rÝ   rÞ   r®   r?   r   )r"   s   "r   r$   r$   1  s€   € ÷ zñ zÜðzäðzô ðzô &ð	zô
 ”Cœ�I�ðzô ðzô #ðzô (ðzô ðzô !-ñzr   c	                ó€  a aaaaaaaa€ \         P                  P                  \         P                  P                  S V4      4      o\	        V4      p\
        S,          p	VS9  d&   RV	n        RV	n        \        P                  V	n
        V	# \	        \         P                  P                  VS 4      4      p
\        SRR7      ;_uu_ 4       pVP                  4       \        8X  d0   RV	n        RV	n        \        P                  V	n
        V	uuRRR4       # VP                  ^ 4       VP!                  4       pRRR4       Xp\         P                  P                  \         P                  P                  S \#        V
S4      4      4      p\         P                  P%                  \         P                  P'                  V4      4      '       g/   SP)                  \         P                  P'                  V4      4       R p\*        P-                  Wü4      p\.        P0                  ! 4        F]  w  ppRV9   d?   RV9  d8   R\2        P4                  ! V4      ,           p\2        P,                  ! VVV4      pKK  VP7                  VV4      pK_  	  R VVVVVVV VV3	R
 llp\8        P-                  V! RR	4      V4      p\:        P-                  V! RR4      V4      p\<        P-                  V! R4      V4      pVP?                  R4      '       d;   VP7                  RR4      pVP7                  RR4      p\@        P-                  RV4      pS'       g   \C        VS4      pVP?                  R!4      '       d   RV9  d   \E        V4      p\G        V4      pS'       dm   WÜ8X  dg   \         P                  P'                  S4      \         P                  P'                  V4      8X  d&   SV	n        RV	n        \        P                  V	n
        V	# SV8w  d    \I        SR"4      '       d   \        V,           pR	p\         P                  P%                  V4      '       d2   \        VRR7      ;_uu_ 4       pVP!                  4       V8g  pRRR4       V'       d\    SP                  VRRR7      ;_uu_ 4       pVPK                  V4       RRR4       Wén        RV	n        \        P                  V	n
        V	# Wén        RV	n        \        P                  V	n
        V	#   + '       g   i     ELÐ; i  + '       g   i     L«; i  + '       g   i     L; i  \L         d   p\O        \P        PR                   RT RTPT                   RS R\P        PV                   2	\X        PZ                  R7       ST	n        RT	n        \        P                  T	n
        T	u Rp?# Rp?ii ; i)#z;Executes the CUDA -> HIP conversion on the specified file. Nz[ignored, not to be hipified]zutf-8)Úencodingz#[ignored, input is hipified output]c                 ó:   € \         V P                  ^ 4      ,          # )é    )ÚPYTORCH_MAPr  )Úms   &r   Úpt_replÚpreprocessor.<locals>.pt_replX  s   € Ü˜1Ÿ7™7 1›:Õ&Ð&r   z/hip/z
(?<!/hip/)Tc                 ó,   <	a a€ VVVVVVVV	V
VV 3R  lpV# )c                 ó*  <a€ V P                  ^4      p\        P                  P                  V4      oVP	                  R4      '       g/   VP	                  R4      '       dB   VP	                  R4      '       g+   SP                  \        V P                  ^4      S4      4      # S'       EdÚ   \        ;QJ d    V3R lS 4       F  '       g   K   RM	  RM! V3R lS 4       4      '       Ed™   RpRpS'       d…   \        P                  P                  S4      p\        P                  P                  \        P                  P                  WA4      4      p\        P                  P                  V4      '       d   TpTpVf‘   S FŠ  p\        P                  P                  SV4      p\        P                  P                  \        P                  P                  WA4      4      p\        P                  P                  V4      '       g   K†  TpTpKŒ  	  Vf   V P                  ^ 4      # V\        9  d   \        SVSSSSSSS4	       MëV\        9   dá   \        V,          pVP                  \        P                   8X  dµ   \        P                  P#                  VS4      p\        P                  P                  \        P                  P                  S\        VS4      4      4      p	W—n        V\        V&   SP                  \        P                  P#                  V	e   V	V4      4      # TV4      4      # \        V,          P$                  p
SP                  \'        \        P                  P#                  V
e   T
MTV4      4      4      # V P                  ^ 4      # )r  ro  ÚTHCPc              3   óD   <"  € T F  qP                  S4      x € K  	  R # 5ir^   r±   )r³   Úsrl   s   & €r   rµ   Ú>preprocessor.<locals>.mk_repl.<locals>.repl.<locals>.<genexpr>€  s   øé € Ð,UÉ9Àa¯Z©Z¸×-AÐ-AË9ùs   ƒ TFN)z	ATen/cudazATen/native/cudazATen/native/nested/cudazATen/native/quantized/cudazATen/native/sparse/cudazATen/native/transformers/cudazTHC/)r  r„   r…   r‘  r€  r"   rL   r¸   Údirnamerˆ   rÏ   r†   râ   rB   r)   r   r   rÍ   r*   r«   )r×  r    Ú
header_dirÚheader_filepathÚheader_dir_to_checkÚheader_path_to_checkÚheader_include_dirÚheader_resultÚheader_rel_pathÚheader_fout_pathÚhipified_header_filepathrl   r×   rÛ   rä   rØ   rÚ   Úinclude_current_dirrÆ   rÖ   rÜ   rÙ   Útempls   &          @€€€€€€€€€€€r   ÚreplÚ+preprocessor.<locals>.mk_repl.<locals>.replq  sÔ  ù€ Ø—‘˜“
ˆAÜ—w‘w×'Ñ'¨Ó*ˆHà—‘ð &÷ 'ò 'ð —‘˜e×$Ò$¨Q¯\©\¸&×-AÒ-Aà—|‘|Ô$5°a·g±g¸a³jÐBVÓ$WÓXÐXç$Ð$¯«Ô,UÉ9Ó,U¯¯ªÔ,UÉ9Ó,U×)UÓ)UØ!�
Ø"&�ç&Ü*,¯'©'¯/©/¸(Ó*CÐ'Ü+-¯7©7¯?©?¼2¿7¹7¿<¹<ÐH[Ó;_Ó+`Ð(Ü—w‘w—~‘~Ð&:×;Ò;Ø%8˜
Ø*>˜à"Ò*Û.AÐ*Ü.0¯g©g¯l©lÐ;KÐM_Ó.`Ð+Ü/1¯w©w¯©¼r¿w¹w¿|¹|ÐL_Ó?cÓ/dÐ,ÜŸ7™7Ÿ>™>Ð*>×?Ô?Ø)<˜JØ.BšOñ /Bð #Ò*ØŸ7™7 1›:Ð%à"Ô*=Ô=Ü3Ð4DØ4CØ4=Ð?RÐTYÐ[kØ4HÈ)ÐUbõdð %Ô(;Ô;Ü$7¸Õ$H�MØ$×2Ñ2´l×6NÑ6NÔNä*,¯'©'¯/©/¸/ÐK[Ó*\˜Ü+-¯7©7¯?©?¼2¿7¹7¿<¹<ÐHXÜHYÐZiÐkó  IAó<Bó ,CÐ(à6FÔ3Ø?LÔ+¨OÑ<Ø$Ÿ|™|¬B¯G©G¯O©OÐP`ÒPlÐ<LØR\ó-^ó  _ð _ØAPÐR\ó-^ó  _ð _ä+>¸Õ+O×+]Ñ+]Ð(Ø—|‘|¤M´"·'±'·/±/Ð^vò  _CÑBZØGVÐXbó3dó %eó fð fð —7‘7˜1“:Ðr   r   )rë  rê  rì  r×   rÛ   rä   rØ   rÚ   rÆ   rÖ   rÜ   rÙ   s   ff €€€€€€€€€r   Úmk_replÚpreprocessor.<locals>.mk_replp  s   ú€ ÷9	÷ 9	ðt ˆr   z#include "{0}"z#include <{0}>Fz#define THC_GENERIC_FILE "{0}"zCMakeLists.txtrm  rn  ro  rp  rj  Ú	PowKernelz[skipped, no changes]Úwz[ok]zFailed to save z with "z", leaving z unchanged.©Úfilez[skipped, no permissions]z[skipped, already hipified])Tr�  )ri  r�  ú.cú.ccú.cppú.hú.hpp).r„   r…   rˆ   rÏ   r«   râ   r*   r+   r   r   r)   rÍ   rk   ÚreadlineÚHIPIFY_C_BREADCRUMBÚseekÚreadrL   r†   rà  r‘   ÚRE_PYTORCH_PREPROCESSORr=  r   ÚitemsrY  r²  r©   ÚRE_QUOTE_HEADERÚRE_ANGLE_HEADERÚRE_THC_GENERIC_FILEr²   ÚRE_CU_SUFFIXrE   rI   rJ   r@   ÚwriteÚOSErrorrã   r>   rr   Ústrerrorrt   ÚsysÚstderr)rÖ   r½   r×   rØ   rÙ   rÚ   rÆ   rÛ   rÜ   rå   ru  ÚfinÚoutput_sourceÚorig_output_sourceÚ	fout_pathrØ  Ú	cuda_pathÚhip_pathr¼   rî  Údo_writeÚfout_oldÚfoutr´   rä   s   f&fffffff               @r   rS   rS   1  s  ÿø€ ô �w‰w�‰œrŸw™wŸ|™|Ð,<¸hÓGÓH€HÜ˜XÓ&€HÜ'¨Õ1€MØ�yÔ Ø&*ˆÔ#Ø>ˆÔÜ&2×&7Ñ&7ˆÔ#ØÐä ¤§¡§¡°Ð;KÓ!LÓM€Lä	ˆh ×	)Õ	)¨SØ�<‰<‹>Ô0Ô0Ø*.ˆMÔ'Ø#HˆMÔ Ü*6×*;Ñ*;ˆMÔ'Ø ÷ 
*Ò	)ð 	�‰�ŒØŸ™›
ˆ÷ 
*ð 'Ðô —‘—‘¤§¡§¡Ð-=Ô?PÐQ]Ð_sÓ?tÓ uÓv€IÜ�7‰7�>‰>œ"Ÿ'™'Ÿ/™/¨)Ó4×5Ò5Ø×Ñœ2Ÿ7™7Ÿ?™?¨9Ó5Ô6ò'ô ,×/Ñ/°ÓG€Mô  4×9Ò9Ö;Ñˆ	�8ð �hÔ 7°)Ô#;ð $¤b§i¢i°	Ó&:Õ:ˆGÜŸFšF 7¨H°mÓDŠMð *×1Ñ1°)¸XÓFŠMñ  <÷;÷ ;ôx $×'Ñ'©Ð0@À$Ó(GÈÓW€MÜ#×'Ñ'©Ð0@À%Ó(HÈ-ÓX€MÜ'×+Ñ+©GÐ4TÓ,UÐWdÓe€Mð ×ÑÐ)×*Ò*Ø%×-Ñ-¨f°eÓ<ˆØ%×-Ñ-¨e°UÓ;ˆÜ$×(Ñ(¨°Ó?ˆ÷ Ü-¨m¸UÓCˆð 	×Ñ˜/×*Ò*°À8Ô0KÜ.¨}Ó=ˆô % ]Ó3€M÷ 	ØÔ/Ü�G‰G�O‰O˜HÓ%¬¯©¯©¸Ó)CÔCà&.ˆÔ#Ø6ˆÔÜ&2×&7Ñ&7ˆÔ#ØÐð �9ÔÔ!1°(Ð<n×!oÒ!oÜ+¨mÕ;ˆà€HÜ	‡w�w‡~�~�i× Ò Ü�) g×.Õ.°(Ø—}‘}“¨-Ñ7ˆH÷ /çð	!Ø—‘ 	¨3¸�×AÔAÀTØ—
‘
˜=Ô)÷ Bà*3Ô'Ø#)ˆMÔ Ü*6×*;Ñ*;ˆMÔ'Ø Ð ð '0Ô#Ø<ˆÔÜ&2×&7Ñ&7ˆÔ#ØÐ÷I 
*×	)Ð	)ú÷^ /×.ú÷ B×Aûô ô 	!Ü”W—_‘_Ð% _°Y°K¸wÀqÇzÁzÀlÐR]Ð^fÐ]gÐgrÔsz×sÑsð  sAð  BÜ—z‘zõ#à*2ˆMÔ'Ø#>ˆMÔ Ü*6×*;Ñ*;ˆMÔ'Ø Õ ûð	!úsU   Ã	>S:Ä!S:ÑTÑ<T4 ÒT!Ò*+T4 Ó:T	ÔT	Ô!T1	Ô,T4 Ô4V=Ô?A3V8Ö2V=Ö8V=c                ó   € V ^8„  d   QhRR/# r   r   )r"   s   "r   r$   r$   í  s   € ÷ 	ñ 	ÐX\ñ 	r   c                 óŒ  a€ \        V R 4      ;_uu_ 4       pVP                  4       pV'       d6   \        P                  ! R\        P                  ! V4       R2V3R lV4      pMVP                  VS4      pVP                  ^ 4       VP                  V4       VP                  4        RRR4       R#   + '       g   i     R# ; i)úr+z\b(z)\bc                 ó   <€ S# r^   r   )r6  Úreplace_strings   &€r   r  Ú+file_specific_replacement.<locals>.<lambda>ñ  s   ø€ Énr   N)	r=   rü  rY  r=  r²  r©   rû  r  Útruncate)r½   Úsearch_stringr  Ústrictr    Úcontentss   &&f&  r   rT   rT   í  sˆ   ø€ Ü	ˆx˜×	Ô	 !Ø—6‘6“8ˆßÜ—v’v ¤R§Y¢Y¨}Ó%=Ð$>¸cÐBÔD\Ð^fÓg‰Hà×'Ñ'¨°~ÓFˆHØ	�‰ˆqŒ	Ø	�‰�ÔØ	�
‰
Œ÷ 
×	×	Ò	ús   –BB2Â2C	c                ó   € V ^8„  d   QhRR/# r   r   )r"   s   "r   r$   r$   ù  s   € ÷ ñ ¨ñ r   c                 óJ  € \        V R 4      ;_uu_ 4       pVP                  4       pV^ ,          R8w  d   VR,          R8w  d   RV R2pRV R2V,           pVP                  ^ 4       VP                  V4       VP	                  4        RRR4       R#   + '       g   i     R# ; i)r  r  r  r2  z	#include z 
Nrš   )r=   rü  rû  r  r  )r½   Úheaderr    r  s   &&  r   rU   rU   ù  s‚   € Ü	ˆx˜×	Ô	 !Ø—6‘6“8ˆØ�!�9˜Ô  r¥
¨cÔ 1Ø˜˜ �]ˆFØ ˜x sÐ+¨xÕ7ˆØ	�‰ˆqŒ	Ø	�‰�ÔØ	�
‰
Œ÷ 
×	×	Ò	ús   •A2BÂB"	c                ó*   € V P                  RR4      p V # )z<Static global kernels in HIP results in a compilation error.z __global__ staticr^  )r©   )Úin_txts   &r   rV   rV     s   € à�^‰^Ð0°,Ó?€FØ€Mr   z#include .*\nc                ó¶  € . pR^ R^ /pT pV^,           pV\        V4      8  Ed5   W,          R8X  d   VR;;,          ^,          uu&   MŠW,          R8X  d   VR;;,          ^,          uu&   MgW,          R8X  d   VR;;,          ^,          uu&   MDW,          R8X  d8   W^,
          ,          R8w  d$   VR,          ^ 8”  d   VR;;,          ^,          uu&   VR,          ^ 8X  d'   VR,          ^ 8X  d   VP                  RVRV/4        V# VR,          ^8X  d:   VR,          ^ 8X  d,   W,          R8X  d   VP                  RVRV/4       V^,           pV^,          pEKE  V# )	a  
Return the list of arguments in the upcoming function parameter closure.
Example:
string (input): '(blocks, threads, 0, THCState_getCurrentStream(state))'
arguments (output): [{'start': 1, 'end': 7}, {'start': 8, 'end': 16},         {'start': 17, 'end': 19}, {'start': 20, 'end': 53}]
r  ró   rô   r  Ú-rò   rö   rõ   )rì   r”   )rò   r&  Ú	argumentsÚclosuresÚcurrent_positionÚargument_start_poss   &&    r   rW   rW     sT  € ð €IàˆQØˆQð€Hð ÐØ)¨AÕ-Ðð œS ›[Õ
(ØÕ# sÔ*Ø�S�M˜QÕŒMØÕ%¨Ô,Ø�S�M˜QÕŒMØÕ%¨Ô,Ø�S�M˜QÕŒMØÕ%¨Ô,°È1Õ8LÕ1MÐQTÔ1TÐYaÐbeÕYfÐijÔYjØ�S�M˜QÕ‹Mð �C�=˜AÔ (¨3¥-°1Ô"4à×Ñ˜gÐ'9¸5ÐBRÐSÔTØð Ðð �C�=˜AÔ (¨3¥-°1Ô"4¸Õ9QÐUXÔ9XØ×Ñ˜gÐ'9¸5ÐBRÐSÔTØ!1°AÕ!5Ðà˜AÕÓàÐr   c                ó0   € V ^8„  d   QhR\         R\        /# )r    Úvr!   )r2   r®   )r"   s   "r   r$   r$   9  s   € ÷ Dñ D”ð Dœñ Dr   c                óŠ   € V P                  4       R9   d   R# V P                  4       R9   d   R# \        P                  ! R4      h)z{ArgumentParser doesn't support type=bool. Thus, this helper method will convert
from possible string types to True / False.TFzBoolean value expected.)ÚyesÚtrueÚtÚyÚ1)ÚnoÚfalser    r—   Ú0)r‡  ÚargparseÚArgumentTypeError)r'  s   &r   rX   rX   9  s:   € ð 	‡w�wƒyÐ2Ô2ÙØ	
�‰‹Ð4Ô	4Ùä×(Ò(Ð)BÓCÐCr   c                 óæ   € V ^8„  d   QhR\         R\        R\        R\        R\         R\        R\        R\        R	\        R
\        R\        R\        R\        R\        R\        R,          R\        /# )r    Úproject_directoryÚshow_detailedr­   Úheader_extensionsrÖ   rØ   rÃ   Úextra_filesrÅ   rÄ   rÜ   rÚ   rÆ   Úhipify_extra_files_onlyrÛ   Nr!   )r2   r®   r   r?   ÚHipifyFinalResult)r"   s   "r   r$   r$   D  s¿   € ÷ Sñ SÜðSäðSô ðSô  ð	Sô
 ðSô "ðSô ðSô ðSô ðSô ðSô ðSô ðSô ðSô "ðSô $ dÕ*ðSô  ñ!Sr   c                 óô  aaa	€ V R 8X  d   \         P                  ! 4       p \         P                  P                  V 4      '       g"   \	        R4       \
        P                  ! ^4       V'       g   V P                  R4       V R,           pW8w  dB   S Uu. uF  qÿP                  W4      NK  	  upoS	 Uu. uF  pVP                  W4      NK  	  upo	\         P                  P                  V4      '       g   \        P                  ! W4       \        \        \        S4      4      o\        \        \        S	4      4      o	\        \        VSS	VVVR7      4      p\        V4      pV Fb  p\         P                  P!                  V4      '       g!   \         P                  P#                  VV4      pVV9  g   KQ  VP%                  V4       Kd  	  ^ RIHp V Fƒ  p\         P                  P!                  V4      '       d
   V! V4      pM&V! \         P                  P#                  VV4      4      pVP+                  VV	V3R lVP-                  R4       4       4       K…  	  Vf   \/        RR	7      pR
. R. /pV'       g   TMT F  p\1        VVVVVW¼Wê4	       K  	  \	        \2        P4                  R,           \2        P6                  ,           \
        P8                  R7       V'       d   \;        V4       \<        # u upi u upi )r'   z,The project folder specified does not exist.r¨   Ú_amd)rÃ   rÄ   r­   rÅ   rÆ   )ÚPathc              3   ó  <"  € T F  qP                  4       '       g   K  \        \        V4      S4      '       g   K7  \        \        V4      S4      '       d   KT  \        VP                  S4      '       g   Kr  \        V4      x € K�  	  R # 5ir^   )Úis_filerÀ   r2   r@   r   )r³   r…   r6  rÄ   rÃ   s   & €€€r   rµ   Úhipify.<locals>.<genexpr>€  s_   øé € ð 
Ù"D˜$ÏÉÏŒIÜœ˜T› H×-ô äœc $›i¨×1ô ô ! §¡Ð,=×>ô ŒC��IˆIÓ"Dùs   ƒB
ŸB
¼B
ÁB
Á7B
r1  T)r{   ré   rë   z-Successfully preprocessed all matching files.rò  )r„   Úgetcwdr…   r†   rã   r  ÚexitÚrstripr©   ÚshutilÚcopytreerÞ   Úmapr«   rA   r|   rr  rÏ   r”   Úpathlibr<  ÚextendÚrglobr?   rB   r>   rq   rt   r  rC   râ   )r4  r5  r­   r6  rÖ   rØ   rÃ   r7  rÅ   rÄ   rÜ   rÚ   rÆ   r8  rÛ   Úincluderi   r×   Úall_files_setr    r<  rå  Úheader_include_dir_pathrÙ   r½   s   &&&f&&f&&f&&&&&          r   rY   rY   D  sg  ú€ ð" ˜BÔÜŸIšI›KÐô �7‰7�>‰>Ð+×,Ò,ÜÐ<Ô=Ü�Š�Œ÷ Ø× Ñ  Ô%Ø,¨vÕ5ÐàÔ,ÙX`ÓaÑX`ÈW—O‘OÐ$5ÖHÑX`ÑaˆÙU\Ó]ÑU\È6�6—>‘>Ð"3ÖFÑU\Ñ]ˆô �7‰7�>‰>Ð*×+Ò+Ü�ŠÐ)Ô<ä”Cœ xÓ0Ó1€HÜ”3”} gÓ.Ó/€GäÔ'Ð(8À8Ø07ÀJØ:KØ=QôSó T€Iô ˜	“N€MãˆÜ�w‰w�}‰}˜Q×ÒÜ—‘—‘Ð-¨qÓ1ˆAØ�MÖ!Ø×Ñ˜QÖñ	 õ Û1ÐÜ�7‰7�=‰=Ð+×,Ò,Ù&*Ð+=Ó&>Ñ#á&*¬2¯7©7¯<©<Ð8HÐJ\Ó+]Ó&^Ð#Ø×Ñö 
Ø"9×"?Ñ"?ÀÔ"Dó
ö 	
ñ 2ð ÒÜ(¸DÔAˆ	ð 2°2Ð7HÈ"ÐM€Eç&=‘YÀ;ÒNˆÜ'Ð(8¸(ÀIÐObØ(-Ð/?ÐW`ö	qñ Oô 
Œ'�/‰/ÐKÕ
KÌgÏlÉlÕ
ZÔad×akÑakÕl÷ Ü�eÔäÐùòi bùÚ]s   ÂK0Â2K5c                óŠ   € V ^8„  d   Qh/ ^ \         9   d
   \        ;R&   ^\         9   d   \        \        \        3,          ;R&   # )r    râ   rÖ  )Ú__conditional_annotations__r9  rÝ   r2   Úobject)r"   s   "r   r$   r$      s>   € ÷ ñ ÷x ,Ò +Ô&Ñ +ñy÷f $Ò #ŒT”#”v�+ÕÑ #ògr   )r   r   r   FFr¤   )F)ri  r�  rô  rõ  rö  r÷  z.inrø  )r�  r÷  rø  r'   r   )r1  r   Fr   TFFFN)WrM  r¥   r1  r»   rY  rC  r  r„   r   Úcuda_to_hip_mappingsr   r   r   Úcollections.abcr   r   r   Úenumr   rÏ  rŸ  r   r   r   rÝ   r2   r9  rú  râ   ÚPYTORCH_TEMPLATE_MAPÚ__all__rÀ  r<   r=   r>   r?   r«   r@   rÀ   rA   rB   rC   rD   Úcompiler<  rE   rF   rG   rH   Ú	RE_ASSERTrI   r`  rJ   rf  rK   rL   rM   rN   rO   rP   rQ   r“  rR   ÚPYTORCH_TRIErÖ  Úmappingr¾  Ú	TypeErrorrþ  ÚsrcÚdstr‡   rÍ  rý  rÿ  r   r  r  rS   rT   rU   rV   Ú
RE_INCLUDErW   rX   rY   r$   )rM  s   @r   Ú<module>r\     sÞ  øðöó0 Û Û 	Û Û 
Û 	Û å 6Ý 5Ý 6å $ß -Ý Û Û ògô�4ô ÷Dñ Dð ˜˜lÐ*Õ+Ð ØTÐ Ø)+Ð Ó +ðà ¨S°*Ð=Ð ðsˆ<ð s˜ð s )ð sÐ-Cð sÐEWð sÐYmð sØ,ðsØ.=ðsØ?IðsØKbðsØdxðsàðsà!9ðsà;SðsàUgðsð jAðsð ðsð !2ðsð 4Eðsð GYðsð [lðsð nBðsð ð	sð "ð	sð $?ð	sð ARð	sð
 'ðsð
 )<ðsð
 >Hðsð
 JXðsð
 Zhðsð
 jrðs€ô.�ô .ò1÷
ñ ÷&ñ õD%õ9ò
K÷#õL+õ2
\ò ðF —:’:Ð>Ó?Ð òWòt#òLEò
Eð
 �JŠJÐ(Ó)€	òð  —’Ð=Ó>€òð: —:’:ÐhÓiÐ òô"F-õR	õò.õ	ò	W÷ñ ÷\6ñ \6ñ| ‹v€Ø!#€Ó #ã#€GÙ�g˜w×'Ò'ÙÐWÓXÐXØ—M‘M–O‰ˆˆSØ×Ñ˜ÔØˆ�CÓó $ñ $ð Ÿ*š*¨°×1MÑ1MÓ1OÐ0PÐPWÐ%XÓYÐ à—*’*Ð2Ó3€Ø—*’*Ð2Ó3€Ø—j’jÐ!FÓGÐ Ø�zŠz˜)Ó$€ðõz÷x	õòð �ZŠZÐ(Ó)€
ò)õXD÷Sñ Sr   