
    sg                         d dl Z d dlZ e j                  d      defd       Z e j                  d      defd       Z e j                  d      d        Z e j                  d      d        Zd Zd Z	y)	    Nreturnc                  J    	 ddl m}  | d uS # t        $ r Y yt        $ r Y yw xY w)Nr   
triton_keyF)triton.compiler.compilerr   ImportErrorRuntimeErrorr   s    F/var/www/html/venv/lib/python3.12/site-packages/torch/utils/_triton.pyhas_triton_packager      s2    7%%  s   	 	"""c                  Z    ddl m d } d }| |dfd} |       xr
 t               S )Nr   )get_interface_for_devicec                 P    | j                   j                         j                  dk\  S )N   )Workerget_device_propertiesmajordevice_interfaces    r
   cuda_extra_checkz$has_triton.<locals>.cuda_extra_check   s"    &&<<>DDII    c                      y)NT r   s    r
   _return_truez has_triton.<locals>._return_true   s    r   )cudaxpuc                  |    j                         D ](  \  } } |       }|j                         s ||      s( y y)NTF)itemsis_available)deviceextra_checkr   r   triton_supported_devicess      r
    is_device_compatible_with_tritonz4has_triton.<locals>.is_device_compatible_with_triton   sG    #;#A#A#C 	FK7?,,.;?O3P	 r   )torch._dynamo.device_interfacer   r   )r   r   r"   r   r!   s      @@r
   
has_tritonr$      s7    GJ )9N ,-F2D2FFr   c                  ^    ddl m}  ddlm} |j                  j                         } | |      S )Nr   )make_backend)driver)r   r&   triton.runtime.driverr'   activeget_current_target)r&   r'   targets      r
   triton_backendr,   (   s%    5,]]--/Fr   c                      ddl m}  t               } |         d|j                          }t	        j
                  |j                  d            j                         j                         S )Nr   r   -zutf-8)	r   r   r,   hashhashlibsha256encode	hexdigestupper)r   backendkeys      r
   triton_hash_with_backendr7   1   sR    3G\N!GLLN+
,C >>#**W-.88:@@BBr   c                     | j                   j                  d      rd| j                   dd  z   }d|z   S | j                   j                  d      rd| j                   dd  z   }d|z   S | j                   }d|z   S )Nfpfloat   bfbfloatztriton.language.)name
startswith)dtypesuffixs     r
   dtype_to_stringrB   <   s    zzT"5::ab>)
 &&	 
		t	$EJJqrN* && &&r   c                  D    dd l } d | j                  j                  _        y )Nr   c                     t        |       S )N)rB   )selfs    r
   <lambda>z)patch_triton_dtype_repr.<locals>.<lambda>M   s    /$2G r   )tritonlanguager@   __repr__)rG   s    r
   patch_triton_dtype_reprrJ   F   s     &HFOO"r   )
	functoolsr0   	lru_cacheboolr   r$   r,   r7   rB   rJ   r   r   r
   <module>rN      s      TD   TGD G G* T    TC C'Hr   