<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>Hi Kumar, </div><div><br></div><div>Are the data below all collected when only one function is picked for instrumentation? Do you have data when such manual selection is not done?</div><div><br></div><div>thanks,</div><div><br></div><div>David</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
numpaths = Number of possible paths<br>
epp+compile = Time taken to compute encoding, insert instrumentation and compile to executable<br>
compile = Time taken to compile to executable<br>
execpaths = Number of paths dynamically executed<br>
epp-exec-time = Execution time with instrumentation<br>
exec-time = Normal execution time<br>
epp-bin-size = Size of instrumented binary in bytes<br>
bin-size = Size of binary<br>
** size of shared library in bytes = 598042<br>
<br>
<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| benchmark | numpaths | epp+compile | compile | execpaths | epp-exec-time | exec-time | epp-bin-size | bin-size |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| blks | 2 | 0m1.036s | 0m1.008s | 2 | 0m3.643s | 0m3.205s | 155931 | 155459 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| bodytrack | 29 | 0m4.907s | 0m4.881s | 5 | 0m14.786s | 0m1.943s | 2125256 | 2124224 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| bzip2 | 60 | 0m1.274s | 0m1.268s | 3 | 0m9.441s | 0m9.624s | 259125 | 258477 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| ferret | 360921 | 0m26.208s | 0m26.102s | 40 | 0m10.342s | 0m6.224s | 8342571 | 8338588 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| fluidanimate | 384117 | 0m0.895s | 0m0.869s | 88 | 0m56.631s | 0m1.294s | 202702 | 197878 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| freqmine | 45 | 0m1.220s | 0m1.214s | 18 | 0m22.150s | 0m5.515s | 278615 | 277656 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| gcc | 6026 | 0m31.941s | 0m31.327s | 125 | 1m30.139s | 0m36.601s | 6991413 | 6991245 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| hmmer | 1882 | 0m3.193s | 0m3.232s | 65 | 0m58.911s | 0m2.474s | 744510 | 742806 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| mcf | 230 | 0m0.838s | 0m0.830s | 10 | 0m11.097s | 0m3.074s | 162680 | 161736 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| mcf2000 | 1155 | 0m0.859s | 0m0.853s | 26 | 0m24.169s | 0m4.625s | 166092 | 165213 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| povray | 17 | 0m8.543s | 0m8.552s | 4 | 9m24.562s | 5m39.295s | 2388152 | 2387960 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| sjeng | 158740 | 0m1.648s | 0m1.637s | 280 | 0m20.786s | 0m5.229s | 368841 | 368009 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| soplex | 30 | 0m4.849s | 0m4.848s | 24 | 7m28.151s | 4m10.813s | 1244775 | 1242063 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| sphinx | 26 | 0m2.212s | 0m2.198s | 5 | 1m36.291s | 0m13.811s | 543534 | 543358 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| streamcluster | 21121728 | 0m0.947s | 0m0.908s | 33 | 0m50.212s | 0m5.986s | 191981 | 185438 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| swaptions | 20655 | 0m0.965s | 0m0.950s | 13 | 0m0.263s | 0m0.178s | 193841 | 184274 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| h264ref | 24130 | 0m4.278s | 0m4.272s | 76 | 3m26.701s | 3m4.461s | 816660 | 812396 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| lbm | 8 | 0m0.824s | 0m0.815s | 5 | 6m29.685s | 1m39.180s | 150871 | 150327 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
| namd | 59598954 | 0m4.124s | 0m4.139s | 43 | 18m36.447s | 6m50.288s | 925863 | 925271 |<br>
+---------------+----------+-------------+-----------+-----------+---------------+-----------+--------------+----------+<br>
<span class=""><br>
<br>
<br>
> > Open Issues :<br>
> > + Update PathProfileInfo on CFG transformations ?<br>
<br>
> Could you clarify what this means?<br>
<br>
</span>Changing the control flow graph of a routine may invalidate collected path profiles. For example, splitting a block with an unconditional branch does not change the profile, but introducing a conditional branch invalidates the profile. The issue I would like to address is which transformations should we allow as safe transformations and how should we update the internal path profile data structures if we allow this at all.<br>
<span class=""><br>
> > + Verify with PGOEdge info ?<br>
<br>
> Ditto.<br>
<br>
</span>Verification with PGOEdge info implies that the edge frequencies derived from path profiles and via instrprof should be equal.<br>
<span class=""><br>
> > + Handle setjmp, longjmp, early program termination, noreturn calls<br>
<br>
> How do you handle indirect calls?<br>
<br>
</span>No special handling of indirect calls as path profiles are intra-procedural and control returns to same basic block<br>
after call in the general case. For the above mentioned cases, control may not return.<br>
<br>
<br>
Regards,<br>
Snehasish<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</div></div></blockquote></div><br></div></div>