Ë
    g^(h—å  ã                   ó”  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ d dlZd dlmZ d dlm Z m!Z! d d	l"m#Z#m$Z$ d d
l%m&Z& d dl'm(Z(  e jR                  «       rd dl*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2 n$dededdfd„Z/dededdfd„Z0dededdfd„Z1de3fd„Z2dZ4ejj                  jm                  e7«      Z8ejj                  js                  ejj                  js                  e8«      «      Z:ejj                  jw                  e:d«      Z<ej                  j{                  d«      Z>ej                  j{                  d«      Z?ej                  dk(  Z@e@rdndZA ej„                  eC«      ZD ejŠ                  d«      deFdeFfd„«       ZGdeFfd „ZH ejŠ                  d«      d!eFddfd"„«       ZIdeFfd#„ZJ ejŠ                  d«      d$eFde3fd%„«       ZK ejŠ                  d«      d$eFde3fd&„«       ZL ejŠ                  d«      d$eFde3fd'„«       ZM ejŠ                  d«      d$eFde3fd(„«       ZN ejŠ                  d«      d$eFde3fd)„«       ZO ejŠ                  d«      de3fd*„«       ZP ejŠ                  d«      de3fd+„«       ZQ ejŠ                  d«      de3fd,„«       ZR ejŠ                  d«      de3fd-„«       ZS ejŠ                  d«      de3fd.„«       ZTd!eFdeFfd/„ZUd0eVeF   d1eVeF   ddfd2„ZWd3eVeF   deVeF   fd4„ZXd5eFddfd6„ZYd5eFddfd7„ZZd8eFd9eFddfd:„Z[d8eFd9eFddfd;„Z\d<eFdeFfd=„Z] G d>„ d?«      Z^dtd@e3deVeF   fdA„Z_dudBeFdeVeF   fdC„Z`d$eFdeVeF   fdD„ZadeVeF   fdE„Zb	 dvd$eFdFe3deVeF   fdG„ZcdHe3deVeF   fdI„Zd	 	 	 dwd$eFdHe3d@e3dJeeF   dFe3deeeVeF   eVeF   eVeF   eVeF   eVeF   eVeF   eVeF   f   fdK„Zf G dL„ dMe^«      ZgdeVeF   fdN„ZhdeVeF   fdO„ZideVeF   fdP„ZjdeVeF   fdQ„Zkd$eFdRe3dSe3deeeVeF   eVeF   eVeF   f   fdT„ZldUe$deeeVeF   eVeF   f   fdV„ZmdWe3dRe3deeeVeF   eVeF   eVeF   f   fdX„ZndeVeF   fdY„ZodeeeVeF   eVeF   f   fdZ„Zp ejŠ                  d«      de3fd[„«       Zq ejŠ                  d«      deee3eFf   fd\„«       Zr ejŠ                  d«      d$eFd]eFddfd^„«       Zs ejŠ                  d«      d$eFddfd_„«       Ztd$eFdeeeVeF   eVeF   eVeF   eVeF   eVeF   eVeF   f   fd`„Zudae3deVeF   fdb„Zvd$eFdUe$dWe3dRe3dHe3dSe3dae3deeeVeF   eVeF   eVeF   eVeF   eVeF   eVeF   eVeF   f   fdc„Zw G dd„ deeg«      Zxdxdf„Zy ejŠ                  dg«      dheFdee   fdi„«       ZzdjeVeF   ddfdk„Z{	 	 dydleFdRe3dHe3deeeVeF   eVeF   eVeF   eVeF   eVeF   eVeF   eVeF   f   fdm„Z| G dn„ doex«      Z}dpeFdeeeFeFf   fdq„Z~ G dr„ ds«      Zy)zé    N)ÚSequence)Úcdll)Úfind_library)ÚPath)ÚAnyÚOptionalÚUnion)Údynamo_timed)ÚconfigÚexc)Úinvalid_vec_isaÚVecISA)Ú	cache_dir)ÚTorchVersion)Úbuild_paths)Ú_run_build_command)Úlog_global_cache_errorsÚlog_global_cache_statsÚlog_global_cache_valsÚuse_global_cacheÚargsÚkwargsÚreturnc                   ó   — y ©N© ©r   r   s     úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_inductor/cpp_builder.pyr   r   .   ó   € Øó    c                   ó   — y r   r   r   s     r   r   r   1   r   r    c                   ó   — y r   r   r   s     r   r   r   4   r   r    c                   ó   — y)NFr   r   r    r   r   r   7   s   € Ør    ÚCxxBuildz_inductor/script.ldÚlinuxÚdarwinÚwin32)úutf-8r   é   Úsearchc                 óÂ  — ddl m}m} | D ]“  }	 |€tt        j                  dk7  rŒt        j                  d«      sŒ0ddlm}  |«       } |t
        j                  j                  |d«      |¬«      }|5  t        «       }d d d «       t        j                  |dg«       |c S  t"        j$                  ‚# 1 sw Y   Œ5xY w# t        j                  t        t         f$ r Y ŒÒw xY w)	Nr   )Úget_lock_dirÚLOCK_TIMEOUTr%   ÚTORCH_INDUCTOR_INSTALL_GXX)ÚFileLockzg++.lock)Útimeoutú	--version)Útorch._inductor.codecacher,   r-   ÚsysÚplatformÚosÚgetenvÚtorch.utils._filelockr/   ÚpathÚjoinÚinstall_gcc_via_condaÚ
subprocessÚcheck_outputÚSubprocessErrorÚFileNotFoundErrorÚImportErrorr   ÚInvalidCxxCompiler)r*   r,   r-   Úcxxr/   Úlock_dirÚlocks          r   Úcpp_compiler_searchrD   L   sÐ   € çDàò ˆð	Øˆ{ô —<‘< 7Ò*Øä—y‘yÐ!=Ô>ØÝ:á'›>�ÙÜ—G‘G—L‘L ¨:Ó6Àô�ð ñ 2Ü/Ó1�C÷2ä×#Ñ# S¨+Ð$6Ô7ØŠJð'ô, ×
 Ñ
 Ð ÷2ð 2ûô ×*Ñ*Ô,=¼{ÐKò 	Ùð	ús3   �B=¥B=»7B=Á2B1Á= B=Â1B:	Â6B=Â=CÃCc            
      óÒ  — t         j                  j                  t        «       d«      } t         j                  j                  | dd«      }t         j                  j	                  |«      s~t
        j                  d«       t         j                  j                  dd«      }|€t        j                  d«      }|�0t        j                  |dd| › �d	d
dddgt        j                  ¬«       |S )z>On older systems, this is a quick way to get a modern compilerÚgccÚbinzg++zDownloading GCC via condaÚ	CONDA_EXEÚcondaÚcreatez	--prefix=z--channel=conda-forgez--quietz-yz
python=3.8Úgxx)Ústdout)r5   r8   r9   r   ÚexistsÚlogÚinfoÚenvironÚgetÚshutilÚwhichr;   Ú
check_callÚPIPE)ÚprefixÚcxx_pathrI   s      r   r:   r:   i   sº   € ä�W‰W�\‰\œ)›+ uÓ-€FÜ�w‰w�|‰|˜F E¨5Ó1€HÜ�7‰7�>‰>˜(Ô#Ü�‰Ð,Ô-Ü—
‘
—‘˜{¨GÓ4ˆØˆ=Ü—L‘L Ó)ˆEØÐÜ×!Ñ!àØØ ˜xÐ(Ø+ØØØ Øð	ô "—‘õð €Or    Úcompilerc                 ó¾   — 	 t        j                  | dgt         j                  ¬«       y# t        $ r}t	        d| › d�«      |‚d}~wt         j
                  $ r Y yw xY w)zU
    Check if compiler is ready, in case end user not activate MSVC environment.
    ú/help©Ústderrz
Compiler: z is not found.N)r;   r<   ÚSTDOUTr>   ÚRuntimeErrorr=   )rX   r   s     r   Úcheck_compiler_exist_windowsr_   ƒ   sZ   € ð
Ü×Ñ ¨7Ð 3¼J×<MÑ<MÖNøÜò KÜ˜Z¨ z°Ð@ÓAÀsÐJûÜ×%Ñ%ò áðús   ‚'* ª	A³AÁAÁAc                  ó¤  — t         r-t        j                  j                  dd«      } t	        | «       | S t        j                  «       rt        j                  S t        t
        j                  j                  t        t        f«      r$t        t
        j                  j                  «      }nt
        j                  j                  f}t        |«      } | S )NÚCXXÚcl)Ú_IS_WINDOWSr5   rP   rQ   r_   r   Ú	is_fbcoder   ÚccÚ
isinstanceÚcpprA   ÚlistÚtuplerD   )rX   r*   s     r   Úget_cpp_compilerrj   ‘   s‡   € ÝÜ—:‘:—>‘> %¨Ó.ˆÜ$ XÔ.ð €Oô ×ÑÔÜ—>‘>Ð!Ü”f—j‘j—n‘n¤t¬U mÔ4Üœ6Ÿ:™:Ÿ>™>Ó*‰Fä—j‘j—n‘nÐ&ˆFÜ& vÓ.ˆØ€Or    Úcpp_compilerc                 óx   — t        j                  | dg«      j                  d«      }d|j                  «       d   v S )Nr1   Úutf8ÚAppler   )r;   r<   ÚdecodeÚ
splitlines)rk   Úversion_strings     r   Ú_is_apple_clangrr       s<   € ä×,Ñ,¨l¸KÐ-HÓI×PÑPÐQWÓX€NØ�n×/Ñ/Ó1°!Ñ4Ð4Ð4r    c                 ó  — t         j                  dk(  rt        | «      S t        r@t	        j
                  d| «      rt        d«      ‚t        t	        j
                  d| «      «      S t        t	        j
                  d| «      «      S )Nr&   z((clang$)|(clang\+\+$))z]Please use clang-cl, due to torch.compile only support MSVC-like CLI (compiler flags syntax).z
(clang-cl)z(clang|clang\+\+))r3   r4   rr   rc   Úrer*   r^   Úbool©rk   s    r   Ú	_is_clangrw   ¦   sl   € ô ‡|�|�xÒÜ˜|Ó,Ð,Ý	ä�9‰9Ð/°Ô>ÜØoóð ô ”B—I‘I˜m¨\Ó:Ó;Ð;Ü”—	‘	Ð.°Ó=Ó>Ð>r    c                 óX   — t        | «      ryt        t        j                  d| «      «      S )NFz(gcc|g\+\+))rw   ru   rt   r*   rv   s    r   Ú_is_gccry   µ   s%   € ô �ÔØÜ”—	‘	˜.¨,Ó7Ó8Ð8r    c                 óæ   — t         sy	  t        j                  | dgt        j                  ¬«      j	                  «       j
                  t        Ž }d|j                  «       d   v S # t        $ r Y yw xY w)NFrZ   r[   Ú	Microsoftr   )	rc   r;   r<   r]   Ústripro   ÚSUBPROCESS_DECODE_ARGSrp   r>   )rk   Ú
