
    gS                         d dl Z d dlZd dlZd dlZd Zd Z ej        e          ZdZ	dZ
ej                            e
d          Ze$e                    de
 d            e            Z	n8e                    de d            e            Z	e	                    e           d	Z ed
 e	D                       Zer^	 e                    d           ddlT e                    d           dZn,# e$ r$Ze                    de           d	ZY dZ[ndZ[ww xY w ed e	D                       Zer^	 e                    d           ddlT e                    d           dZn,# e$ r$Ze                    de           d	ZY dZ[ndZ[ww xY wde	v Zer`es^	 e                    d           ddlT e                    d           dZn,# e$ r$Ze                    de           d	ZY dZ[ndZ[ww xY wde	v Zer`es^	 e                    d           ddlT e                    d           dZn,# e$ r$Ze                    de           d	ZY dZ[ndZ[ww xY wes0e                    d           ddlT e                    d           dS dS )    Nc                 @    d |                      d          D             S )Nc                 ,    g | ]}t          |          S  )int.0xs     J/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/faiss/loader.py
<listcomp>zVersion.<locals>.<listcomp>   s    )))qCFF)))    .)split)vs    r
   Versionr      s     ))AGGCLL))))r   c                     d } ddl }t          |j                  t          d          k    rddlm} d |                                D             } |             r|                    d           t          j        dd	          	                    d
          D ]}|
                    |           |S t          j                    dk    r%t          j        ddg          d         dk    rdhS n`t          j                    dk    rHddl}t!                      }d|j        j        j        j        d                             dd	          v r|                    d           d|j        j        j        j        d                             dd	          v r|                    d           d|j        j        j        j        d                             dd	          v r|                    d            |             r|                    d           t          j        dd	          	                    d
          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", ...}
    c                  L   t          j                    dk    rdS t          j                    dk    rdS dd l} t	          | j                  t	          d          k    rdS dd l} d| j        j        j	        j
        d                             dd                                          v S )	Naarch64FLinuxr   z2.0sveFeatures )platformmachinesystemnumpyr   __version__numpy.distutils.cpuinfo	distutilscpuinfocpuinfogetr   )r   s    r
   is_sve_supportedz4supported_instruction_sets.<locals>.is_sve_supported    s    **5?''55$%%775&&&&/38;??
BOOUUWWWWr   r   Nz1.19)__cpu_features__c                     h | ]	\  }}||
S r   r   )r   kr   s      r
   	<setcomp>z-supported_instruction_sets.<locals>.<setcomp>4   s!    AAA41aqAQAAAr   SVEFAISS_DISABLE_CPU_FEATURESr   z, 	
Darwinz/usr/sbin/sysctlzhw.optional.avx2_01AVX2r   avx2flagsavx512AVX512avx512_fp16
AVX512_SPR)r   r   r   numpy.core._multiarray_umathr$   itemsaddosgetenvr   discardr   r   
subprocesscheck_outputr   setr   r   r    r!   r"   )r#   r   r$   	supportedfresults         r
   supported_instruction_setsr@      sn   "X X X LLLu !!WV__44AAAAAA BA#3#9#9#;#;AAA	 	!MM%   7<<BB:NN 	! 	!Aa     H$$"$68L#MNNrRVYYY8O Z			g	%	%&&&&U_,05a8<<WbIIIIJJvu.27:>>wKKKKJJx   EO37<Q?CCGRPPPPJJ|$$$ 	JJu7<<BB:NN 	 	ANN155Lr   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              #   B   K   | ]}d |                                 v V  dS )r3   Nupperr   s     r
   	<genexpr>rE   b   s/      II1\QWWYY.IIIIIIr   z&Loading faiss with AVX512-SPR support.   )*z2Successfully loaded faiss with AVX512-SPR support.Tz7Could not load library with AVX512-SPR support due to:
c              #   B   K   | ]}d |                                 v V  dS )r1   NrC   r   s     r
   rE   rE   n   s/      AA1QWWYY&AAAAAAr   z"Loading faiss with AVX512 support.z.Successfully loaded faiss with AVX512 support.z3Could 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:
r(   zLoading faiss with SVE support.z+Successfully loaded faiss with SVE support.z0Could not load library with SVE support due to:
zLoading faiss.zSuccessfully loaded faiss.)r   r:   loggingr7   r   r@   	getLogger__name__loggerinstruction_setsopt_env_variable_nameenvironr"   	opt_leveldebugr<   r6   loadedanyhas_AVX512_SPRr!   swigfaiss_avx512_sprImportErrore
has_AVX512swigfaiss_avx512has_AVX2swigfaiss_avx2has_SVEswigfaiss_sve	swigfaissr   r   r
   <module>r_      s         				* * *? ? ?B 
	8	$	$  * JNN0$77	
LL Q)> Q Q Q R R R1133
LL<)<<<===suu###	II8HIIIII 	<===++++HIII   TqTTUUU
 SAA0@AAAAA
 	8999''''DEEE   P1PPQQQ
 %% 	F 	6777%%%%BCCC   NNNOOO
 #
#
 	6 	5666$$$$ABBB   MMMNNN
  .
KK !!!
KK,-----	. .s`   >0C/ /D4DD30E$ $F)FF0G
 
G3G..G3?0H0 0I5II