o
    Di                     @   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   sB  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suJ dqk| jd	 dksJ 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 alignedzshape must be positive   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	shape_dim r!   h/var/www/addictedbytheproject.nl/epg/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
    