output_msgs     r   Ú_is_msvc_clr   ½   sr   € åØððŒJ×#Ñ# \°7Ð$;ÄJ×DUÑDUÔVß‰U‹Wß‰VÔ+ð-ð 	ð
 ˜j×3Ñ3Ó5°aÑ8Ð8Ð8øÜò Ùðús   ‰AA$ Á$	A0Á/A0c                 óâ  — dt         dd fd„}	  t        j                  | dgt        j                  ¬«      j	                  «       j
                  t        Ž }d|j                  «       d   v }|rat        r!t        j                  d| «      rt        d	«      ‚t        j                  d
|«      }|�"|j                  d«      } |t        |«      «       |S # t        $ r Y yt        j                  $ r Y yw xY w)NÚcompiler_versionr   c                 óR   — t         rdnd}| t        |«      k  rt        d|› d�«      ‚y)zw
        On Windows: early version icx has `-print-file-name` issue, and can't preload correctly for inductor.
        z2024.2.1z0.0.0z0Intel Compiler error: less than minimal version ú.N)rc   r   r^   )r�   Úmin_versions     r   Ú_check_minimal_versionz2_is_intel_compiler.<locals>._check_minimal_versionÑ   s8   € õ %0‘j°WˆØœl¨;Ó7Ò7ÜØBÀ;À-ÈqÐQóð ð 8r    r1   r[   ÚIntelr   z((icx$)|(icx-cc$))z[Please use icx-cl, due to torch.compile only support MSVC-like CLI (compiler flags syntax).z(\d+[.]\d+[.]\d+[.]\d+)r)   F)r   r;   r<   ÚDEVNULLr|   ro   r}   rp   rc   rt   r*   r^   Úgroupr>   r=   )rk   r…   r~   Úis_intel_compilerÚicx_ver_searchÚicx_vers         r   Ú_is_intel_compilerrŒ   Ï   sö   € ð´ð À$ó ððŒJ×#Ñ#Ø˜{Ð+´J×4FÑ4Fô÷ ‰U‹Wß‰VÔ+ð	-ð 	ð $ z×'<Ñ'<Ó'>¸qÑ'AÐAÐÙÝÜ—9‘9Ð2°LÔAÜ&Øuóð ô
  ŸY™YÐ'AÀ:ÓNˆNØÐ)Ø(×.Ñ.¨qÓ1�Ù&¤|°GÓ'<Ô=à Ð øÜò ÙÜ×%Ñ%ò áðús   ŽB?C Ã	C.ÃC.Ã-C.c                  ó(   — t        t        «       «      S r   )ry   rj   r   r    r   Úis_gccrŽ   û   s   € äÔ#Ó%Ó&Ð&r    c                  ó(   — t        t        «       «      S r   )rw   rj   r   r    r   Úis_clangr�      s   € äÔ%Ó'Ó(Ð(r    c                  ó(   — t        t        «       «      S r   )rŒ   rj   r   r    r   r‰   r‰     s   € äÔ.Ó0Ó1Ð1r    c                  ó(   — t        t        «       «      S r   )rr   rj   r   r    r   Úis_apple_clangr“   
  s   € äÔ+Ó-Ó.Ð.r    c                  ó(   — t        t        «       «      S r   )r   rj   r   r    r   Ú
is_msvc_clr•     s   € äÔ'Ó)Ó*Ð*r    c                 ó¼  — t         j                  j                  «       }d|d<   	  t        j                  | dgt        j
                  |¬«      j                  t        Ž }|j                  dd«      }|j                  d	d«      }|S # t        $ rN 	  t        j                  | dgt        j
                  |¬«      j                  t        Ž }n# t        $ r Y Y yw xY wY Œ|w xY w)
NÚCÚLC_ALLz-v)r\   Úenvr1   Ú úÚ_ú
)
r5   rP   Úcopyr;   r<   r]   ro   r}   Ú	ExceptionÚreplace)rX   r™   rq   s      r   Úget_compiler_version_infor¡     sá   € Ü
�*‰*�/‰/Ó
€CØ€Cˆ�Mð
ðœ×0Ñ0Ø�tÐ¤Z×%6Ñ%6¸Cô
ç
‰&Ô(ð*ˆð $×+Ñ+¨D°#Ó6€NØ#×+Ñ+¨D°#Ó6€NØÐøô ò ð	ðœZ×4Ñ4Ø˜;Ð'´
×0AÑ0AÀsôç‰fÔ,ð.‰Nøô ò 	Úð	úñ ðús5   ¥9B Â	CÂ9CÃCÃ	CÃCÃCÃCÃCÚ	dest_listÚsrc_listc                 ó4   — | j                  d„ |D «       «       y )Nc              3   óF   K  — | ]  }t        j                  |«      –— Œ y ­wr   ©rž   Údeepcopy)Ú.0Úitems     r   ú	<genexpr>z_append_list.<locals>.<genexpr>*  s   è ø€ Ò>¨T”T—]‘] 4×(Ñ>ùó   ‚!)Úextend)r¢   r£   s     r   Ú_append_listr­   )  s   € Ø×ÑÑ>°XÔ>Õ>r    Ú	orig_listc                 óD   — g }| D ]  }||vsŒ|j                  |«       Œ |S r   ©Úappend)r®   Únew_listr©   s      r   Ú_remove_duplication_in_listr³   -  s1   € Ø€HØò "ˆØ�xÒØ�O‰O˜DÕ!ð"ð €Or    Úpath_dirc                 ó   — t         j                  j                  | «      s	 t        | «      j	                  dd¬«       y y # t
        $ r5}|j                  t        j                  k7  rt        d| › �«      ‚Y d }~y d }~ww xY w)NT)ÚparentsÚexist_okzFail to create path )	r5   r8   rM   r   ÚmkdirÚOSErrorÚerrnoÚEEXISTr^   )r´   r   s     r   Ú_create_if_dir_not_existr¼   5  sq   € Ü�7‰7�>‰>˜(Ô#ð	Ü�‹N× Ñ ¨¸Ð Õ=ð $øô ò 	Ø�y‰yœEŸL™LÒ(Ü"Ø*¨8¨*Ð5óð ô )ûð	ús   ¡? ¿	A=Á+A8Á8A=c                 óž  — t         j                  j                  | «      r®t        j                  | d¬«      D ]~  \  }}}|D ]7  }t         j                  j	                  ||«      }t        j
                  |«       Œ9 |D ]7  }t         j                  j	                  ||«      }t        j                  |«       Œ9 Œ€ t        j                  | «       y y )NF)Útopdown)r5   r8   rM   Úwalkr9   ÚremoveÚrmdir)r´   ÚrootÚdirsÚfilesÚnameÚ	file_pathÚdir_paths          r   Ú_remove_dirrÈ   @  s¦   € Ü	‡w�w‡~�~�hÔÜ!#§¡¨¸5Ô!Aò 	#ÑˆD�$˜Øò %�ÜŸG™GŸL™L¨¨tÓ4�	Ü—	‘	˜)Õ$ð%ð ò #�ÜŸ7™7Ÿ<™<¨¨dÓ3�Ü—‘˜Õ"ñ#ð		#ô 	�‰�Õð  r    Úcmd_lineÚcwdc                 ób  — t        j                  | «      }	 t        j                  ||t        j                  ¬«       y # t        j
                  $ r]}|j                  j                  d«      }d|v xs d|v }|rt        j                  dk(  rd}||z  }t        j                  ||«      |‚d }~ww xY w)N)r   rÊ   r\   r(   z'omp.h' file not foundÚlibompr&   a¢  

OpenMP support not found. Please try one of the following solutions:
(1) Set the `CXX` environment variable to a compiler other than Apple clang++/g++ that has builtin OpenMP support;
(2) install OpenMP via conda: `conda install llvm-openmp`;
(3) install libomp via brew: `brew install libomp`;
(4) manually setup OpenMP and set the `OMP_PREFIX` environment variable to point to a path with `include/omp.h` under it.)ÚshlexÚsplitr;   r<   r]   ÚCalledProcessErrorÚoutputro   r3   r4   r   ÚCppCompileError)rÉ   rÊ   ÚcmdÚerÐ   Úopenmp_problemÚinstructions          r   Ú_run_compile_cmdrÖ   L  s¢   € Ü
�+‰+�hÓ
€Cð6Ü×Ñ S¨c¼*×:KÑ:KÖLøÜ×(Ñ(ò 6Ø—‘—‘ Ó)ˆØ1°VÐ;ÒQ¸xÈ6Ð?QˆÙœcŸl™l¨hÒ6ð2ð ð �kÑ!ˆFÜ×!Ñ! # vÓ.°AÐ5ûð6ús   —&> ¾B.ÁAB)Â)B.c                 ó\   — t        d«      5  t        | |«       d d d «       y # 1 sw Y   y xY w)NÚcompile_file)r
   rÖ   )rÉ   rÊ   s     r   Úrun_compile_cmdrÙ   a  s)   € Ü	�nÓ	%ñ (Ü˜ 3Ô'÷(÷ (ñ (ús   Œ"¢+Ú	orig_pathc                 óR   — t         r | j                  t        j                  d«      S | S )Nú/)rc   r    r5   Úsep)rÚ   s    r   Únormalize_path_separatorrÞ   f  s"   € ÝØ× Ñ ¤§¡¨Ó-Ð-ØÐr    c                   óŠ  — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 d dedeee      deee      deee      deee      deee      d	eee      d
eee      dedededdfd„Zd!d„Z	d!d„Z
d!d„Zdefd„Zdee   fd„Zdee   fd„Zdee   fd„Zdee   fd„Zdee   fd„Zdee   fd„Zdee   fd„Zdefd„Zdefd„Zdefd„Zdeddfd„Zy)"ÚBuildOptionsBasezÁ
    This is the Base class for store cxx build options, as a template.
    Acturally, to build a cxx shared library. We just need to select a compiler
    and maintains the suitable args.
    NrX   ÚdefinitionsÚinclude_dirsÚcflagsÚldflagsÚlibraries_dirsÚ	librariesÚpassthrough_argsÚaot_modeÚuse_relative_pathÚcompile_onlyr   c                 óÖ   — || _         |xs g | _        |xs g | _        |xs g | _        |xs g | _        |xs g | _        |xs g | _        |xs g | _        |	| _        |
| _	        || _
        y r   )Ú	_compilerÚ_definitionsÚ_include_dirsÚ_cflagsÚ_ldflagsÚ_libraries_dirsÚ
