U
    yh                     @   s(   d dl Z dgZdd ZG dd dZdS )    NLinearBlockSparsePatternc                 C   s    | dkr|dkp| dko|dkS )N          )row_block_sizecol_block_sizer   r   T/var/www/html/venv/lib/python3.8/site-packages/torch/ao/nn/sparse/quantized/utils.py%_is_valid_linear_block_sparse_pattern   s    r
   c                   @   sJ   e Zd Ze ZdZdZdZdZ	dddZ
dd Zdd Zed	d
 ZdS )r   r   r   c                 C   s8   t ||sttj  tjt_tjt_|t_|t_d S N)	r
   AssertionErrorr   rlockacquirer   prev_row_block_sizer   prev_col_block_size)selfr   r   r   r   r	   __init__   s    
z!LinearBlockSparsePattern.__init__c                 C   s   d S r   r   )r   r   r   r	   	__enter__!   s    z"LinearBlockSparsePattern.__enter__c                 C   s   t jt _t jt _t j  d S r   )r   r   r   r   r   r   release)r   exc_type	exc_valueZ	backtracer   r   r	   __exit__$   s    z!LinearBlockSparsePattern.__exit__c                   C   s   t jt jfS r   )r   r   r   r   r   r   r	   
block_size)   s    z#LinearBlockSparsePattern.block_sizeN)r   r   )__name__
__module____qualname__	threadingRLockr   r   r   r   r   r   r   r   staticmethodr   r   r   r   r	   r      s   
)r   __all__r
   r   r   r   r   r	   <module>   s   
