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.

the graph stands for an iteration in a certain loop <strong>invocation</strong> (e.g., block 1.5 is iteration 5in the first <strong>invocation</strong> of loop L1). Typically, threads do not reach barriers at the same timefor a variety of reasons. For instance, each thread may be assigned different number ofiterations and the execution time of each iteration may vary. All threads are forced to stallat barriers after each parallel <strong>invocation</strong>, losing potential <strong>parallelism</strong>. Figure 1.4(b) showsa parallel execution plan after naïvely removing barriers. Without barriers, iterations frombefore and after a barrier may overlap, resulting in better performance.A few automatic parallelization techniques exploit <strong>cross</strong>-<strong>invocation</strong> <strong>parallelism</strong> [22,50, 72, 76]. Cross-<strong>invocation</strong> parallelization requires techniques for respecting <strong>cross</strong><strong>invocation</strong>dependences without resorting to coarse-grained barrier synchronization. Sometechniques [22, 76] respect dependences by combining several small loops into a singlelarger loop. This approach side-steps the problem of <strong>exploiting</strong> <strong>cross</strong>-<strong>invocation</strong> <strong>parallelism</strong>by converting it into <strong>cross</strong>-iteration <strong>parallelism</strong>. Other approaches [50, 72] carefullypartition the iteration space in each loop <strong>invocation</strong> so that <strong>cross</strong>-<strong>invocation</strong> dependencesare never split between threads. However, both techniques rely on static analyses. Consequently,they cannot adapt to the dependence patterns manifested by particular inputsat <strong>runtime</strong>. Many statically detected dependences may only manifest under certain inputconditions. For many programs, these dependences rarely manifest given the most commonprogram inputs. By adapting to the dependence patterns of specific inputs at <strong>runtime</strong>,programs can exploit additional <strong>cross</strong>-<strong>invocation</strong> <strong>parallelism</strong> to achieve greater scalability.6

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

Saved successfully!

Ooh no, something went wrong!