_librariesÚ_passthrough_argsÚ	_aot_modeÚ_use_relative_pathÚ_compile_only)ÚselfrX   rá   râ   rã   rä   rå   ræ   rç   rè   ré   rê   s               r   Ú__init__zBuildOptionsBase.__init__s  sw   € ð "ˆŒØ'2Ò'8°bˆÔØ(4Ò(:¸ˆÔØ"(¢,¨BˆŒØ#*¢=¨bˆŒØ*8Ò*>¸BˆÔØ%.¢_°"ˆŒà,<Ò,BÀˆÔà'ˆŒØ(9ˆÔØ#/ˆÕr    c                 ó:   — | j                   rg | _        g | _        y y r   )rö   rñ   rò   ©r÷   s    r   Ú_process_compile_only_optionsz.BuildOptionsBase._process_compile_only_options�  s   € Ø×ÒØ#%ˆDÔ Ø ˆD�Oð r    c                 óp  — t        | j                  «      | _        t        | j                  «      | _        t        | j                  «      | _        t        | j                  «      | _        t        | j
                  «      | _        t        | j                  «      | _        t        | j                  «      | _        y r   )r³   rí   rî   rï   rð   rñ   rò   ró   rú   s    r   Ú_remove_duplicate_optionsz*BuildOptionsBase._remove_duplicate_options”  s~   € Ü7¸×8IÑ8IÓJˆÔÜ8¸×9KÑ9KÓLˆÔÜ2°4·<±<Ó@ˆŒÜ3°D·M±MÓBˆŒÜ:¸4×;OÑ;OÓPˆÔÜ5°d·o±oÓFˆŒÜ!<¸T×=SÑ=SÓ!TˆÕr    c                 óD   — | j                  «        | j                  «        y r   )rû   rý   rú   s    r   Ú_finalize_optionsz"BuildOptionsBase._finalize_options�  s   € Ø×*Ñ*Ô,Ø×&Ñ&Õ(r    c                 ó   — | j                   S r   )rì   rú   s    r   Úget_compilerzBuildOptionsBase.get_compiler¡  ó   € Ø�~‰~Ðr    c                 ó   — | j                   S r   )rí   rú   s    r   Úget_definitionsz BuildOptionsBase.get_definitions¤  s   € Ø× Ñ Ð r    c                 ó   — | j                   S r   )rî   rú   s    r   Úget_include_dirsz!BuildOptionsBase.get_include_dirs§  ó   € Ø×!Ñ!Ð!r    c                 ó   — | j                   S r   )rï   rú   s    r   Ú
get_cflagszBuildOptionsBase.get_cflagsª  s   € Ø�|‰|Ðr    c                 ó   — | j                   S r   )rð   rú   s    r   Úget_ldflagszBuildOptionsBase.get_ldflags­  s   € Ø�}‰}Ðr    c                 ó   — | j                   S r   )rñ   rú   s    r   Úget_libraries_dirsz#BuildOptionsBase.get_libraries_dirs°  s   € Ø×#Ñ#Ð#r    c                 ó   — | j                   S r   )rò   rú   s    r   Úget_librarieszBuildOptionsBase.get_libraries³  s   € Ø�‰Ðr    c                 ó   — | j                   S r   )ró   rú   s    r   Úget_passthrough_argsz%BuildOptionsBase.get_passthrough_args¶  s   € Ø×%Ñ%Ð%r    c                 ó   — | j                   S r   )rô   rú   s    r   Úget_aot_modezBuildOptionsBase.get_aot_mode¹  r  r    c                 ó   — | j                   S r   )rõ   rú   s    r   Úget_use_relative_pathz&BuildOptionsBase.get_use_relative_path¼  s   € Ø×&Ñ&Ð&r    c                 ó   — | j                   S r   )rö   rú   s    r   Úget_compile_onlyz!BuildOptionsBase.get_compile_only¿  r  r    Úfilec                 óÂ  — | j                  «       | j                  «       | j                  «       | j                  «       | j	                  «       | j                  «       | j                  «       | j                  «       | j                  «       | j                  «       | j                  «       dœ}t        |d«      5 }t        j                  ||«       d d d «       y # 1 sw Y   y xY w)N)rX   rá   râ   rã   rä   rå   ræ   rç   rè   ré   rê   Úw)r  r  r  r	  r  r  r  r  r  r  r  ÚopenÚjsonÚdump)r÷   r  ÚattrsÚfs       r   Úsave_flags_to_jsonz#BuildOptionsBase.save_flags_to_jsonÂ  s»   € à×)Ñ)Ó+Ø×/Ñ/Ó1Ø ×1Ñ1Ó3Ø—o‘oÓ'Ø×'Ñ'Ó)Ø"×5Ñ5Ó7Ø×+Ñ+Ó-Ø $× 9Ñ 9Ó ;Ø×)Ñ)Ó+Ø!%×!;Ñ!;Ó!=Ø ×1Ñ1Ó3ñ
ˆô �$˜‹_ð 	  Ü�I‰I�e˜QÔ÷	 ÷ 	 ñ 	 ús   Â5CÃC)rš   NNNNNNNFFF©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   rh   ru   rø   rû   rý   rÿ   r  r  r  r	  r  r  r  r  r  r  r  r   r   r    r   rà   rà   l  s§  „ ñð Ø+/Ø,0Ø&*Ø'+Ø.2Ø)-Ø04ØØ"'Ø"ñ0àð0ð ˜d 3™iÑ(ð0ð ˜t C™yÑ)ð	0ð
 ˜˜c™Ñ#ð0ð ˜$˜s™)Ñ$ð0ð !  c¡Ñ+ð0ð ˜D ™IÑ&ð0ð # 4¨¡9Ñ-ð0ð ð0ð  ð0ð ð0ð 
ó0ó8!ó
Uó)ð˜có ð!  c¡ó !ð" $ s¡)ó "ð˜D ™Ió ð˜T #™Yó ð$ D¨¡Ió $ð˜t C™yó ð& d¨3¡ió &ð˜dó ð' tó 'ð" $ó "ð  sð  ¨tô  r    rà   Úwarning_allc                 ó    — t         s| rdgS g S g S )NÚWall©rc   )r'  s    r   Ú_get_warning_all_cflagr+  Õ  s   € ÝÙ&�ˆxÐ.¨BÐ.àˆ	r    Ústd_numc                 ó,   — t         r		 d} d| › �gS d| › �gS )Nzc++20zstd:zstd=r*  )r,  s    r   Ú_get_cpp_std_cflagr.  Ü  s1   € Ýð	ð ˆØ�w�iÐ Ð!Ð!à�w�iÐ Ð!Ð!r    c                 óš   — t         rg d¢}|S ddg}t        | «      r/t        j                  j                  rdnd}|j                  |«       |S )N)Úwd4819Úwd4251Úwd4244Úwd4267Úwd4275Úwd4018Úwd4190Úwd4624Úwd4067Úwd4068ÚEHsczWno-unused-variablezWno-unknown-pragmasz$Werror=ignored-optimization-argumentz!Wno-ignored-optimization-argument)rc   rw   r   Úaot_inductorÚ#raise_error_on_ignored_optimizationr±   )rk   rã   Úignored_optimization_arguments      r   Ú_get_os_related_cpp_cflagsr>  ë  sZ   € Ýò
ˆð, €Mð (Ð)>Ð?ˆÜ�\Ô"ô ×&Ñ&×JÒJñ 7à8ð *ð
 �M‰MÐ7Ô8Ø€Mr    c                  óD   — g d¢} t        «       r| j                  d«       | S )N)zfno-trapping-mathzfunsafe-math-optimizationszffinite-math-onlyzfno-signed-zeroszfno-math-errnozfexcess-precision=fast)rŽ   r±   )Úflagss    r   Ú_get_ffast_math_flagsrA    s"   € ò€Eô „xØ�‰Ð-Ô.à€Lr    Úmin_optimizec                 óT  — t         r|rdgS dgS t        j                  j                  rddgn|rdnddg}|t	        «       z  }|j                  d«       t        j                  j                  s|j                  d«       |j                  d	t        j                  j                  › �«       t        j                  d
k7  rkt        | «      r|j                  d«       t        j                  «       s;t        j                  «       dk(  r|j                  d«       |S |j                  d«       |S )NÚO1ÚO2ÚO0ÚgÚO3ÚDNDEBUGzfno-finite-math-onlyzfno-unsafe-math-optimizationszffp-contract=r&   zfno-tree-loop-vectorizeÚppc64lezmcpu=nativezmarch=native)rc   r   r;  Údebug_compilerA  r±   rg   Úenable_unsafe_math_opt_flagÚ#enable_floating_point_contract_flagr3   r4   ry   rd   Úmachine)rk   rB  rã   s      r   Ú_get_optimization_cflagsrO    s   € õ Ù$�Ð/Ð/¨$Ð/Ð/ô ×"Ñ"×0Ò0ð �3‰Ká&‘$¨D°)Ð<ð 	ð
 	Ô'Ó)Ñ)ˆØ�‰Ð,Ô-Ü�z‰z×5Ò5Ø�M‰MÐ9Ô:Ø�‰˜¤f§j¡j×&TÑ&TÐ%UÐVÔWä�<‰<˜8Ò#ä�|Ô$Ø—‘Ð7Ô8ô ×#Ñ#Ô%Ü×#Ñ#Ó%¨Ò2Ø—M‘M -Ô0ð ˆð —M‘M .Ô1àˆr    rê   c                 ó|   — t         r	 ddg}|S | rdgS t        j                  «       dk(  rdt        «       v rg d¢S ddgS )NÚDLLÚMDÚfPICÚDarwinÚclang)ÚsharedrS  zundefined dynamic_lookuprV  )rc   r4   Úsystemrj   )rê   ÚSHARED_FLAGs     r   Ú_get_shared_cflagrY  ;  sT   € Ýð	ð ˜d�mˆð Ðñ Ø�8ˆOÜ�?‰?Ó Ò(¨WÔ8HÓ8JÑ-JâAÐAà˜fÐ%Ð%r    Úextra_flagsc                 óæ   — g }g }g }g }g }	g }
g }t        |«      t        | |«      z   t        |«      z   t        «       z   t	        | «      z   }|j                  dj                  |«      «       |||||	|
|fS )Nú )rY  rO  r+  r.  r>  r±   r9   )rk   rê   r'  rZ  rB  rá   râ   rã   rä   rå   ræ   rç   s               r   Úget_cpp_optionsr]  N  s©   € ð  €KØ €LØ€FØ€GØ "€NØ€IØ"$Ðô 	˜,Ó'Ü
" <°Ó
>ñ	?ä
  Ó
-ñ	.ô Ó
ñ	ô % \Ó
2ñ		3ð ð ×Ñ˜CŸH™H [Ó1Ô2ð 	ØØØØØØðð r    c                   óT   ‡ — e Zd ZdZ	 	 	 	 	 	 ddededee   dedededd	fˆ fd
„Zˆ xZS )Ú
CppOptionsaH  
    This class is inherited from BuildOptionsBase, and as cxx build options.
    This option need contains basic cxx build option, which contains:
    1. OS related args.
    2. Toolchains related args.
    3. Cxx standard related args.
    Note:
    1. This Options is good for assist modules build, such as x86_isa_help.
    rê   r'  rZ  ré   rX   rB  r   Nc                 óü  •— t         ‰| �  «        |r|n	t        «       | _        || _        || _        t        | j                  ||||¬«      \  }}}	}
}}}t        | j                  |«       t        | j                  |«       t        | j                  |	«       t        | j                  |
«       t        | j                  |«       t        | j                  |«       t        | j                  |«       | j                  «        y )N)rk   rê   rZ  r'  rB  )Úsuperrø   rj   rì   rõ   rö   r]  r­   rí   rî   rï   rð   rñ   rò   ró   rÿ   )r÷   rê   r'  rZ  ré   rX   rB  rá   râ   rã   rä   rå   ræ   rç   Ú	__class__s                 €r   rø   zCppOptions.__init__}  sß   ø€ ô 	‰ÑÔÙ%-™Ô3CÓ3EˆŒØ"3ˆÔØ)ˆÔô ØŸ™Ø%Ø#Ø#Ø%ô
ñ	
ØØØØØØØô 	�T×&Ñ&¨Ô4Ü�T×'Ñ'¨Ô6Ü�T—\‘\ 6Ô*Ü�T—]‘] GÔ,Ü�T×)Ñ)¨>Ô:Ü�T—_‘_ iÔ0Ü�T×+Ñ+Ð-=Ô>Ø×ÑÕ r    )FTr   Frš   F)	r"  r#  r$  r%  ru   r   r&  rø   Ú__classcell__©rb  s   @r   r_  r_  r  sn   ø„ ñð #Ø Ø%'Ø"'ØØ"ñ%!àð%!ð ð%!ð ˜c‘]ð	%!ð
  ð%!ð ð%!ð ð%!ð 
