
    -`iJ                        d dl 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 d dlmZ  ee          Ze j        Ze j        Ze j        Z G d	 d
e j                  Ze j        Ze j        Ze j        Z G d d          Ze j        Z G d d          Ze G d d                      Z  G d d          Z!g dZ"dS )    N)	dataclass)Any)ReduceOp)envs)init_logger)current_platform)find_nccl_libraryc                   (    e Zd Zdej        dz  fgZdS )ncclUniqueId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/pynccl_wrapper.pyr   r   1   s"        V]S012HHHr   r   c                   |    e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZd	Zd	Zd
ZdZdZedej        defd            ZdS )ncclDataTypeEnumr                           	   
      dtypereturnc                    |t           j        k    r| j        S |t           j        k    r| j        S |t           j        k    r| j        S |t           j        k    r| j        S |t           j	        k    r| j
        S |t           j        k    r| j        S |t           j        k    r| j        S |t           j        k    r| j        S |t           j        k    r| j        S t'          d| d          )NzUnsupported dtype z^: should be one of int8, uint8, int32, int64, float16, float32, float64, bfloat16, float8e4m3.)torchint8ncclInt8uint8	ncclUint8int32	ncclInt32int64	ncclInt64float16ncclFloat16float32ncclFloat32float64ncclFloat64bfloat16ncclBfloat16float8_e4m3fnncclFloat8e4m3
ValueError)clsr$   s     r   
from_torchzncclDataTypeEnum.from_torchN   s    EJ<EK= EK= EK= EM!!?"EM!!?"EM!!?"EN""##E'''%%   
 
 	
r   N)r   r   r   r)   ncclCharr+   r-   ncclInt
ncclUint32r/   
ncclUint64r1   ncclHalfr3   	ncclFloatr5   
ncclDoubler7   r9   ncclNumTypesclassmethodr'   r$   intr<   r   r   r   r   r   ;   s        HHIIGJIJKHKIKJLNL
u{ 
s 
 
 
 [
 
 
r   r   c                   F    e Zd ZdZdZdZdZdZdZe	de
defd	            Zd
S )ncclRedOpTypeEnumr   r   r   r   r   r   opr%   c                    |t           j        k    r| j        S |t           j        k    r| j        S |t           j        k    r| j        S |t           j        k    r| j        S |t           j	        k    r| j
        S t          d|           )NzUnsupported op: )r   SUMncclSumPRODUCTncclProdMAXncclMaxMINncclMinAVGncclAvgr:   )r;   rI   s     r   r<   zncclRedOpTypeEnum.from_torcht   s    ;!!!<;;;0B00111r   N)r   r   r   rL   rN   rP   rR   rT   
ncclNumOpsrE   r   rF   r<   r   r   r   rH   rH   l   s^        GHGGGJ2H 2 2 2 2 [2 2 2r   rH   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   rW   rW      s4         
IIILLL3ir   rW   c                   V   e Zd ZU  edej        eg           ede ej        ej                  g           ede ej        e	          g           ede ej        e
          ej        e	ej        g           edeeeej        eee
eg           edeeeej        eeej        e
eg           edeeeej        ee
eg           edeeeej        eee
eg           ed	eeej        eej        e
eg           ed
eeej        eej        e
eg           edeeeej        eej        e
eg           edee
g           edeg            edeg            edee
eej         ej        e          ej        g           edee
eg          gZi Zeeef         ed<   i Zeeeeef         f         ed<   d=dedz  fdZdedefdZdeddfdZdefdZdefdZde	fdZdede	fdZ ded e	d!ede
fd"Z!d#ed$ed%ed&ed'ed(e
d)eddfd*Z"d#ed$ed%ed&ed'ed+ed(e
d)eddfd,Z#d#ed$ed%ed&ed'ed(e
d)eddfd-Z$d#ed$ed%ed&ed(e
d)eddfd.Z%d#ed%ed&ed/ed(e
d)eddfd0Z&d$ed%ed&ed1ed(e
d)eddfd2Z'd#ed$ed%ed&ed+ed(e
d)eddfd3Z(d(e
ddfd4Z)d>d5Z*d>d6Z+d(e
d7ed8ed9edef
d:Z,d(e
d;eddfd<Z-dS )?NCCLLibraryncclGetErrorStringncclGetVersionncclGetUniqueIdncclCommInitRankncclAllReduce
ncclReducencclAllGatherncclReduceScatterncclSendncclRecvncclBroadcastncclCommDestroyncclGroupStartncclGroupEndncclCommWindowRegisterncclCommWindowDeregisterpath_to_library_cachepath_to_dict_mappingNso_filec                    |pt                      }	 |t          j        vr#t          j        |          }|t          j        |<   t          j        |         | _        nA# t          $ r4}t          	                    d|t          j
                               |d }~ww xY w|t          j        vri }t          j        D ]}	 t          | j        |j                  }|j        |_        |j        |_        |||j        <   @# t           $ rM |j        dv rBt"          j        r!t                              d|j        |           t)          j                    rY  w xY w|t          j        |<   t          j        |         | _        d S )NaI  Failed to load NCCL library from %s. It is expected if you are not running on NVIDIA/AMD GPUs.Otherwise, the nccl library might not exist, be corrupted or it does not support the current platform %s. If you already have the library, please set the environment variable VLLM_NCCL_SO_PATH to point to the correct nccl library path.)rn   ro   zThe symbol %s is not found in the NCCL library %s. To enable VLLM_USE_NCCL_SYMM_MEM  please update your NCCL version to >= 2.27.03.)r	   r_   rq   r   CDLLrp   lib	Exceptionloggererrorplatformexported_functionsgetattrrX   rY   rZ   AttributeErrorr   VLLM_USE_NCCL_SYMM_MEMwarning_oncer   is_rocm_funcs)selfrr   ru   er   funcfs          r   __init__zNCCLLibrary.__init__;  s   0.00	k>>>k'**=@1':"8ADHH 	 	 	LL> !##
 
 
 G	 +:::%'F#6  $)44A $AI!%AJ()F49%%%   y %    6 "//!+ !%	 '   ,355 % %H%& 9?K,W5!6w?s+   AA 
B%/BB;<C88AEEresultr%   c                 T     | j         d         |                              d          S )Nr`   zutf-8)r   decode)r   r   s     r   r`   zNCCLLibrary.ncclGetErrorStringo  s(    0t{/088??HHHr   c                 `    |dk    r'|                      |          }t          d|           d S )Nr   zNCCL error: )r`   RuntimeError)r   r   	error_strs      r   
NCCL_CHECKzNCCLLibrary.NCCL_CHECKr  s<    Q;;//77I9i99::: ;r   c                     t          j                    }|                      | j        d         t          j        |                               |j        S )Nra   )r   c_intr   r   byrefvalue)r   versions     r   ncclGetRawVersionzNCCLLibrary.ncclGetRawVersionw  sD    ,..5$45fl76K6KLLMMM}r   c                    t          |                                           }|d                             d          }|dd                             d          }|dd                              d          }| d| d| S )Nr   0r   r   .)r[   r   lstrip)r   version_strmajorminorpatchs        r   ra   zNCCLLibrary.ncclGetVersion}  s    $002233A%%c**AaC '',,ABB&&s++))%))%)))r   c                     t                      }|                      | j        d         t          j        |                               |S )Nrb   )r   r   r   r   r   )r   	unique_ids     r   rb   zNCCLLibrary.ncclGetUniqueId  s@     NN	6$56v|I7N7NOOPPPr   datac                     t          |          dk    r t          dt          |           d          t                      }t          j        t          j        |j                  |d           |S )Nr   z)Expected 128 bytes for ncclUniqueId, got z bytes)lenr:   r   r   memmove	addressofr   )r   r   r   s      r   unique_id_from_bytesz NCCLLibrary.unique_id_from_bytes  sl    t99MCIIMMM   !NN	v'	(:;;T3GGGr   
world_sizer   rankc                     t                      }|                      | j        d         t          j        |          |||                     |S )Nrc   )
ncclComm_tr   r   r   r   )r   r   r   r   comms        r   rc   zNCCLLibrary.ncclCommInitRank  sT     ||+DK*+T""J	4 	
 	
 	

 r   sendbuffrecvbuffcountdatatyperI   r   streamc                 d    |                       | j        d         |||||||                     d S )Nrd   r   r   r   r   r   r   r   rI   r   r   s           r   rd   zNCCLLibrary.ncclAllReduce  sI     	(DK((E8Rv 	
 	
 	
 	
 	
r   rootc	                 f    |                       | j        d         ||||||||                     d S )Nre   r   )	r   r   r   r   r   rI   r   r   r   s	            r   re   zNCCLLibrary.ncclReduce  sK      	%DK%(E8RtV 	
 	
 	
 	
 	
r   c                 d    |                       | j        d         |||||||                     d S )Nrg   r   r   s           r   rg   zNCCLLibrary.ncclReduceScatter  sJ     	,DK+,(E8Rv 	
 	
 	
 	
 	
r   c           
      b    |                       | j        d         ||||||                     d S )Nrf   r   )r   r   r   r   r   r   r   s          r   rf   zNCCLLibrary.ncclAllGather  sG     	(DK((E8T6 	
 	
 	
 	
 	
r   destc           
      b    |                       | j        d         ||||||                     d S )Nrh   r   )r   r   r   r   r   r   r   s          r   rh   zNCCLLibrary.ncclSend  sB     	#DK
#HeXtT6RR	
 	
 	
 	
 	
r   srcc           
      b    |                       | j        d         ||||||                     d S )Nri   r   )r   r   r   r   r   r   r   s          r   ri   zNCCLLibrary.ncclRecv  sB     	#DK
