U
    yhT                     @   sX  d dl Z d dlZd dlmZ d dlmZmZ d dlmZmZm	Z	m
Z
 dddddZG d	d
 d
eZG dd deZz6d dlmZ dZdd eeD ZdekZdekZW n ek
r   dZY nX erd$ddZn(e jdddddge e e e gdZdZG dd deZG dd deZG dd dejZG d d! d!ejZG d"d# d#ejZdS )%    N)fields)autoEnum)DictListOptionalUnioni   i   i   )XYZRc                   @   s   e Zd ZdZdZdZdZdS )ReductionHintr            N)__name__
__module____qualname__ZINNERZOUTERZ
OUTER_TINYDEFAULT r   r   O/var/www/html/venv/lib/python3.8/site-packages/torch/_inductor/runtime/hints.pyr      s   r   c                   @   s   e Zd ZdZdZdS )TileHintr   r   N)r   r   r   SQUAREr   r   r   r   r   r      s   r   )AttrsDescriptorTc                 C   s   h | ]
}|j qS r   )name).0fr   r   r   	<setcomp>$   s     r   ids_of_folded_argsdivisible_by_8Fc                 C   s,   | |d}t r||d< tr"||d< tf |S )N)divisible_by_16
equal_to_1r   r   )ids_of_folded_args_availabledivisible_by_8_availabler   )r    r!   r   r   kwargsr   r   r   instance_descriptor-   s    r%   r    r!   )defaults    c                   @   s0   e Zd Ze Ze Ze Ze Ze Ze Z	dS )HeuristicTypeN)
r   r   r   r   ZPERSISTENT_REDUCTIONZ	POINTWISEZ	REDUCTIONZ
SPLIT_SCANTEMPLATEZUSER_AUTOTUNEr   r   r   r   r(   N   s   r(   c                   @   s   e Zd ZdZejZdS )AutotuneHintr   N)r   r   r   ZELEMENTS_PER_WARP_32r   __str____repr__r   r   r   r   r*   W   s   r*   c                   @   sv   e Zd ZU dZeed< eed< eed< dZee ed< dZ	ee ed< dZ
ee ed< dZee ed	< ed
d ZdS )DevicePropertieszOCopy device properties into a data structure not requiring torch to be importedtypeindexccNmajorregs_per_multiprocessormax_threads_per_multi_processormulti_processor_countc              	   C   s   dd l }ddlm} |jjd kr&|jnd}||}|dkrj||}| ||j|||j	|j
|j|jdS | ||j||dS )Nr   )get_interface_for_devicehipcuda)r.   r/   r0   r1   r2   r3   r4   )r.   r/   r0   )torchZtorch._dynamo.device_interfacer5   versionr6   r.   Zget_device_propertiesr/   Zget_compute_capabilityr1   r2   r3   r4   )clsZdevicer8   r5   Zdevice_typeZdevice_interfacepropsr   r   r   createl   s(    
	zDeviceProperties.create)r   r   r   __doc__str__annotations__intr1   r   r2   r3   r4   classmethodr<   r   r   r   r   r-   a   s   
r-   c                   @   s>   e Zd ZU eed< eed< dZee ed< dd Zdd ZdS )	HalideInputSpecctyper   Nnumelc                 C   s   | j dkrdS | j S )Nhalf*zvoid*)rC   selfr   r   r   bindings_type   s    
zHalideInputSpec.bindings_typec                 C   s$   | j dkrdS d| j dd dS )NrE   z$halide_type_t(halide_type_float, 16)zhalide_type_of<* z>())rC   replacerF   r   r   r   halide_type   s    
zHalideInputSpec.halide_type)	r   r   r   r>   r?   rD   r   rH   rL   r   r   r   r   rB      s
   
rB   c                   @   sJ   e Zd ZU ee ed< eed< eed< eeee	ef f ed< dd Z
dS )
HalideMetaZargtypestarget	schedulerscheduler_flagsc                 C   sF   d| j  d| j g}| j D ]\}}|d| d|  q"|S )z-Command line args to pass to halide generatorztarget=zautoscheduler=zautoscheduler.=)rN   rO   rP   itemsappend)rG   argskvr   r   r   rT      s    zHalideMeta.argsN)r   r   r   r   rB   r?   r>   r   r   r@   rT   r   r   r   r   rM      s
   
rM   )NNNN)collectionstypingdataclassesr   enumr   r   r   r   r   r   ZTRITON_MAX_BLOCKr   r   Ztriton.compiler.compilerr   Zattrs_descriptor_availableZattr_desc_fieldsr"   r#   ImportErrorr%   
namedtupletupleZ_NUM_THREADS_PER_WARPr(   r*   
NamedTupler-   rB   rM   r   r   r   r   <module>   sH   
    
	
$