÷%!ñ %!r    r_  c                  ór   — t         s0dt        t        t        j                  j
                  «      «      z   gS g S )Nz-D_GLIBCXX_USE_CXX11_ABI=)rc   r&  ÚintÚtorchÚ_CÚ_GLIBCXX_USE_CXX11_ABIr   r    r   Ú_get_glibcxx_abi_build_flagsrj  ¥  s,   € ÝØ+¬c´#´e·h±h×6UÑ6UÓ2VÓ.WÑWÐXÐXàˆ	r    c                  ó
   — ddgS )NÚTORCH_INDUCTOR_CPP_WRAPPERÚSTANDALONE_TORCH_HEADERr   r   r    r   Ú!_get_torch_cpp_wrapper_definitionrn  ¬  s   € Ø(Ð*CÐDÐDr    c                  ó   — dgS )Nz" C10_USING_CUSTOM_GENERATED_MACROSr   r   r    r   Ú_use_custom_generated_macrosrp  °  s   € Ø0Ð1Ð1r    c                  óJ   — t         st        j                  «       rg d¢} | S g S g S )N)ÚC10_USE_GLOGÚC10_USE_MINIMAL_GLOGÚ$C10_DISABLE_TENSORIMPL_EXTENSIBILITY)rc   r   rd   )Úfb_internal_macross    r   Ú_use_fb_internal_macrosrv  ´  s+   € ÝÜ×ÑÔò"Ðð
 &Ð%àˆIàˆ	r    rè   ré   c                 ó0  — g }g }g }t         r|||fS t        j                  «       �rì|j                  d«       |j                  t        j
                  «       |j                  t        j                  «       |j                  t        j                  «       |j                  t        j                  «       |j                  t        j                  «       |j                  t        j                  «       |j                  t        j                  «       |j                  t        j                  «       |j                  t        j                  «       |j                  d«       |r	|st        }n#t        j                   j#                  t        «      }t%        | «      rz|j                  d«       |j                  d«       |j                  d|› �«       |j                  dt        j&                  z   «       |j                  dt        j&                  z   «       |||fS )NÚnostdincÚincludez --rtlib=compiler-rtz -fuse-ld=lldz -Wl,--script=z -Bz -L)rc   r   rd   r±   r   Úsleef_includeÚopenmp_includeÚpython_includeÚ
cc_includeÚlibgcc_includeÚlibgcc_arch_includeÚlibgcc_backward_includeÚglibc_includeÚlinux_kernel_includeÚ_LINKER_SCRIPTr5   r8   Úbasenamerw   Ú	glibc_lib)rk   rè   ré   rã   râ   rç   Úlinker_scripts          r   Ú_setup_standard_sys_libsr‡  Ã  sš  € ð
 €FØ €LØ"$ÐÝØ�|Ð%5Ð5Ð5ä×ÑÕà�‰�jÔ!ð 	×ÑœK×5Ñ5Ô6Ø×ÑœK×6Ñ6Ô7Ø×ÑœK×6Ñ6Ô7Ø×ÑœK×2Ñ2Ô3Ø×ÑœK×6Ñ6Ô7Ø×ÑœK×;Ñ;Ô<Ø×ÑœK×?Ñ?Ô@Ø×ÑœK×5Ñ5Ô6Ø×ÑœK×<Ñ<Ô=Ø×Ñ˜IÔ&áÑ-Ü*‰MäŸG™G×,Ñ,¬^Ó<ˆMä�\Ô"Ø×#Ñ#Ð$:Ô;Ø×#Ñ# OÔ4Ø×#Ñ# n°]°OÐ$DÔEØ×#Ñ# E¬K×,AÑ,AÑ$AÔBØ×#Ñ# E¬K×,AÑ,AÑ$AÔBà�<Ð!1Ð1Ð1r    Úvec_isac                 ó
  — g }g }| t         k7  rs|j                  d„ | j                  «       D «       «       | j                  «       g}t	        j
                  «       r(t        | «      j                  «       }d|› �d|› �d|› d�g}||fS )Nc              3   óF   K  — | ]  }t        j                  |«      –— Œ y ­wr   r¦   )r¨   Úxs     r   rª   z0_get_build_args_of_chosen_isa.<locals>.<genexpr>ò  s   è ø€ ÒF¨1”d—m‘m A×&ÑFùr«   zCPU_CAPABILITY=ÚCPU_CAPABILITY_ÚHAVE_Ú_CPU_DEFINITION)r   r¬   Úbuild_macroÚbuild_arch_flagsr   rd   r&  Úupper)rˆ  ÚmacrosÚbuild_flagsÚcaps       r   Ú_get_build_args_of_chosen_isar•  í  s’   € Ø€FØ€KØ”/Ò!à�‰ÑF°×0CÑ0CÓ0EÔFÔFà×/Ñ/Ó1Ð2ˆä×ÑÔÜ�g“,×$Ñ$Ó&ˆCà! # Ð'Ø! # Ð'Ø˜�u˜OÐ,ðˆFð �;ÐÐr    Úinclude_pytorchc                 óÞ   — ddl m}m}  |«       }|g}g }t        j                  dk7  r+t        j                  «       sddg}|s|j                  d«       t        r|j                  d«       |||fS )Nr   )Úinclude_pathsÚTORCH_LIB_PATHr&   rg  Ú	torch_cpuÚtorch_pythonÚsleef)	Útorch.utils.cpp_extensionr˜  r™  r3   r4   r   rd   r±   rc   )r–  rè   r˜  r™  râ   rå   ræ   s          r   Ú_get_torch_related_argsrž    sl   € ÷ Há “?€LØ$Ð%€NØ€IÜ
‡|�|�xÒ¬×(8Ñ(8Ô(:Ø˜kÐ*ˆ	ÙØ×Ñ˜^Ô,åØ×Ñ˜Ô!à˜¨Ð2Ð2r    c                  ó–  — t        t        j                  d«      «      } | j                  «       s\t	        j
                  «       dk(  rEt        t        j                  d«      «      }|j                  j                  dz  j                  «       } | dz  j                  «       s!t        j                  dt        | «      › �«       t        | «      gS )Nry  rT  ÚstdlibÚHeaderszPython.hzCan't find Python.h in )r   Ú	sysconfigÚget_pathrM   r4   rW  ÚparentÚabsoluteÚwarningsÚwarnr&  )Úinclude_dirÚstd_libs     r   Ú_get_python_include_dirsrª    sž   € Ü”y×)Ñ)¨)Ó4Ó5€Kð ×ÑÔ¤H§O¡OÓ$5¸Ò$AÜ”y×)Ñ)¨(Ó3Ó4ˆØ—~‘~×,Ñ,¨yÑ8×BÑBÓDˆØ˜*Ñ$×,Ñ,Ô.Ü�‰Ð/´°KÓ0@Ð/AÐBÔCÜ�ÓÐÐr    c                  ó¬  — t        «       } t        j                  dt        rdnd¬«      }|�| j	                  |«       t        rFt        t        t        j                  dd¬«      «      j                  dz  j                  «       «      g}nt        j                  d«      g}t        j                  «       r| j	                  t        j                  «       | |fS )Nry  ÚntÚposix_prefix)ÚschemeÚlibsÚLIBDIR)rª  r¢  r£  rc   r±   r&  r   r¤  r¥  Úget_config_varr   rd   r   r|  )Úpython_include_dirsÚpython_include_pathÚpython_lib_paths      r   Ú_get_python_related_argsrµ  !  sµ   € Ü2Ó4ÐÜ#×,Ñ,Ø¥+™$°>ôÐð Ð&Ø×"Ñ"Ð#6Ô7åääœ×+Ñ+¨I¸dÔCÓD×KÑKÈfÑTß‘(“*óð
‰ô %×3Ñ3°HÓ=Ð>ˆä×ÑÔØ×"Ñ"¤;×#=Ñ#=Ô>à Ð/Ð/r    c                  óì   — 	 d} t        j                  | j                  «       «      j                  d«      }t	        t        j                  |«      «      dkD  S # t         j                  t        f$ r Y yw xY w)Nzconda list llvm-openmp --jsonrm   r   F)	r;   r<   rÎ   ro   Úlenr  Úloadsr=   r>   )ÚcommandrÐ   s     r   Úis_conda_llvm_openmp_installedrº  :  sd   € ðØ1ˆÜ×(Ñ(¨¯©«Ó9×@Ñ@ÀÓHˆÜ”4—:‘:˜fÓ%Ó&¨Ñ*Ð*øÜ×&Ñ&Ô(9Ð:ò Ùðús   ‚AA ÁA3Á2A3c                  ó  — 	 t        j                  ddg«       t        j                  g d¢«      j                  d«      j                  «       } t        j
                  j                  | «      }|| fS # t         j                  $ r Y yw xY w)NrS   Úbrew)r¼  z--prefixrÌ   rm   )Frš   )r;   r<   ro   r|   r5   r8   rM   r=   )Úlibomp_pathÚomp_availables     r   Úhomebrew_libompr¿  D  sw   € ðä×Ñ ¨&Ð 1Ô2ô
 ×#Ñ#Ò$BÓCß‰V�F‹^ß‰U‹Wð 	ô Ÿ™Ÿ™ {Ó3ˆØ˜kÐ)Ð)øÜ×%Ñ%ò Ùðús   ‚A-A0 Á0BÂBÚomp_namec                 óp  — 	 t        j                  | dg«      j                  d«      }t        j                  j                  |j                  «       |«      }t        j                  j                  |«      r)dt        j                  d<   t        j                  |«       y y # t         j                  $ r Y y w xY w)Nz-print-file-name=binrm   ÚTRUEÚKMP_DUPLICATE_LIB_OK)r;   r<   ro   r5   r8   r9   ÚrstripÚisfilerP   r   ÚLoadLibraryr=   )rk   rÀ  rÐ   Úomp_paths       r   Úperload_clang_libomp_winrÈ  X  s“   € ð	Ü×(Ñ(¨,Ð8NÐ)OÓP×WÑWØó
