Abstract
Understanding symbolic expressions is an important capability of advanced program analysis techniques. Many current compiler techniques assume that coefficients of program expressions, such as array subscripts and loop bounds, are integer constants. Advanced symbolic handling capabilities could make these techniques amenable to real application programs. Symbolic analysis is also likely to play an important role in supporting higher–level programming languages and optimizations. For example, entire algorithms may be recognized and replaced by better variants. In pursuit of this goal, we have measured the degree to which symbolic analysis techniques affect the behavior of current parallelizing compilers. We have chosen the Polaris parallelizing compiler and studied the techniques such as range analysis – which is the core symbolic analysis in the compiler – expression propagation, and symbolic expression manipulation. To measure the effect of a technique, we disabled it individually, and compared the performance of the resulting program with the original, fully-optimized program. We found that symbolic expression manipulation is important for most programs. Expression propagation and range analysis is important in few programs only, however they can affect these programs significantly. We also found that in all but one programs, a simpler form of range analysis – control range analysis – is sufficient.
This material is based upon work supported by the National Science Foundation under Grant, No. 9974976-EIA, 9975275-EIA, and 0103582-EIA. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Blume, W., Eigenmann, R.: An overview of symbolic analysis techniques needed for the effective parallelization of the perfect benchmarks. In: Proceedings of the 1994 International Conference on Parallel Processing, August 1994, pp. 233–238 (1994)
Blume, W., Doallo, R., Eigenmann, R., Hoeflinger, J.G.J., Lawrence, T., Lee, J., Padua, D., Paek, Y., Pottenger, B., Rauchwerger, L., Tu, P.: Parallel programming with polaris. IEEE Computer, 78–82 (December 1996)
Blume, W., Eigenmann, R.: Symbolic range propagation. In: Proceedings of the 9th International Parallel Processing Symposium, Santa Barbara, CA, April 1995, pp. 357–363 (1995)
Blume, W., Eigenmann, R.: Nonlinear and symbolic data dependence testing. IEEE Transactions on Parallel and Distributed Systems 9(12), 1180–1194 (1998)
Tu, P., Padua, D.A.: Gated SSA-based demand-driven symbolic analysis for parallelizing compilers. In: Proceedings of the 1995 International Conference on Supercomputing, pp. 414–423 (1995)
Haghighat, M.R., Polychronopoulos, C.D.: Symbolic analysis for parallelizing compilers. ACM Transactions on Programming Languages and Systems 18(4), 477–518 (1996)
Fahringer, T.: Efficient symbolic analysis for parallelizing compilers and performance estimators. The Journal of Supercomputing 12(3), 227–252 (1998)
Havlak, P.: Interprocedural Symbolic Analysis. PhD thesis, Dept. of Computer Science, Rice University (May 1994)
Blume, W., Eigenmann, R.: Demand-driven symbolic range propagation. In: Proceedings of the 8th Workshop on Languages and Compilers for Parallel Computing, Columbus, OH, pp. 141–160 (1995)
Cousot, P., Cousot, R.: Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: Proceedings of 4th ACM Symposium, pp. 238–252 (1977)
Pottenger, W.M., Eigenmann, R.: Idiom recognition in the polaris parallelizing compiler. In: Proceedings of the 9th International Conference on Supercomputing, pp. 444–448 (1995)
Pugh, W., Wonnacott, D.: Nonlinear Array Dependence Analysis. In: Proceedings of 3rd Workshop on Languages, Compilers and Run-Time Systems for Scalable Computers (November 1994)
Aslot, V., Eigenmann, R.: Performance characteristics of the specomp 2001 benchmarks. In: Proceedings of the 3rd European Workshop on OpenMP (EWOMP 2001), Barcelona, Spain (September 2001)
Pugh, W., Wonnacott, D.: Constraint-based array dependence analysis. ACM Transactions on Programming Languages and Systems 20(3), 635–678 (1998)
Rugina, R., Rinard, M.C.: Symbolic bounds analysis of pointers, array indices, and accessed memory regions. In: Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation, Vancouver, Canada, June 2000, pp. 182–195 (2000)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Bae, H., Eigenmann, R. (2005). Performance Analysis of Symbolic Analysis Techniques for Parallelizing Compilers. In: Pugh, B., Tseng, CW. (eds) Languages and Compilers for Parallel Computing. LCPC 2002. Lecture Notes in Computer Science, vol 2481. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11596110_19
Download citation
DOI: https://doi.org/10.1007/11596110_19
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-30781-5
Online ISBN: 978-3-540-31612-1
eBook Packages: Computer ScienceComputer Science (R0)