o
    81 iv  ã                   @   s¦  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
mZ d dlZd dlZd dlZd dlZd dlmZmZ d dlZd dlZd dlZd dlmZ d dlZd dlmZmZmZmZ e ddd	d
Z!e! "¡ Z#W d  ƒ n1 szw   Y  ej$ %ej$ &e'¡¡Z(dZ)dZ*e +dd¡dkZ,e +dd¡dkZ-e +dd¡dkZ.e +dd¡dkZ/e +dd¡dkZ0e +dd¡dkZ1e +dd¡dkZ2e +dd¡dkZ3e +dd¡dkZ4e +dd¡dkZ5e +dd¡dkZ6e +dd¡dkZ7e +dd¡dkZ8e +dd¡dkZ9e +dd¡dkZ:e +dd¡dkZ;e +dd¡dkZ<e +d d¡dkZ=e +d!d¡dkZ>e +d"d¡dkZ?e +d#d¡dkZ@d d$lmAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZI 	%	d¤d&d'„ZJeJejKjL_Jd(d)„ ZMd*d+„ ZNd,eOd%dfd-d.„ZPd¥d0eOd1eOd%eQfd2d3„ZRd%eQfd4d5„ZSd6d7„ ZTd8d9„ ZUd:d;„ ZVd<d=„ ZWd>d?d@œZXe YdA¡ZZi Z[g Z\e ]g dB¢¡ e-se^dC _ej`¡ƒ eaej` bdD¡d  ƒZceaej` bdD¡dE ƒZdePe)ƒ eNeƒ\ZeZfefedFƒk rÔegdGƒ‚efedHƒkrGeVdIdJdK„ dLeXdI dMdK„ dN eVdOdPdK„ dLeXdO dQdK„ dN eVdOdRdK„ dSeXdO dTdK„ dN ej$ %e'¡Zhej$ &ej$ iehejjdUdVdWdL¡¡Zkej$ iekdIeZ› ¡Zlekejm ejndX  ejndX< elejndY< e oele el¡jpejqB ¡ g Zrer sdZ¡ er sd[¡ e.rZd\ejt_uee(ƒjvZwewd] d^ Zxg e/rld_gng  e1rtd`gng  e0r|dagng  e2r„dbgng  e3rŒdcgng  e4r”ddgng  e5rœdegng  e6r¤dfgng  e7r¬dggng  e8r´dhgng  e9r¼digng  e:rÄdjgng  e;rÌdkgng  e<rÔdlgng  e=rÜdmgng  e>rädngng  e?rìdogng  e@rôdpgng  Zydqge6sÿdrgng  Zzdqge6s
drgng  e7sdsgng  Z{dqge6sdrgng  Z|g e:s'dtgng  e;s/dugng  e<s7dvgng  e=s?dwgng  e>sGdxgng  Z}dydzgZ~e}Zd/ge0sXd{gng  Z€d/ge1scd|gng  Zd/ge4snd}gng  Z‚e4rwd/gnd~gZƒd/ge5s‚dgng  Z„d€d„ e …eeze€eeƒ¡D ƒZ†d‚d„ e …e~e{e€ee‚e„¡D ƒZ‡dƒd„ e …e}e|e‚¡D ƒZˆd„d„ e …e}e|eƒ¡D ƒZ‰e/rÁg Z‰g Zˆd…ge?sÈe†ng  e‡ e?sÑeˆng  e‰ ZŠe0sÞeŠd†g7 ZŠeŠd‡g7 ZŠg dˆ¢Z‹eMƒ d‰krôe‹ ŒdŠd‹g¡ ee(ƒexdŒ gZe\ see)› deŠg dŽ¢ey eWƒ e‹ er ey dœed\d¡ d‘d’„ ZŽd“d”„ ZG d•d–„ d–eƒZee)eŽƒ ed—d˜d™gdše#d›g dœ¢e\e\rBeedœndžeidŸg d ¢džd¡d¢iid£ dS )¦é    N)ÚPath)ÚparseÚVersion)ÚsetupÚfind_packages)Úbdist_wheel)ÚBuildExtensionÚCppExtensionÚCUDAExtensionÚ	CUDA_HOMEz../README.mdÚrzutf-8)ÚencodingZflash_attn_3zVhttps://github.com/Dao-AILab/flash-attention/releases/download/{tag_name}/{wheel_name}ZFLASH_ATTENTION_FORCE_BUILDÚFALSEÚTRUEZFLASH_ATTENTION_SKIP_CUDA_BUILDZFLASH_ATTENTION_FORCE_CXX11_ABIZ FLASH_ATTENTION_DISABLE_BACKWARDZFLASH_ATTENTION_DISABLE_SPLITZFLASH_ATTENTION_DISABLE_PAGEDKVZ FLASH_ATTENTION_DISABLE_APPENDKVZFLASH_ATTENTION_DISABLE_LOCALZFLASH_ATTENTION_DISABLE_SOFTCAPZFLASH_ATTENTION_DISABLE_PACKGQAZFLASH_ATTENTION_DISABLE_FP16ZFLASH_ATTENTION_DISABLE_FP8ZFLASH_ATTENTION_DISABLE_VARLENZFLASH_ATTENTION_DISABLE_CLUSTERZFLASH_ATTENTION_DISABLE_HDIM64ZFLASH_ATTENTION_DISABLE_HDIM96ZFLASH_ATTENTION_DISABLE_HDIM128ZFLASH_ATTENTION_DISABLE_HDIM192ZFLASH_ATTENTION_DISABLE_HDIM256ZFLASH_ATTENTION_DISABLE_SM80Z FLASH_ATTENTION_ENABLE_VCOLMAJOR)	ÚIS_HIP_EXTENSIONÚCOMMON_HIP_FLAGSÚSUBPROCESS_DECODE_ARGSÚ
IS_WINDOWSÚget_cxx_compilerÚ_join_rocm_homeÚ_join_cuda_homeÚ_is_cuda_fileÚ_maybe_writeÚreturnc           *   	   K   s  dd„ }||ƒ}||ƒ}||ƒ}||ƒ}||ƒ}||ƒ}t |ƒt |ƒks&J ‚t |ƒdks.J ‚tƒ }dg}| d|› ¡ |
s@|rjtrHtddƒ}ntddƒ}d	tjv rXt d	¡}n|}| d
|› ¡ | d|› ¡ trpt	| }dd 
|¡› g}| dd 
|¡› ¡ |
rÑ| dd 
|¡› ¡ | dd 
|¡› ¡ dd„ |D ƒ}| dd 
|¡› ¡ |ddg }| dd 
|¡› ¡ dd„ |D ƒ}| dd 
|¡› ¡ | dd 
|¡› ¡ | dd 
|¡› ¡ dd„ |D ƒ}dg}trþ| d¡ | d¡ n| d¡ | d ¡ | d!¡ |
rjd"g}d#}tjjd$ur1t d%d&¡d'kr1| d ¡ | d!¡ d(}d)g|d*d$…  d+|› d,g }d-g|d*d$…  d+|› d.g }d/g|d*d$…  d+|› d0g }| d+|› d1¡ g }t||ƒD ]X\}}t|ƒo{|
}|r| d2¡rˆd3}n| d4¡r‘d5}n| d6¡ršd7}nd8}nd9}tr®| d:d;¡}| d:d;¡}| dd<¡}| dd<¡}| d=|› d>|› d|› ¡ qq|rôtj 
tj |d ¡d?¡} d@g}!|! dA¡ d=| › dBd 
|¡› g}"|| g7 }ng g }!}"|	d$urKdCg}#tr3t dDdEg¡jtŽ  dF¡}$t |$ƒd*kr%tj |$d ¡ d:d;¡}%ntdGƒ‚|# dH|%› dI¡ n|# dJ¡ d=|	› dKd 
|¡› g}&dL|	› g}'ng g g }#}&}'|||g}(|
ro|( |¡ |( |¡ |( |¡ |( |¡ |(|!|#||"|&|'g7 }(dM 
dNdO„ |(D ƒ¡})|)dP7 })t| |)ƒ d$S )QaÞ  Write a ninja file that does the desired compiling and linking.

    `path`: Where to write this file
    `cflags`: list of flags to pass to $cxx. Can be None.
    `post_cflags`: list of flags to append to the $cxx invocation. Can be None.
    `cuda_cflags`: list of flags to pass to $nvcc. Can be None.
    `cuda_postflags`: list of flags to append to the $nvcc invocation. Can be None.
    `sources`: list of paths to source files
    `objects`: list of desired paths to objects, one per source.
    `ldflags`: list of flags to pass to linker. Can be None.
    `library_target`: Name of the output library. Can be None; in that case,
                      we do no linking.
    `with_cuda`: If we should be compiling with CUDA.
    c                 S   s   | d u rg S dd„ | D ƒS )Nc                 S   s   g | ]}|  ¡ ‘qS © )Ústrip)Ú.0Úflagr   r   úX/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/hopper/setup.pyÚ
