uwsampa / grappa

Grappa: scaling irregular applications on commodity clusters
grappa.io
BSD 3-Clause "New" or "Revised" License
159 stars 51 forks source link

Cannot build grappa applications #278

Open rfvander opened 8 years ago

rfvander commented 8 years ago

I downloaded the latest version of grappa and am trying to build it using the instructions in build.md, but I am experiencing trouble. My environment is listed below. [rfvander@esgmonster grappa-source]$ ruby -v ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux] [rfvander@esgmonster grappa-source]$ cmake -version cmake version 2.8.12.2 [rfvander@esgmonster grappa-source]$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/opt/gcc/4.9.2/libexec/gcc/x86_64-unknown-linux-gnu/4.9.2/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: /home/jrhammon/Work/GCC/gcc-4.9.2/configure --disable-multilib --enable-threads=posix --enable-checking=release --enable-__cxa_atexit --enable-languages=c,c++,fortran --with-tune=native --enable-bootstrap --enable-lto --prefix=/opt/gcc/4.9.2 --with-isl --with-cloog Thread model: posix gcc version 4.9.2 (GCC) [rfvander@esgmonster Synch_p2p]$ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/opt/gcc/4.9.2/libexec/gcc/x86_64-unknown-linux-gnu/4.9.2/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: /home/jrhammon/Work/GCC/gcc-4.9.2/configure --disable-multilib --enable-threads=posix --enable-checking=release --enable-cxa_atexit --enable-languages=c,c++,fortran --with-tune=native --enable-bootstrap --enable-lto --prefix=/opt/gcc/4.9.2 --with-isl --with-cloog Thread model: posix gcc version 4.9.2 (GCC) [rfvander@esgmonster grappa-source]$ mpicc -v mpigcc for the Intel(R) MPI Library 5.1.2 for Linux* Copyright(C) 2003-2015, Intel Corporation. All rights reserved. Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/opt/gcc/4.9.2/libexec/gcc/x86_64-unknown-linux-gnu/4.9.2/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: /home/jrhammon/Work/GCC/gcc-4.9.2/configure --disable-multilib --enable-threads=posix --enable-checking=release --enable-cxa_atexit --enable-languages=c,c++,fortran --with-tune=native --enable-bootstrap --enable-lto --prefix=/opt/gcc/4.9.2 --with-isl --with-cloog Thread model: posix gcc version 4.9.2 (GCC) [rfvander@esgmonster grappa-source]$ mpicxx -v mpigxx for the Intel(R) MPI Library 5.1.2 for Linux* Copyright(C) 2003-2015, Intel Corporation. All rights reserved. Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/opt/gcc/4.9.2/libexec/gcc/x86_64-unknown-linux-gnu/4.9.2/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: /home/jrhammon/Work/GCC/gcc-4.9.2/configure --disable-multilib --enable-threads=posix --enable-checking=release --enable-__cxa_atexit --enable-languages=c,c++,fortran --with-tune=native --enable-bootstrap --enable-lto --prefix=/opt/gcc/4.9.2 --with-isl --with-cloog Thread model: posix gcc version 4.9.2 (GCC)

