o
    
Û¾i{  ã                   @  s\   d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	 e	e
ƒZddd„Zdd	d
„ZdS )é    )ÚannotationsN)Úinit_loggerÚreturnÚstrc                  C  sV   t j} | rt d| ¡ | S tjjdurd} ntjjdurd} ntdƒ‚t 	d| ¡ | S )z|Return NCCL/RCCL shared library name to load.

    Uses `VLLM_NCCL_SO_PATH` if set; otherwise chooses by torch backend.
    z9Found nccl from environment variable VLLM_NCCL_SO_PATH=%sNzlibnccl.so.2zlibrccl.so.1z*NCCL only supports CUDA and ROCm backends.zFound nccl from library %s)
ÚenvsÚVLLM_NCCL_SO_PATHÚloggerÚinfoÚtorchÚversionÚcudaÚhipÚ
ValueErrorÚ
debug_once)Úso_file© r   úC/home/ubuntu/.local/lib/python3.10/site-packages/vllm/utils/nccl.pyÚfind_nccl_library   s   ÿùr   úlist[str] | Nonec            
   
   C  sî   g } t j}|rtj |¡r|  |¡ z.tj d¡}|r?t	|ddƒ }r?|D ]}tj 
|d¡}tj tj 
|d¡¡r>|  |¡ q%W n tyX } zt d|¡ W Y d}~nd}~ww tƒ }g }| D ]}	|	rr|	|vrr| |	¡ | |	¡ q`|pvdS )zƒReturn possible include paths containing `nccl.h`.

    Considers `VLLM_NCCL_INCLUDE_PATH` and the `nvidia-nccl-cuXX` package.
    znvidia.ncclÚsubmodule_search_locationsNÚincludeznccl.hz=Failed to find nccl include path from nvidia.nccl package: %s)r   ÚVLLM_NCCL_INCLUDE_PATHÚosÚpathÚisdirÚappendÚ	importlibÚutilÚ	find_specÚgetattrÚjoinÚexistsÚ	Exceptionr   ÚdebugÚsetÚadd)
ÚpathsÚincÚspecÚlocsÚlocÚinc_dirÚeÚseenÚoutÚpr   r   r   Úfind_nccl_include_paths&   s0   

€€ÿ

€r0   )r   r   )r   r   )Ú
__future__r   Úimportlib.utilr   r   r
   Ú	vllm.envsr   Úvllm.loggerr   Ú__name__r   r   r0   r   r   r   r   Ú<module>   s   