<listcomp>r   s    z=_write_ninja_file.<locals>.sanitize_flags.<locals>.<listcomp>r   )Úflagsr   r   r   Úsanitize_flagsn   s   z)_write_ninja_file.<locals>.sanitize_flagsr   zninja_required_version = 1.3zcxx = ÚbinZhipccÚnvccÚPYTORCH_NVCCznvcc_from_env = znvcc = z	cflags = ú zpost_cflags = zcuda_cflags = zcuda_post_cflags = c                 S   ó   g | ]
}|d kr
|nd‘qS )úarch=compute_90a,code=sm_90aúarch=compute_80,code=sm_80r   ©r   Úsr   r   r   r   —   ó    z%_write_ninja_file.<locals>.<listcomp>zcuda_post_cflags_sm80 = ú-gencoder(   zcuda_post_cflags_sm80_sm90 = c                 S   r&   )r'   zarch=compute_100a,code=sm_100ar   r)   r   r   r   r   ›   r+   zcuda_post_cflags_sm100 = zcuda_dlink_post_cflags = z
ldflags = c                 S   s   g | ]}t j |¡‘qS r   )ÚosÚpathÚabspath)r   Úfiler   r   r   r   ¢   ó    zrule compilez@  command = cl /showIncludes $cflags -c $in /Fo$out $post_cflagsz  deps = msvczD  command = $cxx -MMD -MF $out.d $cflags -c $in -o $out $post_cflagsz  depfile = $out.dz  deps = gcczrule cuda_compileÚ NZ*TORCH_EXTENSION_SKIP_NVCC_GEN_DEPENDENCIESÚ0Ú1z?--generate-dependencies-with-compile --dependency-output $out.dzrule cuda_compile_sm80é   z  command = $nvcc_from_env z3 $cuda_cflags -c $in -o $out $cuda_post_cflags_sm80zrule cuda_compile_sm80_sm90z8 $cuda_cflags -c $in -o $out $cuda_post_cflags_sm80_sm90zrule cuda_compile_sm100z4 $cuda_cflags -c $in -o $out $cuda_post_cflags_sm100z. $cuda_cflags -c $in -o $out $cuda_post_cflagsú_sm90.cuZcuda_compileú_sm80.cuZcuda_compile_sm80z	_sm100.cuZcuda_compile_sm100Zcuda_compile_sm80_sm90Úcompileú:z$:z$ zbuild z: zdlink.ozrule cuda_devlinkz5  command = $nvcc $in -o $out $cuda_dlink_post_cflagsz: cuda_devlink z	rule linkÚwhereÚclz
z'MSVC is required to load C++ extensionsz  command = "z)/link.exe" $in /nologo $ldflags /out:$outz%  command = $cxx $in $ldflags -o $outz: link zdefault z

