TY - GEN
T1 - Speculative separation for privatization and reductions
AU - Johnson, Nick P.
AU - Kim, Hanjun
AU - Prabhu, Prakash
AU - Zaks, Ayal
AU - August, David I.
PY - 2012
Y1 - 2012
N2 - Automatic parallelization is a promising strategy to improve application performance in the multicore era. However, common programming practices such as the reuse of data structures introduce artificial constraints that obstruct automatic parallelization. Privatization relieves these constraints by replicating data structures, thus enabling scalable parallelization. Prior privatization schemes are limited to arrays and scalar variables because they are sensitive to the layout of dynamic data structures. This work presents Privateer, the first fully automatic privatization system to handle dynamic and recursive data structures, even in languages with unrestricted pointers. To reduce sensitivity to memory layout, Privateer speculatively separates memory objects. Privateer's lightweight runtime system validates speculative separation and speculative privatization to ensure correct parallel execution. Privateer enables automatic parallelization of general-purpose C/C++ applications, yielding a geomean whole-program speedup of 11.4× over best sequential execution on 24 cores, while non-speculative parallelization yields only 0.93×.
AB - Automatic parallelization is a promising strategy to improve application performance in the multicore era. However, common programming practices such as the reuse of data structures introduce artificial constraints that obstruct automatic parallelization. Privatization relieves these constraints by replicating data structures, thus enabling scalable parallelization. Prior privatization schemes are limited to arrays and scalar variables because they are sensitive to the layout of dynamic data structures. This work presents Privateer, the first fully automatic privatization system to handle dynamic and recursive data structures, even in languages with unrestricted pointers. To reduce sensitivity to memory layout, Privateer speculatively separates memory objects. Privateer's lightweight runtime system validates speculative separation and speculative privatization to ensure correct parallel execution. Privateer enables automatic parallelization of general-purpose C/C++ applications, yielding a geomean whole-program speedup of 11.4× over best sequential execution on 24 cores, while non-speculative parallelization yields only 0.93×.
KW - Automatic parallelization
KW - Separation
KW - Speculation
UR - http://www.scopus.com/inward/record.url?scp=84863436329&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84863436329&partnerID=8YFLogxK
U2 - 10.1145/2254064.2254107
DO - 10.1145/2254064.2254107
M3 - Conference contribution
AN - SCOPUS:84863436329
SN - 9781450312059
T3 - Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI)
SP - 359
EP - 369
BT - PLDI'12 - Proceedings of the 2012 ACM SIGPLAN Conference on Programming Language Design and Implementation
T2 - 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI'12
Y2 - 11 June 2012 through 16 June 2012
ER -