When I now follow your instructions and try to build grappa, this is what happens (no errors reported when building grappa itself) \rm -rf build ./configure --prefix=~/grappa --cc=gcc --cxx=g++ cd build/Make+Release/ make make install source /home/rfvander/grappa/bin/settings.sh cd ~/esg-prk-devel/GRAPPA/Synch_p2p [rfvander@esgmonster Synch_p2p]$ make p2p
/opt/gcc/4.9.2/bin/g++ -O3 -std=c99 -DGRAPPA -DENABLE_RDMA_AGGREGATOR -std=c++11 -Winline -Wno-inline -mno-red-zone -O3 -g -DNDEBUG -I/home/rfvander/grappa/include -I/home/rfvander/grappa/include/Grappa -I/home/rfvander/grappa/include/Grappa/tasks -I/opt/intel/compilers_and_libraries_2016.1.150/linux/mpi/intel64/include -I/usr/local/include -I../../include -c p2p.cpp cc1plus: warning: command line option ‘-std=c99’ is valid for C/ObjC but not for C++ /opt/gcc/4.9.2/bin/g++ -o p2p -L/home/rfvander/grappa/lib -L/usr/local/lib -L/opt/intel/compilers_and_libraries_2016.1.150/linux/mpi/intel64/lib -L/opt/intel/compilers_and_libraries_2016.1.150/linux/mpi/intel64/lib/release_mt -L/usr/lib64 -O3 -std=c99 -DGRAPPA p2p.o -Wl,-Bstatic -lGrappa -lglog -lgflags -lgraph500-generator -lboost_system -lboost_filesystem -Wl,-Bdynamic -lmpicxx -lmpifort -lmpi -lmpigi -ldl -lrt -lpthread /home/rfvander/grappa/lib/libglog.a(libglog_la-utilities.o): In function google::GetStackTrace(void**, int, int)': utilities.cc:(.text+0x70a): undefined reference to_Ux86_64_getcontext' utilities.cc:(.text+0x723): undefined reference to _ULx86_64_init_local' utilities.cc:(.text+0x776): undefined reference to_ULx86_64_get_reg' utilities.cc:(.text+0x7c6): undefined reference to `_ULx86_64_step' collect2: error: ld returned 1 exit status make: *\ [p2p] Error 1

nelsonje commented 8 years ago

Weird. These symbols should come from glibc which ought to be linked with any binary you build.

Could you look at /home/rfvander/grappa/share/Grappa/grappa.mk and verify that GRAPPA_CXX is /opt/gcc/4.9.2/bin/g++?

rfvander commented 8 years ago

I checked and these are the related symbols in grappa.mk

#############################################################################

compiler used to build Grappa

#############################################################################

MPI header paths should automatically be included in CXXFLAGS by

CMake, so use the plain C++ compiler (but mpicxx should be fine too)

GRAPPA_CXX=/opt/gcc/4.9.2/bin/g++

MPI libraries should automatically be included in CXXFLAGS by

CMake, so use the plain C++ compiler (but mpicxx should be fine too)

GRAPPA_CC=/opt/gcc/4.9.2/bin/g++ GRAPPA_LD=/opt/gcc/4.9.2/bin/g++

nelsonje commented 8 years ago

Super weird. I guess try adding "-lc" to the dynamic section of the libraries in that file as a temporary fix? It should be linked be default, though....

rfvander commented 8 years ago

Sure, I’ll try that for now. Thanks.

From: Jacob Nelson [mailto:notifications@github.com] Sent: Friday, April 22, 2016 2:44 PM To: uwsampa/grappa Cc: Van Der Wijngaart, Rob F; Author Subject: Re: [uwsampa/grappa] Cannot build grappa applications (#278)

Super weird. I guess try adding "-lc" to the dynamic section of the libraries in that file as a temporary fix? It should be linked be default, though....

— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHubhttps://github.com/uwsampa/grappa/issues/278#issuecomment-213597798

rfvander commented 8 years ago

Sadly, no cigar. See below.

[rfvander@esgmonster Synch_p2p]$ make p2p /opt/gcc/4.9.2/bin/g++ -O3 -std=c99 -DGRAPPA -DENABLE_RDMA_AGGREGATOR -std=c++11 -Winline -Wno-inline -mno-red-zone -O3 -g -DNDEBUG -I/home/rfvander/grappa/include -I/home/rfvander/grappa/include/Grappa -I/home/rfvander/grappa/include/Grappa/tasks -I/opt/intel/compilers_and_libraries_2016.1.150/linux/mpi/intel64/include -I/usr/local/include -I../../include -c p2p.cpp cc1plus: warning: command line option ‘-std=c99’ is valid for C/ObjC but not for C++ /opt/gcc/4.9.2/bin/g++ -o p2p -L/home/rfvander/grappa/lib -L/usr/local/lib -L/opt/intel/compilers_and_libraries_2016.1.150/linux/mpi/intel64/lib -L/opt/intel/compilers_and_libraries_2016.1.150/linux/mpi/intel64/lib/release_mt -L/usr/lib64 -O3 -std=c99 -DGRAPPA p2p.o -Wl,-Bstatic -lGrappa -lglog -lgflags -lgraph500-generator -lboost_system -lboost_filesystem -Wl,-Bdynamic -lmpicxx -lmpifort -lmpi -lmpigi -ldl -lrt -lpthread -lc /home/rfvander/grappa/lib/libglog.a(libglog_la-utilities.o): In function google::GetStackTrace(void**, int, int)': utilities.cc:(.text+0x70a): undefined reference to_Ux86_64_getcontext' utilities.cc:(.text+0x723): undefined reference to _ULx86_64_init_local' utilities.cc:(.text+0x776): undefined reference to_ULx86_64_get_reg' utilities.cc:(.text+0x7c6): undefined reference to `_ULx86_64_step' collect2: error: ld returned 1 exit status make: *\ [p2p] Error 1

