Repository navigation
SIMD Support for PPC64LE #5672
|
Hello, faiss/faiss/impl/simdlib/simdlib.h Line 54 in 3f08095 Any information is appreciated. Thank you. |
Replies: 1 comment 1 reply
|
ppc64le does not have its own SIMD level in faiss. It gets a hand-tuned scalar fallback, not vectorized SIMD, and that has not changed in the current release. I checked this against faiss-cpu 1.15.1 (pip install faiss-cpu) and the matching v1.15.1 source tag.
There is no PPC64/VSX entry. // NONE specialization: always included.
// Provides simd16uint16_tpl<NONE> etc. (scalar fallback).
// On PPC64: uses PPC-optimized scalar code (hand-tuned loop unrolling).
// Elsewhere: generic scalar implementation.
#if defined(__PPC64__)
#include <faiss/impl/simdlib/simdlib_ppc64.h>
#else
#include <faiss/impl/simdlib/simdlib_emulated.h>
#endifSo on ppc64le the "NONE" level is implemented by The PR you found, #3364, confirms what it actually did: the title is "Unroll loop in lookup_2_lanes," it touches only So: the PR you found is the whole story, not a partial one. ppc64le gets the same NONE-level dispatch path as any unsupported architecture, with one function hand-unrolled for Power10, and no CMake-level SIMD source group or SIMDLevel entry exists for it. |
ppc64le does not have its own SIMD level in faiss. It gets a hand-tuned scalar fallback, not vectorized SIMD, and that has not changed in the current release.
I checked this against faiss-cpu 1.15.1 (pip install faiss-cpu) and the matching v1.15.1 source tag.
faiss/utils/simd_levels.henumerates every SIMD level the library knows about:There is no PPC64/VSX entry.
faiss/impl/simdlib/simdlib.hsays exactly why, right above the include that picks the fallback: