deepsea-inria / sc15-pdfs

Code used by the experimental evaluation in the SC'15 paper 'A work-efficient algorithm for parallel unordered depth-first search'
MIT License
2 stars 1 forks source link

Cannot build experiment environment #1

Open Mrphase opened 4 years ago

Mrphase commented 4 years ago

when I run $ nix-build on Linux, it make error:

building '/nix/store/802b9j0bf1b8imdkndrg5bwib0wp5jl0-chunkedseq.drv'... unpacking sources unpacking source archive /nix/store/h7nvmpa4ym4sw1ampisj0a6hb6p3agbm-source cp: preserving permissions for 'source': Operation not permitted do not know how to unpack source archive /nix/store/h7nvmpa4ym4sw1ampisj0a6hb6p3agbm-source builder for '/nix/store/802b9j0bf1b8imdkndrg5bwib0wp5jl0-chunkedseq.drv' failed with exit code 1 cannot build derivation '/nix/store/k7r79qckg1a07rfswjlr6y816c44kkyp-sc15-graph.drv': 1 dependencies couldn't be built error: build of '/nix/store/k7r79qckg1a07rfswjlr6y816c44kkyp-sc15-graph.drv' failed

But I already have sudo, may I know how to solve it?

mikerainey commented 4 years ago

The nix build scripts of sc15-pdfs were broken by recent updates to ocaml, which affected the benchmarking script. This issue should be resolved as of revision e54f9951f8bf0886f8c005085803f7787b05fa1c (committed last night).

However, the issue you're referencing looks related to the chunkedseq package, not sc15-pdfs. Which one are you trying to build?

Mrphase commented 4 years ago

hi, huge thanks for replying! I use the old version which excuteable file is stored in /sc15-graph/graph/bench rather than /nix/store/p0i60sqr50n8pl58zhh3wiyimcx83p89-sc15-graph/bench

now I can run your baseline test like this:

/sc15-graph/graph/bench$ ./search.elision2 -proc 0 -algo dfs_by_vertexid_array -should_pdfs_permute 0 -load from_file -infile _data/orkut.adj_bin -bits 32 -source 1
pdfs_permute    0
exectime 0.655
nb_visited      3072441
chunk_capacity  1024
nb_vertices     3072627
nb_edges        117185083
chunk_capacity  1024

the interesting thing is that I use my simple seq_dfs to test Orkut, and it's spent 7 seconds to finish( your baseline only use 0.6s)! Just curious, may I know how you optimize your baseline to make it such fast?

BTW, when I compile the test.cpp, it's make error like below, may I get any suggestion to solve it?

sc15-pdfs/sc15-graph/graph/test$ make
Warning: did not find any file named _build/exe/quickcheck.*.d.
Warning: did not find any file named _build/exe/quickcheck.*.d.
Warning: did not find any file named _build/exe/quickcheck.*.d.
bash ../../tools/build//depend.sh ./tests.cpp _build/exe > _build/exe/tests.cpp.d 
./_build/exe/compile.sh -o _build/exe/tests.o -c ./tests.cpp
./tests.cpp:61:54: error: ‘quickcheck’ has not been declared
   61 | class prop_graph_format_conversion_identity : public quickcheck::Property<Edgelist> {
      |                                                      ^~~~~~~~~~
compilation terminated due to -Wfatal-errors.
make: *** [../../tools/build/Makefile_modes:223: _build/exe/tests.o] Error 1
mikerainey commented 4 years ago

I can't say for sure why the dfs_by_vertexid_array (source) baseline is faster than yours. After a scan over your DFS, it looks like you're using an algorithm that's doing more than just reachability analysis, which is all dfs_by_vertexid_array is doing. Also, one other reason your code is slower could relate to the data structure being used to represent the frontier. In dfs_by_vertexid_array, we use a pre-allocated array, as opposed to a resizable one, such as STL vector.

The test.cpp program has a dependency on quickcheck. Depending on what you want to implement, you should be able to build a binary if you drop the dependency on quickcheck.

GregorySchwing commented 10 months ago

The test.cpp program has a dependency on quickcheck. Depending on what you want to implement, you should be able to build a binary if you drop the dependency on quickcheck.

How would one resolve this dependency without using nix build?