Unable to compile GraphLab analytics with MPI

User 90 | 3/5/2014, 10:43:40 PM

I am trying to compile GraphLab analytics and am using gcc-4.7.2 and mvapich2-1.9 to do the same. However, I am getting the following error:

/act/mvapich2-1.9/gcc-4.7.2/lib/libmpich.a(memhooks.o): In function munmap': mem_hooks.c:(.text+0x320): multiple definition of munmap' /home/kvora001/workspace/graphlab/graphlab-2.2/deps/local/lib/libtcmalloc.a(libtcmallocinternalla-mallochook.o):/home/kvora001/workspace/graphlab/graphlab-2.2/deps/t cmalloc/src/libtcmalloc/src/mallochookmmap_linux.h:183: first defined here collect2: ld returned 1 exit status make[2]: * [toolkits/graphanalytics/connectedcomponent_stats] Error 1 make[1]: * [toolkits/graphanalytics/CMakeFiles/connectedcomponent_stats.dir/all] Error 2

I have attached config.log and make.log (output of make command). Please let me know how I can fix this.

Comments

User 20 | 3/5/2014, 11:05:41 PM

There is a conflict in the definition munmap between mvapich2 and tcmalloc. For some reason mvapich2 redefines munmap in src/mpid/ch3/channels/common/src/memory/mem_hooks.c. I am not sure what mvapich2 is doing here.

An option is to compile graphlab without tcmalloc. To do this you run ./configure --no_tcmalloc


User 90 | 3/5/2014, 11:10:49 PM

There doesn't seem to be any option --no_tcmalloc.

$$ ./configure --notcmalloc Unrecognized option: --notcmalloc To get help, run ./configure --help

$$ ./configure --help Usage: ./configure [--prefix=PREFIX] [--experimental] --cleanup remove all build directories --prefix=[PREFIX] GraphLab Installation target directory. Defaults to /usr/local --ide=[Xcode] Specify the ide to use when building GraphLab. --noopenmp Disables OpenMP. Disabled by default on Mac. --nojvm Disable JVM features including HDFS integration. --experimental Turns on undocumented experimental capabilities. --c++11 Turns on C++11 experimental features. --vid32 Switch to 32bit vertex ids. -D var=value Specify definitions to be passed on to cmake.


User 20 | 3/5/2014, 11:12:17 PM

Make sure you have the latest pull from the repository.


User 90 | 3/5/2014, 11:34:39 PM

Latest pull from the repository worked fine with --no_tcmalloc. Thanks Yucheng.

So does that mean I won't be able to use tcmalloc and/or GraphLab 2.2 release with mvapich2?


User 20 | 3/5/2014, 11:49:49 PM

I am not sure.... It seems like both mvapich2 and tcmalloc redefines munmap. mvapich2 in the location I mentioned above, and tcmalloc in src/mallochookmmap_linux.h.

I am not entirely sure why they did so. It will mean tcmalloc and mvapich2 will not link together nicely. I don't see an obvious workaround...


User 90 | 3/5/2014, 11:51:37 PM

Okay. Thanks Yucheng.


User 184 | 3/31/2014, 2:17:16 PM

I found an approach to use tcmalloc and GraphLab 2.2 with mvapich2: 1) Install mpich( I use mpich-3.04) on a machine to compile your program . Don't add "--no_tcmalloc " option when configure. 2) Install mvapich2(I use mvapich2-1.9 ) on others machines to run program ;