o
    rh                  
   @   s  d dl mZ d dlZd dlZd dlZd dlZdd ZeeZ	dZ
dZejedZedu r;e	de d e Z
ne	de d	 e Z
e
e d
Zedd e
D Zerze	d ddlT e	d dZW n ey Z ze	de d
ZW Y dZ[ndZ[ww de
v Zeresze	d ddlT e	d dZW n ey Z ze	de d
ZW Y dZ[ndZ[ww ese	d ddlT e	d dS dS )    )VersionNc                  C   s   ddl } t| jtdkr/ddlm} dd | D }tddd	D ]}|	| q%|S t
 d
krFtddgd dkrCdhS t S t
 dkr{ddl} t }d| jjjjd ddv rf|d d| jjjjd ddv ry|d |S t S )a  
    Returns the set of supported CPU features, see
    https://github.com/numpy/numpy/blob/master/numpy/core/src/common/npy_cpu_features.h
    for the list of features that this set may contain per architecture.

    Example:
    >>> supported_instruction_sets()  # for x86
    {"SSE2", "AVX2", "AVX512", ...}
    >>> supported_instruction_sets()  # for PPC
    {"VSX", "VSX2", ...}
    >>> supported_instruction_sets()  # for ARM
    {"NEON", "ASIMD", ...}
    r   Nz1.19)__cpu_features__c                 S   s   h | ]\}}|r|qS  r   ).0kvr   r   J/var/www/html/alpaca_bot/venv/lib/python3.10/site-packages/faiss/loader.py	<setcomp>!   s    z-supported_instruction_sets.<locals>.<setcomp>FAISS_DISABLE_CPU_FEATURES z, 	
Darwinz/usr/sbin/sysctlzhw.optional.avx2_01AVX2Linuxavx2flagsavx512AVX512)numpyr   __version__numpy.core._multiarray_umathr   itemsosgetenvsplitdiscardplatformsystem
subprocesscheck_outputnumpy.distutils.cpuinfoset	distutilscpuinfocpuinfogetadd)r   r   	supportedfresultr   r   r   supported_instruction_sets   s(   	

r,   FAISS_OPT_LEVELzEnvironment variable zK is not set, so let's pick the instruction set according to the current CPUzUsing z as an instruction set.Fc                 c   s    | ]	}d |  v V  qdS )r   N)upper)r   xr   r   r   	<genexpr>G   s    r0   z"Loading faiss with AVX512 support.   )*z.Successfully loaded faiss with AVX512 support.Tz3Could not load library with AVX512 support due to:
r   z Loading faiss with AVX2 support.z,Successfully loaded faiss with AVX2 support.z1Could not load library with AVX2 support due to:
zLoading faiss.zSuccessfully loaded faiss.)packaging.versionr   r   r   loggingr   r,   	getLogger__name__loggerinstruction_setsopt_env_variable_nameenvironr'   	opt_leveldebugr"   r(   loadedany
has_AVX512r&   swigfaiss_avx512ImportErrorehas_AVX2swigfaiss_avx2	swigfaissr   r   r   r   <module>   s\   
(





