<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000'><div style="color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><span class="Apple-style-span" style="border-collapse:collapse;color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px"><div>Jialu Huang will present her preFPO on Monday April 9 at 1PM in Room 301 (note room!!)<br>The members of her committee are:  David August, advisor; David Walker and Kai Li, <br>readers; Doug Clark and JP Singh, nonreaders.  Everyone is invited to attend her talk.<br>Her abstract follows below.<br><br></div><div>=========================================================================================</div><div>Abstract:<br><br>Automatic parallelization is a promising approach to deliver scalable multi-threaded<br>
programs for multi-core architectures. Most existing techniques parallelize independent<br>loops and insert global synchronizations at the end of each loop invocation. For programs<br>with few loop invocations, these global synchronizations do not limit parallel<br>
execution performance. However, for programs with many loop invocations, those synchronizations<br>can easily become the performance bottleneck since they frequently force<br>all threads to wait, losing potential parallelization opportunities. Some automatic parallelization<br>
techniques apply static analyses to enable cross-invocation parallelization.<br>Instead of waiting, threads can execute iterations from follow-up invocations if they do<br>not cause any conflict. However, static analyses must be conservative, and therefore </div>
<div>cannot handle programs with irregular dependence patterns.</div><div><br>In order to enable more parallelization across loop invocations, this thesis presents<br>two novel automatic parallelization techniques: BLISS and SBS. Unlike existing techniques<br>
relying on static analyses, these two techniques take advantage of runtime information<br>to achieve much more aggressive parallelization. BLISS constructs a custom<br>runtime engine which non-speculatively observes dependences at runtime and synchronizes<br>
iterations only when necessary; while SBS applies software speculative barriers<br>to permit some of the threads to execute past the invocation boundaries. The two techniques<br>are complimentary in the sense that they can parallelize programs with potentially<br>
very different characteristics. SBS is most effective when a program's cross-invocation</div><div>dependences rarely cause a runtime conflict. BLISS' runtime engine imposes a marginal </div><div>amount of overhead, but it also enables the technique to effectively parallelize programs </div>
<div>whose dependences can cause frequent conflicts. Preliminary implementation and evaluation </div><div>demonstrate that both techniques can achieve much better</div><div>scalability compared to existing automatic parallelization techniques.</div>
<div><br></div><div>==============================================================================================</div></span>
</div><br></div></body></html>