
    -`i;                         d Z ddlZddlmZ ddlmZ ddlZddlmZ ddl	m
Z
 ddlmZ ddlmZ  e
e          Zej        Zej        Z G d d	ej                  Ze G d
 d                      Z G d d          ZdS )zThis file is a pure Python wrapper for the cudart library.
It avoids the need to compile a separate shared library, and is
convenient for use when we just need to call a few functions.
    N)	dataclass)Any)init_logger)current_platform)find_loaded_libraryc                   (    e Zd Zdej        dz  fgZdS )cudaIpcMemHandle_tinternal   N)__name__
__module____qualname__ctypesc_byte_fields_     /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/distributed/device_communicators/cuda_wrapper.pyr	   r	      s"        V]S012HHHr   r	   c                   :    e Zd ZU eed<   eed<   ee         ed<   dS )FunctionnamerestypeargtypesN)r   r   r   str__annotations__r   listr   r   r   r   r   "   s4         
IIILLL3ir   r   c                   v   e Zd ZU  edeej        g           edeg            edeg            edej        eg           ede ej        ej	                  ej
        g           edeej	        g           edeej	        ej        ej
        g           edeej	        ej	        ej
        eg           ed	e ej        e          ej	        g           ed
e ej        ej	                  eej        g          g
Zddddddddddd
Zi Zeeef         ed<   i Zeeeeef         f         ed<   d1dedz  fdZdeddfdZdedefdZd eddfd!Zd2d"Zd2d#Zd$edej	        fd%Zd&ej	        ddfd'Zd&ej	        d(ed)eddfd*Zd+ej	        d,ej	        d)eddfd-Z d&ej	        defd.Z!d/edej	        fd0Z"dS )3CudaRTLibrarycudaSetDevicecudaDeviceSynchronizecudaDeviceResetcudaGetErrorString
cudaMalloccudaFree
cudaMemset
cudaMemcpycudaIpcGetMemHandlecudaIpcOpenMemHandlehipSetDevicehipDeviceSynchronizehipDeviceResethipGetErrorString	hipMallochipFree	hipMemset	hipMemcpyhipIpcGetMemHandlehipIpcOpenMemHandle)
r   r    r!   r"   r#   r$   r%   r&   r'   r(   path_to_library_cachepath_to_dict_mappingNso_filec                 d   |:t          d          }|t          d          }|t          j        }|
J d            |t          j        vr#t          j        |          }|t          j        |<   t          j        |         | _        |t          j        vri }t          j	        D ]h}t          | j        t          j                    rt          j        |j                 n|j                  }|j        |_        |j        |_        |||j        <   i|t          j        |<   t          j        |         | _        d S )N	libcudartlibamdhip64zOlibcudart is not loaded in the current process, try setting VLLM_CUDART_SO_PATH)r   envsVLLM_CUDART_SO_PATHr   r3   r   CDLLlibr4   exported_functionsgetattrr   is_rocmcuda_to_hip_mappingr   r   r   funcs)selfr5   r<   _funcsfuncfs         r   __init__zCudaRTLibrary.__init__i   s*   ?)+66G-m<< ?"6G&&2 '&& -===+g&&C;>M/8 6w?-<<<F%8 	& 	&H'/11#M5di@@	  !L	!]
$%ty!!:@M.w7"7@


r   resultreturnc                 `    |dk    r'|                      |          }t          d|           d S )Nr   zCUDART error: )r"   RuntimeError)rB   rG   	error_strs      r   CUDART_CHECKzCudaRTLibrary.CUDART_CHECK   s<    Q;;//77I;	;;<<< ;r   errorc                 T     | j         d         |                              d          S )Nr"   zutf-8)rA   decode)rB   rM   s     r   r"   z CudaRTLibrary.cudaGetErrorString   s(    /tz./66==gFFFr   devicec                 X    |                       | j        d         |                     d S )Nr   rL   rA   )rB   rP   s     r   r   zCudaRTLibrary.cudaSetDevice   s.    5$*_5f==>>>>>r   c                 V    |                       | j        d                                d S )Nr    rR   rB   s    r   r    z#CudaRTLibrary.cudaDeviceSynchronize   s-    =$*%<=??@@@@@r   c                 V    |                       | j        d                                d S )Nr!   rR   rT   s    r   r!   zCudaRTLibrary.cudaDeviceReset   s-    7$*%6799:::::r   sizec                     t          j                    }|                      | j        d         t          j        |          |                     |S )Nr#   r   c_void_prL   rA   byref)rB   rV   devPtrs      r   r#   zCudaRTLibrary.cudaMalloc   sF    ""2$*\26<3G3GNNOOOr   r[   c                 X    |                       | j        d         |                     d S )Nr$   rR   )rB   r[   s     r   r$   zCudaRTLibrary.cudaFree   s.    0$*Z08899999r   valuecountc                 \    |                       | j        d         |||                     d S )Nr%   rR   )rB   r[   r]   r^   s       r   r%   zCudaRTLibrary.cudaMemset   s2    2$*\265%HHIIIIIr   dstsrcc                 f    d}|}|                       | j        d         ||||                     d S )N   r&   rR   )rB   r`   ra   r^   cudaMemcpyDefaultkinds         r   r&   zCudaRTLibrary.cudaMemcpy   sA      2$*\23UDIIJJJJJr   c                     t                      }|                      | j        d         t          j        |          |                     |S )Nr'   )r	   rL   rA   r   rZ   )rB   r[   handles      r   r'   z!CudaRTLibrary.cudaIpcGetMemHandle   sM    #%%-DJ,-fl6.B.BFKK	
 	
 	
 r   rg   c                     d}t          j                    }|                      | j        d         t          j        |          ||                     |S )N   r(   rX   )rB   rg   cudaIpcMemLazyEnablePeerAccessr[   s       r   r(   z"CudaRTLibrary.cudaIpcOpenMemHandle   s]    )*&"".DJ-.V$$f.L 	
 	
 	

 r   )N)rH   N)#r   r   r   r   cudaError_tr   c_intc_char_pPOINTERrY   c_size_tcudaMemcpyKindr	   c_uintr=   r@   r3   dictr   r   r   r4   rF   rL   r"   intr   r    r!   r#   r$   r%   r&   r'   r(   r   r   r   r   r   )   s         	+~>>(+r::"K44%vFFV^FO,,fo>	
 	
 	[6?*;<<+v'W	
 	
 	_fovO	
 	
 	!V^.//A	
 	
 	"V^FO,,.@&-P	
 	
E'V (!7+1!!!3 5  -/4S>... 79$sDcN23888!A !Ad
 !A !A !A !AF=; =4 = = = =
G G G G G G?C ?D ? ? ? ?A A A A; ; ; ;s v    
:v :4 : : : :J J JS JT J J J JK?K)/KADK	K K K K&/ >P    += &/      r   r   )__doc__r   dataclassesr   typingr   torch	vllm.envsr9   vllm.loggerr   vllm.platformsr   vllm.utils.system_utilsr   r   loggerrl   rk   rp   	Structurer	   r   r   r   r   r   <module>r~      sM   
  ! ! ! ! ! !              # # # # # # + + + + + + 7 7 7 7 7 7	X		 l3 3 3 3 3) 3 3 3        U U U U U U U U U Ur   