#HeXsD&QQ	
 	
 	
 	
 	
r   c                 d    |                       | j        d         |||||||                     d S )Nrj   r   )r   r   r   r   r   r   r   r   s           r   rj   zNCCLLibrary.ncclBroadcast  sI     	(DK((E8T4 	
 	
 	
 	
 	
r   c                 X    |                       | j        d         |                     d S )Nrk   r   )r   r   s     r   rk   zNCCLLibrary.ncclCommDestroy  s-    6$56t<<=====r   c                 V    |                       | j        d                                d S )Nrl   r   r   s    r   rl   zNCCLLibrary.ncclGroupStart  s+    5$457788888r   c                 V    |                       | j        d                                d S )Nrm   r   r   s    r   rm   zNCCLLibrary.ncclGroupEnd!  s*    3N35566666r   buffsize	win_flagsc           
          t                      }|                      | j        d         |||t          j        |          |                     |S )Nrn   )ncclWindow_tr   r   r   r   )r   r   r   r   r   windows         r   rn   z"NCCLLibrary.ncclCommWindowRegister$  sV     1DK01dD&,v"6"6	 	
 	
 	

 r   r   c                 Z    |                       | j        d         ||                     d S )Nro   r   )r   r   r   s      r   ro   z$NCCLLibrary.ncclCommWindowDeregister/  s/    ?$>?fMMNNNNNr   )N)r%   N).r   r   r   rW   r   c_char_pncclResult_tPOINTERr   r   r   buffer_typec_size_tncclDataType_tncclRedOp_tcudaStream_tr   rz   rp   dictr[   r   r\   rq   r   r`   r   rF   r   ra   rb   bytesr   rc   rd   re   rg   rf   rh   ri   rj   rk   rl   rm   rn   ro   r   r   r   r_   r_      sS         	%vGG!<.&.2N2N1OPP"L>6>,3O3O2PQQ
 	V^J''|V\R	
 	
 		
 	
& 			
 	
( 		
 	
$ 		
 	
  		
 	
 		
 	
  		
 	
$ 	"L:,??!<44r22 	$|,,
	
 
	
 	+\J;UVVKfT -/4S>... 79$sDcN238882@ 2@d
 2@ 2@ 2@ 2@hI I# I I I I; ;$ ; ; ; ;
3    * * * * *    
 <    		*6	>A			 	 	 	

 
 	

 
 
 
 
 

 
 
 
*

 
 	

 
 
 
 
 
 

 
 
 
,

 
 	

 
 
 
 
 

 
 
 
*

 
 	

 
 
 
 

 
 
 
&

 
 	

 
 
 
 

 
 
 


 
 	

 
 
 
 

 
 
 


 
 	

 
 
 
 
 

 
 
 
 >J >4 > > > >9 9 9 97 7 7 7		&1	9<	IL			 	 	 	OZ O ORV O O O O O Or   r_   )r_   r   rH   r   r   r   r   )#r   ry   dataclassesr   typingr   r'   torch.distributedr   vllmr   vllm.loggerr   vllm.platformsr   vllm.utils.ncclr	   r   rw   r   r   c_void_pr   r   	Structurer   r   r   r   r   r   rH   rW   r_   __all__r   r   r   <module>r      s  2   ! ! ! ! ! !        & & & & & &       # # # # # # + + + + + + - - - - - -	X		 |_
3 3 3 3 36# 3 3 3 o+
 +
 +
 +
 +
 +
 +
 +
\ l2 2 2 2 2 2 2 2.        fO fO fO fO fO fO fO fOR  r   