Accelerator for C++ STL source code/output is collected by each profiler
For all:
- Run gprof on
./benchmarks/Simple_push_back/push_back.cpp
and Pseudo Inverse Test by Nghia Ho's blog from./benchmarks/test_matrix_pseudoinverse.cpp
./benchmarks/test_matrix_pseudoinverse.cpp on:
- Simple_push_back
- OpenCV
- Eigen
- Armadillo + OpenBLAS
- Armadillo + Atlas (no multi-core supportout of the box???)
- OpenCV
- Replace the content of
benchmarks/Wicht_STL_synthetic/Makefile
.
To compile & generate flat-profiled benchmark data Simple_push_back:
cd benchmarks/Simple_push_back
make
Opencv:
cd benchmarks/opencv
make
To install opencv, first clone to <project_dir> (parent dir of AccPlusPlus), then run ```./build_open_cv.sh`` bash:
cd ../
git clone https://github.com/opencv/opencv.git.
cd AccPlusPlus
./build_open_cv.sh
Eigen:
cd benchmarks/eigen
make
Armadillo + OpenBLAS (FrankieD4C: For arma and opencv benchmark, I removed -O3 flag when compile since gprof cannot work):
cd benchmarks/arma
make openblas
Armadillo + Atlas:
cd benchmarks/arma
make altas
OpenCV
cd benchmarks/opencv
make
Full tutorial Pseudo Inverse Test by Nghia Ho's blog
To generate function directed acyclic graph (DAG), run change gprof instruction in Makefile to pipe to gprof. For example, as in Simple_push_back
gprof ./push_back.o gmon.out | tee push_back.prof | gprof2dot -n0 -e0| dot -Tpng -o func_dag.png
sample output :
To generate line by line profliling, add similar contents as for simple_push_back (we indeed use gcov instead):
push_back_line_by_line.o: push_back.cpp
g++ -std=c++11 -fprofile-arcs -ftest-coverage push_back.cpp
gcov push_back.cpp
mv *.gcov gcov_out
- Plot the histogram of leaf function like Figure 3 by Gope et al
-
Find the "bottleneck" (performance, power, etc)
- Granularity of the analysis: Memory address, Memory size, leaf function, "semantic operations" (what the program mainly does)
-
Discuss with Prof. by this Friday (11/22)
- Memory slab plot for memory allocation like Figure 8(a), similar to the idea of "heap manager" for PHP acceleration.
- "psudo-deep copy" upon value assignment (Lvalue vs Rvalue):
-
Opencv:
- Image Processing: ela digits pca dft kmeanst kalman minarea
- Algorithm: convexhull travelsalesman
- Video: disopticalflow smiledetect
- IO: filestorage treeengine