The Community for Technology Leaders
RSS Icon
Subscribe
Issue No.12 - Dec. (2012 vol.23)
pp: 2366-2379
Ming-Yu Hung , National Tsing Hua University, Hsinchu
Peng-Sheng Chen , National Chung Cheng University, Chiayi
Yuan-Shin Hwang , National Taiwan University of Science and Technology, Taipei
Roy Dz-Ching Ju , Advanced Micro Devices, San Francisco
Jenq-Kuen Lee , National Tsing Hua University, Hsinchu
ABSTRACT
Probabilistic pointer analysis (PPA) is a compile-time analysis method that estimates the probability that a points-to relationship will hold at a particular program point. The results are useful for optimizing and parallelizing compilers, which need to quantitatively assess the profitability of transformations when performing aggressive optimizations and parallelization. This paper presents a PPA technique using the static single assignment (SSA) form. When computing the probabilistic points-to relationships of a specific pointer, a pointer relation graph (PRG) is first built to represent all of the possible points-to relationships of the pointer. The PRG is transformed by a sequence of reduction operations into a compact graph, from which the probabilistic points-to relationships of the pointer can be determined. In addition, PPA is further extended to interprocedural cases by considering function related statements. We have implemented our proposed scheme including static and profiling versions in the Open64 compiler, and performed experiments to obtain the accuracy and scalability. The static version estimates branch probabilities by assuming that every conditional is equally likely to be true or false, and that every loop executes 10 times before terminating. The profiling version measures branch probabilities dynamically from past program executions using a default workload provided with the benchmark. The average errors for selected benchmarks were 3.80 percent in the profiling version and 9.13 percent in the static version. Finally, SPEC CPU2006 is used to evaluate the scalability, and the result indicates that our scheme is sufficiently efficient in practical use. The average analysis time was 35.59 seconds for an average of 98,696 lines of code.
INDEX TERMS
Algorithm design and analysis, Probabilistic logic, Program processors, Benchmark testing, Complexity theory, Flow graphs, static single assignment (SSA) form, Compiler, pointer analysis, control flow graph (CFG)
CITATION
Ming-Yu Hung, Peng-Sheng Chen, Yuan-Shin Hwang, Roy Dz-Ching Ju, Jenq-Kuen Lee, "Support of Probabilistic Pointer Analysis in the SSA Form", IEEE Transactions on Parallel & Distributed Systems, vol.23, no. 12, pp. 2366-2379, Dec. 2012, doi:10.1109/TPDS.2012.73
REFERENCES
[1] M. Shapiro and S. Horwitz, "Fast and Accurate Flow-Insensitive Points-to Analysis," Proc. 24th ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages (POPL '97), pp. 1-14, 1997.
[2] B. Steensgaard, "Points-to Analysis in Almost Linear Time," Proc. 23rd ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages (POPL '96), pp. 32-41, 1996.
[3] J.-D. Choi, M. Burke, and P. Carini, "Efficient Flow-Sensitive Interprocedural Computation of Pointer-Induced Aliases and Side Effects," Proc. 20th ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages (POPL '93), pp. 232-245, 1993.
[4] A. Deutsch, "Interprocedural May-Alias Analysis for Pointers: Beyond K-Limiting," Proc. ACM SIGPLAN 1994 Conf. Programming Language Design and Implementation (PLDI '94), pp. 230-241, 1994.
[5] M. Emami, R. Ghiya, and L.J. Hendren, "Context-Sensitive Interprocedural Points-to Analysis in the Presence of Function Pointers," Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation (PLDI '94), pp. 242-256, 1994.
[6] P.-S. Chen, Y.-S. Hwang, R.D.-C. Ju, and J.K. Lee, "Interprocedural Probabilistic Pointer Analysis," IEEE Trans. Parallel Distributed Systems, vol. 15, no. 10, pp. 893-907, Oct. 2004.
[7] P.-S. Chen, M.-Y. Hung, Y.-S. Hwang, R.D.-C. Ju, and J.K. Lee, "Compiler Support for Speculative Multithreading Architecture with Probabilistic Points-to Analysis," Proc. Ninth ACM SIGPLAN Symp. Principles and Practice of Parallel Programming (PPoPP '03), pp. 25-36, 2003.
[8] M. Hind, "Pointer Analysis: Haven't We Solved This Problem Yet?" Proc. ACM SIGPLAN-SIGSOFT Workshop Program Analysis for Software Tools and Eng. (PASTE '01), pp. 54-61, 2001.
[9] M. Hind and A. Pioli, "Which Pointer Analysis Should I Use?" Proc. ACM SIGSOFT Int'l Symp. Software Testing and Analysis (ISSTA '00), pp. 113-123, 2000.
[10] M. Sagiv, T. Reps, and R. Wilhelm, "Solving Shape-Analysis Problems in Languages with Destructive Updating," ACM Trans. Programming Language Systems, vol. 20, no. 1, pp. 1-50, 1998.
[11] Y.-S. Hwang, P.-S. Chen, J.K. Lee, and R.D.-C. Ju, "Probabilistic Points-to Analysis," Proc. Int'l Workshop Languages and Compilers for Parallel Computing (LCPC '01), pp. 290-305, 2001.
[12] J.G. Steffan, C.B. Colohan, A. Zhai, and T.C. Mowry, "A Scalable Approach to Thread-Level Speculation," Proc. 27th Ann. Int'l Symp. Computer Architecture, pp. 1-12, 2000.
[13] S.P. Vanderwiel and D.J. Lilja, "Data Prefetch Mechanisms," ACM Computing Surveys, vol. 32, pp. 174-199, June 2000.
[14] M. Herlihy and J.E.B. Moss, "Transactional Memory: Architectural Support for Lock-Free Data Structures," Proc. 20th Ann. Int'l Symp. Computer Architecture (ISCA '93), pp. 289-300, 1993.
[15] X. Dong, N.P. Jouppi, and Y. Xie, "Pcramsim: System-Level Performance, Energy, and Area Modeling for Phase-Change Ram," Proc. Int'l Conf. Computer-Aided Design (ICCAD '09), pp. 269-275, 2009.
[16] J. Da Silva and J.G. Steffan, "A Probabilistic Pointer Analysis for Speculative Optimizations," Proc. 12th Int'l Conf. Architectural Support for Programming Languages and Operating Systems (ASPLOS-XII), pp. 416-425, 2006.
[17] J.L. Henning, "SPEC CPU2006 Benchmark Descriptions," SIGARCH Computer Architecture News, vol. 34, pp. 1-17, Sept. 2006.
[18] G. Ramalingam, "Data Flow Frequency Analysis," Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation (PLDI '96), pp. 267-277, 1996.
[19] B. Alpern, M.N. Wegman, and F.K. Zadeck, "Detecting Equality of Variables in Programs," Proc. 15th ACM SIGPLAN-SIGACT Symp. Principles of programming languages (POPL '88), pp. 1-11, 1988.
[20] B.K. Rosen, M.N. Wegman, and F.K. Zadeck, "Global Value Numbers and Redundant Computations," Proc. 15th ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages (POPL '88), pp. 12-27, 1988.
[21] R. Cytron, J. Ferrante, B.K. Rosen, M.N. Wegman, and F.K. Zadeck, "Efficiently Computing Static Single Assignment Form and the Control Dependence Graph," ACM Trans. Programming Language Systems, vol. 13, no. 4, pp. 451-490, 1991.
[22] M.N. Wegman and F.K. Zadeck, "Constant Propagation with Conditional Branches," ACM Trans. Programming Language Systems, vol. 13, no. 2, pp. 181-210, 1991.
[23] M. Gerlek, M. Wolfe, and E. Stoltz, "A Reference Chain Approach for Live Variables," Technical Report CSE 94-029, Oregon Graduate Inst., 1994.
[24] R. Cytron, J. Ferrante, B.K. Rosen, M.N. Wegman, and F.K. Zadeck, "An Efficient Method of Computing Static Single Assignment Form," Proc. 16th ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages (POPL '89), pp. 25-35, 1989.
[25] F.C. Chow, S. Chan, S.-M. Liu, R. Lo, and M. Streich, "Effective Representation of Aliases and Indirect Memory Operations in SSA Form," Proc. Sixth Int'l Conf. Compiler Construction (CC '96), pp. 253-267. 1996,
[26] Y. Cui, L. Li, and S. Yao, "Inclusion-Based Multi-Level Pointer Analysis," Proc. Int'l Conf. Artificial Intelligence and Computational Intelligence (AICI '09), vol. 2, pp. 204-208, 2009.
[27] M. Das, "Unification-Based Pointer Analysis with Directional Assignments," Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation (PLDI '00), pp. 35-46, 2000.
[28] V.C. Sreedhar, G.R. Gao, and Y.-F. Lee, "A New Framework for Elimination-Based Data Flow Analysis Using DJ Graphs," ACM Trans. Programming Language Systems, vol. 20, no. 2, pp. 388-435, 1998.
[29] M. Burke, "An Interval-Based Approach to Exhaustive and Incremental Interprocedural Data-Flow Analysis," ACM Trans. Programming Language Systems, vol. 12, no. 3, pp. 341-395, 1990.
[30] A. Rogers, M. Carlisle, J. Reppy, and L. Hendren, "Supporting Dynamic Data Structures on Distributed Memory Machines," ACM Trans. Programming Languages and Systems, vol. 17, no. 2, pp. 233-263, Mar. 1995.
[31] M.C. Carlisle and A. Rogers, "Software Caching and Computation Migration in Olden," Proc. Fifth ACM SIGPLAN Symp. Principles and Practice of Parallel Programming (PPOPP '95), pp. 29-38, 1995.
[32] T. Reps, S. Horwitz, and M. Sagiv, "Precise Interprocedural Dataflow Analysis via Graph Reachability," Proc. 22nd ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages (POPL '95), pp. 49-61, 1995.
[33] I. Dillig, T. Dillig, and A. Aiken, "Sound, Complete and Scalable Path-Sensitive Analysis," Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation (PLDI '08), pp. 270-280, 2008.
[34] B. Hardekopf and C. Lin, "Semi-Sparse Flow-Sensitive Pointer Analysis," Proc. 36th Ann. ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages (POPL '09), pp. 226-238, 2009.
6 ms
(Ver 2.0)

Marketing Automation Platform Marketing Automation Tool