ˆô —7‘7—<‘< §¡£°Ó:ˆÜ�7‰7�>‰>˜(Ô#Ø17ŒB�J‰JÐ-Ñ.Ü×Ñ˜XÕ&ð $øô ×%Ñ%ò Ùðús   ‚BB ÂB5Â4B5c                 óZ   — dt         dt         dt        fd„}	 g d¢}|D ]  } || |«       Œ y )Nrk   Úlib_namer   c                 ó`  — 	  t        j                  | d|› �gt         j                  ¬«      j                  t        Ž }|j                  «       }t        j                  j                  |«      r)dt        j                  d<   t        j                  |«       y	 y# t         j                  $ r Y yw xY w)Nz-print-file-name=r[   rÂ  rÃ  TF)r;   r<   r‡   ro   r}   rÄ  r5   r8   rÅ  rP   r   rÆ  r=   )rk   rÊ  rÐ   rÇ  s       r   Ú_load_icx_built_in_lib_by_namez>perload_icx_libomp_win.<locals>._load_icx_built_in_lib_by_nameh  s§   € ð	ð”Z×,Ñ,ØÐ!2°8°*Ð=Ð>Ü!×)Ñ)ô÷ ‰fÔ,ð.ˆFð —}‘}“ˆHÜ�w‰w�~‰~˜hÔ'Ø5;”—
‘
Ð1Ñ2Ü× Ñ  Ô*Øð (ð øô ×)Ñ)ò 	ØØð	ús   ‚BB ÂB-Â,B-)zlibiomp5md.dllzsvml_dispmd.dllz
libmmd.dll)r&  ru   )rk   rÌ  Úpreload_listrÊ  s       r   Úperload_icx_libomp_winrÎ  f  sC   € ð´Sð ÄCð ÌDó ðò€Lð !ò ?ˆÙ& |°XÕ>ñ?r    c                 ó  — g }g }g }g }g }g }t         �r{|j                  d«       |j                  d«       t        | «       }t        j                  d«      }|�¼t        j
                  j                  |dd«      }	t        j
                  j                  |	«      }
|
r_|j                  t        j
                  j                  |d«      «       |j                  t        j
                  j                  |d«      «       nt        j                  d«       |xs |
}|s|j                  d«       t        j                  d	«      }|sÝ|�Ût        «       }|rÏt        j
                  j                  |d«      }|j                  t        j
                  j                  |d«      «       |j                  |«       t        j                  «       j                  d
k(  rNt        j
                  j                  t        j
                  j                  |d«      «      r|j                  d«       |�sæt        «       \  }}|�rÖ|j                  t        j
                  j                  |d«      «       |j                  t        j
                  j                  |d«      «       �nvt        r˜	 t        | «      r0|j                  d«       |j                  d«       t!        | d«       �n4t#        | «      r.|j                  d«       |j                  d«       t%        | «       nû|j                  d«       |j                  d«       nØt'        j(                  «       rW|j                  t*        j,                  «       t*        j.                  }d|› �}|j                  |«       |j                  d«       nmt        | «      r#|j                  d«       |j                  d«       n?t#        | «      r|j                  d«       n"|j                  d«       |j                  d«       ||||||fS )NÚXclangÚfopenmpÚ
OMP_PREFIXry  zomp.hÚlibz-environment variable `OMP_PREFIX` is invalid.ÚompÚCONDA_PREFIXÚx86_64zlibiomp5.dylibÚiomp5ÚopenmprÌ   z
libomp.dllÚQiopenmpÚ
libiomp5mdzopenmp:experimentalz-Wp,-fopenmp ÚgompÚfiopenmp)Ú	_IS_MACOSr±   rr   r5   r6   r8   r9   rM   r¦  r§  rº  ÚunamerN  r¿  rc   rw   rÈ  rŒ   rÎ  r   rd   r   r{  Úopenmp_lib_so)rk   rã   rä   Úinclude_dir_pathsÚlib_dir_pathsr¯  rç   r¾  Ú
omp_prefixÚheader_pathÚ	valid_envÚconda_prefixÚconda_lib_pathr½  Ú
openmp_libÚfb_openmp_extra_flagss                   r   Ú_get_openmp_argsré  …  s  € ð €FØ€GØ#%ÐØ!€MØ€DØ"$ÐÞà�‰�hÔØ�‰�iÔ ô ,¨LÓ9Ð9ˆô —Y‘Y˜|Ó,ˆ
ØÐ!ÜŸ'™'Ÿ,™, z°9¸gÓFˆKÜŸ™Ÿ™ {Ó3ˆIÙØ!×(Ñ(¬¯©¯©°jÀ)Ó)LÔMØ×$Ñ$¤R§W¡W§\¡\°*¸eÓ%DÕEä—‘ÐMÔNØ)Ò6¨YˆMáØ�K‰K˜Ôô —y‘y Ó0ˆÙ Ð!9Ü:Ó<ˆMÙÜ!#§¡§¡¨l¸EÓ!B�Ø!×(Ñ(¬¯©¯©°lÀIÓ)NÔOØ×$Ñ$ ^Ô4ä—8‘8“:×%Ñ%¨Ò1´b·g±g·n±nÜ—G‘G—L‘L Ð1AÓBô7ð —K‘K Ô(ò Ü)8Ó):Ñ&ˆM˜;ÚØ!×(Ñ(¬¯©¯©°kÀ9Ó)MÔNØ×$Ñ$¤R§W¡W§\¡\°+¸uÓ%EÖFõ 
ð	ô �\Ô"Ø�M‰M˜(Ô#Ø�K‰K˜Ô!Ü$ \°<Ö@Ü Ô-Ø�M‰M˜*Ô%Ø�K‰K˜Ô%Ü" <Õ0ð
 �M‰M˜(Ô#Ø�M‰MÐ/Õ0ä×ÑÔØ×$Ñ$¤[×%?Ñ%?Ô@ä$×2Ñ2ˆJØ&3°J°<Ð$@Ð!Ø×#Ñ#Ð$9Ô:à�K‰K˜Õä˜Ô&à—‘˜iÔ(Ø—‘˜FÕ#Ü# LÔ1Ø—‘˜jÕ)à—‘˜iÔ(Ø—‘˜FÔ#à�7Ð-¨}¸dÐDTÐTÐTr    Úuse_mmap_weightsc                 ó0   — g }| r|j                  d«       |S )Nz USE_MMAP_SELFr°   )rê  r’  s     r   Úget_mmap_self_macrorì  ð  s   € Ø€FÙØ�‰Ð&Ô'Ø€Mr    c                 ó¤  — g }g }g }	g }
g }g }g }t        «       }t        «       }t        | ||«      \  }}}t        |«      \  }}t	        ||¬«      \  }}}t        «       \  }}t        | «      \  }}}}}}t        «       } t        «       }!t        |«      }"||z   |z   |!z   |"z   }||z   |z   |z   }||z   }	|}
||z   |z   }||z   }||z   | z   |z   }|||	|
|||fS )N)r–  rè   )
rn  rp  r‡  r•  rž  rµ  ré  rj  rv  rì  )#rk   rˆ  r–  rè   rê   ré   rê  rá   râ   rã   rä   rå   ræ   rç   Útorch_cpp_wrapper_definitionsÚ'use_custom_generated_macros_definitionsÚsys_libs_cflagsÚsys_libs_include_dirsÚsys_libs_passthrough_argsÚ
isa_macrosÚisa_ps_args_build_flagsÚtorch_include_dirsÚtorch_libraries_dirsÚtorch_librariesr²  Úpython_libraries_dirsÚ
omp_cflagsÚomp_ldflagsÚomp_include_dir_pathsÚomp_lib_dir_pathsÚomp_libÚomp_passthrough_argsÚcxx_abi_passthrough_argsÚfb_macro_passthrough_argsÚmmap_self_macross#                                      r   Úget_cpp_torch_optionsr  ÷  s˜  € ð  €KØ €LØ€FØ€GØ "€NØ€IØ"$Ðä$EÓ$GÐ!Ü.JÓ.LÐ+ô 	! ¨xÐ9JÓKñ	ØØØ!ô +HÈÓ*PÑ'€JÐ'ô 	 °È(ÔSñ	ØØØô 2JÓ1KÑ.ÐÐ.ô 	˜Ó&ñØØØØØØô  <Ó=ÐÜ 7Ó 9Ðä*Ð+;Ó<Ðð 	&Ø
1ñ	2à
ñ	ð $ñ	$ð ñ		ð ð 	Ø
ñ	à
ñ	ð  ñ	 ð ð ˜zÑ)€FØ€GØ*Ð-AÑAÐDUÑU€NØ 'Ñ)€Ià!Ø
!ñ	"à
"ñ	#ð ñ	ð ð 	ØØØØØØðð r    c                   ór   ‡ — e Zd ZdZeddddddddddfdededed	ed
ededededee   dededdfˆ fd„Z	ˆ xZ
S )ÚCppTorchOptionsaf  
    This class is inherited from CppTorchOptions, which automatic contains
    base cxx build options. And then it will maintains torch related build
    args.
    1. Torch include_directories, libraries, libraries_directories.
    2. Python include_directories, libraries, libraries_directories.
    3. OpenMP related.
    4. Torch MACROs.
    5. MISC
    FTr   rš   rˆ  r–  r'  rè   rê   ré   rê  rV  rZ  rX   rB  r   Nc           	      óÚ  •— t         ‰| �  |||	||
|¬«       || _        t        | j                  ||||||¬«      \  }}}}}}}t        | j                  |«       t        | j                  |«       t        | j                  |«       t        | j                  |«       t        | j                  |«       t        | j                  |«       t        | j                  |«       | j                  «        y )N)rê   r'  rZ  ré   rX   rB  )rk   rˆ  r–  rè   rê   ré   rê  )ra  rø   rô   r  rì   r­   rí   rî   rï   rð   rñ   rò   ró   rÿ   )r÷   rˆ  r–  r'  rè   rê   ré   rê  rV  rZ  rX   rB  Útorch_definitionsrõ  Útorch_cflagsÚtorch_ldflagsrö  r÷  Útorch_passthrough_argsrb  s                      €r   rø   zCppTorchOptions.__init__X  së   ø€ ô 	‰ÑØ%Ø#Ø#Ø/ØØ%ð 	ô 	
ð "ˆŒô "ØŸ™ØØ+ØØ%Ø/Ø-ô
ñ	
ØØØØØ ØØ"ô 	�T×&Ñ&Ð(9Ô:Ü�T×'Ñ'Ð);Ô<Ü�T—\‘\ <Ô0Ü�T—]‘] MÔ2Ü�T×)Ñ)Ð+?Ô@Ü�T—_‘_ oÔ6Ü�T×+Ñ+Ð-CÔDØ×ÑÕ r    )r"  r#  r$  r%  r   r   ru   r   r&  rø   rc  rd  s   @r   r  r  L  s¯   ø„ ñ	ð *Ø %Ø ØØ"Ø"'Ø!&ØØ%'ØØ"ñ2!àð2!ð ð2!ð ð	2!ð
 ð2!ð ð2!ð  ð2!ð ð2!ð ð2!ð ˜c‘]ð2!ð ð2!ð ð2!ð 
