facebookresearch / faiss

A library for efficient similarity search and clustering of dense vectors.
https://faiss.ai
MIT License
31.58k stars 3.65k forks source link

Incompatibility with Ubuntu 18.08 #3972

Closed carlosgellidaInt closed 1 week ago

carlosgellidaInt commented 1 month ago

Summary

I cannot compile it with ubuntu18 because incompatibility with Google Benchmark

I have the following error during make

ing_rcq_search.cpp.o [ 76%] Building CXX object perf_tests/CMakeFiles/bench_scalar_quantizer_accuracy.dir/bench_scalar_quantizer_accuracy.cpp.o [ 76%] Building CXX object tests/CMakeFiles/faiss_test.dir/test_merge.cpp.o [ 76%] Building CXX object perf_tests/CMakeFiles/bench_scalar_quantizer_decode.dir/bench_scalar_quantizer_decode.cpp.o In file included from /home/carlos/Documents/Faiss/faiss/perf_tests/bench_scalar_quantizer_accuracy.cpp:13:0: /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h: In instantiation of ‘benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...)::<lambda(benchmark::State&)> [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}]’: /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1499:48: required from ‘struct benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(class benchmark::State&)>’ /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1498:38: required from ‘benchmark::internal::Benchmark benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]’ /home/carlos/Documents/Faiss/faiss/perf_tests/bench_scalar_quantizer_accuracy.cpp:82:18: required from here /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1499:41: error: variable ‘fn’ has function type name, [=](benchmark::State& st) { fn(st, args...); }); ^~ /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1499:41: error: variable ‘fn’ has function type /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h: In instantiation of ‘struct benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(class benchmark::State&)>’: /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1498:38: required from ‘benchmark::internal::Benchmark benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]’ /home/carlos/Documents/Faiss/faiss/perf_tests/bench_scalar_quantizer_accuracy.cpp:82:18: required from here /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1499:41: error: field ‘benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(benchmark::State&)>::’ invalidly declared function type In file included from /home/carlos/Documents/Faiss/faiss/perf_tests/bench_no_multithreading_rcq_search.cpp:10:0: /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h: In instantiation of ‘benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...)::<lambda(benchmark::State&)> [with Lambda = void (&)(benchmark::State&, int, int, float); Args = {int&, int&, float&}]’: /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1499:48: required from ‘struct benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, int, int, float); Args = {int&, int&, float&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(class benchmark::State&)>’ /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1498:38: required from ‘benchmark::internal::Benchmark benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, int, int, float); Args = {int&, int&, float&}; std::cxx11::string = std::cxx11::basic_string]’ /home/carlos/Documents/Faiss/faiss/perf_tests/bench_no_multithreading_rcq_search.cpp:61:68: required from here /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1499:41: error: variable ‘fn’ has function type name, [=](benchmark::State& st) { fn(st, args...); }); ^~ /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1499:41: error: variable ‘fn’ has function type /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h: In instantiation of ‘struct benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, int, int, float); Args = {int&, int&, float&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(class benchmark::State&)>’: /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1498:38: required from ‘benchmark::internal::Benchmark benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, int, int, float); Args = {int&, int&, float&}; std::cxx11::string = std::cxx11::basic_string]’ /home/carlos/Documents/Faiss/faiss/perf_tests/bench_no_multithreading_rcq_search.cpp:61:68: required from here /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1499:41: error: field ‘benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, int, int, float); Args = {int&, int&, float&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(benchmark::State&)>::’ invalidly declared function type /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1483:22: error: ‘benchmark::internal::Benchmark benchmark::RegisterBenchmark(const string&, Lambda&&) [with Lambda = benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(benchmark::State&)>; std::cxx11::string = std::cxx11::basic_string]’, declared using local type ‘benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(benchmark::State&)>’, is used but never defined [-fpermissive] internal::Benchmark RegisterBenchmark(const std::string& name, Lambda&& fn) { ^~~~~ perf_tests/CMakeFiles/bench_scalar_quantizer_accuracy.dir/build.make:78: recipe for target 'perf_tests/CMakeFiles/bench_scalar_quantizer_accuracy.dir/bench_scalar_quantizer_accuracy.cpp.o' failed make[2]: [perf_tests/CMakeFiles/bench_scalar_quantizer_accuracy.dir/bench_scalar_quantizer_accuracy.cpp.o] Error 1 CMakeFiles/Makefile2:2048: recipe for target 'perf_tests/CMakeFiles/bench_scalar_quantizer_accuracy.dir/all' failed make[1]: [perf_tests/CMakeFiles/bench_scalar_quantizer_accuracy.dir/all] Error 2 make[1]: Waiting for unfinished jobs.... [ 79%] Building CXX object tests/CMakeFiles/faiss_test.dir/test_omp_threads.cpp.o /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1483:22: error: ‘benchmark::internal::Benchmark benchmark::RegisterBenchmark(const string&, Lambda&&) [with Lambda = benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, int, int, float); Args = {int&, int&, float&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(benchmark::State&)>; std::cxx11::string = std::cxx11::basic_string]’, declared using local type ‘benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, int, int, float); Args = {int&, int&, float&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(benchmark::State&)>’, is used but never defined [-fpermissive] internal::Benchmark RegisterBenchmark(const std::string& name, Lambda&& fn) { ^~~~~ perf_tests/CMakeFiles/bench_no_multithreading_rcq_search.dir/build.make:78: recipe for target 'perf_tests/CMakeFiles/bench_no_multithreading_rcq_search.dir/bench_no_multithreading_rcq_search.cpp.o' failed make[2]: [perf_tests/CMakeFiles/bench_no_multithreading_rcq_search.dir/bench_no_multithreading_rcq_search.cpp.o] Error 1 CMakeFiles/Makefile2:2015: recipe for target 'perf_tests/CMakeFiles/bench_no_multithreading_rcq_search.dir/all' failed make[1]: [perf_tests/CMakeFiles/bench_no_multithreading_rcq_search.dir/all] Error 2 [ 79%] Building CXX object tests/CMakeFiles/faiss_test.dir/test_ondisk_ivf.cpp.o [ 79%] Building CXX object tests/CMakeFiles/faiss_test.dir/test_pairs_decoding.cpp.o [ 79%] Building CXX object tests/CMakeFiles/faiss_test.dir/test_params_override.cpp.o In file included from /home/carlos/Documents/Faiss/faiss/perf_tests/bench_scalar_quantizer_decode.cpp:14:0: /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h: In instantiation of ‘benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...)::<lambda(benchmark::State&)> [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}]’: /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1499:48: required from ‘struct benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(class benchmark::State&)>’ /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1498:38: required from ‘benchmark::internal::Benchmark benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]’ /home/carlos/Documents/Faiss/faiss/perf_tests/bench_scalar_quantizer_decode.cpp:65:71: required from here /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1499:41: error: variable ‘fn’ has function type name, [=](benchmark::State& st) { fn(st, args...); }); ^~ /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1499:41: error: variable ‘fn’ has function type /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h: In instantiation of ‘struct benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(class benchmark::State&)>’: /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1498:38: required from ‘benchmark::internal::Benchmark benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]’ /home/carlos/Documents/Faiss/faiss/perf_tests/bench_scalar_quantizer_decode.cpp:65:71: required from here /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1499:41: error: field ‘benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(benchmark::State&)>::’ invalidly declared function type /home/carlos/Documents/Faiss/faiss/build/_deps/googlebenchmark-src/include/benchmark/benchmark.h:1483:22: error: ‘benchmark::internal::Benchmark benchmark::RegisterBenchmark(const string&, Lambda&&) [with Lambda = benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(benchmark::State&)>; std::cxx11::string = std::cxx11::basic_string]’, declared using local type ‘benchmark::RegisterBenchmark(const string&, Lambda&&, Args&& ...) [with Lambda = void (&)(benchmark::State&, faiss::ScalarQuantizer::QuantizerType, int, int); Args = {faiss::ScalarQuantizer::QuantizerType&, int&, int&}; std::cxx11::string = std::cxx11::basic_string]::<lambda(benchmark::State&)>’, is used but never defined [-fpermissive] internal::Benchmark RegisterBenchmark(const std::string& name, Lambda&& fn) { ^~~~~ perf_tests/CMakeFiles/bench_scalar_quantizer_decode.dir/build.make:78: recipe for target 'perf_tests/CMakeFiles/bench_scalar_quantizer_decode.dir/bench_scalar_quantizer_decode.cpp.o' failed make[2]: [perf_tests/CMakeFiles/bench_scalar_quantizer_decode.dir/bench_scalar_quantizer_decode.cpp.o] Error 1 CMakeFiles/Makefile2:2081: recipe for target 'perf_tests/CMakeFiles/bench_scalar_quantizer_decode.dir/all' failed

When I went back to another commit with hard reset it works fine, but maybe it can be solved in current version, thanks!

junjieqi commented 1 month ago

@carlosgellidaInt could you help provide more detailed instructions to help us reproduce the error? In addition, you mentioned you went back to another commit and which exact commit you referred? Thanks

junjieqi commented 3 weeks ago

@carlosgellidaInt in case you still have this issue

github-actions[bot] commented 2 weeks ago

This issue is stale because it has been open for 7 days with no activity.

github-actions[bot] commented 1 week ago

This issue was closed because it has been inactive for 7 days since being marked as stale.