c                 s   s    | ]}d   |¡V  qdS )Ú
N)Újoin)r   Úbr   r   r   Ú	<genexpr>  s   € z$_write_ninja_file.<locals>.<genexpr>r<   )Úlenr   Úappendr   r   r   r-   ÚenvironÚgetenvr   r=   r   ÚtorchÚversionÚcudaÚzipr   ÚendswithÚreplacer.   ÚdirnameÚ
subprocessÚcheck_outputÚdecoder   ÚsplitÚRuntimeErrorr   )*r.   ZcflagsZpost_cflagsZcuda_cflagsZcuda_post_cflagsZcuda_dlink_post_cflagsÚsourcesÚobjectsZldflagsZlibrary_targetZ	with_cudaÚkwargsr!   ÚcompilerÚconfigr#   Znvcc_from_envr    Zcuda_post_cflags_sm80Zcuda_post_cflags_sm80_sm90Zcuda_post_cflags_sm100Zcompile_ruleZcuda_compile_ruleZnvcc_gendepsZcuda_compile_rule_sm80Zcuda_compile_rule_sm80_sm90Zcuda_compile_rule_sm100ÚbuildZsource_fileZobject_fileZis_cuda_sourceÚruleZdevlink_outZdevlink_ruleZdevlinkZ	link_ruleZcl_pathsZcl_pathÚlinkÚdefaultÚblocksÚcontentr   r   r   Ú_write_ninja_fileS   sð   

ÿÿ

 


ÿ
ÿ
ÿ
ÿ 


ÿÿÿ





r[   c                  C   sd   t j d¡rdS t jdkr#d t ¡ d  d¡dd… ¡} d| › d	S t jd
kr*dS td t j¡ƒ‚)z?
    Returns the platform name as used in wheel filenames.
    ÚlinuxÚlinux_x86_64ÚdarwinÚ.r   Né   Úmacosx_Z_x86_64Úwin32Ú	win_amd64zUnsupported platform: {})ÚsysÚplatformÚ
startswithr=   Úmac_verrN   Ú
ValueErrorÚformat)Úmac_versionr   r   r   Úget_platform  s   
 
rk   c                 C   sJ   t j| d dgdd}| ¡ }| d¡d }t||  d¡d ƒ}||fS )	Nz	/bin/nvccz-VT)Úuniversal_newlinesÚreleaser5   ú,r   )rK   rL   rN   Úindexr   )Zcuda_dirÚ
raw_outputÚoutputZrelease_idxÚbare_metal_versionr   r   r   Úget_cuda_bare_metal_version  s
   rs   Úglobal_optionc                 C   s    t d urd S t | › d¡ d S )Nzí was requested, but nvcc was not found.  Are you sure your environment has nvcc available?  If you're installing within a container from https://hub.docker.com/r/pytorch/pytorch, only images whose names contain 'devel' will provide nvcc.)r   ÚwarningsÚwarn)rt   r   r   r   Úcheck_if_cuda_home_none$  s
   ÿrw   r2   ÚnamerX   c                 C   s   t  | |¡ ¡ dv S )N)ÚONr4   ÚYESr   ÚY)r-   rC   Úupper)rx   rX   r   r   r   Úcheck_env_flag1  s   r}   c                   C   s
   t ddƒS )am  
    Downstream projects and distributions which bootstrap their own dependencies from scratch
    and run builds in offline sandboxes
    may set `FLASH_ATTENTION_OFFLINE_BUILD` in the build environment to prevent any attempts at downloading
    pinned dependencies from the internet or at using dependencies vendored in-tree.

    Dependencies must be defined using respective search paths (cf. `syspath_var_name` in `Package`).
    Missing dependencies lead to an early abortion.
    Dependencies' compatibility is not verified.

    Note that this flag isn't tested by the CI and does not provide any guarantees.
    ZFLASH_ATTENTION_OFFLINE_BUILDr2   )r}   r   r   r   r   Úis_offline_build6  s   
r~   c                  C   sJ   t  d¡} | st  d¡pt  d¡pt  d¡pd } | stdƒ‚t j | d¡S )NZFLASH_ATTENTION_HOMEÚHOMEÚUSERPROFILEÚHOMEPATHz"Could not find user home directoryz
.flashattn)r-   rC   rO   r.   r=   )Z	user_homer   r   r   Úget_flashattn_cache_pathG  s   
"r‚   c                 C   s,   d}d|i}t j | d |¡}t jj|ddS )NzFMozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0z
User-Agenti,  )Útimeout)ÚurllibÚrequestÚRequestÚurlopen)ÚurlÚ
user_agentÚheadersr…   r   r   r   Úopen_urlP  s
   ÿr‹   c                 C   s<  t ƒ rd S tƒ }tj t¡}t ¡ }t ¡ }ddi 	||¡}dddœ}	||	| ||ƒ}
