o
    CiN	                  
   @   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e v Z
e
rSze	d ddlT e	d	 W n eyR Z ze	d
e dZ
W Y dZ[ndZ[ww e
see	d ddlT e	d dS dS )    )LooseVersionNc                  C   s   ddl } t| jdkr-ddlm} dd | D }tddd	D ]}|	| q#|S t
 d
krDtddgd dkrAdhS t S t
 dkr_ddl} d| jjjjd ddv r_dh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", ...}
    >>> 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   d/var/www/html/fyndo/python/python_agents/rag_suite/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)numpyr   __version__numpy.core._multiarray_umathr   itemsosgetenvsplitdiscardplatformsystem
subprocesscheck_outputnumpy.distutils.cpuinfo	distutilscpuinfocpuinfogetset)r   r   	supportedfr   r   r   supported_instruction_sets   s    r(   r   z Loading faiss with AVX2 support.   )*z,Successfully loaded faiss with AVX2 support.z1Could not load library with AVX2 support due to:
FzLoading faiss.zSuccessfully loaded faiss.)distutils.versionr   r   r   loggingr   r(   	getLogger__name__loggerhas_AVX2r#   swigfaiss_avx2ImportErrore	swigfaissr   r   r   r   <module>   s.   
$


