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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Chapter 4Speculatively ExploitingCross-Invocation ParallelismDOMORE provides a non-speculative solution to <strong>exploiting</strong> <strong>cross</strong>-<strong>invocation</strong> <strong>parallelism</strong><strong>using</strong> <strong>runtime</strong> information. However, DOMORE’s transformation requires the constructionof a scheduler thread. If the code duplication causes any side effect, DOMORE cannot beapplied. Figure 4.1 demonstrates such a loop nest. The <strong>cross</strong>-<strong>invocation</strong> dependence patternbetween loop <strong>invocation</strong>s L1 1 and L1 0 is determined by the index array C. However,array C itself is updated in Loop L2, preventing the inspector from getting the addressesaccessed in L1 without updating the values in array C. Among the candidate benchmarkprograms, we observe that two of them cannot be parallelized by DOMORE because ofthis limitation. Alternatively, since speculative solutions do not check the accessed memoryaddresses before scheduling and executing a loop iteration, they do not have the sameconstraints and can achieve better applicability.This motivates the idea of SPECCROSS, the first automatic parallelization techniquedesigned to aggressively exploit <strong>cross</strong>-<strong>invocation</strong> <strong>parallelism</strong> <strong>using</strong> high-confidence speculation.SPECCROSS parallelizes independent loops and replaces the barrier synchronizationbetween two loop <strong>invocation</strong>s with its speculative counterpart. Unlike non-speculative49

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

Saved successfully!

Ooh no, something went wrong!