§
    &`ƒiË  ã                   óø   — 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 j        ¦   «         adeddfd„Zdddedefd„Zdedefd„Zdedefd„ZdS )é    N)ÚTYPE_CHECKING)ÚTensorTransportEnum)ÚCollectiveTensorTransport)ÚNixlTensorTransport)ÚTensorTransportManager)ÚNIXLÚGLOOÚNCCLÚtransport_manager_classesÚcudaÚcpuÚtransport_nameÚreturnr   c                 ó  — t           5  | t          v rt          |          cddd¦  «         S | t          vrt          d| › ¦  «        ‚t          |          | ¦  «        t          | <   t          |          cddd¦  «         S # 1 swxY w 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   s    ú|/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/experimental/gpu_object_manager/util.pyÚget_tensor_transport_managerr   '   sö   € õ 
!ð 
2ð 
2ØÕ/Ð/Ð/Ý% nÔ5ð
2ð 
2ð 
2ð 
2ñ 
2ô 
2ð 
2ð 
2ð Õ!:Ð:Ð:ÝÐWÀ~ÐWÐWÑXÔXÐXå-FÀ~Ô-VØñ.
ô .
Õ˜>Ñ*õ " .Ô1ð
2ð 
2ð 
2ð 
2ñ 
2ô 
2ð 
2ð 
2ð 
2ð 
2ð 
2ð 
2øøøð 
2ð 
2ð 
2ð 
2ð 
2ð 
2s   ˆA<«AA<Á<B ÂB Údeviceztorch.deviceÚtensor_transportc                 ó`   — |t           vrt          d|› ¦  «        ‚| j        t           |         v S )z*Check if the device matches the transport.r   )Útransport_devicesr   Útype)r   r   s     r   Údevice_match_transportr   C   s<   € ð Õ0Ð0Ð0ÝÐUÐCSÐUÐUÑVÔVÐVàŒ;Õ+Ð,<Ô=Ð=Ð=ó    c                 óŽ   — |                       ¦   «         } | t          j        j        k    r| t          vrt          d| › ¦  «        ‚| S )NzInvalid tensor transport: )Úupperr   ÚOBJECT_STOREÚnamer   r   )r   s    r   Ú'normalize_and_validate_tensor_transportr"   L   sR   € Ø'×-Ò-Ñ/Ô/Ðð 	Õ/Ô<ÔAÒAÐAØÕ$=Ð=Ð=åÐHÐ6FÐHÐHÑIÔIÐIàÐr   Úray_usage_funcc                 óž   — | t           j        j        k    r5t          |                               ¦   «         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#   s     r   Úvalidate_one_sidedr&   X   s|   € àÕ/Ô<ÔAÒAÐAÝ)Ð*:Ô;×HÒHÑJÔJð 	Bõ ð`Ð9Ið `ð `ÐP^ð `ð `ð `ñ
ô 
ð 	
ð 	BÐAÐAÐAr   )Ú	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   ú<module>r4      s®  ðØ Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð ð Ø€L€L€Lð
  Ø%Ø%ð@ð @Ð ˜4 Ð%;Ð ;Ô<ð ð ñ ð UˆOØˆGØˆHðð Ð ð Ð à(˜)œ.Ñ*Ô*Ð ð2Øð2àð2ð 2ð 2ð 2ð8> >ð >ÀSð >ÈTð >ð >ð >ð >ð	¸cð 	Àcð 	ð 	ð 	ð 	ð
¨ð 
¸cð 
ð 
ð 
ð 
ð 
ð 
r   