./configure && make
Note that for the binary-only release you should not run make
-- just run configure
to download the relevant pin release.
The tool only supports being run from the source root of hbpintool
.
From the hbpintool
directory run these commands to profile your GraphIt program:
source SOURCE_THIS
./hbpintool /path/to/your/graphit/program [your-graphit-program-arguments]
You should find the output in a file called hbpintool.out
You'll get more accurate measurements if aggresive compiler optimizations are turned on.
For accuracy the tool relies on the GraphIt generated edgeset_apply
function being defined in the program executable.
However, depending on how the GraphIt C++ output was compiled, this function may have been inlined.
To keep this from happening, open the .cpp
file generated by graphitc.py
and add __attribute__((noinline))
to the definition
of the templated edgeset_apply
function (the exact name depends on the GraphIt schedules used).
This tool is only written to profile serial code (Don't compile the GraphIt program with -fopenmp).
The models it uses to calculate energy factors in the parallelism for the relevant hardware.
This tool can only run on Intel x86_64 processors.
This requires that the GraphIt shared object be compiled e.g. APPLICATION.cpython-36m-x86_64-linux-gnu.so
.
Invoke hbpintool
like this:
./hbpintool --gtdll /path/to/your/graphit/app.cpython.so `which python3` /path/to/your/python/script.py [your-python-script-arguments]`
Note that the which python3
expands to the absolute path to your Python interpreter and it takes the place of your program in the invocation.
Do NOT invoke hbpintool
on your python script directly. It will not work!