13.07.2015 Views

automatically exploiting cross-invocation parallelism using runtime ...

automatically exploiting cross-invocation parallelism using runtime ...

automatically exploiting cross-invocation parallelism using runtime ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapter 6Conclusion and Future Direction6.1 ConclusionExploiting the performance of multi-core processors requires scalable parallel programs.Most automatic parallelization techniques parallelize iterations within the same loop <strong>invocation</strong>and synchronize threads at the end of each parallel <strong>invocation</strong>. Unfortunately,frequent synchronization limits the scalability of many software programs. In practice,iterations in different <strong>invocation</strong>s of a parallel loop are often independent. In order to exploitadditional <strong>cross</strong>-<strong>invocation</strong> <strong>parallelism</strong>, this thesis work proposes two novel automaticparallelization techniques. DOMORE and SPECCROSS synchronizes iterations <strong>using</strong> <strong>runtime</strong>information, and can therefore adapt to dependence patterns manifested by particularinputs. As a non-speculative technique, DOMORE is designed for programs with morefrequently manifesting <strong>cross</strong>-<strong>invocation</strong> dependences.SPECCROSS, on the other hand,yields better performance when those dependences seldom manifest at <strong>runtime</strong>. Evaluationdemonstrates that among twenty programs from seven benchmark suites, DOMOREcan be <strong>automatically</strong> applied to parallelize six of them and achieves a geomean speedupof 2.1× over codes without <strong>cross</strong>-<strong>invocation</strong> parallelization and 3.2× over the original sequentialperformance on 24 cores. SPECCROSS is found to be applicable to eight of the93

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!