Skip to content

fix: RVV Similarity classes missing simdwidth causes compilation failure on riscv64 #1587

@CLiqing

Description

@CLiqing

Description

Compiling knowhere on riscv64 (SG2044 server) fails with:

ScalarQuantizerCodec.h:744:36: error: 'simdwidth' is not a member of 'faiss::SimilarityL2_rvv<0>'
  744 |     constexpr int SIMDWIDTH = Sim::simdwidth;

Root Cause

Commit 55c18bb ("Add fallback and uts for sq4u #1421") added a QT_4bit_uniform case in select_distance_computer_rvv that falls back to the base select_distance_computer. The base function requires Sim::simdwidth, but SimilarityL2_rvv<0> and SimilarityIP_rvv<0> only define metric_type, missing the simdwidth member.

Steps to Reproduce

Build knowhere on riscv64, or cross-compile with riscv64-linux-gnu-g++:

riscv64-linux-gnu-g++-12 -std=c++17 -c ScalarQuantizerDC_rvv.cpp

Expected Behavior

Compilation succeeds on riscv64.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions