cmuparlay/pbbsbench

Failed to execute benchmarks due to "multiple definition" problem

luiz787 opened this issue · 2 comments

Hi,

I was trying to execute some of the benchmarks locally and ran into a compilation issue (checked out on master, commit 0983ac573a538fd6771197cb8106160b1708c01c.

The command I tried to execute, right after cloning the repository and initializing the submodules: ./runall -par -small -nonuma -only suffixArray/parallelRange.

The output:

HOSTNAME: luiz-B450M-GAMING
('Running only: ', [['suffixArray/parallelRange', True, 0]])
Small Inputs
Parallel Only
No numactl
running on 12 threads

cd benchmarks/suffixArray/parallelRange ; make -s
/usr/bin/ld: SA.o: in function `parlay::hash_combine(unsigned long&, unsigned long)':
SA.C:(.text+0x6a0): multiple definition of `parlay::hash_combine(unsigned long&, unsigned long)'; SATime.o:SATime.C:(.text+0x400): first defined here
collect2: error: ld returned 1 exit status
make: *** [common/MakeBenchLink:19: SA] Error 1
cd benchmarks/suffixArray/parallelRange ; ./testInputs_small -r 3 -p 12
TEST TERMINATED ABNORMALLY:
[cd ../sequenceData/data; make trigramString_10000000
cd ..; make -s trigramString
/usr/bin/ld: trigrams.o: in function `parlay::hash_combine(unsigned long&, unsigned long)':
trigrams.C:(.text+0xa0): multiple definition of `parlay::hash_combine(unsigned long&, unsigned long)'; trigramString.o:trigramString.C:(.text+0x400): first defined here
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:45: trigramString] Error 1
make: *** [Makefile:12: ../trigramString] Error 2
]

"utilities.h", the file where "hash_combine" is defined, has include guards, which makes this odd.

Details about my environment:

OS: Ubuntu 21.10
Kernel version: 5.13.0-44-generic
Make version: 4.3 [x86_64-pc-linux-gnu]
GCC version: 11.2.0 (Ubuntu 11.2.0-7ubuntu2)
ld: GNU ld (GNU Binutils for Ubuntu) 2.37

Could this be a problem with my environment?

Running the benchmarks locally would be of great value to me, as my CS undergrad thesis is the implementation of the algorithms in another programming language (Elixir). I would appreciate any help.

Thanks!

Thanks for the quick response. Cleaning and pulling/updating the submodule did the trick.