÷2!ñ 2!r    r  c                  óò   — t        j                  «       rct        j                  j                  €Hdt
        j                  vr5dt
        j                  vr"t        j                  t
        j                  d<   y y y y y )NÚ	CUDA_HOMEÚ	CUDA_PATH)	r   rd   rg  ÚversionÚhipr5   rP   r   Úsdk_homer   r    r   Ú_set_gpu_runtime_envr  �  s^   € ä×ÑÔÜ�M‰M×ÑÐ%ØœrŸz™zÑ)ØœrŸz™zÑ)ä"-×"6Ñ"6Œ�
‰
�;Òð *ð *ð &ð 	r    é   r8   c                 ó¼   — t        t        | «      j                  d«      «      }|r|d   j                  «       j                  S d| › �}t
        j                  |«       y )Nzlibcudart_static.ar   z%"libcudart_static.a" not found under )rh   r   ÚrglobÚresolver¤  rN   rO   )r8   Úlib_dirsÚlog_msgs      r   Ú_find_libcudart_staticr  —  sS   € ä”D˜“J×$Ñ$Ð%9Ó:Ó;€HÙØ˜‰{×"Ñ"Ó$×+Ñ+Ð+Ø5°d°VÐ<€GÜ‡H�HˆWÔØr    Úlpathsc                 ó.  — t        | «      D ]‡  \  }}dt        j                  v sŒ|j                  t        j                  d   «      sŒ<t	        |«      }|€ŒJt        |«      | |<   |dz  }|j                  «       sŒn| j                  t        |«      «       Œ‰ y )Nr  Ústubs)Ú	enumerater5   rP   Ú
startswithr  r&  rM   r±   )r  Úir8   Úlib_dirÚstub_dirs        r   Ú_transform_cuda_pathsr   ¡  s   € ô ˜VÓ$ò -‰ˆˆ4Øœ"Ÿ*™*Ò$¨¯©¼¿¹ÀKÑ9PÕ)QÜ&<¸TÓ&BˆGØˆØÜ˜G›ˆF�1‰IØ Ñ(ˆHØ�‰Õ Ø—‘œc (›mÕ,ñ-r    Údevice_typec                 óR  — g }g }g }g }g }g }g }	t        j                  «       rEdt        j                  vr3dt        j                  vr!t        j
                  t        j                  d<   t        «        ddlm}
 |
j                  | «      }|
j                  | «      }| dk(  r¨|j                  t        j                  j                  rdnd«       t        j                  j                  �4t        j                  «       r|dgz  }n|d	d
gz  }|j                  d«       n-t        j                  «       r|dgz  }n|g d¢z  }t        |«       | dk(  r4|j                  d«       |dgz  }|g d¢z  }t!        d«      st#        d«      ‚|rEt        j                  «       r1ddlm} t        j(                  j+                   |«       «      › g}||z  }t        j                  «       rE|j                  t        j,                  «       |r$| dk(  rt        j                  j                  €|sdg}	|||||||	fS )Nr  r  r   )Úcpp_extensionÚcudaz	 USE_ROCMz	 USE_CUDAÚamdhip64Úc10_hipÚ	torch_hipz __HIP_PLATFORM_AMD__)Úc10_cudar$  Ú
torch_cudaÚxpuz USE_XPUzWno-comment)Úc10_xpuÚsyclÚ	ze_loaderÚ	torch_xpur-  z•Intel GPU driver is not properly installed, please follow the instruction in https://github.com/pytorch/pytorch?tab=readme-ov-file#intel-gpu-support.©Úcpp_prefix_pathz*-Wl,-Bstatic -lcudart_static -Wl,-Bdynamic)r   rd   r5   rP   r   r  r  Útorch.utilsr#  r˜  Úlibrary_pathsr±   rg  r  r  r   r   r¹   r2   r0  r8   ÚdirnameÚsdk_include)r!  rè   rê   rá   râ   rã   rä   rå   ræ   rç   r#  r0  Úcpp_prefix_include_dirs                r   Úget_cpp_torch_device_optionsr6  °  s  € ð
  €KØ €LØ€FØ€GØ "€NØ€IØ"$Ðä×ÑÔØœrŸz™zÑ)ØœrŸz™zÑ)ä"-×"6Ñ"6Œ�
‰
�;ÑäÔÝ)à ×.Ñ.¨{Ó;€LØ"×0Ñ0°Ó=€NØ�fÒØ×Ñ¬%¯-©-×*;Ò*;™;ÀÔMä�=‰=×ÑÐ(Ü×ÑÔ!Ø˜j˜\Ñ)‘	à˜i¨Ð5Ñ5�	Ø×ÑÐ6Õ7ä×ÑÔ!Ø˜f˜XÑ%‘	àÒ?Ñ?�	Ü! .Ô1à�eÒØ×Ñ˜:Ô&à�=�/Ñ!ˆØÒBÑBˆ	Ü˜KÔ(Üð^óð ñ
 Ü×ÑÔÝAä)+¯©¯©¹Ó9JÓ)KÐ(LÐ%NÐ"ØÐ2Ñ2ˆLä×ÑÔØ×ÑœK×3Ñ3Ô4á˜ vÒ-Ü�}‰}× Ñ Ð(Ù#à(TÐ'UÐ$ð 	ØØØØØØðð r    c                   óx   ‡ — e Zd ZdZedddddddddf
dededed	ed
ededededee   deddfˆ fd„Z	dˆ fd„Z
ˆ xZS )ÚCppTorchDeviceOptionszÎ
    This class is inherited from CppTorchOptions, which automatic contains
    base cxx build options and torch common build options. And then it will
    maintains cuda/xpu device related build args.
    Fr$  Tr   rˆ  r–  r!  rè   rê   ré   rê  rV  rZ  rB  r   Nc           
      óÐ  •— t         ‰| �  |||||||	|
¬«       g }g }g }g }g }g }g }t        |||¬«      \  }}}}}}}t        | j                  |«       t        | j
                  |«       t        | j                  |«       t        | j                  |«       t        | j                  |«       t        | j                  |«       t        | j                  |«       | j                  «        y )N)rˆ  r–  rè   rê   ré   rê  rZ  rB  )r!  rè   rê   )ra  rø   r6  r­   rí   rî   rï   rð   rñ   rò   ró   rÿ   )r÷   rˆ  r–  r!  rè   rê   ré   rê  rV  rZ  rB  Údevice_definitionsÚdevice_include_dirsÚdevice_cflagsÚdevice_ldflagsÚdevice_libraries_dirsÚdevice_librariesÚdevice_passthrough_argsrb  s                     €r   rø   zCppTorchDeviceOptions.__init__  s  ø€ ô 	‰ÑØØ+ØØ%Ø/Ø-Ø#Ø%ð 	ô 		
ð )+ÐØ)+ÐØ#%ˆØ$&ˆØ+-ÐØ&(ÐØ-/Ðô )Ø#¨hÀ\ô
ñ	
ØØØØØ!ØØ#ô 	�T×&Ñ&Ð(:Ô;Ü�T×'Ñ'Ð)<Ô=Ü�T—\‘\ =Ô1Ü�T—]‘] NÔ3Ü�T×)Ñ)Ð+@ÔAÜ�T—_‘_Ð&6Ô7Ü�T×+Ñ+Ð-DÔEØ×ÑÕ r    c                 ó2  •— t         ‰| �  «        t        j                  «       rtt	        «       \  }}t        |«      dk(  s
J d|› �«       ‚|d   | j                  v r=| j                  j                  |d   «       | j                  j                  |d   «       y y y )Nr)   zPython lib dirs: r   )	ra  rÿ   r   rd   rµ  r·  rñ   rÀ   r±   )r÷   rœ   Úpython_lib_dirsrb  s      €r   rÿ   z'CppTorchDeviceOptions._finalize_options9  s™   ø€ Ü‰Ñ!Ô#Ü×ÑÔô ":Ó!;ÑˆAˆÜ�Ó'¨1Ò,ÐSÐ0AÀ/ÐARÐ.SÓSÐ,Ø˜qÑ! T×%9Ñ%9Ñ9Ø×$Ñ$×+Ñ+¨O¸AÑ,>Ô?Ø×$Ñ$×+Ñ+¨O¸AÑ,>Õ?ð :ð r    r!  )r"  r#  r$  r%  r   r   ru   r&  r   rø   rÿ   rc  rd  s   @r   r8  r8  þ  sª   ø„ ñð *Ø %Ø!ØØ"Ø"'Ø!&ØØ%'Ø"ñ2!àð2!ð ð2!ð ð	2!ð
 ð2!ð ð2!ð  ð2!ð ð2!ð ð2!ð ˜c‘]ð2!ð ð2!ð 
õ2!÷h	@ñ 	@r    r8  rÆ   c                 óÊ   — t         j                  j                  | «      }t         j                  j                  |«      \  }}t         j                  j	                  | «      }||fS )a¿  
    This function help prepare parameters to new cpp_builder.
    Example:
        input_code: /tmp/tmpof1n5g7t/5c/c5crkkcdvhdxpktrmjxbqkqyq5hmxpqsfza4pxcf3mwk42lphygc.cpp
        name, dir = get_name_and_dir_from_output_file_path(input_code)
    Run result:
        name = c5crkkcdvhdxpktrmjxbqkqyq5hmxpqsfza4pxcf3mwk42lphygc
        dir = /tmp/tmpof1n5g7t/5c/

    put 'name' and 'dir' to CppBuilder's 'name' and 'output_dir'.
    CppBuilder --> get_target_file_path will format output path accoding OS:
    Linux: /tmp/tmppu87g3mm/zh/czhwiz4z7ca7ep3qkxenxerfjxy42kehw6h5cjk6ven4qu4hql4i.so
    Windows: [Windows temp path]/tmppu87g3mm/zh/czhwiz4z7ca7ep3qkxenxerfjxy42kehw6h5cjk6ven4qu4hql4i.dll
    )r5   r8   r„  Úsplitextr3  )rÆ   Úname_and_extrÅ   Ú_extÚdirs        r   Ú&get_name_and_dir_from_output_file_pathrH  E  sL   € ô" —7‘7×#Ñ# IÓ.€LÜ—‘×!Ñ! ,Ó/�J€Dˆ$Ü
�'‰'�/‰/˜)Ó
$€Cà�ˆ9Ðr    c                   ó¸   — e Zd ZdZdefd„Zdefd„Z	 ddedeeee   f   de	dedd	f
d
„Z
defd„Zdefd„Z	 	 dd„Zdd„Zdedd	fd„Zdededd	fd„Zdedd	fd„Zy	)Ú
CppBuilderaž  
    CppBuilder is a cpp jit builder, and it supports both Windows, Linux and MacOS.
    Args:
        name:
            1. Build target name, the final target file will append extension type automatically.
            2. Due to the CppBuilder is supports mutliple OS, it will maintains ext for OS difference.
        sources:
            Source code file list to be built.
        BuildOption:
            Build options to the builder.
        output_dir:
            1. The output_dir the taget file will output to.
            2. The default value is empty string, and then the use current dir as output dir.
            3. Final target file: output_dir/name.ext
    r   c                 ó   — t         rd}|S d}|S )Nz.pydú.sor*  )r÷   ÚSHARED_LIB_EXTs     r   Ú__get_python_module_extz"CppBuilder.__get_python_module_extn  s   € Ý#.˜ˆØÐð 5:ˆØÐr    c                 ó   — t         rd}|S d}|S )Nz.objú.or*  )r÷   ÚEXTs     r   Ú__get_object_extzCppBuilder.__get_object_extr  s   € Ý#ˆfˆØˆ
