o
    $i                     @   s   U d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 er)d dlZeeedaeee
f ed< d	d
gd
gd	gdZi ae  adeddfddZdddedefddZdedefddZdedefddZdS )    N)TYPE_CHECKING)TensorTransportEnum)CollectiveTensorTransport)NixlTensorTransport)TensorTransportManager)NIXLGLOONCCLtransport_manager_classescudacputransport_namereturnr   c                 C   st   t . | tv rt|  W  d   S | tvrtd|  t|  | t| < t|  W  d   S 1 s3w   Y  dS )a  Get the tensor transport manager for the given tensor transport protocol.

    Args:
        transport_name: The tensor transport protocol to use for the GPU object.

    Returns:
        TensorTransportManager: The tensor transport manager for the given tensor transport protocol.
    N'Unsupported tensor transport protocol: )transport_managers_locktransport_managersr
   
ValueError)r    r   e/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/ray/experimental/gpu_object_manager/util.pyget_tensor_transport_manager'   s   $r   deviceztorch.devicetensor_transportc                 C   s$   |t vrtd| | jt | v S )z*Check if the device matches the transport.r   )transport_devicesr   type)r   r   r   r   r   device_match_transportC   s   r   c                 C   s.   |   } | tjjkr| tvrtd|  | S )NzInvalid tensor transport: )upperr   OBJECT_STOREnamer
   r   )r   r   r   r   'normalize_and_validate_tensor_transportL   s
   r   ray_usage_funcc                 C   s6   | t jjkrt|   std|  d| dd S d S )Nz*Trying to use two-sided tensor transport: z for zS. This is only supported for one-sided transports such as NIXL or the OBJECT_STORE.)r   r   r   r
   is_one_sidedr   )r   r   r   r   r   validate_one_sidedX   s   
r!   )	threadingtypingr   ray._private.custom_typesr   ?ray.experimental.gpu_object_manager.collective_tensor_transportr   9ray.experimental.gpu_object_manager.nixl_tensor_transportr   <ray.experimental.gpu_object_manager.tensor_transport_managerr   torchr
   dictstr__annotations__r   r   Lockr   r   boolr   r   r!   r   r   r   r   <module>   s4   
 
	