a
    kh                     @   sX   d dl mZ d dlmZmZ d dlmZmZmZ d dl	m
Z
 dgZeG dd dZdS )    )	dataclass)ListAny)validate_block_shapecanonicalize_dtypeget_primitive_bitwidth)NVMMASharedLayoutTensorDescriptorc                   @   sd   e Zd ZU eed< ee ed< ee ed< ee ed< eed< dd Ze	eee edd	d
Z
dS )r	   baseshapestridesblock_shapelayoutc                 C   s   t | j}t | j|ks&J d|  t | j|ksBJ d|  |dksRJ d|dksbJ d| j d dks|J dt| j t| jj}t	|d }| jd d	 D ]}|| d dksJ d
q| jd	 dksJ dt
| jtsJ dd S )Nzrank mismatch: r   zrank must not be zero   zrank cannot be more than 5   zbase must be 16-byte aligned   zstrides must be 16-byte aligned   z!Last dimension must be contiguousz Layout must be NVMMASharedLayout)lenr   r   r   r
   Zdata_ptrr   r   Zdtyper   
isinstancer   r   )selfZrankZ	dtype_strZ
elem_bytesstride r   U/var/www/auris/lib/python3.9/site-packages/triton/experimental/gluon/nvidia/hopper.py__post_init__   s    

zTensorDescriptor.__post_init__Ztensorr   r   c                 C   s   t | | j|  ||S )N)r	   r   r   r   r   r   r   from_tensor    s    zTensorDescriptor.from_tensorN)__name__
__module____qualname__r   __annotations__r   intr   r   staticmethodr   r   r   r   r   r	   	   s   
N)Zdataclassesr   typingr   r   Ztriton._utilsr   r   r   Z+triton.experimental.gluon.language._layoutsr   __all__r	   r   r   r   r   <module>   s   