
    ~Uh6                         d dl mZmZ d dlZd dlZd dlmZ d dlZd dlm	Z	 d dl
mZ d dlmZ dZh dZd	Z ej"                  e      Zd
edee   fdZdededefdZdeeef   fdZdee   fdZdeddfdZddZy)    )IterableIteratorN)Path)get_cuda_bnb_library_path)	CUDASpecs)print_dedented)CONDA_PREFIXLD_LIBRARY_PATH>   _PWDHOMEMAILPATHTMUXSHELLOLDPWDSSH_TTYLESSOPEN	LESSCLOSESSH_AUTH_SOCKXDG_DATA_DIRSXDG_RUNTIME_DIRXDG_GREETER_DATA_DIRDBUS_SESSION_BUS_ADDRESSGOOGLE_VM_CONFIG_LOCK_FILE)zcudart64*.dllzlibcudart*.so*znvcuda*.dllpaths_list_candidatereturnc              #     K   | j                  t        j                        D ]  }|st        j                  |vr	 t	        |      }	 |j                         st        j                  d|        O	 t        D ]-  }|j                  |      D ]  }|j                         s|  /  y # t        $ r Y Dw xY w# t        t        f$ r Y w xY ww)Nz?The directory listed in your path is found to be non-existent: )splitospathsepsepr   existsloggerwarningOSErrorCUDA_RUNTIME_LIB_PATTERNSglobis_filePermissionError)r   
dir_stringdirlib_patternpths        o/var/www/catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/bitsandbytes/diagnostics/cuda.py find_cuda_libraries_in_path_listr0   +   s     *00< 
66#	z"Czz|NN%dehdi#jk $
  9 "88K0 "C{{}!	""   ) 		sX   9CB:(B+0C1.B: B:(C+	B74B:6B77B::C	CCCenv_varvaluec                 r    | t         v xs. t        j                  |v xr | t        vxr d| vxr
 d| vxr d|vS )NCONDA	BASH_FUNC
)CUDART_PATH_PREFERRED_ENVVARSr    r"   CUDART_PATH_IGNORED_ENVVARSr1   r2   s     r/   is_relevant_candidate_env_varr:   A   sY    00 	
FFeO "::"w&" 7*" E!	    c                      t         j                  j                         D  ci c]  \  } }t        | |      s| | c}} S c c}} w )N)r    environitemsr:   r9   s     r/   ,get_potentially_lib_path_containing_env_varsr?   N   s7    131A1A1Cu~wGdelnsGtGUNuuus
   A A c               #      K   t               } t        D ]0  }|| v s| |   }t        |      E d{    | j                  |       2 | j	                         D ]  \  }}t        |      E d{     y7 C7 	w)a  
    Searches for a cuda installations, in the following order of priority:
        1. active conda env
        2. LD_LIBRARY_PATH
        3. any other env vars, while ignoring those that
            - are known to be unrelated
            - don't contain the path separator `/`

    If multiple libraries are found in part 3, we optimistically try one,
    while giving a warning message.
    N)r?   r7   r0   popr>   )candidate_env_varsenvvar	directoryr1   r2   s        r/   find_cudart_librariesrE   R   s      FG/ +''*62I7	BBB""6*	+ -224 ;3E:::; C 	;s&   A6A6A2;A6*A4+A64A6
cuda_specsc                     t        d| j                   d| j                   d       t        |       }|j	                         st        d| d       | j                  st        d       y y )Nz%PyTorch settings found: CUDA_VERSION=z, Highest Compute Capability: .z 
            Library not found: z8. Maybe you need to compile it from source?
            a  
            WARNING: Compute capability < 7.5 detected! Only slow 8-bit matmul is supported for your GPU!
            If you run into issues with 8-bit matmul, you can try 4-bit quantization:
            https://huggingface.co/blog/4bit-transformers-bitsandbytes
            )printcuda_version_stringhighest_compute_capabilityr   r#   r   has_imma)rF   binary_paths     r/   print_cuda_diagnosticsrN   j   s    	
/
0N0N/O P''1'L'L&MQ	P
 ,J7K  +} -	
 	
 r;   c                      t        t                     } | st        d       y t        |       dkD  r=t	        dt
        j                  j                   d       | D ]  }t        d|         y y )NzLCUDA SETUP: WARNING! CUDA runtime files not found in any environmental path.   z
            Found duplicate CUDA runtime files (see below).

            We select the PyTorch default CUDA runtime, which is a]  ,
            but this might mismatch with the CUDA version that is needed for bitsandbytes.
            To override this behavior set the `BNB_CUDA_VERSION=<version string, e.g. 122>` environmental variable.

            For example, if you want to use the CUDA version 122,
                BNB_CUDA_VERSION=122 python ...

            OR set the environmental variable in your .bashrc:
                export BNB_CUDA_VERSION=122

            In the case of a manual override, make sure you set LD_LIBRARY_PATH, e.g.
            export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.2,
            z* Found CUDA runtime at: )listrE   rI   lenr   torchversioncuda)cudart_pathsr.   s     r/   print_cuda_runtime_diagnosticsrW      s|    -/0L\]	\	Q	B CH--BTBTAU V	
$   	5C-cU34	5' 
r;   )r   N)collections.abcr   r   loggingr    pathlibr   rS   bitsandbytes.cextensionr   bitsandbytes.cuda_specsr   bitsandbytes.diagnostics.utilsr   r7   r8   r'   	getLogger__name__r$   strr0   boolr:   dictr?   rE   rN   rW    r;   r/   <module>rd      s    .  	   = - 9 C  (  
		8	$3 8D> ,
3 
s 
t 
vd38n v;x~ ;0
y 
T 
25r;   