o
    i                     @   s   d dl mZ d dlZd dlmZmZ dejfddZdejfddZd	ejd
ejfddZ		ddeej dee
 dee
 fddZdS )    )ListN)get_compute_capabilityGPUArchitectureErrorxc                 C   s6   | j sJ t|  d|  sJ t|  dd S )Nz must be a CUDA Tensorz must be contiguous)is_cudastris_contiguous)r    r	   M/home/ubuntu/vllm_env/lib/python3.10/site-packages/flashinfer/triton/utils.pycheck_input   s   r   c                 C   s(   |  | ksJ t| d|  dd S )Nz must be a zD tensor)dimr   )dr   r	   r	   r
   	check_dim   s   (r   abc                 C   s^   |   |  ksJ dt|   D ]}| |||ks,J d|   d|  qd S )Nztensors should have same dimztensors shape mismatch,  and )r   rangesize)r   r   ir	   r	   r
   check_shape   s   r   tensorsmajorminorc                 C   s   | d j }| D ]}|j |ksJ d| d|j  q|d us"|d urLt|\}}|d ur:||vr:td| d| |d urN||vrPtd| d| d S d S d S )Nr   z2All tensors should be on the same device, but got r   zDevice major should be in z
, but got zDevice minor should be in )devicer   r   )r   r   r   r   tactual_majoractual_minorr	   r	   r
   check_device   s"   
r   )NN)typingr   torchflashinfer.utilsr   r   Tensorr   r   r   intr   r	   r	   r	   r
   <module>   s    	