faiss/tests
vorj 4eeaa42b93 Add sve targets (#2886)
Summary:
related: https://github.com/facebookresearch/faiss/issues/2884

This PR contains below changes:

- Add new optlevel `sve`
    - ARM SVE is _extension_ of ARMv8, so it should be treated similar to AVX2 IMO
- Add targets for ARM SVE, `faiss_sve` and `swigfaiss_sve`
    - These targets will be built when you give `-DFAISS_OPT_LEVEL=sve` at build time
    - Design decision: Don't fix SVE register length.
        - The python package of faiss is "fat binary" (for example, the package for avx2 contains `_swigfaiss_avx2.so` and `_swigfaiss.so`)
        - SVE is scalable instruction set (= doesn't fix vector length), but actually we can specify the vector length at compile time.
            - [with `-msve-vector-length=` option](https://developer.arm.com/documentation/101726/4-0/Coding-for-Scalable-Vector-Extension--SVE-/SVE-Vector-Length-Specific--VLS--programming)
            - When this option is specified, the binary can't work correctly on the CPU which has other vector length rather than specified at compile time
        - When we use fixed vector length, SVE-supported faiss python package will contain 7 shared libraries like `_swigfaiss.so` , `_swigfaiss_sve.so` , `_swigfaiss_sve128.so` , `_swigfaiss_sve256.so` , `_swigfaiss_sve512.so` , `_swigfaiss_sve1024.so` , and `_swigfaiss_sve2048.so` . The package size will be exploded.
        - For these reason, I don't specify the vector length at compile time and `faiss_sve` detects the vector length at run time.
- Add a mechanism of detecting ARM SVE on runtime environment and importing `swigfaiss_sve` dynamically
    - Currently it only supports Linux, but there is no SVE environment with non-Linux OS now, as far as I know

NOTE: I plan to make one more PR about add some SVE implementation after this PR merged. This PR only contains adding sve target.

Pull Request resolved: https://github.com/facebookresearch/faiss/pull/2886

Reviewed By: ramilbakhshyiev

Differential Revision: D60386983

Pulled By: mengdilin

fbshipit-source-id: 7e66162ee53ce88fbfb6636e7bf705b44e6c3282
2024-07-29 15:05:17 -07:00
..
CMakeLists.txt Add sve targets (#2886) 2024-07-29 15:05:17 -07:00
common_faiss_tests.py
test_RCQ_cropping.cpp
test_approx_topk.cpp
test_autotune.py
test_binary_factory.py
test_binary_flat.cpp
test_binary_hashindex.py
test_binary_io.py
test_build_blocks.py
test_callback.cpp
test_callback_py.py
test_clone.py
test_clustering.py
test_code_distance.cpp
test_common_ivf_empty_index.cpp
test_contrib.py
test_contrib_with_scipy.py
test_cppcontrib_sa_decode.cpp
test_cppcontrib_uintreader.cpp
test_dealloc_invlists.cpp
test_disable_pq_sdc_tables.cpp
test_distances_simd.cpp
test_documentation.py
test_doxygen_documentation.py
test_extra_distances.py
test_factory.py First attempt at LSH matching with nbits (#3679) 2024-07-24 10:28:51 -07:00
test_fast_scan.py
test_fast_scan_ivf.py
test_fastscan_perf.cpp
test_graph_based.py Fix radius search with HSNW and IP (#3698) 2024-07-29 09:52:52 -07:00
test_heap.cpp
test_hnsw.cpp
test_index.py
test_index_accuracy.py Add SQ8bit signed quantization (#3501) 2024-06-24 05:11:53 -07:00
test_index_binary.py
test_index_binary_from_float.py
test_index_composite.py
test_io.py
test_ivf_index.cpp Adding missing includes which are necessary for building (#3609) 2024-07-03 10:58:40 -07:00
test_ivflib.py
test_ivfpq_codec.cpp
test_ivfpq_indexing.cpp
test_local_search_quantizer.py
test_lowlevel_ivf.cpp
test_mem_leak.cpp
test_merge.cpp
test_merge_index.py
test_meta_index.py
test_omp_threads.cpp
test_omp_threads_py.py
test_ondisk_ivf.cpp
test_oom_exception.py
test_pairs_decoding.cpp
test_params_override.cpp
test_partition.py
test_partitioning.cpp
test_pq_encoding.cpp
test_product_quantizer.py
test_referenced_objects.py
test_refine.py
test_residual_quantizer.py
test_rowwise_minmax.py
test_search_params.py
test_simdlib.cpp
test_sliding_ivf.cpp
test_standalone_codec.py Add search functionality to FlatCodes (#3611) 2024-07-11 02:40:38 -07:00
test_threaded_index.cpp
test_transfer_invlists.cpp
test_util.h
test_utils.cpp 1720 - expose FAISS version field to c_api (#3635) 2024-07-22 16:01:35 -07:00
torch_test_contrib.py
torch_test_neural_net.py QINCo implementation in CPU Faiss (#3608) 2024-07-11 02:40:38 -07:00