TY - GEN
T1 - The privatizing DOALL test
T2 - 8th International Conference on Supercomputing, ICS 1994
AU - Rauchwerger, Lawrence
AU - Padua, David
PY - 1994/7/16
Y1 - 1994/7/16
N2 - Current parallelizing compilers cannot identify a significant fraction of fully parallel loops because they have complex or statically insufficiently defined access patterns. For this reason, we have developed the Privatizing DOALL test - a technique for identifying fully parallel loops at run-time, and dynamically privatizing scalars and arrays. The test itself is fully parallel, and can be applied to any loop, regardless of the structure of its data and/or control flow, The technique can be utilized in two modes: (i) the test is performed before executing the loop and indicates whether the loop can be executed as a DO ALL; (ii) speculatively - the loop and the test are executed simultaneously, and it is determined later if the loop was in fact parallel. The test can also be used for debugging parallel programs. We discuss how the test can be inserted automatically by the compiler and outline a cost/performance analysis that can be performed to decide when to use the test. Our conclusion is that the test should almost always be applied - because, as we show, the expected speedup for fully parallel loops is significant, and the cost of a failed test (a not fully parallel loop), is minimal. We present some experimental results on loops from the PERFECT Benchmarks which confirm our conclusion that this test can lead to significant speedups.
AB - Current parallelizing compilers cannot identify a significant fraction of fully parallel loops because they have complex or statically insufficiently defined access patterns. For this reason, we have developed the Privatizing DOALL test - a technique for identifying fully parallel loops at run-time, and dynamically privatizing scalars and arrays. The test itself is fully parallel, and can be applied to any loop, regardless of the structure of its data and/or control flow, The technique can be utilized in two modes: (i) the test is performed before executing the loop and indicates whether the loop can be executed as a DO ALL; (ii) speculatively - the loop and the test are executed simultaneously, and it is determined later if the loop was in fact parallel. The test can also be used for debugging parallel programs. We discuss how the test can be inserted automatically by the compiler and outline a cost/performance analysis that can be performed to decide when to use the test. Our conclusion is that the test should almost always be applied - because, as we show, the expected speedup for fully parallel loops is significant, and the cost of a failed test (a not fully parallel loop), is minimal. We present some experimental results on loops from the PERFECT Benchmarks which confirm our conclusion that this test can lead to significant speedups.
UR - http://www.scopus.com/inward/record.url?scp=84976735460&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84976735460&partnerID=8YFLogxK
U2 - 10.1145/181181.181254
DO - 10.1145/181181.181254
M3 - Conference contribution
AN - SCOPUS:84976735460
T3 - Proceedings of the International Conference on Supercomputing
SP - 33
EP - 43
BT - Proceedings of the 8th International Conference on Supercomputing, ICS 1994
PB - Association for Computing Machinery
Y2 - 11 July 1994 through 15 July 1994
ER -