o
    &j!                     @   s>   d dl Z G dd deZe ZG dd dZG dd dZdS )    Nc                   @   s$   e Zd Zg dZdd Zdd ZdS )TC_Allowlist)Zh884Zs884Zh1688Zs1688ZhmmaZi8816Z16816Zdgrad_1x1_stride_2x2Zfirst_layer_wgrad_kernelZconv1x1Zconv2d_c1_k1Zdirect_groupZxmma_implicit_gemmZxmma_sparse_convZ#xmma_warp_specialized_implicit_gemmZ	xmma_gemmZxmma_sparse_gemmZc1688c                 C   s   d S N selfr   r   q/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/visualdl/component/profiler/parser/kernel_parser.py__init__   s   zTC_Allowlist.__init__c                 C   s   | j D ]	}||v r dS qdS )NTF)	allowlist)r   itempatternr   r   r   __contains__   s
   
zTC_Allowlist.__contains__N)__name__
__module____qualname__r	   r   r   r   r   r   r   r      s    r   c                   @   s0   e Zd Zdd Zedd Zdd Zdd Zd	S )

DeviceItemc                 C   sD   || _ d| _d| _d| _td| _|tv rdnd| _d| _d| _	d S )Nr   infTF        )
namecallgpu_timemax_gpu_timefloatmin_gpu_time_allow_listtensorcore_usedsum_blocks_per_smsum_occupancy)r   r   r   r   r   r   +   s   

zDeviceItem.__init__c                 C   s   | j | j S r   )r   r   r   r   r   r   avg_gpu_time5   s   zDeviceItem.avg_gpu_timec                 C   s2   || j kr|| _ || jk r|| _|  j|7  _d S r   )r   r   r   )r   timer   r   r   add_gpu_time9   s
   

zDeviceItem.add_gpu_timec                 C   sD   |  j d7  _ | |j|j  |  j|j7  _|  j|j7  _d S )N   )r   r   end_nsstart_nsr   blocks_per_smr   	occupancy)r   noder   r   r   add_item@   s   zDeviceItem.add_itemN)r   r   r   r   propertyr   r   r&   r   r   r   r   r   *   s    

r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )KernelParserc                 C   s0   i | _ tt| _t | _d| _d| _d| _	d S )Nr   )
kernel_itemscollectionsdefaultdictdict$kernel_items_with_op_name_attributessetgpu_idsr$   sm_efficiencytensor_core_ratior   r   r   r   r   H   s   
zKernelParser.__init__c              	   C   s  d}d}d}|  D ]\}}|D ]}|jdkr|j}|jD ]<}	|	jdkrY|	jD ]1}
|
jD ]+}|jdkrW| ||}|| j|j vrLt|j| j|j |< | j|j | 	| q,q'q|jD ]1}
|
jD ]+}|jdkr| ||}|| j|j vrt|j| j|j |< | j|j | 	| qbq]n|jdkrq|j}|jD ]1}
|
jD ]+}|jdkr| ||}|| j|j vrt|j| j|j |< | j|j | 	| qqqq
|  D ]d\}}|D ]]}|jD ]W}
|
jD ]Q}|jdkr5|j}|| j
vrt|| j
|< | j
| 	| ||jd |j|j  7 }|jdkrd}n|j}|||j|j  7 }||j|j 7 }| j|j qqqq|dkrB|| nd| _|| _d}d}| j
  D ]\}}|jr^||j7 }||j7 }qQ|dkrq|| | _d S d| _d S )Nr   OperatorZOperatorInnerZKerneld   r    r   )itemstyper   Zchildren_noderuntime_nodedevice_node'_translate_op_name_attributes_to_stringr-   r   r&   r)   r$   r!   r"   r#   r/   addZ	device_idr0   r   r   r1   )r   Z	nodelistsZtotal_durationZweighted_occupancyZweighted_sm_efficiencyZthreadidnodesr%   op_namechildrenr6   r7   Zop_attribute_namer   r0   
total_timeZtotal_tensorcore_timer   r   r   parseQ   s  












5






"zKernelParser.parsec                 C   s.   d ||j|j|j|j|j|j|j|j	}|S )Nz{}-[{},{},{}]-[{},{},{}]-{}-{})	formatZgrid_xZgrid_yZgrid_zZblock_xZblock_yZblock_zZregisters_per_threadZshared_memory)r   r;   eventresultr   r   r   r8      s   z4KernelParser._translate_op_name_attributes_to_stringN)r   r   r   r   r>   r8   r   r   r   r   r(   G   s    	Yr(   )r*   r,   r   r   r   r(   r   r   r   r   <module>   s
   