From: Jacob Nelson [mailto:notifications@github.com] Sent: Friday, April 22, 2016 2:44 PM To: uwsampa/grappa Cc: Van Der Wijngaart, Rob F; Author Subject: Re: [uwsampa/grappa] Cannot build grappa applications (#278)

Super weird. I guess try adding "-lc" to the dynamic section of the libraries in that file as a temporary fix? It should be linked be default, though....

— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHubhttps://github.com/uwsampa/grappa/issues/278#issuecomment-213597798

nelsonje commented 8 years ago

In the original build output, there was a line like:

-- Using {${BASE_C_COMPILER},${BASE_CXX_COMPILER}} to build third-party dependencies (if needed).

What did it say for this build?

rfvander commented 8 years ago

I didn't capture that output myself. Does Grappa store it in a log file somewhere?

nelsonje commented 8 years ago

There's a file CMakeCache.txt in build/Make+Release that has the values of many of these variables; send that to me through email and I'll see if I have any ideas.

nelsonje commented 8 years ago

It's hard to tell much from the cache file. Try rebuilding with the flags --cc=$(which gcc) --cxx=$(which g++). Perhaps it's picking up a different version of g++ when building the library?

rfvander commented 8 years ago

Sadly, this did not change anything.

From: Jacob Nelson [mailto:notifications@github.com] Sent: Monday, April 25, 2016 11:20 PM To: uwsampa/grappa Cc: Van Der Wijngaart, Rob F; Author Subject: Re: [uwsampa/grappa] Cannot build grappa applications (#278)

It's hard to tell much from the cache file. Try rebuilding with the flags --cc=$(which gcc) --cxx=$(which g++). Perhaps it's picking up a different version of g++ when building the library?

— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHubhttps://github.com/uwsampa/grappa/issues/278#issuecomment-214627618

jeffhammond commented 8 years ago

Related:

jeffhammond commented 8 years ago

This is fixed by adding libunwind to grappa.mk manually, e.g.

# assign to LDLIBS for automatic builds using gmake default implicit rules
GRAPPA_LDLIBS=-Wl,-Bstatic  \
    -lGrappa \
    -lglog \
    -lgflags \
    -lgraph500-generator \
    -lboost_system \
    -lboost_filesystem \
    -Wl,-Bdynamic  \
    -lmpicxx \
    -lmpifort \
    -lmpi \
    -lmpigi \
    -lunwind-x86_64 -lunwind \
    -ldl \
    -lpthread \
    -lrt

This should not be necessary.

While we are on the subject of linked libraries, why is graph500-generator linked statically with every Grappa program? Do any of the PRKs need to generate Graph500 inputs???

Jeongseob commented 8 years ago

I am facing the same issue. In addition, the way from @jeffhammond didn't work for me. I manually modified the build/Make+Release/util/grappa.mk, but it still generates the same error.

Linking CXX executable hello_world.exe
../../third-party/lib/libglog.a(libglog_la-utilities.o): In function `google::GetStackTrace(void**, int, int)':
utilities.cc:(.text+0x70a): undefined reference to `_Ux86_64_getcontext'
utilities.cc:(.text+0x723): undefined reference to `_ULx86_64_init_local'
utilities.cc:(.text+0x776): undefined reference to `_ULx86_64_get_reg'
utilities.cc:(.text+0x7c6): undefined reference to `_ULx86_64_step'
collect2: error: ld returned 1 exit status
make[3]: *** [applications/demos/hello_world.exe] Error 1
make[2]: *** [applications/demos/CMakeFiles/demo-hello_world.dir/all] Error 2
make[1]: *** [applications/demos/CMakeFiles/demo-hello_world.dir/rule] Error 2
make: *** [demo-hello_world] Error 2
JackChuang commented 7 years ago

When I was trying to compile grappa's applications, I got a HTTP 404 Not Found. It seems the link is dead. Any ideas will be appreciated.

My working env: ubuntu14.04.3 gcc version 4.8.4

$ cd build/Make+Release $ make

(...omitted...) gcc.archive bin.v2/libs/test/build/gcc-4.8/release/link-static/threading-multi/libboost_unit_test_framework.a common.copy /home/jack/grappa/grappa/build/Make+Release/third-party/lib/libboost_unit_test_framework.a ...updated 10708 targets... [ 5%] No install step for 'third-party-boost' [ 5%] Completed 'third-party-boost' [ 8%] Built target third-party-boost [ 8%] Performing download step (download, verify and extract) for 'third-party-gflags' -- downloading... src='http://gflags.googlecode.com/files/gflags-2.0-no-svn-files.tar.gz' dst='/home/jack/grappa/grappa/build/Make+Release/third-party/build/gflags/src/gflags-2.0-no-svn-files.tar.gz' timeout='none' CMake Error at /home/jack/grappa/grappa/build/Make+Release/third-party/build/stamps/gflags/download-third-party-gflags.cmake:22 (message): error: downloading 'http://gflags.googlecode.com/files/gflags-2.0-no-svn-files.tar.gz' failed

status_code: 22
status_string: "HTTP response code said error"
log: Hostname was NOT found in DNS cache
Trying 173.194.205.82...

Connected to gflags.googlecode.com (173.194.205.82) port 80 (#0)

GET /files/gflags-2.0-no-svn-files.tar.gz HTTP/1.1

User-Agent: curl/7.35.0

Host: gflags.googlecode.com

Accept: /

The requested URL returned error: 404 Not Found

Closing connection 0

make[2]: * [third-party/build/stamps/gflags/third-party-gflags-download] Error 1 make[1]: * [third-party/CMakeFiles/third-party-gflags.dir/all] Error 2 make: *\ [all] Error 2 root@Jack-desktop:/home/jack/grappa/grappa/build/Make+Release# root@Jack-desktop:/home/jack/grappa/grappa/build/Make+Release#

jeffhammond commented 7 years ago

@JackChuang See https://github.com/uwsampa/grappa/issues/199.

JackChuang commented 7 years ago

@jeffhammond Thank you Jeff. I’ve fixed it. Instead of using --no-downloads flag, I used --third-party-tarfile= to run the ./configure.

JackChuang commented 7 years ago

Hi all, After successfully compiling and running demo-hello_world.exe, I’m now trying to run the benchmarks in the paper. I’m able to compile the demo-hello_world.exe with “make demo-hello_world.exe”. However, I cannot compile MapReduce_tests.exe and pagerank.exe by using the same way. I've also tried using docker. It could not work as well. Any help will be appreciated.

My steps and results are as follows:

./configure --cc=$(which gcc) --third-party-tarfile=

cd /build/Make+Release

make install

source install/bin/settings.sh

make MapReduce_tests.exe

_[ 7%] Built target graph500-generator [ 7%] Built target all-third-party [ 10%] Built target queryio [ 81%] Built target Grappa [ 86%] Built target generator [ 86%] Building CXX object applications/join/CMakeFiles/querylib.dir/HashJoin.cpp.o In file included from /home/jack/grappa/grappa/applications/join/HashJoin.cpp:1:0: /home/jack/grappa/grappa/applications/join/HashJoin.hpp: In lambda function: /home/jack/grappa/grappa/applications/join/HashJoin.hpp:104:44: error: ‘combine’ was not declared in this scope reducer.result->push_back( combine<OutType,VL,VR>(_left_it,_right_it) ); ^ /home/jack/grappa/grappa/applications/join/HashJoin.hpp:104:59: error: expected primary-expression before ‘,’ token reducer.result->push_back( combine<OutType,VL,VR>(_left_it,_right_it) ); ^ /home/jack/grappa/grappa/applications/join/HashJoin.hpp:104:62: error: expected primary-expression before ‘,’ token reducer.result->push_back( combine<OutType,VL,VR>(_left_it,_right_it) ); ^ /home/jack/grappa/grappa/applications/join/HashJoin.hpp:104:65: error: expected primary-expression before ‘>’ token reducer.result->push_back( combine<OutType,VL,VR>(_left_it,_right_it) ); ^ make[3]: * [applications/join/CMakeFiles/querylib.dir/HashJoin.cpp.o] Error 1 make[2]: * [applications/join/CMakeFiles/querylib.dir/all] Error 2 make[1]: * [applications/join/CMakeFiles/MapReduce_tests.exe.dir/rule] Error 2 make: * [MapReducetests.exe] Error 2