Abstract
Abstract interpretation is a general framework for expressing static program analyses. It reduces the problem of extracting properties of a program to computing an approximation of the least fixpoint of a system of equations. The de facto approach for computing this approximation uses a sequential algorithm based on weak topological order (WTO). This paper presents a deterministic parallel algorithm for fixpoint computation by introducing the notion of weak partial order (WPO). We present an algorithm for constructing a WPO in almost-linear time. Finally, we describe Pikos, our deterministic parallel abstract interpreter, which extends the sequential abstract interpreter IKOS. We evaluate the performance and scalability of Pikos on a suite of 1017 C programs. When using 4 cores, Pikos achieves an average speedup of 2.06x over IKOS, with a maximum speedup of 3.63x. When using 16 cores, Pikos achieves a maximum speedup of 10.97x.
Supplemental Material
- Aws Albarghouthi, Rahul Kumar, Aditya V. Nori, and Sriram K. Rajamani. 2012. Parallelizing top-down interprocedural analyses. In ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’12, Beijing, China -June 11 - 16, 2012 . 217–228. Google Scholar
Digital Library
- Gianluca Amato and Francesca Scozzari. 2013. Localizing Widening and Narrowing. In Static Analysis - 20th International Symposium, SAS 2013, Seattle, WA, USA, June 20-22, 2013. Proceedings . 25–42. Google Scholar
Cross Ref
- Gianluca Amato, Francesca Scozzari, Helmut Seidl, Kalmer Apinis, and Vesal Vojdani. 2016. Efficiently intertwining widening and narrowing. Sci. Comput. Program. 120 (2016), 1–24. Google Scholar
Digital Library
- Gogul Balakrishnan, Malay K. Ganai, Aarti Gupta, Franjo Ivancic, Vineet Kahlon, Weihong Li, Naoto Maeda, Nadia Papakonstantinou, Sriram Sankaranarayanan, Nishant Sinha, and Chao Wang. 2010. Scalable and precise program analysis at NEC. In Proceedings of 10th International Conference on Formal Methods in Computer-Aided Design, FMCAD 2010, Lugano, Switzerland, October 20-23 . 273–274. http://ieeexplore.ieee.org/document/5770960/Google Scholar
Digital Library
- Thomas Ball, Byron Cook, Vladimir Levin, and Sriram K. Rajamani. 2004. SLAM and Static Driver Verifier: Technology Transfer of Formal Methods inside Microsoft. In Integrated Formal Methods, 4th International Conference, IFM 2004, Canterbury, UK, April 4-7, 2004, Proceedings . 1–20. Google Scholar
Cross Ref
- Al Bessey, Ken Block, Benjamin Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles-Henri Gros, Asya Kamsky, Scott McPeak, and Dawson R. Engler. 2010. A few billion lines of code later: using static analysis to find bugs in the real world. Commun. ACM 53, 2 (2010), 66–75. Google Scholar
Digital Library
- Dirk Beyer. 2019. Automatic Verification of C and Java Programs: SV-COMP 2019. In Tools and Algorithms for the Construction and Analysis of Systems - 25 Years of TACAS: TOOLympics, Held as Part of ETAPS 2019, Prague, Czech Republic, April 6-11, 2019, Proceedings, Part III . 133–155. Google Scholar
Cross Ref
- Dirk Beyer, Stefan Löwe, and Philipp Wendler. 2019. Reliable benchmarking: requirements and solutions. STTT 21, 1 (2019), 1–29. Google Scholar
Digital Library
- François Bourdoncle. 1993. Efficient chaotic iteration strategies with widenings. In Formal Methods in Programming and Their Applications, International Conference, Akademgorodok, Novosibirsk, Russia, June 28 - July 2, 1993, Proceedings . 128–141. Google Scholar
- Guillaume Brat, Jorge A. Navas, Nija Shi, and Arnaud Venet. 2014. IKOS: A Framework for Static Analysis Based on Abstract Interpretation. In Software Engineering and Formal Methods - 12th International Conference, SEFM 2014, Grenoble, France, September 1-5, 2014. Proceedings . 271–277. Google Scholar
Cross Ref
- Guillaume Brat and Arnaud Venet. 2005. Precise and Scalable Static Program Analysis of NASA Flight Software. In 2005 IEEE Aerospace Conference . 1–10. Google Scholar
Cross Ref
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. 2009. Introduction to Algorithms, 3rd Edition. MIT Press. http://mitpress.mit.edu/books/introduction-algorithmsGoogle Scholar
Digital Library
- Patrick Cousot. 1977. Asynchronous iterative methods for solving a fixed point system of monotone equations in a complete lattice . Res. rep. R.R. 88. Laboratoire IMAG, Université scientifique et médicale de Grenoble, Grenoble, France. 15 p.Google Scholar
- Patrick Cousot. 2015. Abstracting Induction by Extrapolation and Interpolation. In Verification, Model Checking, and Abstract Interpretation - 16th International Conference, VMCAI 2015, Mumbai, India, January 12-14, 2015. Proceedings . 19–42. Google Scholar
Digital Library
- Patrick Cousot and Radhia Cousot. 1976. Static determination of dynamic properties of programs. In Proceedings of the Second International Symposium on Programming . Dunod, Paris, France, 106–130.Google Scholar
- Patrick Cousot and Radhia Cousot. 1977. Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In Conference Record of the Fourth ACM Symposium on Principles of Programming Languages, Los Angeles, California, USA, January 1977 . 238–252. Google Scholar
Digital Library
- Patrick Cousot, Radhia Cousot, Jérôme Feret, Laurent Mauborgne, Antoine Miné, David Monniaux, and Xavier Rival. 2005. The ASTREÉ Analyzer. In Programming Languages and Systems, 14th European Symposium on Programming,ESOP 2005, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2005, Edinburgh, UK, April 4-8, 2005, Proceedings . 21–30. Google Scholar
Digital Library
- Patrick Cousot, Roberto Giacobazzi, and Francesco Ranzato. 2019. A 2 I: abstract 2 interpretation. PACMPL 3, POPL (2019), 42:1–42:31. Google Scholar
Digital Library
- Patrick Cousot and Nicolas Halbwachs. 1978. Automatic Discovery of Linear Restraints Among Variables of a Program. In Conference Record of the Fifth Annual ACM Symposium on Principles of Programming Languages, Tucson, Arizona, USA, January 1978 . 84–96. Google Scholar
Digital Library
- David Delmas and Jean Souyris. 2007. Astrée: From Research to Industry. In Static Analysis, 14th International Symposium, SAS 2007, Kongens Lyngby, Denmark, August 22-24, 2007, Proceedings . 437–451. Google Scholar
Cross Ref
- Kyle Dewey, Vineeth Kashyap, and Ben Hardekopf. 2015. A parallel abstract interpreter for JavaScript. In Proceedings of the 13th Annual IEEE/ACM International Symposium on Code Generation and Optimization, CGO 2015, San Francisco, CA, USA, February 07 - 11, 2015 . 34–45. Google Scholar
Cross Ref
- Graeme Gange, Jorge A. Navas, Peter Schachte, Harald Søndergaard, and Peter J. Stuckey. 2016. An Abstract Domain of Uninterpreted Functions. In Verification, Model Checking, and Abstract Interpretation - 17th International Conference, VMCAI 2016, St. Petersburg, FL, USA, January 17-19, 2016. Proceedings . 85–103. Google Scholar
Digital Library
- Diego Garbervetsky, Edgardo Zoppi, and Benjamin Livshits. 2017. Toward full elasticity in distributed static analysis: the case of callgraph analysis. In Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering, ESEC/FSE 2017, Paderborn, Germany, September 4-8, 2017 . 442–453. Google Scholar
Digital Library
- Michael R. Garey and David S. Johnson. 1979. Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman.Google Scholar
Digital Library
- Roberto Giacobazzi and Isabella Mastroeni. 2004. Abstract non-interference: parameterizing non-interference by abstract interpretation. In Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2004, Venice, Italy, January 14-16, 2004 . 186–197. Google Scholar
Digital Library
- Denis Gopan and Thomas W. Reps. 2006. Lookahead Widening. In Computer Aided Verification, 18th International Conference, CAV 2006, Seattle, WA, USA, August 17-20, 2006, Proceedings . 452–466. Google Scholar
Digital Library
- Philippe Granger. 1989. Static analysis of arithmetical congruences. International Journal of Computer Mathematics 30, 3-4 (1989), 165–190. Google Scholar
- Nicolas Halbwachs and Julien Henry. 2012. When the Decreasing Sequence Fails. In Static Analysis - 19th International Symposium, SAS 2012, Deauville, France, September 11-13, 2012. Proceedings . 198–213. Google Scholar
Digital Library
- Paul Havlak. 1997. Nesting of Reducible and Irreducible Loops. ACM Trans. Program. Lang. Syst. 19, 4 (1997), 557–567. Google Scholar
Digital Library
- Matthew S. Hecht and Jeffrey D. Ullman. 1972. Flow Graph Reducibility. SIAM J. Comput. 1, 2 (1972), 188–202. Google Scholar
Cross Ref
- Jerry L. Hintze and Ray D. Nelson. 1998. Violin Plots: A Box Plot-Density Trace Synergism. The American Statistician 52, 2 (1998), 181–184. Google Scholar
Cross Ref
- Raoul Praful Jetley, Paul L. Jones, and Paul Anderson. 2008. Static Analysis of Medical Device Software Using CodeSonar. In Proceedings of the 2008 Workshop on Static Analysis (SAW ’08) . ACM, New York, NY, USA, 22–29. Google Scholar
Digital Library
- Richard M. Karp. 1972. Reducibility Among Combinatorial Problems. In Proceedings of a symposium on the Complexity of Computer Computations, held March 20-22, 1972, at the IBM Thomas J. Watson Research Center, Yorktown Heights, New York, USA . 85–103. Google Scholar
Cross Ref
- Sol Kim, Kihong Heo, Hakjoo Oh, and Kwangkeun Yi. 2016. Widening with thresholds via binary search. Softw., Pract. Exper. 46, 10 (2016), 1317–1328. Google Scholar
Digital Library
- Scott McPeak, Charles-Henri Gros, and Murali Krishna Ramanathan. 2013. Scalable and incremental software bug detection. In Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, ESEC/FSE’13, Saint Petersburg, Russian Federation, August 18-26, 2013 . 554–564. Google Scholar
Digital Library
- Antoine Miné. 2001. A New Numerical Abstract Domain Based on Difference-Bound Matrices. In Programs as Data Objects, Second Symposium, PADO 2001, Aarhus, Denmark, May 21-23, 2001, Proceedings . 155–172. Google Scholar
Cross Ref
- Antoine Miné. 2004. Relational Abstract Domains for the Detection of Floating-Point Run-Time Errors. In Programming Languages and Systems, 13th European Symposium on Programming, ESOP 2004, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2004, Barcelona, Spain, March 29 - April 2, 2004, Proceedings . 3–17. Google Scholar
Cross Ref
- Antoine Miné. 2006. The octagon abstract domain. Higher-Order and Symbolic Computation 19, 1 (2006), 31–100. Google Scholar
Digital Library
- David Monniaux. 2005. The Parallel Implementation of the Astrée Static Analyzer. In Programming Languages and Systems, Third Asian Symposium, APLAS 2005, Tsukuba, Japan, November 2-5, 2005, Proceedings . 86–96. Google Scholar
Digital Library
- Hakjoo Oh, Kihong Heo, Wonchan Lee, Woosuk Lee, Daejun Park, Jeehoon Kang, and Kwangkeun Yi. 2014. Global Sparse Analysis Framework. ACM Trans. Program. Lang. Syst. 36, 3 (2014), 8:1–8:44. Google Scholar
Digital Library
- Hakjoo Oh, Kihong Heo, Wonchan Lee, Woosuk Lee, and Kwangkeun Yi. 2012. Design and implementation of sparse global analyses for C-like languages. In ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’12, Beijing, China - June 11 - 16, 2012 . 229–238. Google Scholar
Digital Library
- Mendes Oulamara and Arnaud J. Venet. 2015. Abstract Interpretation with Higher-Dimensional Ellipsoids and Conic Extrapolation. In Computer Aided Verification - 27th International Conference, CAV 2015, San Francisco, CA, USA, July 18-24, 2015, Proceedings, Part I . 415–430. Google Scholar
Cross Ref
- Ganesan Ramalingam. 1999. Identifying Loops in Almost Linear Time. ACM Trans. Program. Lang. Syst. 21, 2 (1999), 175–188. Google Scholar
Digital Library
- Ganesan Ramalingam. 2002. On loops, dominators, and dominance frontiers. ACM Trans. Program. Lang. Syst. 24, 5 (2002), 455–490. Google Scholar
Digital Library
- James Reinders. 2007. Intel threading building blocks - outfitting C++ for multi-core processor parallelism. O’Reilly. http: //www.oreilly.com/catalog/9780596514808/index.htmlGoogle Scholar
- Thomas W. Reps. 2018. Program Analyses Using Newton’s Method (Invited Paper). In Networked Systems - 6th International Conference, NETYS 2018, Essaouira, Morocco, May 9-11, 2018, Revised Selected Papers . 3–16. Google Scholar
Cross Ref
- Thomas W. Reps, Susan Horwitz, and Mooly Sagiv. 1995. Precise Interprocedural Dataflow Analysis via Graph Reachability. In Conference Record of POPL’95: 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Francisco, California, USA, January 23-25, 1995 . 49–61. Google Scholar
Digital Library
- Thomas W. Reps, Emma Turetsky, and Prathmesh Prabhu. 2017. Newtonian Program Analysis via Tensor Product. ACM Trans. Program. Lang. Syst. 39, 2 (2017), 9:1–9:72. Google Scholar
Digital Library
- Noam Rinetzky, Jörg Bauer, Thomas W. Reps, Mooly Sagiv, and Reinhard Wilhelm. 2005. A semantics for procedure local heaps and its abstractions. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2005, Long Beach, California, USA, January 12-14, 2005 . 296–309. Google Scholar
Digital Library
- Caitlin Sadowski, Jeffrey van Gogh, Ciera Jaspan, Emma Söderberg, and Collin Winter. 2015. Tricorder: Building a Program Analysis Ecosystem. In 37th IEEE/ACM International Conference on Software Engineering, ICSE 2015, Florence, Italy, May 16-24, 2015, Volume 1 . 598–608. Google Scholar
Cross Ref
- Gagandeep Singh, Markus Püschel, and Martin T. Vechev. 2017. Fast polyhedra abstract domain. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, POPL 2017, Paris, France, January 18-20, 2017 . 46–59. http://dl.acm.org/citation.cfm?id=3009885Google Scholar
- Gagandeep Singh, Markus Püschel, and Martin T. Vechev. 2018a. Fast Numerical Program Analysis with Reinforcement Learning. In Computer Aided Verification - 30th International Conference, CAV 2018, Held as Part of the Federated Logic Conference, FloC 2018, Oxford, UK, July 14-17, 2018, Proceedings, Part I . 211–229. Google Scholar
Cross Ref
- Gagandeep Singh, Markus Püschel, and Martin T. Vechev. 2018b. A practical construction for decomposing numerical abstract domains. PACMPL 2, POPL (2018), 55:1–55:28. Google Scholar
Digital Library
- Yu Su, Ding Ye, and Jingling Xue. 2014. Parallel Pointer Analysis with CFL-Reachability. In 43rd International Conference on Parallel Processing, ICPP 2014, Minneapolis, MN, USA, September 9-12, 2014 . 451–460. Google Scholar
Digital Library
- Edward Szpilrajn. 1930. Sur l’extension de l’ordre partiel. Fundamenta Mathematicae 16, 1 (1930), 386–389. http://eudml. org/doc/212499Google Scholar
Cross Ref
- Robert Endre Tarjan. 1973. Testing Flow Graph Reducibility. In Proceedings of the 5th Annual ACM Symposium on Theory of Computing, April 30 - May 2, 1973, Austin, Texas, USA . 96–107. Google Scholar
Digital Library
- Robert Endre Tarjan. 1979. Applications of Path Compression on Balanced Trees. J. ACM 26, 4 (1979), 690–715. Google Scholar
Digital Library
- John W. Tukey. 1977. Exploratory data analysis (Addison-Wesley series in behavioral science : quantitative methods). AddisonWesley. http://www.worldcat.org/oclc/03058187Google Scholar
- Arnaud Venet. 2012. The Gauge Domain: Scalable Analysis of Linear Inequality Invariants. In Computer Aided Verification -24th International Conference, CAV 2012, Berkeley, CA, USA, July 7-13, 2012 Proceedings . 139–154. Google Scholar
Digital Library
- Arnaud Venet and Guillaume P. Brat. 2004. Precise and efficient static array bound checking for large embedded C programs. In Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation 2004, Washington, DC, USA, June 9-11, 2004 . 231–242. Google Scholar
Digital Library
- Kai Wang, Aftab Hussain, Zhiqiang Zuo, Guoqing (Harry) Xu, and Ardalan Amiri Sani. 2017. Graspan: A Single-machine Disk-based Graph System for Interprocedural Static Analyses of Large-scale Systems Code. In Proceedings of the TwentySecond International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS 2017, Xi’an, China, April 8-12, 2017 . 389–404. Google Scholar
Digital Library
- Cathrin Weiss, Cindy Rubio-González, and Ben Liblit. 2015. Database-Backed Program Analysis for Scalable Error Propagation. In 37th IEEE/ACM International Conference on Software Engineering, ICSE 2015, Florence, Italy, May 16-24, 2015, Volume 1 . 586–597. Google Scholar
Cross Ref
- Reinhard Wilhelm, Shmuel Sagiv, and Thomas W. Reps. 2000. Shape Analysis. In Compiler Construction, 9th International Conference, CC 2000, Held as Part of the European Joint Conferences on the Theory and Practice of Software, ETAPS 2000, Berlin, Germany, March 25 - April 2, 2000, Proceedings . 1–17. Google Scholar
Cross Ref
Index Terms
Deterministic parallel fixpoint computation
Recommendations
Parallel concurrent ML
ICFP '09: Proceedings of the 14th ACM SIGPLAN international conference on Functional programmingConcurrent ML (CML) is a high-level message-passing language that supports the construction of first-class synchronous abstractions called events. This mechanism has proven quite effective over the years and has been incorporated in a number of other ...
EigenCFA: accelerating flow analysis with GPUs
POPL '11We describe, implement and benchmark EigenCFA, an algorithm for accelerating higher-order control-flow analysis (specifically, 0CFA) with a GPU. Ultimately, our program transformations, reductions and optimizations achieve a factor of 72 speedup over an ...
Parallel skyline computation on multicore architectures
With the advent of multicore processors, it has become imperative to write parallel programs if one wishes to exploit the next generation of processors. This paper deals with skyline computation as a case study of parallelizing database operations on ...






Comments