o
    ܹi                     @   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                   @   sj   e Zd ZU eed< ee ed< ee ed< ee ed< dZeed< dd Z	e
dd	edee fd
dZdS )TensorDescriptorbaseshapestridesblock_shapezeropaddingc                 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t| j}|jdvrH| j d dksHJ dt| j | jj	j
}| jd d	 D ]}|| d dksgJ d
qY| jd	 dkssJ 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)
FakeTensorFunctionalTensor   zbase must be 16-byte alignedzstrides must be 16-byte aligned   z!Last dimension must be contiguousr   nanzIllegal value for paddingzAPadding option `nan` is only supported for floating point tensors)lenr   r	   r
   typer   __name__data_ptrr   dtypeitemsizer   is_floating_point)selfrankty
elem_bytesstride r    [/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/triton/tools/tensor_descriptor.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)r   )r   
__module____qualname__r   __annotations__r   intr   strr"   staticmethodr$   r    r    r    r!   r      s   
 r   N)dataclassesr   typingr   r   triton._utilsr   r   r    r    r    r!   <module>   s
    