<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial">Hi all,<div><br></div><div>I have also evaluated Poly compile-time performance with our patch file for polly-dependence pass. Results can be viewed on:</div><div><a href="http://188.40.87.11:8000/db_default/v4/nts/23?baseline=18&compare_to=18">http://188.40.87.11:8000/db_default/v4/nts/23?baseline=18&compare_to=18</a></div><div><br></div><div>With this patch file, Polly would only create a single parameter for memory accesses that share the same loop variable with different base address value. As a result, it can significantly reduce compile-time for some array-intensive benchmarks such like lu (reduced by 83.65%) and AMGMK (reduced by 56.24%).</div><div><br></div><div>For our standard benchmark a shown in <a href="http://llvm.org/bugs/show_bug.cgi?id=14240" style="line-height: 1.7;">http://llvm.org/bugs/show_bug.cgi?id=14240</a>, the total compile-time is reduced to 0.0164s f!
rom 154.5389s. Especially, the compile-time of <span style="line-height: 1.7;">polly-dependence is reduced to </span>0.0066s (40.5%) from <span style="line-height: 1.7;">148.8800s ( 96.3%).</span></div><div><span style="line-height: 1.7;"><br></span></div><div><span style="line-height: 1.7;">Cheers,</span></div><div><span style="line-height: 1.7;">Star Tan</span></div><div><br><span style="line-height: 1.7;">At 2013-07-31 01:03:11,"Star Tan" <tanmx_star@yeah.net> wrote:</span><br> <blockquote id="isReplyContent" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial"><div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial">Hi Tobias and all Polly developers,<div><br></div><div>I have re-evaluated the Polly compile-time performance using newest LLVM/Polly source code. You can view the results on <a href="http://18!
8.40.87.11:8000/db_default/v4/nts/16?compare_to=9&baseline=9&a
ggregation_fn=median" style="line-height: 1.7;">http://188.40.87.11:8000</a>.</div><div><br></div><div>Especially, I also evaluated our<span style="line-height: 1.7;"> </span><span style="line-height: 1.7;">r</span><span style="line-height: 1.7;">187102 </span><span style="line-height: 1.7;">patch file that avoids expensive failure string operations in normal execution</span><span style="line-height: 1.7;">. Specifically,</span><span style="line-height: 1.7;"> I evaluated two cases for it: </span></div><div><br></div><div>Polly-NoCodeGe!
n: <span style="font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 15px; line-height: 25px;">clang -O3 -load LLVMPolly.so</span><span style="font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 15px; line-height: 25px;"> -mllvm -polly-optimizer=none -mllvm -polly-code-generator=none</span></div><div><a href="http://188.40.87.11:8000/db_default/v4/nts/16?compare_to=9&baseline=9&aggregation_fn=median">http://188.40.87.11:8000/db_default/v4/nts/16?compare_to=9&baseline=9&aggregation_fn=median</a></div><div>Polly-Opt: <span style="font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 15px; line-height: 25px;">clang -O3 -load LLVMPolly.so -mllvm -polly</span></div><div><a href="http://188.40.87.11:8000/db_default/v4/nts/18?compare_to=11&baseline=11&aggregation_fn=median">http://188.40.87.11:8000/db_default/v4/nts/18?compare_to=11&baseline=11&aggregation_fn=median</a></div><div>&!
lt;!
span style="font-family: Helvetica, arial, freesans, clean, sans-serif
; font-size: 15px; line-height: 25px;"><br></div><div><font face="Helvetica, arial, freesans, clean, sans-serif"><span style="font-size: 15px; line-height: 25px;">The "Polly-NoCodeGen" case is mainly used to compare the compile-time performance for the polly-detect pass. As shown in the results, our patch file could significantly reduce the compile-time overhead for some benchmarks such as </span></font><a href="http://188.40.87.11:8000/db_default/v4/nts/16/graph?test.355=2" style="color: rgb(0, 136, 204); text-decoration: none; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 20px;">tramp3dv4</a> (24.2%), <a href="http://188.40.87.11:8000/db_default/v4/nts/16/graph?test.366=2" style="color: rgb(0, 136, 204); text-decoration: none; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 20px;">simple_types_constant_folding</a>(12.6%), <a href="http://188.40.87.11:8000/db_d!
efault/v4/nts/16/graph?test.331=2" style="color: rgb(0, 136, 204); text-decoration: none; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 20px;">oggenc</a>(9.1%), <a href="http://188.40.87.11:8000/db_default/v4/nts/16/graph?test.235=2" style="color: rgb(0, 136, 204); text-decoration: none; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 20px;">loop_unroll</a>(7.8%)</div><div><br></div><div><font face="Helvetica, arial, freesans, clean, sans-serif"><span style="font-size: 15px; line-height: 25px;">The "Polly-opt" case is used to compare the whole compile-time performance of Polly. Since our patch file mainly affects the Polly-Detect pass, it shows similar performance to "Polly-NoCodeGen". As shown in results, it reduces the compile-time overhead of some benchmarks such as </span></font><font face="Helvetica, arial, freesans, clean, sans-serif" style="line-height: 1.7;"><span style!
="" line-height:=""> </span></font><a href="ht
tp://188.40.87.11:8000/db_default/v4/nts/16/graph?test.355=2" style="color: rgb(0, 136, 204); text-decoration: none; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 20px;">tramp3dv4</a><span style="line-height: 1.7;"> (23.7%), </span><a href="http://188.40.87.11:8000/db_default/v4/nts/16/graph?test.366=2" style="color: rgb(0, 136, 204); text-decoration: none; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 20px;">simple_types_constant_folding</a><span style="line-height: 1.7;">(12.9%), </span><a href="http://188.40.87.11:8000/db_default/v4/nts/16/graph?test.331=2" style="color: rgb(0, 136, 204); text-decoration: none; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 20px;">oggenc</a><span style="line-height: 1.7;">(8.3%), </span><a href="http://188.40.87.11:8000/db_default/v4/nts/16/graph?test.235=2" style="color: rgb(0, 136, 204!
); text-decoration: none; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 20px;">loop_unroll</a><span style="line-height: 1.7;">(7.5%)</span></div><div><span style="line-height: 1.7;"><br></span></div><div>At last, I also evaluated the performance of the ScopBottomUp patch that changes the up-down scop detection into bottom-up scop detection. Results can be viewed by:</div><div><div>pNoCodeGen-<span style="line-height: 1.7;">ScopBottomUp: </span><span style="font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 15px; line-height: 25px;">clang -O3 -load LLVMPolly.so (v.s. LLVMPolly-ScopBottomUp.so) </span><span style="font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 15px; line-height: 25px;"> -mllvm -polly-optimizer=none -mllvm -polly-code-generator=none</span></div><div><a href="http://188.40.87.11:8000/db_default/v4/nts/21?compare_to=16&baseline=16&aggregation_fn=median!
">http://188.40.87.11:8000/db_default/v4/nts/21?compare_to=16&base
line=16&aggregation_fn=median</a></div><div>pOpt-ScopBottomUp: <span style="font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 15px; line-height: 25px;">clang -O3 -load LLVMPolly.so (v.s. LLVMPolly-ScopBottomUp.so) -mllvm -polly </span></div><div><a href="http://188.40.87.11:8000/db_default/v4/nts/19?compare_to=18&baseline=18&aggregation_fn=median">http://188.40.87.11:8000/db_default/v4/nts/19?compare_to=18&baseline=18&aggregation_fn=median</a></div></div><div>(*Both of these results are based on LLVM r187116, which has included the r187102 patch file that we discussed above)</div><div><br></div><div>Please notice that this patch file will lead to some errors in Polly-tests, so the data shown here can not be regards as confident results. For example, this patch can significantly reduce the compile-time overhead of <a href="http://188.40.87.11:8000/db_default/v4/nts/19/graph?test.17=2" style="color: rgb(0, 136, 204)!
; text-decoration: none; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 20px;">SingleSource/Benchmarks/Shootout/nestedloop</a> only because it regards the nested loop as an invalid scop and skips all following transformations and optimizations. However, I evaluated it here to see its potential performance impact. Based on the results shown on <a href="http://188.40.87.11:8000/db_default/v4/nts/21?compare_to=16&baseline=16&aggregation_fn=median" style="line-height: 1.7;">http://188.40.87.11:8000/db_default/v4/nts/21?compare_to=16&baseline=16&aggregation_fn=median</a>, we can see detecting scops bottom-up may further reduce Polly compile-time by more than 10%.</div><div><br></div><div>Best wishes,</div><div>Star Tan</div></div></div></blockquote></div></div>