||	| ||ƒ}tj 
|d| ¡}tj 
|tjddd|¡}tj 
||¡}tj |¡ }|rntd|
› d	ƒ tjt|
ƒd
d}|j|d tjtj |¡d dd td|› d|› d	ƒ tj |¡r–tj||dd d S t ||¡ d S )NÚarm64Úaarch64r\   )ÚLinuxÚDarwinÚnvidiaÚthird_partyÚbackendzdownloading and extracting z ...zr|*)ÚfileobjÚmode)r.   r   T)Úexist_okzcopy z to )Údirs_exist_ok)r~   r‚   r-   r.   rJ   Ú__file__re   ÚsystemÚmachineÚgetr=   ÚpardirÚexistsÚprintÚtarfileÚopenr‹   Ú
extractallÚmakedirsrN   ÚisdirÚshutilÚcopytreeÚcopy)rx   Úsrc_funcÚdst_pathrE   Úurl_funcZflashattn_cache_pathÚbase_dirr˜   ÚarchÚ	supportedrˆ   Zsrc_pathZtmp_pathÚdownloadr0   r   r   r   Údownload_and_copyZ  s.   
r­   c                  C   s   t  d¡pd} d| gS )NZNVCC_THREADSÚ2z	--threads)r-   rC   )Znvcc_threadsr   r   r   Únvcc_threads_argsu  s   r¯   z12.6.85z12.8.93)r#   ÚptxasÚEXE)ÚgitÚ	submoduleÚupdatez--initz../csrc/cutlassz

torch.__version__  = {}

r_   r5   z12.3z9FlashAttention-3 is only supported on CUDA 12.3 and abovez12.8r#   c                 C   ó   d| › d|› d|› dS )Nú
cuda_nvcc-ú-z-archive/binr   ©r˜   rª   rE   r   r   r   Ú<lambda>—  r1   r¹   r"   c                 C   ó$   d| › d|› d| › d|› d|› dS ©NzDhttps://developer.download.nvidia.com/compute/cuda/redist/cuda_nvcc/r·   z/cuda_nvcc-z-archive.tar.xzr   r¸   r   r   r   r¹   š  ó   $)rx   r¦   r§   rE   r¨   r°   c                 C   rµ   )Nr¶   r·   z-archive/bin/ptxasr   r¸   r   r   r   r¹   Ÿ  r1   c                 C   rº   r»   r   r¸   r   r   r   r¹   ¢  r¼   c                 C   rµ   )Nr¶   r·   z-archive/nvvm/binr   r¸   r   r   r   r¹   §  r1   znvvm/binc                 C   rº   r»   r   r¸   r   r   r   r¹   ª  r¼   r‘   r   r’   ÚPATHr$   r,   r'   TÚcsrcZcutlassz!-DFLASHATTENTION_DISABLE_BACKWARDz -DFLASHATTENTION_DISABLE_PAGEDKVz-DFLASHATTENTION_DISABLE_SPLITz!-DFLASHATTENTION_DISABLE_APPENDKVz-DFLASHATTENTION_DISABLE_LOCALz -DFLASHATTENTION_DISABLE_SOFTCAPz -DFLASHATTENTION_DISABLE_PACKGQAz-DFLASHATTENTION_DISABLE_FP16z-DFLASHATTENTION_DISABLE_FP8z-DFLASHATTENTION_DISABLE_VARLENz -DFLASHATTENTION_DISABLE_CLUSTERz-DFLASHATTENTION_DISABLE_HDIM64z-DFLASHATTENTION_DISABLE_HDIM96z -DFLASHATTENTION_DISABLE_HDIM128z -DFLASHATTENTION_DISABLE_HDIM192z -DFLASHATTENTION_DISABLE_HDIM256z-DFLASHATTENTION_DISABLE_SM8xz!-DFLASHATTENTION_ENABLE_VCOLMAJORZbf16Zfp16Ze4m3é@   é`   é€   éÀ   é   ÚallÚdiffÚ_splitZ_pagedZ_softcapZ_softcapallZ_packgqac              
   C   s4   g | ]\}}}}}d |› d|› |› |› |› d‘qS )úinstantiations/flash_fwd_hdimÚ_r7   r   )r   ÚhdimÚdtyperN   ÚpagedÚsoftcapr   r   r   r   ì  s    "ÿr   c                 C   sF   g | ]\}}}}}}|r|s|sd |› d|› |› |› |› |› d	‘qS )rÇ   rÈ   r6   r   )r   rÉ   rÊ   rN   rË   rÌ   Zpackgqar   r   r   r   ï  s    þþ(þc                 C   ó(   g | ]\}}}d |› d|› |› d‘qS )úinstantiations/flash_bwd_hdimrÈ   r7   r   ©r   rÉ   rÊ   rÌ   r   r   r   r   ò  ó    ÿc                 C   rÍ   )rÎ   rÈ   r6   r   rÏ   r   r   r   r   ô  rÐ   zflash_api.cppzflash_fwd_combine.cuzflash_prepare_scheduler.cu)
