U
    <c}                     @   s  U d dl Z d dlmZmZmZ d dlmZ e eZ	edZ
G dd dee
 ZedZded	< ed
Zded< edZded< edZded< edZded< edZded< edZded< edZded< edZded< edZded< eegdf dddd Zeegdf ddd!d"Zeeegdf ddd#d$Zeeegdf ddd%d&Zeegdf ddd'd(Zeegdf ddd)d*Zeegdf ddd+d,Zeg df ddd-d.Zeegdf ddd/d0Z eegdf ddd1d2Z!dS )3    N)CallableGenericList)	ParamSpecPc                   @   sH   e Zd ZedddZeedf ddddZejej	ddd	d
Z
dS )CallbackRegistry)namec                 C   s   || _ g | _d S N)r   callback_list)selfr    r   ;/tmp/pip-unpacked-wheel-gikjz4vx/torch/utils/_cuda_trace.py__init__   s    zCallbackRegistry.__init__Ncbreturnc                 C   s   | j | d S r	   )r
   append)r   r   r   r   r   add_callback   s    zCallbackRegistry.add_callback)argskwargsr   c                 O   sV   | j D ]J}z||| W q tk
rN } ztd| j d W 5 d }~X Y qX qd S )NzException in callback for z registered with CUDA trace)r
   	Exceptionlogger	exceptionr   )r   r   r   r   er   r   r   fire_callbacks   s    
zCallbackRegistry.fire_callbacks)__name__
__module____qualname__strr   r   r   r   r   r   r   r   r   r   r   r   
   s   r   zCUDA event creationzCallbackRegistry[int]CUDAEventCreationCallbackszCUDA event deletionCUDAEventDeletionCallbackszCUDA event recordzCallbackRegistry[int, int]CUDAEventRecordCallbackszCUDA event waitCUDAEventWaitCallbackszCUDA memory allocationCUDAMemoryAllocationCallbackszCUDA memory deallocationCUDAMemoryDeallocationCallbackszCUDA stream creationCUDAStreamCreationCallbackszCUDA device synchronizationzCallbackRegistry[[]]"CUDADeviceSynchronizationCallbackszCUDA stream synchronization"CUDAStreamSynchronizationCallbackszCUDA event synchronization!CUDAEventSynchronizationCallbacksr   c                 C   s   t |  d S r	   )r   r   r   r   r   r   )register_callback_for_cuda_event_creation<   s    r*   c                 C   s   t |  d S r	   )r    r   r)   r   r   r   )register_callback_for_cuda_event_deletion@   s    r+   c                 C   s   t |  d S r	   )r!   r   r)   r   r   r   'register_callback_for_cuda_event_recordD   s    r,   c                 C   s   t |  d S r	   )r"   r   r)   r   r   r   %register_callback_for_cuda_event_waitH   s    r-   c                 C   s   t |  d S r	   )r#   r   r)   r   r   r   ,register_callback_for_cuda_memory_allocationL   s    r.   c                 C   s   t |  d S r	   )r$   r   r)   r   r   r   .register_callback_for_cuda_memory_deallocationP   s    r/   c                 C   s   t |  d S r	   )r%   r   r)   r   r   r   *register_callback_for_cuda_stream_creationT   s    r0   c                 C   s   t |  d S r	   )r&   r   r)   r   r   r   1register_callback_for_cuda_device_synchronizationX   s    r1   c                 C   s   t |  d S r	   )r'   r   r)   r   r   r   1register_callback_for_cuda_stream_synchronization\   s    r2   c                 C   s   t |  d S r	   )r(   r   r)   r   r   r   0register_callback_for_cuda_event_synchronizationb   s    r3   )"loggingtypingr   r   r   Ztyping_extensionsr   	getLoggerr   r   r   r   r   __annotations__r    r!   r"   r#   r$   r%   r&   r'   r(   intr*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r   r   r   <module>   s`    
