o
    TiC                     @   s>  d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZm	Z	m
Z
 d dlmZ dZdZdZd	Ze d
e Ze de Ze de Ze de ZdZeeee Ze de Ze de Zd(ddZdd Zdd Zdd Zdd Zdd Zdd Z dd Z!d d! Z"d)d#d$Z#d%d& Z$e%d'kre#  dS dS )*    N   )ALL_OPS)installed_ops
torch_infoaccelerator_name)get_acceleratorz[92mz[91mz[93mz[0mz [SUCCESS] z[OKAY]z	[WARNING]z[FAIL]z[INFO]Tc              	   C   s&  d}d}g d}t d|| t|d  t|d    t d t d|| t|d  t|d    t d t d|| t|d  t|d    t d	 t rUtnt}t d
d|d  | t d|| t|d  t|d    t |d d|t|d   |d d|t|d   |d  t d|| t|d  t|d    t dt }t dt }t	 D ]C\}}d|t|  }	|
| rtn|}
t|drtt jkr|n|}dt|d |t|d   t|t   }t ||	|||
 qt d|| t|d  t|d    d S )N      )zop name	installed
compatible-r   r   z&DeepSpeed C++/CUDA extension op reportzNOTE: Ops not installed will be just-in-time (JIT) compiled at
      runtime if needed. Op compatibility means that your system
      meet the required dependencies to JIT install the op.zJIT compiled ops requires ninjaninja.      z[YES]z[NO]F)printlenninja_installedOKAYFAILGREENENDYELLOWr   itemsis_compatibler   getr   r   _name	color_len)verbosemax_dots	max_dots2hninja_statusr
   noop_namebuilderdotsr   is_installeddots2 r)   H/home/ubuntu/.local/lib/python3.10/site-packages/deepspeed/env_report.py	op_report   s:   ((((<(,,r+   c                  C   s$   zdd l } W dS  ty   Y dS w )Nr   FT)r   ImportError)r   r)   r)   r*   r   =   s   
r   c                  C   s   dd l } | jjj}|d u rt d| jjj dt S ztj|d dgdd}W n ty7   t dt  Y S w |	 }|
d	}||d
  dd	d}d|S )Nr   zF [FAIL] cannot find CUDA_HOME via torch.utils.cpp_extension.CUDA_HOME= z	/bin/nvccz-VT)universal_newlinesz [FAIL] nvcc missing releaser   , r   )torch.utils.cpp_extensionutilscpp_extension	CUDA_HOMEREDr   
subprocesscheck_outputFileNotFoundErrorsplitindexreplacejoin)torch	cuda_homeoutputoutput_splitrelease_idxr/   r)   r)   r*   nvcc_versionE   s   


rC   c                   C   s*   dt jv st jt jd rt jd S d S )NASCEND_HOME_PATH)osenvironpathexistsr)   r)   r)   r*   installed_cann_pathT   s   
rI   c            	   	      s   dd l  t } | d u rdS d}ttj| D ]J\}}}|r" |S  fdd|D }|rbtj||d }t|d}|D ]}|ddkrR|	 
d	d } nq>W d    n1 s]w   Y  q|S )
Nr   z5CANN_HOME does not exist, unable to compile NPU op(s)r1   c                    s   g | ]
}  d |r|qS )zascend_.*_install\.info)match).0filerer)   r*   
<listcomp>c   s    z*installed_cann_version.<locals>.<listcomp>rversion=)rN   rI   rE   walkrG   realpathr=   openfindstripr:   )	ascend_pathcann_versiondirpath_	filenamesinstall_filesfilepathfliner)   rM   r*   installed_cann_versionZ   s,   	rb   c                  C   s   zt d} W n ttttfy   Y dS w | j| j }t|}g }|dk rC|	dt
 dt  t  dkrC|	dt
 dt  ||fS )Nz/dev/shm)UNKNOWNNi    r-   zh [WARNING] /dev/shm size might be too small, if running in docker increase to at least --shm-size='1gb' ncclz [WARNING] see more details about NCCL requirements: https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/troubleshooting.html#sharing-data )rE   statvfsOSErrorr9   
ValueErrorAttributeErrorf_frsizef_blockshuman_readable_sizeappendr   r   r   communication_backend_name)	shm_statsshm_size
shm_hbyteswarnr)   r)   r*   get_shm_sizen   s"   rr   c                 C   s`   g d}d}| dkr&|t |d k r&| d } |d7 }| dkr&|t |d k s| dd||  S )N)BKBMBGBTBr   i   r   z.2fr-   )r   )sizeunitsir)   r)   r*   rk      s   rk   c               
   C   s  d} dt jfdt jfdtjfdtj dtj dtj fg}t  dkr[tt j	dd }|
d	t j	jfd
|fd|r;d nt fddtd  d|rOdtd  ndtd   fg n3t  dkrdd l}|
ddtd  fd|jfd|jfdt fg n|
ddtd  dfg |dt f td |D ]&\}}g }t|tr|\}}t|d| t|  | |r|D ]}t| qqd S )N!   ztorch install pathztorch versionzdeepspeed install pathzdeepspeed infoz, cudahipztorch cuda versionztorch hip versionznvcc versionzdeepspeed wheel compiled w.ztorch rQ   zhip hip_versionzcuda cuda_versionnpur   ztorch_npu install pathztorch_npu versionzascend_cann versionr-   zshared memory (/dev/shm) sizez#DeepSpeed general environment info:r   )r>   __path____version__	deepspeed__git_hash____git_branch__r   device_namegetattrrQ   extendr|   rC   r   	torch_npurb   rl   rr   r   
isinstancetupler   )r   reportr~   r   namevaluewarnsrq   r)   r)   r*   debug_report   s@   

r   c                  C   s4   t  } | jdddd | jdddd |  }|S )Nz--hide_operator_status
store_truezTSuppress display of installation and compatibility statuses of DeepSpeed operators. )actionhelpz--hide_errors_and_warningsz$Suppress warning and error messages.)argparseArgumentParseradd_argument
parse_args)parserargsr)   r)   r*   parse_arguments   s   r   Fc                 C   s   | st | d t  d S )N)r   )r+   r   hide_operator_statushide_errors_and_warningsr)   r)   r*   main   s   
r   c                  C   s   t  } t| j| jd d S )Nr   )r   r   r   r   )r   r)   r)   r*   cli_main   s   r   __main__)T)FF)&rE   r>   r   r7   r   ops.op_builder.all_opsr   git_version_infor   r   r   deepspeed.acceleratorr   r   r6   r   r   SUCCESSr   WARNINGr   INFOr   r   okaywarningr+   r   rC   rI   rb   rr   rk   r   r   r   r   __name__r)   r)   r)   r*   <module>   sD   
	"