ú-O3ú
-std=c++17z--ftemplate-backtrace-limit=0z--use_fast_mathz--resource-usagez	-lineinfoz'-DCUTE_SM90_EXTENDED_MMA_SHAPES_ENABLEDz-DCUTLASS_ENABLE_GDC_FOR_SM90z-DCUTLASS_DEBUG_TRACE_LEVEL=0z-DNDEBUGrc   z-D_USE_MATH_DEFINESz-Xcompiler=/Zc:__cplusplusÚincludez._C)rÑ   rÒ   z-DPy_LIMITED_API=0x03090000)Zcxxr#   )rx   rP   Zextra_compile_argsÚinclude_dirsÚpy_limited_apic                  C   s|   t ttƒd dƒ} t d|  ¡ tj¡}W d   ƒ n1 sw   Y  t | 	d¡¡}t
j d¡}|r:|› d|› S t|ƒS )Nz__init__.pyr   z^__version__\s*=\s*(.*)$r5   ZFLASH_ATTN_LOCAL_VERSIONú+)rŸ   r   Úthis_dirÚreÚsearchÚreadÚ	MULTILINEÚastÚliteral_evalÚgroupr-   rB   rš   Ústr)ÚfZversion_matchZpublic_versionÚlocal_versionr   r   r   Úget_package_version*  s   ÿrâ   c            
      C   sÔ   t tjjƒ} t tjƒ}| jdkrt dƒnt dƒ} dtjj› tjj› }t	ƒ }t
ƒ }| j› | j› }|j› d|j› }ttjjƒ ¡ }t› d|› d|› d|› d	|› d|› d|› d|› d
}tjd|› |d}	|	|fS )Né   z11.8z12.2Úcpr_   r·   z+curD   Zcxx11abiú.whlÚv)Ztag_nameÚ
wheel_name)r   rD   rE   rF   Ú__version__Úmajorrd   Úversion_infoÚminorrk   râ   rß   Ú_CÚ_GLIBCXX_USE_CXX11_ABIr|   ÚPACKAGE_NAMEÚBASE_WHEEL_URLri   )
Ztorch_cuda_versionZtorch_version_rawÚpython_versionZplatform_nameZpackage_versionZcuda_versionZtorch_versionZ	cxx11_abiÚwheel_filenameÚ	wheel_urlr   r   r   Úget_wheel_url5  s   
4ró   c                       s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚCachedWheelsCommandai  
    The CachedWheelsCommand plugs into the default bdist wheel, which is ran by pip when it cannot
    find an existing wheel (which is currently the case for all installs). We use
    the environment parameters to detect whether there is already a pre-built version of a compatible
    wheel available and short-circuits the standard full build pipeline.
    c                    sÐ   t rtƒ  ¡ S tƒ \}}td|ƒ zAtj ||¡ tj	 