ð *.ˆØˆ
r    rÅ   ÚsourcesÚBuildOptionÚ
output_dirNc                 ó®  — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        g | _        d| _	        d| _
        d| _        d| _        || _        || _        |j                  «       | _         |j!                  «       | _        |j#                  «       | _        || _	        |j%                  «       | _        | j&                  r| j)                  «       n| j+                  «       }t,        j.                  j1                  | j                  | j                  › |› �«      | _
        t3        |t4        «      r|g}t7        j8                  «       re| j                  r| j                  s|}n3|D �cg c]!  }t,        j.                  j;                  |«      ‘Œ# }}|| _        dj1                  |«      | _        ndj1                  |«      | _        |j?                  «       D ];  }t@        r| xj                  d|› d�z  c_        Œ#| xj                  d|› d�z  c_        Œ= |jC                  «       D ];  }	t@        r| xj                  d|	› d�z  c_        Œ#| xj                  d|	› d�z  c_        Œ= |jE                  «       D ];  }
t@        r| xj                  d|
› d	�z  c_        Œ#| xj                  d
|
› d�z  c_        Œ= |jG                  «       D ];  }t@        r| xj                  d|› d�z  c_        Œ#| xj                  d|› d�z  c_        Œ= |jI                  «       D ];  }t@        r| xj
                  d|› d	�z  c_        Œ#| xj
                  d|› d�z  c_        Œ= |jK                  «       D ];  }t@        r| xj                  d|› d�z  c_        Œ#| xj                  d|› d�z  c_        Œ= |jM                  «       D ]  }| xj                  |› d�z  c_        Œ y c c}w )Nrš   Fr\  rÜ   ú-z/D z-D z/I "z" z-Iz
/LIBPATH:"z-Lú"z.lib" z-l)'rì   Ú_cflags_argsÚ_definitions_argsÚ_include_dirs_argsÚ_ldflags_argsÚ_libraries_dirs_argsÚ_libraries_argsÚ_passthrough_parameters_argsÚ_orig_source_pathsÚ_output_dirÚ_target_filerõ   rô   Ú_nameÚ_build_optionr  r  r  r  rö   Ú_CppBuilder__get_object_extÚ"_CppBuilder__get_python_module_extr5   r8   r9   rf   r&  r   rd   r„  Ú_sources_argsr	  rc   r  r  r  r  r  r  )r÷   rÅ   rS  rT  rU  Úfile_extÚinp_namer  ÚcflagÚ
definitionÚinc_dirÚldflagr  rÓ  Úpassthrough_args                  r   rø   zCppBuilder.__init__v  sµ  € ð ˆŒØˆÔØ!#ˆÔØ"$ˆÔØˆÔØ$&ˆÔ!Ø!ˆÔØ,.ˆÔ)ð #%ˆÔØˆÔØˆÔà(-ˆÔØ$ˆŒàˆŒ
ð )ˆÔØ$×1Ñ1Ó3ˆŒØ"-×"CÑ"CÓ"EˆÔØ$×1Ñ1Ó3ˆŒà%ˆÔà(×9Ñ9Ó;ˆÔð ×!Ò!ð ×!Ñ!Ô#à×-Ñ-Ó/ð 	ô
 ŸG™GŸL™L¨×)9Ñ)9¸d¿j¹j¸\È(ÈÐ;TÓUˆÔä�gœsÔ#Ø�iˆGä×ÑÔØ�~Š~ d×&=Ò&=Ø"‘ð :AÖA°AœBŸG™G×,Ñ,¨QÕ/ÐA�ÐAØ*1�Ô'Ø!$§¡¨(Ó!3ˆDÕà!$§¡¨'Ó!2ˆDÔà ×+Ñ+Ó-ò 	2ˆEÝØ×!Ò! q¨¨¨q \Ñ1Ö!à×!Ò! q¨¨¨q \Ñ1Ö!ð		2ð &×5Ñ5Ó7ò 	>ˆJÝØ×&Ò&¨C°
¨|¸1Ð*=Ñ=Ö&à×&Ò&¨C°
¨|¸1Ð*=Ñ=Ö&ð		>ð #×3Ñ3Ó5ò 	;ˆGÝØ×'Ò'¨T°'°¸"Ð+=Ñ=Ö'à×'Ò'¨R°¨y¸¨?Ñ:Ö'ð		;ð "×-Ñ-Ó/ò 	4ˆFÝØ×"Ò"¨¨&¨° mÑ3Ö"à×"Ò"¨¨&¨° mÑ3Ö"ð		4ð #×5Ñ5Ó7ò 	=ˆGÝØ×)Ò)¨z¸'¸À"Ð-EÑEÖ)à×)Ò)¨r°'°¸!¨_Ñ<Ö)ð		=ð ×,Ñ,Ó.ò 	4ˆCÝØ×$Ò$¨!¨C¨5°¨Ñ7Ö$à×$Ò$¨"¨S¨E°¨Ñ3Ö$ð		4ð  +×?Ñ?ÓAò 	GˆOØ×-Ò-°OÐ3DÀAÐ1FÑFÖ-ñ	GùòU Bs   Å4&Oc                 óî  ‡ — dt         dt         dt         dt         dt         dt         dt         dt         d	t         d
t         dt         fˆ fd„} |‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j
                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  r)t        j                  j                  ‰ j                  «      n‰ j                  ¬«
      }|S )NrX   rS  Úinclude_dirs_argsÚdefinitions_argsÚcflags_argsÚldflags_argsÚlibraries_argsÚlibraries_dirs_argsrç   Útarget_filer   c
                 ó  •— t         r-| › d|› d|› d|› d|› d|› d|	› d|› d|› d|› d�}
t        |
«      }
|
S ‰j                  rdnd}t        j                  ddd| › d|› d|› d|› d|› d|› d|› d|› d|› d|› d|	› d�«      j                  «       }
|
S )	Nr\  z /LD /Fez /link z-crš   z[ \n]+z
                    z -o )rc   rÞ   rö   rt   Úsubr|   )rX   rS  rp  rq  rr  rs  rt  ru  rç   rv  rÒ   Úcompile_only_argr÷   s               €r   Úformat_build_commandz9CppBuilder.get_command_line.<locals>.format_build_command×  s  ø€ õ ð  �j Ð"3Ð!4°AÐ6FÐ5GÀqÈÈÐUVÐW^ÐV_Ð_`Ø'Ð(¨°°¸WÐEXÐDYÐYZÐ[iÐZjÐjkÐlxÐkyÐyzð|ð ô /¨sÓ3�ð ˆJð ,0×+=Ò+=¡4À2Ð Ü—f‘fØØðØ�J˜a ˜y¨Ð*:Ð);¸1¸[¸MÈÐK\ÐJ]ð ^Ø%Ð& a¨ ~°Q°~Ð6FÀaÐH[ÐG\Ð\]Ð^nÐ]oÐosÐtð  tAð Aðó÷ ‘%“'ð ð ˆJr    )
rX   rS  rp  rq  rr  rs  rt  ru  rç   rv  )r&  rì   rg  r[  rZ  rY  r\  r^  r]  r_  rõ   r5   r8   r„  rb  )r÷   rz  Úcommand_lines   `  r   Úget_command_linezCppBuilder.get_command_lineÖ  s  ø€ ð	Üð	äð	ô  #ð	ô "ð		ô
 ð	ô ð	ô  ð	ô "%ð	ô "ð	ô ð	ô õ	ñ@ ,Ø—^‘^Ø×&Ñ&Ø"×5Ñ5Ø!×3Ñ3Ø×)Ñ)Ø×+Ñ+Ø×/Ñ/Ø $× 9Ñ 9Ø!×>Ñ>à×&Ò&ô Ÿ™×(Ñ(¨×):Ñ):Ô;à×"Ñ"ô
ˆð Ðr    c                 ó,   — t        | j                  «      S r   )rÞ   rb  rú   s    r   Úget_target_file_pathzCppBuilder.get_target_file_path  s   € Ü'¨×(9Ñ(9Ó:Ð:r    c                 ó´  — ddl m} t        d«      5  | j                  «       j	                  «       }	  |«       }t
        j                  j                  |«      }| j                  }t
        j                  j                  t        d«      }t        j                  «       5 }t        j                  |t
        j                  j                  ||«      «       t        j                  t        t
        j                  j                  |d«      «       | j                   D ]S  }t        j                  |t
        j                  j                  |t
        j                  j                  |«      «      «       ŒU t
        j                  j                  |d«      }	t        j"                  ||	«       t%        ||t
        j                  j                  |«      «      }
t
        j                  j'                  |«      rt        j(                  |«       t        j                  |
|«       |j+                  d«      rt        j,                  |d«       n'|j+                  d«      rt        j,                  |d	«       d d d «       d d d «       y # 1 sw Y   ŒxY w# t.        j0                  $ r7}|j2                  j5                  d
«      }t7        j8                  ||«      |‚d }~ww xY w# 1 sw Y   y xY w)Nr   r/  rØ   ry  z	script.ldrP  i¤  rL  ií  r(   )r2   r0  r
   r|  rÎ   r5   r8   r„  rb  r9   Ú_TORCH_PATHÚtempfileÚTemporaryDirectoryrR   rž   rƒ  r`  Úcopytreer   rM   rÀ   ÚendswithÚchmodr;   rÏ   rÐ   ro   r   rÑ   )r÷   r0  r¹  rã  Úheader_nameÚoutput_pathÚtorch_includes_pathÚtmp_dirÚsrcÚdest_include_pathÚtmp_output_pathrÓ   rÐ   s                r   Úbuild_fbcode_rezCppBuilder.build_fbcode_re
  s  € õ 	>ä˜.Ó)ñ !	BØ×+Ñ+Ó-×3Ñ3Ó5ˆGðBá-Ó/�Ü Ÿg™g×.Ñ.¨{Ó;�Ø"×/Ñ/�ô ')§g¡g§l¡l´;À	Ó&JÐ#Ü×0Ñ0Ó2ð 5°gä—K‘K ¬R¯W©W¯\©\¸'À;Ó-OÔPÜ—K‘K¤´·±·±¸WÀkÓ0RÔSØ#×6Ñ6ò W˜ÜŸ™ C¬¯©¯©°g¼r¿w¹w×?OÑ?OÐPSÓ?TÓ)UÕVðWä(*¯©¯©°W¸iÓ(HÐ%Ü—O‘OÐ$7Ð9JÔKä&8Ø ¬"¯'©'×*:Ñ*:¸;Ó*Gó'�Oô —w‘w—~‘~ kÔ2ÜŸ	™	 +Ô.Ü—K‘K °Ô=Ø"×+Ñ+¨DÔ1ÜŸ™ ¨eÕ4Ø$×-Ñ-¨eÔ4ÜŸ™ ¨eÔ4÷'5÷!	Bð !	B÷5ð 5ûô( ×0Ñ0ò BØŸ™Ÿ™¨Ó1�Ü×)Ñ)¨'°6Ó:ÀÐAûðBú÷?!	Bð !	BúsB   ’K²A*JÂGI5É$JÉ5I>	É:JÊKÊ2KËKËKËKc                 óF  — | j                   r| j                  «       S t        | j                  «       t        j
                  j                  | j                  | j                  › dt        › �«      }t        |«       | j                  «       }t        ||¬«       t        |«       y)z«
        It is must need a temperary directory to store object files in Windows.
        After build completed, delete the temperary directory to save disk space.
        rœ   )rÊ   N)rõ   r�  r¼   ra  r5   r8   r9   rc  Ú_BUILD_TEMP_DIRr|  rÙ   rÈ   )r÷   Ú_build_tmp_dirÚ	build_cmds      r   ÚbuildzCppBuilder.build2  s�   € ð
 ×"Ò"à×'Ñ'Ó)Ð)Ü  ×!1Ñ!1Ô2ÜŸ™Ÿ™Ø×Ñ §¡ ¨A¬oÐ->Ð?ó
