a
    kh	                     @   s>   d dl mZ d dlmZmZ d dlmZ eG dd dZdS )    )	dataclass)ListAny)validate_block_shapec                   @   sZ   e Zd ZU eed< ee ed< ee ed< ee ed< dd Zeeee ddd	Z	d
S )TensorDescriptorbaseshapestridesblock_shapec                 C   s   t | j}t | j|ks&J d|  t | j|ksBJ d|  |dksRJ d|dksbJ dt| j}|j d|j }|dvr| j d dksJ d	t	| j | jj
j}| jd d
 D ]}|| d dksJ dq| jd
 dksJ dd S )Nzrank mismatch: r   zrank must not be zero   zrank cannot be more than 5.)ztorch.FakeTensorztorch.FunctionalTensor   zbase must be 16-byte alignedzstrides must be 16-byte aligned   z!Last dimension must be contiguous)lenr   r	   r
   typer   
__module____name__Zdata_ptrr   Zdtypeitemsize)selfZrankty	type_nameZ
elem_bytesstride r   L/var/www/auris/lib/python3.9/site-packages/triton/tools/tensor_descriptor.py__post_init__   s    



zTensorDescriptor.__post_init__Ztensorr
   c                 C   s   t | | j|  |S )N)r   r   r   r   r   r   r   from_tensor   s    zTensorDescriptor.from_tensorN)
r   r   __qualname__r   __annotations__r   intr   staticmethodr   r   r   r   r   r      s   
r   N)Zdataclassesr   typingr   r   Ztriton._utilsr   r   r   r   r   r   <module>   s   