Git Product home page Git Product logo

sosd's People

Contributors

alexandervanrenen avatar alhuan avatar andreaskipf avatar dominikhorn avatar huangallen-mit avatar ryanmarcus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sosd's Issues

[RadixSpline] memory leak and a suggested fix

Caught it in our test suite, which runs sanitizer checks including Google's LeakSanitizer.

Suggested fix -> add a destructor that ensures the radix_hint_ heap allocated vector gets freed correctly:

  ~RadixSpline() {
    if (radix_hint_ != nullptr) {
      delete[](radix_hint_);
    }
  }

more information about the dataset

Thank you!
I have run the RMI on wiki_ts_200M and books_200M successfully. I found that there are duplicated values in "wiki_ts" dataset, is it? and i would like to know more information about dataset, where can i find the description of dataset?
There is only the primary key, but I find that when the length of each record is extended, the performance of learned index will be greatly affected, the mapping between key to position becomes complicated, so i would like trying to complete the true record length to see the mapping of keys to positions.
Best wishes!
Thank you for your help!

Benchmark's memory requirement

On a system with 16GB data, the benchmark crashes while building the benchmark:

[100%] Built target benchmark
Generating lookups for osm_cellids_200M_uint64
Generating lookups for osm_cellids_400M_uint64
Generating lookups for osm_cellids_600M_uint64
read 600000000 values from ../data/osm_cellids_600M_uint64 in 2095 ms (286.396 M values/s)
terminate called after throwing an instance of 'std::bad_alloc'

To upgrade the memory, I wonder what is the peak memory usage of the benchmark. Do you have any rough estimate?

Apparently a bit more than 16GB is enough for the build of osm_cellids_600M_uint64, but then perhaps the benchmark execution could take more memory. right?

Support for key duplicates in ARTPrimary?

ARTPrimary::applicable(...) always returns true, indicating that data with non-unique keys is supported by the ARTPrimary implementation. Based on the return value of ARTPrimaryLB::applicable(...), I assume that the ARTPrimaryLB implementation does not support non-unique keys. However, the Build functions in both classes look very similar. More precisely, both functions contain the following snippet:

if (data_key == last_key)
        continue;

Thus, I actually expect that both versions do not support key duplicates. But I have to admit that I haven't studied the source code in detail and didn't run the benchmark. Could you briefly explain how the support for key duplicates was realized? My goal is to benchmark index implementations that support key duplicates. Thus, if the ARTPrimary implementation does so, I would like to benchmark it.

Compile errors (prepare.sh)

Hi, I am running prepare.sh, but I got the following errors. It looks like there are some missing files.

[ 75%] Building CXX object CMakeFiles/benchmark.dir/benchmarks/benchmark_rbs.cc.o
[ 75%] Building CXX object CMakeFiles/benchmark.dir/benchmarks/benchmark_pgm.cc.o
[ 75%] Building CXX object CMakeFiles/benchmark.dir/benchmarks/benchmark_rmi.cc.o
[ 75%] Building CXX object CMakeFiles/benchmark.dir/benchmarks/benchmark_rs.cc.o
In file included from /Users/.../SOSD-master/benchmarks/benchmark_rmi.cc:3:
/Users/.../SOSD-master/dtl/../competitors/rmi_search.h:4:10: fatal error: 'rmi/all_rmis.h' file not found
#include "rmi/all_rmis.h"
^~~~~~~~~~~~~~~~
In file included from /Users/.../SOSD-master/benchmarks/benchmark_pgm.cc:4:
In file included from /Users/.../SOSD-master/dtl/../competitors/pgm_index.h:11:
In file included from /Users/.../SOSD-master/competitors/PGM-index/include/pgm_index.hpp:24:
/Users/.../SOSD-master/competitors/PGM-index/include/piecewise_linear_model.hpp:20:6: fatal error: Compile with -fopenmp
#error Compile with -fopenmp
^
4 warnings and 1 error generated.
4 warnings and 1 error generated.
make[2]: *** [CMakeFiles/benchmark.dir/benchmarks/benchmark_rmi.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/benchmark.dir/benchmarks/benchmark_pgm.cc.o] Error 1
make[1]: *** [CMakeFiles/benchmark.dir/all] Error 2
make: *** [all] Error 2

Output files (containing only RMI and RS)

