Represetative warp selector for nvidia GPU. Using instruction distribution as warp features and using Kmean algorithm from sklearn to cluster.
Input: dir contains .gz trace files from Accel-sim Tracer
Output: .bin boost file, the data struct(defined in trace_parser.h) is below
// Data structure shared with external warp selector
struct KernelRepWarp {
int kernelNumber;
int repWarpIdx;
template <class Archive>
void serialize(Archive &ar, const unsigned int version) {
ar &kernelNumber;
ar &repWarpIdx;
}
};How to use
Install and replace gzstream and boost path in makefile
pip install numpy scikit-learnmake clean && make
./trace_processor.out /path/to/benchmark/traces outputs
python cluster_and_select_warp.py outputs benchmark.txt
./txt_to_boost_bin.out benchmark.txt rptv_warp_selector.binThe warp index is across threadblock. For example:
TB 0 0 0
warp 0 warp 1 warp 2 warp 3
TB 1 0 0
warp 0 warp 1 warp 2 warp 3then warpIdx 5 mean warp 1 in TB 1 0 0
About parse_result.py after run gcom like
./bin/GCoM -w 1 -r represetative_warp_selector/rep_warp_out.bin -C configs/RTX2060.config -t ~/Benchmarks/GCoM_trace_samples/rtx2060/11.0/gemm_bench-tencore/inference_half_7680_1_2560_0_0/traces | tee result.txtthen run
python parse_result.py result.txt deepbench_gemm_gcom.csvNot official support for GCoM [ISCA '22], GCStack+GCScaler [ISCA '25], Accel-sim [ISCA '20]
See more details in:
https://github.com/yonsei-hpcp/gcom
https://github.com/yonsei-hpcp/gcstack_gcscaler
https://github.com/accel-sim/accel-sim-framework