
    Njj                    H    d dl mZ d dlmZ d dlZd dlmZ  ee      ZddZ	y)    )annotations)	getLoggerN)versionc                   t        j                  t        j                  j	                  d      d         }|t        j                  d      k\  }| r&| dk(  r|rt        dt        j                   d      | S t        j                  j                         rd} nYt        j                  j                  j                         r/|r*t        j                  dt        j                   d	       d
} nd} nd
} t        j                  d|         | S )ar  Get the optimal device to use based on backend availability.

    For Torch versions >= 2.8.0, MPS is disabled due to known performance regressions.

    :param device: The device to use. If this is None, the device is automatically selected.
    :return: The selected device.
    :raises RuntimeError: If MPS is requested on a PyTorch version where it is disabled.
    +r   z2.8.0mpszMPS is disabled for PyTorch zh due to known performance regressions. Please use CPU or CUDA instead, or use a PyTorch version < 2.8.0.cudazMPS is available but PyTorch zt has known performance regressions. Falling back to CPU. Please use a PyTorch version < 2.8.0 to enable MPS support.cpuzAutomatically selected device: )r   parsetorch__version__splitRuntimeErrorr	   is_availablebackendsr   loggerwarninginfo)devicetorch_version
mps_brokens      h/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/model2vec/distill/utils.pyselect_optimal_devicer      s     MM%"3"3"9"9#">q"ABM'--"88JU?z.u/@/@.A BT T 
 Mzz 				(	(	*NN/0A0A/B Cc c FF
KK1&:;M    )r   z
str | Nonereturnstr)

__future__r   loggingr   r   	packagingr   __name__r   r    r   r   <module>r"      s     "   	8	%r   