o
    h                     @   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                   @   sh   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	dedee def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s!J d|  |dks)J d|dks1J d| j d dks>J dt| j t| jj}t	|d }| jd d	 D ]}|| d dksdJ d
qV| jd	 dkspJ dt
| jtszJ 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   m/home/www/facesmatcher.com/frenv_anti/lib/python3.10/site-packages/triton/experimental/gluon/nvidia/hopper.py__post_init__   s   

zTensorDescriptor.__post_init__tensorc                 C   s   t | | j|  ||S )N)r	   r   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)dataclassesr   typingr   r   Ztriton._utilsr   r   r   Z+triton.experimental.gluon.language._layoutsr   __all__r	   r   r   r   r   <module>   s    