DG-Miner is a high average utility pattern miner designed for critical path analysis of processor dependence graphs.
DG-Miner is a tool designed for mining high average utility patterns to analyze critical paths in processor dependence graphs. It is particularly useful for understanding dependencies and performance characteristics in processor execution.
To build DG-Miner, follow these steps:
cd algorithm
makeFollowing DG_Miner version will be generated:
DG_Miner: the mining frequent pattern program with concise pattern judgment mechanism, upper bound is adjustable, parameter setting for general analysis.
DG_Miner_prt: compile with -DPRINT, DG_Miner + program analysis + dumpout pattern trace file.
DG_Miner_maxbound: compile with -DMAXBOUND, DG_Miner but maximum utility as upper bound.
DG_Miner_no_cpjm: compile with -DNOCPJM, DG_Miner without concise pattern judgment mechanism.
DG_Miner_pecu: compile with -DPECU and -DPRINT, DG_Miner but parameter setting for peculiarity analysis.
To run tests on DG-Miner using the provided test trace, use the following commands:
cd algorithm
make testThe print out information format is as follows:
++++++++++++++++++++++++++++++++++++++++
trace:"<critical path trace file>"
minpau:<minimum database average utility threshold>
minu:<minimum occurrence average utility threshold>
upbound:<upper bound>
minpecusup:<minimum peculiar utility threshold>
[n]<candidate from frequent patterns>:<support>:<average utility>:<peculiarity>|<region0>:<occurrence>,...
[c]<candidate from high upper bound patterns>:<support>:<average utility>:<peculiarity>
================== result =====================
[n]<frequent pattern>
concise patts:
<concise pattern>
-------------------- top pc region -----------------------------
<when define PRINT>
<region number>:<occurrence>
[<freqatt number>]:<occurrence>,
pc:code
---------------------------------------------------------------
<summary information>
minpau=... minpecusup=... minlen=... maxlen=...
minu=... upbound=...
The number of frequent patterns:...
The time-consuming:...ms.
The number of calculation:...
The number of concise patts:...
Max len of frequent patts:...
The peak memory usage:...Mb.
The curr memory usage:...Mb.
To run DG-Miner using a spec cpu2006/2017 trace, use the following command format:
cd algorithm
./DG_Miner simpoint_weights critical_paths pc_mem_trace output_file minlen maxlen topkFor example, to run DG-Miner on the 456.hmmer trace from spec cpu2006:
cd algorithm
./DG_Miner_prt ../database/test/test.simpoint_weight ../database/spec2006_archexp/critical_path/456.hmmer_0/ ../database/spec2006_archexp/pc_mem_trace/trace_1M-456.hmmer_0_simpoint_instruction_flow spec2006-456.hmmer_0.txt 2 10 0.2 | tee spec2006-456.hmmer_0.logFollowing additional statistical codes are used to generate the results in the paper "A Dependence Graph Pattern Mining Method for Processor Performance Analysis".
The stat_utility program aids in understanding the distribution of weights within the trace files, providing insights into the prevalence of different instruction types or events based on their assigned weights.
cd algorithm
g++ -std=c++17 stat_utility.cpp -lstdc++fs -o stat_utility
./stat_utility ../database/spec2006_archexp/critical_path/ ../database/spec2017_archexp/critical_path/The sort_event program assists in understanding the relative importance of different events in the log by analyzing their cumulative weights. Usage example of spec2006 456.hmmer:
cd algorithm
g++ sort_event.cpp -o sort_event
./sort_event spec2006-456.hmmer_0.txt 1500777The file spec2006-456.hmmer_0.txt is generate by DG_Miner_prt.
The visualize_code_region.py script provides a clear overview of the weights associated with different events in the specified code region, aiding in performance analysis and optimization efforts.
Usage example of spec2017 600.perlbench_s:
cd algorithm
python gen_pc_code.py spec2017-600.perlbench_s_0.log 600.trace
python visualize_code_region.py 600.trace spec2017-600.perlbench_s_0.txt 0xb88e0 0xb8910The 600.trace file can by generate by truncating the printout produced by DG_Miner_prt using gen_pc_code.py. And the spec2017-600.perlbench_s_0.txt is the result file of DG_Miner_prt.