o
    ^i%                     @   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                   @   sv   e Zd ZU eed< ee ed< ee ed< ee ed< eed< dZe	ed< dd	 Z
edd
edee defddZdS )r	   baseshapestridesblock_shapelayoutzeropaddingc                 C   s4  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| jdks| jdksJ d| jdkr| jjjsJ dd S 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 NVMMASharedLayoutr   nanzIllegal value for paddingzAPadding option `nan` is only supported for floating point tensors)lenr   r   r   r
   data_ptrr   r   dtyper   
isinstancer   r   r   is_floating_point)selfrank	dtype_str
elem_bytesstride r!   b/var/www/html/RAG/RAG_venv/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!   r"   from_tensor$   s   zTensorDescriptor.from_tensorN)r   )__name__
__module____qualname__r   __annotations__r   intr   r   strr#   staticmethodr%   r!   r!   r!   r"   r	   	   s   
 "N)dataclassesr   typingr   r   triton._utilsr   r   r   +triton.experimental.gluon.language._layoutsr   __all__r	   r!   r!   r!   r"   <module>   s    