* Add support to use selected GPUs by id
One can pass parameter gpus to index_cpu_to_gpus_list to use only selected GPU's, i.e. if we pass gpus=[1, 3, 4], we will use 1-st, 3-rd and 4-th graphical cards
* merge functions to avoid code duplication
* use first gpus if none passed
The -mf16c (i.e. packed-half conversion instructions) weren't added until the
Ivy Bridge CPU generation (https://en.wikipedia.org/wiki/F16C#CPUs_with_F16C).
Therefore, code dependent on those intrinsics must be conditioned on __F16C__ -
not __AVX__.
* Pass compilation in current state
* Fix formatting and add missing parts
* Define DistanceComputer
* Add documentation to name changed on DistanceComputer::operator()()
* Apply suggestions from code review
Changes in docs
Co-Authored-By: Eduardo Pinho <enet4mikeenet@gmail.com>
* Updated MetricType
* [c_api] use all relevant flags in compilation
* [c_api] Remove redundant IndexIVFFlat declarations
- From IndexIVF_c.h, already declared in IndexIVFFlat_c.h
* [c_api] type changes
- replace `long` with a more suitable type
- provide definitions for `faiss_component_t` and `faiss_distance_t`
* [c_api] Define CFLAGS and CUDACFLAGS
Bugfixes:
- slow scanning of inverted lists (#836).
Features:
- add basic support for 6 new metrics in CPU `IndexFlat` and `IndexHNSW` (#848);
- add support for `IndexIDMap`/`IndexIDMap2` with binary indexes (#780).
Misc:
- throw python exception for OOM (#758);
- make `DistanceComputer` available for all random access indexes;
- gradually moving from `long` to `int64_t` for portability.
* [c_api] Update impl and interface for v1.5
- move IndexShards to dedicated module IndexShards_c.{h|cpp}
- remove getter/setters to unreachable fields
- reimplement faiss_IndexIVF_imbalance_factor (to use invlists)
- minor IndexIVF documentation tweaks
- Remove QueryResult, provide RangeQueryResult
* [c_api] Document FaissErrorCode
* [c_api] Update GPU impl and interface for v1.5
- Remove unavailable method setTempMemoryFraction
* [c_api] Relicense to MIT
In accordance to the rest of the project