Skip to content

Fixed key/value type #2

Description

@luffy06

Hi, we appreciate your excellent work of FINEdex, and we want to evaluate your FINEdex with other learned indexes on other datasets. However, we found that we cannot define an instantiation of FINEdex with other key/value types, such as double, except for uint64_t. The compilation cannot be finished due to the following errors. Can you help to fix the issues? Many thanks!

In file included from /....../lib/FINEdex/include/finedex.h:9,
                 from /....../src/benchmark/benchmark_finedex.cc:4:
/....../lib/FINEdex/include/piecewise_linear_model.h: In instantiation of ‘size_t make_segmentation_data(size_t, size_t, Fin, Fout, lrmodel_type*) [with Fin = aidel::FINEdex<key_t, val_t>::train(const std::vector<_Tp>&, const std::vector<_ValT>&, size_t) [with key_t = double; val_t = double; size_t = long unsigned int]::<lambda(auto:12)>; Fout = aidel::FINEdex<key_t, val_t>::train(const std::vector<_Tp>&, const std::vector<_ValT>&, size_t) [with key_t = double; val_t = double; size_t = long unsigned int]::<lambda(auto:13, auto:14, auto:15, auto:16, auto:17)>; lrmodel_type = LinearRegressionModel<double>; size_t = long unsigned int]’:
/....../lib/FINEdex/include/finedex_impl.h:43:49:   required from ‘aidel::FINEdex<key_t, val_t>::train(const std::vector<_Tp>&, const std::vector<_ValT>&, size_t) [with key_t = double; val_t = double; size_t = long unsigned int]::<lambda(auto:9, auto:10, auto:11)> [with auto:9 = long unsigned int; auto:10 = aidel::FINEdex<key_t, val_t>::train(const std::vector<_Tp>&, const std::vector<_ValT>&, size_t) [with key_t = double; val_t = double; size_t = long unsigned int]::<lambda(auto:12)>; auto:11 = aidel::FINEdex<key_t, val_t>::train(const std::vector<_Tp>&, const std::vector<_ValT>&, size_t) [with key_t = double; val_t = double; size_t = long unsigned int]::<lambda(auto:13, auto:14, auto:15, auto:16, auto:17)>; size_t = long unsigned int]’
/....../lib/FINEdex/include/finedex_impl.h:53:25:   required from ‘void aidel::FINEdex<key_t, val_t>::train(const std::vector<_Tp>&, const std::vector<_ValT>&, size_t) [with key_t = double; val_t = double; size_t = long unsigned int]’
/....../src/benchmark/benchmark_finedex.cc:150:12:   required from ‘void TestFINEdex() [with KT = double; VT = double]’
/....../src/benchmark/benchmark_finedex.cc:249:23:   required from here
/....../lib/FINEdex/include/piecewise_linear_model.h:358:31: error: conversion from ‘CanonicalSegment<double,[...]>’ to non-scalar type ‘CanonicalSegment<long unsigned int,[...]>’ requested
  358 |             canonical_segment cs = opt.get_segment();
      |                               ^~
/....../lib/FINEdex/include/piecewise_linear_model.h:379:23: error: conversion from ‘CanonicalSegment<double,[...]>’ to non-scalar type ‘CanonicalSegment<long unsigned int,[...]>’ requested
  379 |     canonical_segment cs = opt.get_segment();
      |                       ^~
/....../lib/FINEdex/include/piecewise_linear_model.h: In instantiation of ‘OptimalPiecewiseLinearModel<X, Y>::Slope OptimalPiecewiseLinearModel<X, Y>::Point::operator-(const OptimalPiecewiseLinearModel<X, Y>::Point&) const [with X = double; Y = long unsigned int]’:
/....../lib/FINEdex/include/piecewise_linear_model.h:139:36:   required from ‘bool OptimalPiecewiseLinearModel<X, Y>::add_point(const X&, const Y&) [with X = double; Y = long unsigned int]’
/....../lib/FINEdex/include/piecewise_linear_model.h:345:5:   required from ‘size_t make_segmentation_data(size_t, size_t, Fin, Fout, lrmodel_type*) [with Fin = aidel::FINEdex<key_t, val_t>::train(const std::vector<_Tp>&, const std::vector<_ValT>&, size_t) [with key_t = double; val_t = double; size_t = long unsigned int]::<lambda(auto:12)>; Fout = aidel::FINEdex<key_t, val_t>::train(const std::vector<_Tp>&, const std::vector<_ValT>&, size_t) [with key_t = double; val_t = double; size_t = long unsigned int]::<lambda(auto:13, auto:14, auto:15, auto:16, auto:17)>; lrmodel_type = LinearRegressionModel<double>; size_t = long unsigned int]’
/....../lib/FINEdex/include/finedex_impl.h:43:49:   required from ‘aidel::FINEdex<key_t, val_t>::train(const std::vector<_Tp>&, const std::vector<_ValT>&, size_t) [with key_t = double; val_t = double; size_t = long unsigned int]::<lambda(auto:9, auto:10, auto:11)> [with auto:9 = long unsigned int; auto:10 = aidel::FINEdex<key_t, val_t>::train(const std::vector<_Tp>&, const std::vector<_ValT>&, size_t) [with key_t = double; val_t = double; size_t = long unsigned int]::<lambda(auto:12)>; auto:11 = aidel::FINEdex<key_t, val_t>::train(const std::vector<_Tp>&, const std::vector<_ValT>&, size_t) [with key_t = double; val_t = double; size_t = long unsigned int]::<lambda(auto:13, auto:14, auto:15, auto:16, auto:17)>; size_t = long unsigned int]’
/....../lib/FINEdex/include/finedex_impl.h:53:25:   required from ‘void aidel::FINEdex<key_t, val_t>::train(const std::vector<_Tp>&, const std::vector<_ValT>&, size_t) [with key_t = double; val_t = double; size_t = long unsigned int]’
/....../src/benchmark/benchmark_finedex.cc:150:12:   required from ‘void TestFINEdex() [with KT = double; VT = double]’
/....../src/benchmark/benchmark_finedex.cc:249:23:   required from here
/....../lib/FINEdex/include/piecewise_linear_model.h:59:27: warning: narrowing conversion of ‘((double)(OptimalPiecewiseLinearModel<double, long unsigned int>::SX)(double)((const OptimalPiecewiseLinearModel<double, long unsigned int>::Point<double, long unsigned int>*)this)->OptimalPiecewiseLinearModel<double, long unsigned int>::Point<double, long unsigned int>::x - ((double)p.OptimalPiecewiseLinearModel<double, long unsigned int>::Point::x))’ from ‘double’ to ‘OptimalPiecewiseLinearModel<double, long unsigned int>::SX’ {aka ‘__int128’} [-Wnarrowing]
   59 |             return {SX(x) - p.x, y - p.y};
      |                     ~~~~~~^~~~~
make[2]: *** [CMakeFiles/benchmark_finedex.dir/build.make:76: CMakeFiles/benchmark_finedex.dir/src/benchmark/benchmark_finedex.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:289: CMakeFiles/benchmark_finedex.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions