o
    Ti1                  
   @   s   d dl Z zd dlmZ W n ey  Z zdZW Y dZ[ndZ[ww zd dlmZ W n ey= Z zdZW Y dZ[ndZ[ww zd dl	mZ
 W n eyZ Z zdZ
W Y dZ[ndZ[ww g dZdadd Zdd Zd	d
 Zdd ZdS )    N)logger)DeepSpeedAccelerator)	cudacpuxpuxpu.externalnpumpshpumlusdaac                 C   s>   t d ur	t| t std urt| tst| jj dd S d S )Nz4 accelerator is not subclass of DeepSpeedAccelerator)dsa1
isinstancedsa2AssertionError	__class____name__	accel_obj r   Z/home/ubuntu/.local/lib/python3.10/site-packages/deepspeed/accelerator/real_accelerator.py_validate_accelerator   s   $r   c                   C   s   t   tv S )N)get_acceleratordevice_nameSUPPORTED_ACCELERATOR_LISTr   r   r   r    is_current_accelerator_supported/   s   r   c               
   C   s  t d urt S d } d }dtj v rtjd } | dkr:zdd l}|j s(J dW n ty9 } ztdd }~ww | dkrUzdd l	}W n tyT } ztdd }~ww | dkrZn| d	krvzdd l
}W n tyt } ztd
d }~ww n| dkrzdd l}W n ty } ztdd }~ww ng| dkrzdd l}|j  W nW ttfy } ztdd }~ww | dkrzdd l}W n: ty } ztdd }~ww | dkrzdd l}	W n ty } ztdd }~ww | tvrtdt d|  dd}| d u rtz
ddl	m}
 d} W n ty } zW Y d }~nd }~ww | d u rEzdd l}|j r0d} W n tyD } zW Y d }~nd }~ww | d u rz&dd l}t|drn|j dkrm|j dkrm|j rmd} n	 W n ty } zW Y d }~nd }~ww | d u rzdd l
}d	} W n ty } zW Y d }~nd }~ww | d u rzdd l}d} W n ty } zW Y d }~nd }~ww | d u rzdd l}|j  d} W n ttfy } zW Y d }~nd }~ww | d u rzdd l}d} W n ty } zW Y d }~nd }~ww | d u r0zdd l}	d} W n ty/ } zW Y d }~nd }~ww | d u razdd l}|j dkrJ|j rJd} W n ttfy` } zW Y d }~nd }~ww | d u rrtd urptd d} d}| dkrddlm} | a nq| dkrddlm} | a nb| dkr|
 a nY| dkrddl m}
 |
 a nJ| d	krddl!m"} | a n;| dkrddl#m$} | a n,| dkrdd l%m&} | a n| dkrdd!l'm(} | a n| dkrdd"l)m*} | a t+t  td ur
t,d#t j- d$| d% t S )&NDS_ACCELERATORr   r   zJXPU_Accelerator requires an intel_extension_for_pytorch that supports XPU.z\XPU_Accelerator requires intel_extension_for_pytorch, which is not installed on this system.r   zgXPU_Accelerator external requires intel_extension_for_deepspeed, which is not installed on this system.r   r   zJNPU_Accelerator requires torch_npu, which is not installed on this system.r   zLSDAA_Accelerator requires torch_sdaa, which is not installed on this system.r	   zJMPS_Accelerator requires torch.mps, which is not installed on this system.r
   z\HPU_Accelerator requires habana_frameworks.torch.hpu, which is not installed on this system.r   zJMLU_Accelerator requires torch_mlu, which is not installed on this system.zDS_ACCELERATOR must be one of z	. Value "z" is not supportedoverride)XPU_Acceleratorr   z^Setting accelerator to CPU. If you have GPU or other accelerator, we were unable to detect it.zauto detect   )CUDA_Accelerator)CPU_Accelerator)NPU_Accelerator)SDAA_Accelerator)MPS_Accelerator)HPU_Accelerator)MLU_AcceleratorSetting ds_accelerator to z ()).ds_acceleratorosenvironkeysintel_extension_for_pytorch_C_has_xpuImportError
ValueErrorintel_extension_for_deepspeed	torch_npu
torch_sdaa	torch.mpsr	   current_allocated_memoryRuntimeErrorhabana_frameworks.torch.hpu	torch_mlur   r   torchhasattrr   device_countr   is_availableaccel_loggerwarningcuda_acceleratorr    cpu_acceleratorr!   xpu_acceleratornpu_acceleratorr"   sdaa_acceleratorr#   mps_acceleratorr$   hpu_acceleratorr%   mlu_acceleratorr&   r   info_name)accelerator_nameds_set_methodipexer2   r3   r4   r:   habana_frameworksr9   r   r    r!   r"   r#   r$   r%   r&   r   r   r   r   3   s  
























r   c                 C   s,   t |  td urtd| j d | ad S )Nr'   z (model specified))r   r>   rH   rI   r)   r   r   r   r   set_accelerator  s   rO   )r*   deepspeed.utilsr   r>   r0   rM    accelerator.abstract_acceleratorr   r   *deepspeed.accelerator.abstract_acceleratorr   r   r)   r   r   r   rO   r   r   r   r   <module>   s6    P