| j¡s&t | j¡ |  ¡ \}}}| j› d|› d|› d|› }tj	 | j|d ¡}td|ƒ t ||¡ W d S  tjjyg   tdƒ tƒ  ¡  Y d S w )NzGuessing wheel URL: r·   rå   zRaw wheel pathz4Precompiled wheel not found. Building from source...)ÚFORCE_BUILDÚsuperÚrunró   r   r„   r…   Úurlretriever-   r.   rœ   Údist_dirr¡   Zget_tagZwheel_dist_namer=   r£   ÚmoveÚerrorÚ	HTTPError)Úselfrò   rñ   Zimpl_tagZabi_tagZplat_tagZarchive_basenameÚ
wheel_path©Ú	__class__r   r   r÷   T  s"   



ýzCachedWheelsCommand.run)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r÷   Ú__classcell__r   r   rÿ   r   rô   L  s    rô   )rU   r¾   rÓ   ÚtestsÚdistÚdocsZ
benchmarks)ÚexcludeZflash_attn_interfacezFlashAttention-3ztext/markdown)z#Programming Language :: Python :: 3z2License :: OSI Approved :: Apache Software LicensezOperating System :: Unix)r   Z	build_extr   z>=3.8)rD   ZeinopsÚ	packagingZninjarÕ   Zcp39)rx   rE   ÚpackagesZ
py_modulesÚdescriptionÚlong_descriptionZlong_description_content_typeZclassifiersÚext_modulesÚcmdclassZpython_requiresZinstall_requiresÚoptions)r   N)r2   )‘rd   ru   r-   ÚstatrØ   r£   rÜ   Úpathlibr   Zpackaging.versionr   r   re   Ú	sysconfigrž   Ú	itertoolsÚ
setuptoolsr   r   rK   Úurllib.requestr„   Úurllib.errorZwheel.bdist_wheelr   Z_bdist_wheelrD   Ztorch.utils.cpp_extensionr   r	   r
   r   rŸ   ÚfhrÚ   r  r.   rJ   r/   r—   r×   rî   rï   rC   rõ   ZSKIP_CUDA_BUILDZFORCE_CXX11_ABIZDISABLE_BACKWARDZDISABLE_SPLITZDISABLE_PAGEDKVZDISABLE_APPENDKVZDISABLE_LOCALZDISABLE_SOFTCAPZDISABLE_PACKGQAZDISABLE_FP16ZDISABLE_FP8ZDISABLE_VARLENZDISABLE_CLUSTERZDISABLE_HDIM64ZDISABLE_HDIM96ZDISABLE_HDIM128ZDISABLE_HDIM192ZDISABLE_HDIM256ZDISABLE_SM8xZENABLE_VCOLMAJORr   r   r   r   r   r   r   r   r   r[   ÚutilsZcpp_extensionrk   rs   rß   rw   Úboolr}   r~   r‚   r‹   r­   r¯   ZNVIDIA_TOOLCHAIN_VERSIONÚget_config_varZexe_extensionr  r  r÷   r   ri   rè   ÚintrN   ZTORCH_MAJORZTORCH_MINORrÈ   rr   rO   r©   r=   r›   Zctk_path_newZnvcc_path_newÚpathseprB   ÚchmodÚst_modeÚS_IEXECZcc_flagrA   rì   rí   ÚparentÚrepo_dirZcutlass_dirZfeature_argsZDTYPE_FWD_SM80ZDTYPE_FWD_SM90Z	DTYPE_BWDZHEAD_DIMENSIONS_BWDZHEAD_DIMENSIONS_FWDZHEAD_DIMENSIONS_FWD_SM80ZSPLITZPAGEDKVZSOFTCAPZSOFTCAP_ALLZPACKGQAÚproductZsources_fwd_sm80Zsources_fwd_sm90Zsources_bwd_sm80Zsources_bwd_sm90rP   Z
nvcc_flagsÚextendrÔ   râ   ró   rô   r   r   r   r   Ú<module>   sä  
ÿ,
ô 
7		


ûûû 



ÿþýüûúùø	÷
öõôóòñðïîÿ&ÿþýüûÿÿÿÿÿÿÿþþÿ

þÿþ
þøÿ"ÿÿÿ

Ü