o
    bi                     @   sf   d dl mZ d dlmZmZ d dlZd dlmZ d dlm	Z	 er)d dl
m  mZ G dd de	ZdS )    contextmanager)ListUnionN)HPU_PACKAGE_AVAILABLE)TorchDeviceManagerc                   @   sr   e Zd ZdZedd Zde fddZdee	j
 fddZd	ee	j
eed
f fddZdefddZdd Zd
S )HPUTorchDeviceManagerzHPU device managerc                  C   s   t rdd l} dd l} d S d S )Nr   )r   habana_frameworks.torch.core(habana_frameworks.torch.distributed.hccl)habana_frameworks r   X/home/ubuntu/.local/lib/python3.10/site-packages/ray/air/_internal/device_manager/hpu.py"register_custom_torch_dist_backend   s   z8HPUTorchDeviceManager.register_custom_torch_dist_backendreturnc                 C   s   t sdS t S )NF)r   	torch_hpuis_availableselfr   r   r   r      s   z"HPUTorchDeviceManager.is_availablec                 C   s   |   stdtdgS )Nz;Using HPUTorchDeviceManager but torch hpu is not available.hpu)r   RuntimeErrortorchdevicer   r   r   r   get_devices   s
   z!HPUTorchDeviceManager.get_devicesr   Nc                 C   s   t | d S N)r   
set_device)r   r   r   r   r   r   $   s   z HPUTorchDeviceManager.set_devicec                 C   s   dS )z3Validate if the device type support create a streamFr   r   r   r   r   supports_stream'   s   z%HPUTorchDeviceManager.supports_streamc                 C   s   t dd }| S )z-Get HPU stream context manager, empty so far.c                   s   s    d V  d S r   r   r   r   r   r   default_context_manager.   s   
zIHPUTorchDeviceManager.get_stream_context.<locals>.default_context_managerr   )r   streamr   r   r   r   get_stream_context+   s   
z(HPUTorchDeviceManager.get_stream_context)__name__
__module____qualname____doc__staticmethodr   boolr   r   r   r   r   r   intstrr   r   r   r   r   r   r   r      s    
r   )
contextlibr   typingr   r   r   ray._private.accelerators.hpur   5ray.air._internal.device_manager.torch_device_managerr   habana_frameworks.torch.hpur   r   r   r   r   r   r   <module>   s    