memtt / numaprof

NUMAPROF is a NUMA memory profliler based on Pintool to track your remote memory accesses.
https://memtt.github.io/numaprof
Other
45 stars 7 forks source link

Cannot find numaif.h in src/lib/portability/OS.cpp #35

Closed vishal-deka closed 2 years ago

vishal-deka commented 2 years ago

Running make inside the build directory returns the above error. Numactl is already present. Here is the error upon running make:

[ 95%] Building pintool plugin...
/home/vdeka/numaprof-1.1.2/src/integration/pintool/../../lib/portability/OS.cpp:19:11: fatal error: numaif.h: No such file or directory
  #include "numaif.h"
           ^~~~~~~~~~
compilation terminated.

How to get around this?

hbrunie commented 2 years ago

Hello, Are you trying this on linux ? If you try to find numaif.h in /usr/include ? (ls /usr/include/numaif.h)

Otherwise you can install it with the command (on Ubuntu 20.0 it works, probably depends on your linux distribution here) sudo apt-get install libnuma-dev

vishal-deka commented 2 years ago

Yes. It worked. But the compilation was still not complete. It is still stuck at 95%. This time the error is in SymbolRegistry.cpp. It says RTLD_DL_LINKMAP and dladdr1 was not found. [ 95%] Building pintool plugin... /home/vdeka/numaprof-1.1.2/src/integration/pintool/../../../extern-deps/from-malt-v2/SymbolRegistry.cpp: In member function ‘void MATT::SymbolRegistry::solveNames(MATT::LinuxProcMapEntry*)’: /home/vdeka/numaprof-1.1.2/src/integration/pintool/../../../extern-deps/from-malt-v2/SymbolRegistry.cpp:298:43: error: ‘RTLD_DL_LINKMAP’ was not declared in this scope if (dladdr1(it->first, &info, &extra, RTLD_DL_LINKMAP)) { ^~~~~~~~~~~~~~~ /home/vdeka/numaprof-1.1.2/src/integration/pintool/../../../extern-deps/from-malt-v2/SymbolRegistry.cpp:298:9: error: ‘dladdr1’ was not declared in this scope if (dladdr1(it->first, &info, &extra, RTLD_DL_LINKMAP)) { ^~~~~~~ /home/vdeka/numaprof-1.1.2/src/integration/pintool/../../../extern-deps/from-malt-v2/SymbolRegistry.cpp:298:9: note: suggested alternative: ‘dladdr’ if (dladdr1(it->first, &info, &extra, RTLD_DL_LINKMAP)) { ^~~~~~~ dladdr

hbrunie commented 2 years ago

Could you dump the full message error in a file : error.txt ? also the complete list of the command you used to reproduce the bug ? What is you OS + machine ? Thank you

ps: this might be helpful https://github.com/JuliaLang/julia/pull/16797/commits/dbe89b2315b7598aae30684c5c3cfd406e643ca0 Unfortunately I struggle with the formatting usage of numaprof to make a quick patch you could try on.

svalat commented 2 years ago

Hi, thanks for reporting the issue.

I made a test and I suppose you took the last version of PIN (3.21). It seems to cause the issue due to a change in their build system.

I will give a look, in the mean time you can take an older version. I don't tested all version but it looks to build with the oldest version available (3.13).

vishal-deka commented 2 years ago

@svalat Yes it works for the oldest available version- 3.13.

svalat commented 2 years ago

Fixed by commit bdffcaed6db3 which now allow to use the last version of PIN (tested: 3.24). The issue was just that pin do not declare de macro __PIN__ which select the wrong code in numaprof at build time instead of using the one dedicated to the pin integration.