o
    2wi1                     @   s   d dl Z d dlmZ d dlmZ d dlZe jddG dd dZdee	e
e
f  fd	d
Zeddee	e
e
f  fddZdee fddZdee fddZdS )    N)	lru_cache)OptionalT)frozenc                   @   sH   e Zd ZU eeef ed< eed< eeef ed< edefddZ	dS )	CUDASpecshighest_compute_capabilitycuda_version_stringcuda_version_tuplereturnc                 C   s   t jjp| jdkS )N)      )torchversionhipr   )self r   T/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/bitsandbytes/cuda_specs.pyhas_imma   s   zCUDASpecs.has_immaN)
__name__
__module____qualname__tupleint__annotations__strpropertyboolr   r   r   r   r   r      s   
 r   r	   c                   C   s   t dd ttj D S )Nc                 s   s$    | ]}t jt j|V  qd S )N)r   cudaget_device_capabilitydevice).0ir   r   r   	<genexpr>   s   " z+get_compute_capabilities.<locals>.<genexpr>)sortedranger   r   device_countr   r   r   r   get_compute_capabilities   s   r%   c               
   C   sz   z/t jjr
t jj} nt jjrt jj} nW dS | d}t|dkr-ttt|dd W S W dS  t	t
tfy<   Y dS w )z2Get CUDA/HIP version as a tuple of (major, minor).N.   )r   r   r   r   splitlenr   mapr   AttributeError
ValueError
IndexError)version_strpartsr   r   r   get_cuda_version_tuple   s   


r0   c                  C   s(   t  } | du r	dS | \}}|d |  S )z!Get CUDA/HIP version as a string.N
   )r0   )version_tuplemajorminorr   r   r   get_cuda_version_string*   s
   r5   c                  C   sp   t j sdS z&t } | sW dS t }|du rW dS t }|du r$W dS t| d ||dW S  ty7   Y dS w )zGet CUDA/HIP specifications.N)r   r   r   )r   r   is_availabler%   r0   r5   r   	Exception)compute_capabilitiesr2   version_stringr   r   r   get_cuda_specs3   s(   
r;   )dataclasses	functoolsr   typingr   r   	dataclassr   listr   r   r%   r0   r   r5   r;   r   r   r   r   <module>   s    

	