TY - GEN
T1 - Automatically exploiting cross-invocation parallelism using runtime information
AU - Huang, Jialu
AU - Jablin, Thomas B.
AU - Beard, Stephen R.
AU - Johnson, Nick P.
AU - August, David I.
PY - 2013
Y1 - 2013
N2 - Automatic parallelization is a promising approach to producing scalable multi-threaded programs for multicore architectures. Many existing automatic techniques only parallelize iterations within a loop invocation and synchronize threads at the end of each loop invocation. When parallel code contains many loop invocations, synchronization can easily become a performance bottleneck. Some automatic techniques address this problem by exploiting cross-invocation parallelism. These techniques use static analysis to partition iterations among threads to avoid crossthread dependences. However, this partitioning is not always achievable at compile-time, because program input determines dependence patterns at run-time. By contrast, this paper proposes DOMORE, the first automatic parallelization technique that uses runtime information to exploit additional cross-invocation parallelism. Instead of partitioning iterations statically, DOMORE dynamically detects crossthread dependences and synchronizes only when necessary. DOMORE consists of a compiler and a runtime library. At compile time, DOMORE automatically parallelizes loops and inserts a custom runtime engine into programs. At run-time, the engine observes dependences and synchronizes iterations only when necessary. For six programs, DOMORE achieves a geomean loop speedup of 2.1× over parallel execution without cross-invocation parallelization and of 3.2 × over sequential execution on eight cores.
AB - Automatic parallelization is a promising approach to producing scalable multi-threaded programs for multicore architectures. Many existing automatic techniques only parallelize iterations within a loop invocation and synchronize threads at the end of each loop invocation. When parallel code contains many loop invocations, synchronization can easily become a performance bottleneck. Some automatic techniques address this problem by exploiting cross-invocation parallelism. These techniques use static analysis to partition iterations among threads to avoid crossthread dependences. However, this partitioning is not always achievable at compile-time, because program input determines dependence patterns at run-time. By contrast, this paper proposes DOMORE, the first automatic parallelization technique that uses runtime information to exploit additional cross-invocation parallelism. Instead of partitioning iterations statically, DOMORE dynamically detects crossthread dependences and synchronizes only when necessary. DOMORE consists of a compiler and a runtime library. At compile time, DOMORE automatically parallelizes loops and inserts a custom runtime engine into programs. At run-time, the engine observes dependences and synchronizes iterations only when necessary. For six programs, DOMORE achieves a geomean loop speedup of 2.1× over parallel execution without cross-invocation parallelization and of 3.2 × over sequential execution on eight cores.
UR - http://www.scopus.com/inward/record.url?scp=84876929304&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84876929304&partnerID=8YFLogxK
U2 - 10.1109/CGO.2013.6495001
DO - 10.1109/CGO.2013.6495001
M3 - Conference contribution
AN - SCOPUS:84876929304
SN - 9781467355254
T3 - Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization, CGO 2013
BT - Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization, CGO 2013
T2 - 11th IEEE/ACM International Symposium on Code Generation and Optimization, CGO 2013
Y2 - 23 February 2013 through 27 February 2013
ER -