1 |
17 |
gshankara |
**************************************************************************************
|
2 |
27 |
gshankara |
Rev 1.0 Initial version to get familiar with the process(SECTION 1).
|
3 |
|
|
|
4 |
|
|
Rev 1.1 Added common procedures to do encoder profiling and uploading the results to the repository(SECTION 2)
|
5 |
|
|
*************************************************************************************
|
6 |
|
|
|
7 |
|
|
|
8 |
|
|
|
9 |
17 |
gshankara |
**************************************************************************************
|
10 |
27 |
gshankara |
SECTION 1
|
11 |
|
|
**************************************************************************************
|
12 |
|
|
This section (consisting of 5 steps)is targeted at newbies who are unfamiliar with what to do after obtaining the
|
13 |
17 |
gshankara |
X264 encoder source from videolan.org
|
14 |
|
|
|
15 |
|
|
Options may have to be changed as needed for a particular situation.
|
16 |
|
|
|
17 |
|
|
This is basically summarized from the threads in the topic
|
18 |
|
|
"VLC x264 GCC profiling" under [Home » All forums » OC H.264 project]
|
19 |
|
|
|
20 |
27 |
gshankara |
System used for section 1 : Atom N270 (1.6 GHz) with 1GB DDR2 (667 MHz) running Ubuntu Netbook Remix
|
21 |
|
|
-----------------------------------------------------------------------------------------------------------------------
|
22 |
17 |
gshankara |
|
23 |
|
|
STEP 1 of 5:
|
24 |
|
|
|
25 |
|
|
To get all the x264 files:
|
26 |
|
|
test $ git clone git://git.videolan.org/x264.git
|
27 |
|
|
|
28 |
|
|
**************************************************************************************
|
29 |
|
|
|
30 |
|
|
STEP 2 of 5: Setup for enabling profiling, debug
|
31 |
|
|
|
32 |
|
|
test $ ./configure --disable-avis-input --disable-mp4-output --disable-pthread --enable-debug --enable-gprof
|
33 |
|
|
|
34 |
|
|
Platform: X86
|
35 |
|
|
System: LINUX
|
36 |
|
|
asm: yes
|
37 |
|
|
avis input: no
|
38 |
|
|
mp4 output: no
|
39 |
|
|
pthread: no
|
40 |
|
|
debug: yes
|
41 |
|
|
gprof: yes
|
42 |
|
|
PIC: no
|
43 |
|
|
shared: no
|
44 |
|
|
visualize: no
|
45 |
|
|
|
46 |
|
|
You can run 'make' or 'make fprofiled' now.
|
47 |
|
|
|
48 |
|
|
**************************************************************************************
|
49 |
|
|
STEP 3 of 5: Run the make script to build
|
50 |
|
|
|
51 |
|
|
test $ make -f Makefile
|
52 |
|
|
|
53 |
|
|
rm -f .depend
|
54 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/mc.c -MT common/mc.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/predict.c -MT common/predict.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/pixel.c -MT common/pixel.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/macroblock.c -MT common/macroblock.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/frame.c -MT common/frame.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/dct.c -MT common/dct.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/cpu.c -MT common/cpu.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/cabac.c -MT common/cabac.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/common.c -MT common/common.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/mdate.c -MT common/mdate.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/set.c -MT common/set.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/quant.c -MT common/quant.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/vlc.c -MT common/vlc.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX encoder/analyse.c -MT encoder/analyse.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX encoder/me.c -MT encoder/me.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX encoder/ratecontrol.c -MT encoder/ratecontrol.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX encoder/set.c -MT encoder/set.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX encoder/macroblock.c -MT encoder/macroblock.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX encoder/cabac.c -MT encoder/cabac.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX encoder/cavlc.c -MT encoder/cavlc.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX encoder/encoder.c -MT encoder/encoder.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX encoder/lookahead.c -MT encoder/lookahead.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/x86/mc-c.c -MT common/x86/mc-c.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX common/x86/predict-c.c -MT common/x86/predict-c.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX x264.c -MT x264.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX matroska.c -MT matroska.o -MM -g0 1>> .depend; gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX muxers.c -MT muxers.o -MM -g0 1>> .depend;
|
55 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o x264.o x264.c
|
56 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o matroska.o matroska.c
|
57 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o muxers.o muxers.c
|
58 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/mc.o common/mc.c
|
59 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/predict.o common/predict.c
|
60 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/pixel.o common/pixel.c
|
61 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/macroblock.o common/macroblock.c
|
62 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/frame.o common/frame.c
|
63 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/dct.o common/dct.c
|
64 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/cpu.o common/cpu.c
|
65 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/cabac.o common/cabac.c
|
66 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/common.o common/common.c
|
67 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/mdate.o common/mdate.c
|
68 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/set.o common/set.c
|
69 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/quant.o common/quant.c
|
70 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/vlc.o common/vlc.c
|
71 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o encoder/analyse.o encoder/analyse.c
|
72 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o encoder/me.o encoder/me.c
|
73 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o encoder/ratecontrol.o encoder/ratecontrol.c
|
74 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o encoder/set.o encoder/set.c
|
75 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o encoder/macroblock.o encoder/macroblock.c
|
76 |
|
|
encoder/macroblock.c: In function ‘x264_macroblock_probe_skip’:
|
77 |
|
|
encoder/macroblock.c:852: warning: ‘mvp[1]’ may be used uninitialized in this function
|
78 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o encoder/cabac.o encoder/cabac.c
|
79 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o encoder/cavlc.o encoder/cavlc.c
|
80 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o encoder/encoder.o encoder/encoder.c
|
81 |
|
|
encoder/encoder.c: In function ‘x264_slice_write’:
|
82 |
|
|
encoder/encoder.c:1279: warning: ‘bs_bak.i_bits_encoded’ may be used uninitialized in this function
|
83 |
|
|
encoder/encoder.c:1279: warning: ‘bs_bak.i_left’ may be used uninitialized in this function
|
84 |
|
|
encoder/encoder.c:1279: warning: ‘bs_bak.cur_bits’ may be used uninitialized in this function
|
85 |
|
|
encoder/encoder.c:1279: warning: ‘bs_bak.p_end’ may be used uninitialized in this function
|
86 |
|
|
encoder/encoder.c:1279: warning: ‘bs_bak.p’ may be used uninitialized in this function
|
87 |
|
|
encoder/encoder.c:1279: warning: ‘bs_bak.p_start’ may be used uninitialized in this function
|
88 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o encoder/lookahead.o encoder/lookahead.c
|
89 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/x86/mc-c.o common/x86/mc-c.c
|
90 |
|
|
gcc -O1 -g -Wall -I. -pg -DHAVE_MALLOC_H -march=i686 -mfpmath=sse -msse -DHAVE_MMX -DARCH_X86 -DSYS_LINUX -c -o common/x86/predict-c.o common/x86/predict-c.c
|
91 |
|
|
yasm -O2 -f elf -Icommon/x86/ -o common/x86/cabac-a.o common/x86/cabac-a.asm
|
92 |
|
|
yasm -O2 -f elf -Icommon/x86/ -o common/x86/dct-a.o common/x86/dct-a.asm
|
93 |
|
|
yasm -O2 -f elf -Icommon/x86/ -o common/x86/deblock-a.o common/x86/deblock-a.asm
|
94 |
|
|
yasm -O2 -f elf -Icommon/x86/ -o common/x86/mc-a.o common/x86/mc-a.asm
|
95 |
|
|
yasm -O2 -f elf -Icommon/x86/ -o common/x86/mc-a2.o common/x86/mc-a2.asm
|
96 |
|
|
yasm -O2 -f elf -Icommon/x86/ -o common/x86/pixel-a.o common/x86/pixel-a.asm
|
97 |
|
|
yasm -O2 -f elf -Icommon/x86/ -o common/x86/predict-a.o common/x86/predict-a.asm
|
98 |
|
|
yasm -O2 -f elf -Icommon/x86/ -o common/x86/quant-a.o common/x86/quant-a.asm
|
99 |
|
|
yasm -O2 -f elf -Icommon/x86/ -o common/x86/sad-a.o common/x86/sad-a.asm
|
100 |
|
|
yasm -O2 -f elf -Icommon/x86/ -o common/x86/cpu-a.o common/x86/cpu-a.asm
|
101 |
|
|
yasm -O2 -f elf -Icommon/x86/ -o common/x86/dct-32.o common/x86/dct-32.asm
|
102 |
|
|
yasm -O2 -f elf -Icommon/x86/ -o common/x86/pixel-32.o common/x86/pixel-32.asm
|
103 |
|
|
ar rc libx264.a common/mc.o common/predict.o common/pixel.o common/macroblock.o common/frame.o common/dct.o common/cpu.o common/cabac.o common/common.o common/mdate.o common/set.o common/quant.o common/vlc.o encoder/analyse.o encoder/me.o encoder/ratecontrol.o encoder/set.o encoder/macroblock.o encoder/cabac.o encoder/cavlc.o encoder/encoder.o encoder/lookahead.o common/x86/mc-c.o common/x86/predict-c.o common/x86/cabac-a.o common/x86/dct-a.o common/x86/deblock-a.o common/x86/mc-a.o common/x86/mc-a2.o common/x86/pixel-a.o common/x86/predict-a.o common/x86/quant-a.o common/x86/sad-a.o common/x86/cpu-a.o common/x86/dct-32.o common/x86/pixel-32.o
|
104 |
|
|
ranlib libx264.a
|
105 |
|
|
gcc -o x264 x264.o matroska.o muxers.o libx264.a -pg -lm
|
106 |
|
|
|
107 |
|
|
**************************************************************************************
|
108 |
|
|
STEP 4 of 5: Setup the required profile to run, specify the input YUV file, output file and resolution
|
109 |
|
|
|
110 |
|
|
test $ ./x264 --profile=baseline -o test_BUS_352x288_30_orig_01.264 BUS_352x288_30_orig_01.yuv 352x288
|
111 |
|
|
|
112 |
|
|
x264 [info]: 352x288 @ 25.00 fps
|
113 |
|
|
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
|
114 |
|
|
x264 [info]: profile Baseline, level 1.3
|
115 |
|
|
x264 [info]: frame I:1 Avg QP:19.53 size: 34850
|
116 |
|
|
x264 [info]: frame P:149 Avg QP:27.87 size: 4395
|
117 |
|
|
x264 [info]: mb I I16..4: 7.3% 0.0% 92.7%
|
118 |
|
|
x264 [info]: mb P I16..4: 0.1% 0.0% 0.7% P16..4: 47.6% 29.5% 14.0% 0.0% 0.0% skip: 8.0%
|
119 |
|
|
x264 [info]: coded y,uvDC,uvAC intra:94.1% 82.2% 65.0% inter:44.0% 14.1% 2.1%
|
120 |
|
|
x264 [info]: ref P L0 76.0% 15.3% 8.7%
|
121 |
|
|
x264 [info]: kb/s:919.6
|
122 |
|
|
|
123 |
|
|
encoded 150 frames, 12.46 fps, 920.37 kb/s
|
124 |
|
|
|
125 |
|
|
**************************************************************************************
|
126 |
|
|
STEP 5 of 5: Run profiling and redirect the results to a text file
|
127 |
|
|
|
128 |
|
|
test $ gprof -b x264 gmon.out >profile_test.txt
|
129 |
|
|
|
130 |
|
|
|
131 |
27 |
gshankara |
**************************************************************************************
|
132 |
|
|
SECTION 2 (originally posted by Gil onthe H.264 forum)
|
133 |
|
|
**************************************************************************************
|
134 |
|
|
|
135 |
|
|
VLC x264 GCC profiling
|
136 |
|
|
|
137 |
|
|
I suggest the following procedure for profiling:
|
138 |
|
|
|
139 |
|
|
1. use the executable from the repository /oc-h264-encoder/trunk/doc/x264_profiling/bin/x264 for encoding the .yuv file, using the format:
|
140 |
|
|
|
141 |
|
|
./x264 --profile=baseline -o test.264 test.yuv widthxheight
|
142 |
|
|
|
143 |
|
|
2. Check that the output test.264 is correct. you can play it on vlc player and check that it looks like the original .yuv file.
|
144 |
|
|
|
145 |
|
|
3. upload the gmon.out file made by the execution of x264 to the repository:
|
146 |
|
|
|
147 |
|
|
/oc-h264-encoder/trunk/doc/x264_profiling/gmon_files/
|
148 |
|
|
|
149 |
|
|
name it as follows:
|
150 |
|
|
|
151 |
|
|
file_name_widthxheight_gmon.out
|
152 |
|
|
|
153 |
|
|
for example: akiyo_qcif_176x144_gmon.out
|
154 |
|
|
|
155 |
|
|
4. when commiting, let the comment include the following info:
|
156 |
|
|
added profiling output for file: filename.yuv from: url with size: widthxheight
|
157 |
|
|
|
158 |
|
|
for example: added profiling output for file: akiyo_qcif.yuv from: http://trace.eas.asu.edu/yuv/akiyo/akiyo_qcif.7z with size: 176x144.
|
159 |
|
|
|
160 |
|
|
I think it would be good to start with the files from:http://trace.eas.asu.edu/yuv/
|
161 |
|
|
|
162 |
|
|
After we get enough gmon.out files, we can check their relative computation intensive functions and start debating which parts to implement in HW.
|
163 |
|
|
|