ˆô 	! Ô0à×)Ñ)Ó+ˆ	Ü˜	 ~Õ6Ü�NÕ#r    Ú
cmake_pathc           	      ó   — dj                  | j                  j                  «       «      }t        j                  d|› d| j
                  › d| j                  › d�«      }t        |d«      5 }|j                  |«       d d d «       y # 1 sw Y   y xY w)Nr\  aÀ  
            cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
            project(aoti_model LANGUAGES CXX)
            set(CMAKE_CXX_STANDARD 17)

            # May need to point CMAKE_PREFIX_PATH to the right torch location
            find_package(Torch REQUIRED)

            # Set a shared library target
            add_library(aoti_model SHARED)

            # Add macro definitions
            target_compile_definitions(aoti_model PRIVATE zY)

            # Add compile flags
            target_compile_options(aoti_model PRIVATE z])
            # Backend specific flags
            target_compile_options(aoti_model PRIVATE z -c)

            r  )	r9   rd  r  ÚtextwrapÚdedentrY  r_  r  Úwrite)r÷   r“  rá   Úcontentsr  s        r   Úsave_compile_cmd_to_cmakez$CppBuilder.save_compile_cmd_to_cmakeD  sœ   € ð —h‘h˜t×1Ñ1×AÑAÓCÓDˆÜ—?‘?ð;ð <G¸-ð H7ð 8<×7HÑ7HÐ6Ið J7à7;×7XÑ7XÐ6Yð Zð#ó
ˆô, �*˜cÓ"ð 	 aØ�G‰G�HÔ÷	÷ 	ñ 	ús   Á)BÂBÚsrc_pathc                 ó    — dt        |«      j                  z   }t        |d«      5 }|j                  d|› d�«       d d d «       y # 1 sw Y   y xY w)Nz${CMAKE_CURRENT_SOURCE_DIR}/Úaz"target_sources(aoti_model PRIVATE z)
)r   rÅ   r  r—  )r÷   r“  rš  r  s       r   Úsave_src_to_cmakezCppBuilder.save_src_to_cmakeb  sQ   € à1´D¸³N×4GÑ4GÑGˆÜ�*˜cÓ"ð 	H aØ�G‰GÐ8¸¸
À#ÐFÔG÷	H÷ 	Hñ 	Hús   ¥AÁAc                 ó˜  — dj                  | j                  j                  «       «      }dj                  | j                  j                  «       «      }t	        j
                  d|› d|› d�«      }t        j                  j                  |«      sJ d|› d�«       ‚t        |d«      5 }|j                  |«       d d d «       y # 1 sw Y   y xY w)Nr\  zS
            # Add linker flags
            target_link_options(aoti_model PRIVATE zT)

            # Add libraries
            target_link_libraries(aoti_model PRIVATE z)
         z#save_link_cmd_to_cmakefile expects z to already existrœ  )r9   rd  r  r  r•  r–  r5   r8   rM   r  r—  )r÷   r“  Úlflagsr¯  r˜  r  s         r   Úsave_link_cmd_to_cmakez!CppBuilder.save_link_cmd_to_cmakeh  sÅ   € Ø—‘˜$×,Ñ,×8Ñ8Ó:Ó;ˆØ�x‰x˜×*Ñ*×8Ñ8Ó:Ó;ˆÜ—?‘?ð4à4:°8ð <6ð 7;°Vð <
ðó
ˆô �w‰w�~‰~˜jÔ)ð 	
Ø1°*°Ð=NÐOó	
Ð)ô �*˜cÓ"ð 	 aØ�G‰G�HÔ÷	÷ 	ñ 	ús   Â%C Ã C	)rš   r!  )r"  r#  r$  r%  r&  rf  re  r	   rh   rà   rø   r|  r~  r�  r’  r™  r�  r   r   r    r   rJ  rJ  ]  sé   „ ñð ¨ó ð #ó ð ñ^Gàð^Gð �s˜D ™I�~Ñ&ð^Gð &ð	^Gð
 ð^Gð 
ó^Gð@/ #ó /ðb; có ;ð&Bà	ó&BóP$ð$àðð 
óð<H¨Cð H¸3ð HÀ4ó Hð°ð ¸ô r    rJ  )T)zc++17)F)Tr   Fr!  )FF)€rž   rº   Ú	functoolsr  Úloggingr5   r4   rt   rÍ   rR   r;   r3   r¢  r�  r•  r¦  Úcollections.abcr   Úctypesr   Úctypes.utilr   Úpathlibr   Útypingr   r   r	   rg  Útorch._dynamo.utilsr
   Útorch._inductorr   r   Útorch._inductor.cpu_vec_isar   r   Ú%torch._inductor.runtime.runtime_utilsr   Útorch.torch_versionr   rd   Ú	triton.fbr   Útriton.fb.buildr   Útorch._inductor.fb.utilsr   r   r   r   ru   r�  r8   ÚabspathÚ__file__Ú_HEREr3  r€  r9   rƒ  r  Ú	_IS_LINUXrÝ  rc   r}   Ú	getLoggerr"  rN   Ú	lru_cacher&  rD   r:   r_   rj   rr   rw   ry   r   rŒ   rŽ   r�   r‰   r“   r•   r¡   rh   r­   r³   r¼   rÈ   rÖ   rÙ   rÞ   rà   r+  r.  r>  rA  rO  rY  ri   r]  r_  rj  rn  rp  rv  r‡  r•  rž  rª  rµ  rº  r¿  rÈ  rÎ  ré  rì  r  r  r  r  r   r6  r8  rH  rJ  r   r    r   ú<module>r¶     s:	  ðó Û Û Û Û Û 	Û Û 	Û Û Û Û 
Û Û Û Û Ý $Ý Ý $Ý ß 'Ñ 'ã Ý ,ß 'ß ?Ý ;Ý ,ð €6×ÑÔÝ%Ý2÷ô ð sð °cð ¸dó ð cð °Sð ¸Tó ð Sð °Cð ¸Dó ð˜dó ð
 €Ø
�‰�‰˜Ó!€Ø�g‰g�o‰o˜bŸg™gŸo™o¨eÓ4Ó5€Ø—‘—‘˜kÐ+@ÓA€ð �L‰L×#Ñ# GÓ,€	Ø�L‰L×#Ñ# HÓ-€	Ø�l‰l˜gÑ%€á'2™¸Ð à€g×Ñ˜Ó!€ð €×Ñ�QÓð! ð !¨ò !ó ð!ð8˜só ð4 €×Ñ�TÓð
¨3ð 
°4ò 
ó ð
ð˜#ó ð €×Ñ�TÓð5 #ð 5¨$ò 5ó ð5ð
 €×Ñ�TÓð?˜Cð ? Dò ?ó ð?ð €×Ñ�TÓð9˜#ð 9 $ò 9ó ð9ð €×Ñ�TÓð˜cð  dò ó ðð" €×Ñ�TÓð( Sð (¨Tò (ó ð(ðV €×Ñ�TÓð'�ò 'ó ð'ð €×Ñ�TÓð)�$ò )ó ð)ð €×Ñ�TÓð2˜4ò 2ó ð2ð €×Ñ�TÓð/˜ò /ó ð/ð €×Ñ�TÓð+�Dò +ó ð+ð¨ð °ó ð*?˜D ™Ið ?°°c±ð ?¸tó ?ð¨4°©9ð ¸¸c¹ó ð sð ¨tó ð	˜#ð 	 $ó 	ð6˜sð 6¨ð 6°ó 6ð*(˜cð (¨ð (°ó (ð
¨ð °ó ÷f ñ f ñR¨ð ¸¸S¹	ó ñ" ð "°$°s±)ó "ð¨Sð °T¸#±Yó ð6˜t C™yó ð, -2ñØðØ%)ðà	ˆ#�Yóð@ Dð ¨T°#©Yó ð, Ø!#Øñ!Øð!àð!ð ð!ð ˜#‘ð	!ð
 ð!ð ˆ4�‰9�d˜3‘i  c¡¨D°©I°t¸C±yÀ$ÀsÁ)ÈTÐRUÉYÐVÑWó!ôH0!Ð!ô 0!ðf d¨3¡ió ðE¨4°©9ó Eð2 d¨3¡ió 2ð  c¡ó ð'2Øð'2àð'2ð ð'2ð ˆ4�‰9�d˜3‘i  c¡Ð*Ñ+ó	'2ðT¨6ð °e¸DÀ¹IÀtÈCÁyÐ<PÑ6Qó ð(3Øð3Ø%)ð3à
ˆ4�‰9�d˜3‘i  c¡Ð*Ñ+ó3ð&
 $ s¡)ó 
ð0 %¨¨S©	°4¸±9Ð(<Ñ"=ó 0ð2 €×Ñ�TÓð¨ò ó ðð €×Ñ�TÓð˜˜t S˜yÑ)ò ó ðð& €×Ñ�TÓð
¨3ð 
¸#ð 
À$ò 
ó ð
ð €×Ñ�TÓð?¨ð ?°ò ?ó ð?ð<hUØðhUà
ˆ4�‰9�d˜3‘i  c¡¨D°©I°t¸C±yÀ$ÀsÁ)ÐKÑLóhUðV¨$ð °4¸±9ó ðRØðRàðRð ðRð ð	Rð
 ðRð ðRð ðRð ˆ4�‰9�d˜3‘i  c¡¨D°©I°t¸C±yÀ$ÀsÁ)ÈTÐRUÉYÐVÑWóRôj>!�jô >!óB7ð €×Ñ�QÓð ð ¨°$©ò ó ðð- $ s¡)ð -°ó -ð" ØñKØðKàðKð ðKð ˆ4�‰9�d˜3‘i  c¡¨D°©I°t¸C±yÀ$ÀsÁ)ÈTÐRUÉYÐVÑWó	Kô\D@˜Oô D@ðNØðà
ˆ3�ˆ8�_ó÷0\ò \r    