Hi, I have generated the result files for the experiments. (execute.sh) My output only has results for the RMI and RS index methods. I am wondering if it is correct or I did something wrong in the other steps. Should we see the results for all index methods? Thanks!

Wrong data file for the fb dataset

In the new benchmark (VLDB 2020), the fb_200M_uint64 dataset is wrong. It's not the facebook IDs, but it is actually the lognormal dataset.

Here is the distribution of data/fb_200M_uint64 on the new benchmark (vldb_2020 tag):
image

The fb data used to be like a uniform distribution. Here is the plot of the fb dataset downloaded by the earlier scripts in mlforsys19 tag:
image

Would you please correct the download scripts?
Also, are the VLDB paper results for the new or old fb file?

[More Information on source code]

Hi Team,

Thank you so much for the benchmark paper and implementation of various index structures.
Is there any more documentation about the source code. It is little difficult to understand the models represented in rust, generating the C++ code for indexes.

Also few days back i saw the paper "Learning to Search" mentioned in ML for systems conference'19 accepted papers. Is this paper same of that?

Thanks,
Vinayak N B

The benchmark doesn't compile (prepare.sh)

The benchmark doesn't compile. I can compile and run the previous version (NeuroIPS 2019) but the new version has something missing such that prepare.sh stops:

[100%] Building CXX object CMakeFiles/benchmark.dir/benchmarks/benchmark_wormhole.cc.o
[100%] Linking CXX executable benchmark
/usr/bin/ld: ../fast64/target/release/libfast64.a(std-c32b051c3aafd36c.std.4p3qj3su-cgu.0.rcgu.o): undefined reference to symbol 'dlsym@@GLIBC_2.2.5'
/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libdl.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/benchmark.dir/build.make:3217: recipe for target 'benchmark' failed
make[2]: *** [benchmark] Error 1
CMakeFiles/Makefile2:170: recipe for target 'CMakeFiles/benchmark.dir/all' failed
make[1]: *** [CMakeFiles/benchmark.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

[RadixSpline] SIGSEGV on EqualityLookup when key = 0

Hi there!

We noticed that RadixSpline throws a SIGSEGV when key = 0 due to an out-of-bounds access onto the spline array. The key in question is present in our input (sorted) data array. The version of the code we have is the one with process implemented like so:

  inline uint32_t process(uint64_t x) const {
    // Compute index.
    uint32_t index;
    const uint64_t p = (x - min_) >> shift_bits_;
    uint32_t begin = radix_hint_[p];
    uint32_t end = radix_hint_[p + 1];

    switch (end - begin) {
      case 0:
        index = end;
        break;
      case 1:
        index = (spline[begin].first >= x) ? begin : end;
        break;
      case 2:
        index = ((spline[begin].first >= x)
                     ? begin
                     : ((spline[begin + 1].first >= x) ? (begin + 1) : end));
        break;
      case 3:
        index =
            ((spline[begin].first >= x)
                 ? begin
                 : ((spline[begin + 1].first >= x)
                        ? (begin + 1)
                        : ((spline[begin + 2].first > x) ? (begin + 2) : end)));
        break;
      default:
        index =
            std::lower_bound(spline.begin() + begin, spline.begin() + end, x,
                             [](const Coord& a, const uint64_t lookup_key) {
                               return a.first < lookup_key;
                             }) -
            spline.begin();
        break;
    }

    return index - 1;
  }

When key = 0, process gets called with x = 0, which ends up falling into case 2 and setting index to 0. The return statement at the end is index - 1 (or 4294967295 as uint32_t), which is then used as index into the spline array in segmentInterpolation, causing the out-of-bounds access.

I noticed that the latest implementation of process is not too different, so at a quick glance it seems that a similar bug could still be present there. We'd be interested in confirming that this out-of-bounds access is no longer present in the latest version before migrating our copy over.

Cheers,
Joana

Possibly wrong cache-miss measurement

When I use the SOSD benchmark, the cache-misses are high and don't seem real:

index, time sec, cycles, instructions, L1-misses, LLC-misses, branch-misses, task-clock, scale, IPC, CPUs, GHz
RESULT: Oracle, 0.00, 6.05, 11.02, 0.25, 0.33, 0.00, 1.52, 1000000, 1.82, 1.01, 3.99
RESULT: rmi, 0.31, 831.12, 228.74, 15.36, 38.71, 3.83, 214.89, 1000000, 0.28, 0.70, 3.87
RESULT: RadixSpline, 0.31, 1238.91, 281.28, 21.08, 51.05, 3.12, 313.53, 1000000, 0.23, 1.00, 3.95
RESULT: BinarySearch, 0.65, 2570.39, 398.27, 87.29, 185.30, 13.59, 645.73, 1000000, 0.15, 1.00, 3.98

In RMI, for example, L1-miss = 15.36, LLC-misses=38.71. First of all, how is it possible that the L1 miss rate is less than LLC miss rate (I suppose all LLC misses were caused by an L1-miss, no?

More importantly, the numbers don't make sense. For Binary search over 200M records, we have at most log(200M,2)=27 memory accesses. Considering that some of the accesses will be cached, I expect both L1 and LLC misses to be 20-something, NOT what the benchmark reports for binary search (L1-misses=87.29, LLC-misses=185.30) !!

Besides, when I manually run the indexes (or the whole benchmark) in Intel VTune and see the miss-rates on each section, the miss rates are entirely different and are close to what I expect (For binary search: LLC miss rate = 20.3).

Why are the measurements so different? I am just very confused.

I use the original commit of SOSD for theMLforSys paper but I suppose all version use the same probing mechanism.

error: No such file or directory

Hi,
I'm trying to run your code and get this error (the dataset is fb_20M_uint64):

image

Could you please suggest how to solve this problem?
Thank you!

Compilation error when running scripts/prepare.sh

Hi, I encountered an error when I run the script prepare.sh. Some error logs are shown as follows.

Compiling benchmark...
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pfl/workspace/SOSD/build
[  5%] Generating competitors/rmi/all_rmis.h
[ 15%] Built target generate
Scanning dependencies of target benchmark
[ 21%] Building CXX object CMakeFiles/benchmark.dir/benchmark.cc.o
/home/pfl/workspace/SOSD/benchmark.cc: In function ‘int main(int, char**)’:
/home/pfl/workspace/SOSD/benchmark.cc:28:273: error: the value of ‘normal_200M_uint32_rmi::NAME’ is not usable in a constant expression
 me, _, dtype, _,suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:87:7: note: in expansion of macro ‘run_rmi_linear’
       run_rmi_linear(uint32, normal_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:1:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/normal_200M_uint32_rmi.h:6:12: note: ‘normal_200M_uint32_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "normal_200M_uint32_rmi";
            ^
/home/pfl/workspace/SOSD/benchmark.cc:28:273: error: the value of ‘lognormal_200M_uint32_rmi::NAME’ is not usable in a constant expression
 me, _, dtype, _,suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:88:7: note: in expansion of macro ‘run_rmi_linear’
       run_rmi_linear(uint32, lognormal_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:3:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/lognormal_200M_uint32_rmi.h:6:12: note: ‘lognormal_200M_uint32_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "lognormal_200M_uint32_rmi";
            ^
/home/pfl/workspace/SOSD/benchmark.cc:30:274: error: the value of ‘books_200M_uint32_rmi::NAME’ is not usable in a constant expression
 e, _, dtype, _, suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:89:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint32, books_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:11:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/books_200M_uint32_rmi.h:6:12: note: ‘books_200M_uint32_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "books_200M_uint32_rmi";
            ^
/home/pfl/workspace/SOSD/benchmark.cc:30:314: error: could not convert template argument ‘books_200M_uint32_rmi::lookup’ to ‘uint64_t (*)(uint64_t, size_t*) {aka long unsigned int (*)(long unsigned int, long unsigned int*)}’
 (name, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>();
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:89:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint32, books_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: no matching function for call to ‘sosd::Benchmark<unsigned int>::Run()’
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:89:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint32, books_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/benchmark.cc:1:0:
/home/pfl/workspace/SOSD/benchmark.h:51:8: note: candidate: template<class Index, bool ignore_errors> void sosd::Benchmark<KeyType>::Run() [with Index = Index; bool ignore_errors = ignore_errors; KeyType = unsigned int]
   void Run() {
        ^
/home/pfl/workspace/SOSD/benchmark.h:51:8: note:   template argument deduction/substitution failed:
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: template argument 1 is invalid
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:89:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint32, books_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:30:274: error: the value of ‘fb_200M_uint32_rmi::NAME’ is not usable in a constant expression
 e, _, dtype, _, suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:90:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint32, fb_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:13:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/fb_200M_uint32_rmi.h:6:12: note: ‘fb_200M_uint32_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "fb_200M_uint32_rmi";
            ^
/home/pfl/workspace/SOSD/benchmark.cc:30:314: error: could not convert template argument ‘fb_200M_uint32_rmi::lookup’ to ‘uint64_t (*)(uint64_t, size_t*) {aka long unsigned int (*)(long unsigned int, long unsigned int*)}’
 (name, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>();
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:90:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint32, fb_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: no matching function for call to ‘sosd::Benchmark<unsigned int>::Run()’
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:90:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint32, fb_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/benchmark.cc:1:0:
/home/pfl/workspace/SOSD/benchmark.h:51:8: note: candidate: template<class Index, bool ignore_errors> void sosd::Benchmark<KeyType>::Run() [with Index = Index; bool ignore_errors = ignore_errors; KeyType = unsigned int]
   void Run() {
        ^
/home/pfl/workspace/SOSD/benchmark.h:51:8: note:   template argument deduction/substitution failed:
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: template argument 1 is invalid
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:90:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint32, fb_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:28:273: error: the value of ‘uniform_dense_200M_uint32_rmi::NAME’ is not usable in a constant expression
 me, _, dtype, _,suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:91:7: note: in expansion of macro ‘run_rmi_linear’
       run_rmi_linear(uint32, uniform_dense_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:5:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/uniform_dense_200M_uint32_rmi.h:6:12: note: ‘uniform_dense_200M_uint32_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "uniform_dense_200M_uint32_rmi";
            ^
/home/pfl/workspace/SOSD/benchmark.cc:28:273: error: the value of ‘uniform_sparse_200M_uint32_rmi::NAME’ is not usable in a constant expression
 me, _, dtype, _,suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:92:7: note: in expansion of macro ‘run_rmi_linear’
       run_rmi_linear(uint32, uniform_sparse_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:7:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/uniform_sparse_200M_uint32_rmi.h:6:12: note: ‘uniform_sparse_200M_uint32_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "uniform_sparse_200M_uint32_rmi";
            ^
/home/pfl/workspace/SOSD/benchmark.cc:30:274: error: the value of ‘wiki_ts_200M_uint64_rmi::NAME’ is not usable in a constant expression
 e, _, dtype, _, suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:114:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, wiki_ts_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:10:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/wiki_ts_200M_uint64_rmi.h:6:12: note: ‘wiki_ts_200M_uint64_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "wiki_ts_200M_uint64_rmi";
            ^
/home/pfl/workspace/SOSD/benchmark.cc:30:314: error: could not convert template argument ‘wiki_ts_200M_uint64_rmi::lookup’ to ‘uint64_t (*)(uint64_t, size_t*) {aka long unsigned int (*)(long unsigned int, long unsigned int*)}’
 (name, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>();
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:114:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, wiki_ts_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: no matching function for call to ‘sosd::Benchmark<long unsigned int>::Run()’
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:114:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, wiki_ts_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/benchmark.cc:1:0:
/home/pfl/workspace/SOSD/benchmark.h:51:8: note: candidate: template<class Index, bool ignore_errors> void sosd::Benchmark<KeyType>::Run() [with Index = Index; bool ignore_errors = ignore_errors; KeyType = long unsigned int]
   void Run() {
        ^
/home/pfl/workspace/SOSD/benchmark.h:51:8: note:   template argument deduction/substitution failed:
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: template argument 1 is invalid
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:114:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, wiki_ts_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:30:274: error: the value of ‘osm_cellids_200M_uint64_rmi::NAME’ is not usable in a constant expression
 e, _, dtype, _, suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:115:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, osm_cellids_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:9:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/osm_cellids_200M_uint64_rmi.h:6:12: note: ‘osm_cellids_200M_uint64_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "osm_cellids_200M_uint64_rmi";
            ^
/home/pfl/workspace/SOSD/benchmark.cc:30:314: error: could not convert template argument ‘osm_cellids_200M_uint64_rmi::lookup’ to ‘uint64_t (*)(uint64_t, size_t*) {aka long unsigned int (*)(long unsigned int, long unsigned int*)}’
 (name, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>();
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:115:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, osm_cellids_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: no matching function for call to ‘sosd::Benchmark<long unsigned int>::Run()’
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:115:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, osm_cellids_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/benchmark.cc:1:0:
/home/pfl/workspace/SOSD/benchmark.h:51:8: note: candidate: template<class Index, bool ignore_errors> void sosd::Benchmark<KeyType>::Run() [with Index = Index; bool ignore_errors = ignore_errors; KeyType = long unsigned int]
   void Run() {
        ^
/home/pfl/workspace/SOSD/benchmark.h:51:8: note:   template argument deduction/substitution failed:
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: template argument 1 is invalid
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:115:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, osm_cellids_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:28:273: error: the value of ‘normal_200M_uint64_rmi::NAME’ is not usable in a constant expression
 me, _, dtype, _,suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:116:7: note: in expansion of macro ‘run_rmi_linear’
       run_rmi_linear(uint64, normal_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:2:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/normal_200M_uint64_rmi.h:6:12: note: ‘normal_200M_uint64_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "normal_200M_uint64_rmi";
            ^
/home/pfl/workspace/SOSD/benchmark.cc:30:274: error: the value of ‘lognormal_200M_uint64_rmi::NAME’ is not usable in a constant expression
 e, _, dtype, _, suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:117:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, lognormal_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:4:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/lognormal_200M_uint64_rmi.h:6:12: note: ‘lognormal_200M_uint64_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "lognormal_200M_uint64_rmi";
            ^
/home/pfl/workspace/SOSD/benchmark.cc:30:314: error: could not convert template argument ‘lognormal_200M_uint64_rmi::lookup’ to ‘uint64_t (*)(uint64_t, size_t*) {aka long unsigned int (*)(long unsigned int, long unsigned int*)}’
 (name, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>();
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:117:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, lognormal_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: no matching function for call to ‘sosd::Benchmark<long unsigned int>::Run()’
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:117:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, lognormal_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/benchmark.cc:1:0:
/home/pfl/workspace/SOSD/benchmark.h:51:8: note: candidate: template<class Index, bool ignore_errors> void sosd::Benchmark<KeyType>::Run() [with Index = Index; bool ignore_errors = ignore_errors; KeyType = long unsigned int]
   void Run() {
        ^
/home/pfl/workspace/SOSD/benchmark.h:51:8: note:   template argument deduction/substitution failed:
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: template argument 1 is invalid
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:117:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, lognormal_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:30:274: error: the value of ‘books_200M_uint64_rmi::NAME’ is not usable in a constant expression
 e, _, dtype, _, suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:118:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, books_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:12:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/books_200M_uint64_rmi.h:6:12: note: ‘books_200M_uint64_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "books_200M_uint64_rmi";
            ^
/home/pfl/workspace/SOSD/benchmark.cc:30:314: error: could not convert template argument ‘books_200M_uint64_rmi::lookup’ to ‘uint64_t (*)(uint64_t, size_t*) {aka long unsigned int (*)(long unsigned int, long unsigned int*)}’
 (name, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>();
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:118:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, books_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: no matching function for call to ‘sosd::Benchmark<long unsigned int>::Run()’
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:118:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, books_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/benchmark.cc:1:0:
/home/pfl/workspace/SOSD/benchmark.h:51:8: note: candidate: template<class Index, bool ignore_errors> void sosd::Benchmark<KeyType>::Run() [with Index = Index; bool ignore_errors = ignore_errors; KeyType = long unsigned int]
   void Run() {
        ^
/home/pfl/workspace/SOSD/benchmark.h:51:8: note:   template argument deduction/substitution failed:
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: template argument 1 is invalid
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:118:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, books_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:30:274: error: the value of ‘fb_200M_uint64_rmi::NAME’ is not usable in a constant expression
 e, _, dtype, _, suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:119:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, fb_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:14:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/fb_200M_uint64_rmi.h:6:12: note: ‘fb_200M_uint64_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "fb_200M_uint64_rmi";
            ^
/home/pfl/workspace/SOSD/benchmark.cc:30:314: error: could not convert template argument ‘fb_200M_uint64_rmi::lookup’ to ‘uint64_t (*)(uint64_t, size_t*) {aka long unsigned int (*)(long unsigned int, long unsigned int*)}’
 (name, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>();
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:119:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, fb_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: no matching function for call to ‘sosd::Benchmark<long unsigned int>::Run()’
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:119:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, fb_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/benchmark.cc:1:0:
/home/pfl/workspace/SOSD/benchmark.h:51:8: note: candidate: template<class Index, bool ignore_errors> void sosd::Benchmark<KeyType>::Run() [with Index = Index; bool ignore_errors = ignore_errors; KeyType = long unsigned int]
   void Run() {
        ^
/home/pfl/workspace/SOSD/benchmark.h:51:8: note:   template argument deduction/substitution failed:
/home/pfl/workspace/SOSD/benchmark.cc:30:323: error: template argument 1 is invalid
 ame, _, dtype, _,suffix)::NAME, NAME5(name, _, dtype, _, suffix)::lookup>>(); }
                                                                            ^
/home/pfl/workspace/SOSD/benchmark.cc:119:7: note: in expansion of macro ‘run_rmi_binary’
       run_rmi_binary(uint64, fb_200M, rmi);
       ^
/home/pfl/workspace/SOSD/benchmark.cc:28:273: error: the value of ‘uniform_dense_200M_uint64_rmi::NAME’ is not usable in a constant expression
 me, _, dtype, _,suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:120:7: note: in expansion of macro ‘run_rmi_linear’
       run_rmi_linear(uint64, uniform_dense_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:6:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/uniform_dense_200M_uint64_rmi.h:6:12: note: ‘uniform_dense_200M_uint64_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "uniform_dense_200M_uint64_rmi";
            ^
/home/pfl/workspace/SOSD/benchmark.cc:28:273: error: the value of ‘uniform_sparse_200M_uint64_rmi::NAME’ is not usable in a constant expression
 me, _, dtype, _,suffix)::RMI_SIZE, NAME5(name, _, dtype, _,suffix)::NAME, NAME5
                                                                     ^
/home/pfl/workspace/SOSD/benchmark.cc:121:7: note: in expansion of macro ‘run_rmi_linear’
       run_rmi_linear(uint64, uniform_sparse_200M, rmi);
       ^
In file included from /home/pfl/workspace/SOSD/competitors/rmi/all_rmis.h:8:0,
                 from /home/pfl/workspace/SOSD/competitors/rmi_search.h:4,
                 from /home/pfl/workspace/SOSD/benchmark.cc:8:
/home/pfl/workspace/SOSD/competitors/rmi/uniform_sparse_200M_uint64_rmi.h:6:12: note: ‘uniform_sparse_200M_uint64_rmi::NAME’ was not declared ‘constexpr’
 const char NAME[] = "uniform_sparse_200M_uint64_rmi";
            ^
CMakeFiles/benchmark.dir/build.make:86: recipe for target 'CMakeFiles/benchmark.dir/benchmark.cc.o' failed
make[2]: *** [CMakeFiles/benchmark.dir/benchmark.cc.o] Error 1
CMakeFiles/Makefile2:97: recipe for target 'CMakeFiles/benchmark.dir/all' failed
make[1]: *** [CMakeFiles/benchmark.dir/all] Error 2
Makefile:103: recipe for target 'all' failed
make: *** [all] Error 2

I run the codes on a ubuntu 16.04 server with gcc 5.4, g++5.4 and cmake 3.17.

execute_perf.sh: "Error opening counter cycles"

The execute_perf.sh benchmark does not run (Ubuntu 18.04, followed all README instructions).

Is there any extra package/tool that needs to be installed?

Here is the output:

SOSD$ scripts/execute_perf.sh 
Executing perf benchmark and saving results...
Executing workload normal_200M_uint32
Repeating lookup code 1 time(s).
read 200000000 values from ./data/normal_200M_uint32 in 1974 ms (101.317 M values/s)
data is unique
read 1000000 values from ./data/normal_200M_uint32_equality_lookups_1M in 37 ms (27.027 M values/s)
Error opening counter cycles
 index, time sec, 
RESULT: Oracle,     0.00, 
Error opening counter cycles
RESULT:   rmi,     0.07, 
Error opening counter cycles
RESULT: RadixSpline,     0.06, 
Error opening counter cycles
RESULT: BinarySearch,     0.81, 
Error opening counter cycles
RESULT: InterpolationSearch,    10.93, 
Error opening counter cycles
RESULT: RadixBinarySearch18,     0.33, 
Error opening counter cycles
RESULT:  FAST,     0.30, 
Error opening counter cycles
RESULT:   ART,     0.24, 
Error opening counter cycles
RESULT:   TIP,     0.97, 
Error opening counter cycles
RESULT: stx::btree_multimap,     0.48,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.