skip to main content
research-article
Open Access
Artifacts Available
Artifacts Evaluated & Reusable

Deterministic parallel fixpoint computation

Published:20 December 2019Publication History
Skip Abstract Section

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.

Skip Supplemental Material Section

Supplemental Material

a14-kim.webm

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarCross RefCross Ref
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarCross RefCross Ref
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarCross RefCross Ref
  8. Dirk Beyer, Stefan Löwe, and Philipp Wendler. 2019. Reliable benchmarking: requirements and solutions. STTT 21, 1 (2019), 1–29. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle Scholar
  10. 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 ScholarGoogle ScholarCross RefCross Ref
  11. Guillaume Brat and Arnaud Venet. 2005. Precise and Scalable Static Program Analysis of NASA Flight Software. In 2005 IEEE Aerospace Conference . 1–10. Google ScholarGoogle ScholarCross RefCross Ref
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle Scholar
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle Scholar
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. Patrick Cousot, Roberto Giacobazzi, and Francesco Ranzato. 2019. A 2 I: abstract 2 interpretation. PACMPL 3, POPL (2019), 42:1–42:31. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarCross RefCross Ref
  21. 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 ScholarGoogle ScholarCross RefCross Ref
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. Michael R. Garey and David S. Johnson. 1979. Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman.Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. Philippe Granger. 1989. Static analysis of arithmetical congruences. International Journal of Computer Mathematics 30, 3-4 (1989), 165–190. Google ScholarGoogle Scholar
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. Paul Havlak. 1997. Nesting of Reducible and Irreducible Loops. ACM Trans. Program. Lang. Syst. 19, 4 (1997), 557–567. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Matthew S. Hecht and Jeffrey D. Ullman. 1972. Flow Graph Reducibility. SIAM J. Comput. 1, 2 (1972), 188–202. Google ScholarGoogle ScholarCross RefCross Ref
  31. 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 ScholarGoogle ScholarCross RefCross Ref
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle ScholarCross RefCross Ref
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  35. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  36. 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 ScholarGoogle ScholarCross RefCross Ref
  37. 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 ScholarGoogle ScholarCross RefCross Ref
  38. Antoine Miné. 2006. The octagon abstract domain. Higher-Order and Symbolic Computation 19, 1 (2006), 31–100. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  40. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  41. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  42. 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 ScholarGoogle ScholarCross RefCross Ref
  43. Ganesan Ramalingam. 1999. Identifying Loops in Almost Linear Time. ACM Trans. Program. Lang. Syst. 21, 2 (1999), 175–188. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Ganesan Ramalingam. 2002. On loops, dominators, and dominance frontiers. ACM Trans. Program. Lang. Syst. 24, 5 (2002), 455–490. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. James Reinders. 2007. Intel threading building blocks - outfitting C++ for multi-core processor parallelism. O’Reilly. http: //www.oreilly.com/catalog/9780596514808/index.htmlGoogle ScholarGoogle Scholar
  46. 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 ScholarGoogle ScholarCross RefCross Ref
  47. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  48. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  49. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  50. 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 ScholarGoogle ScholarCross RefCross Ref
  51. 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 ScholarGoogle Scholar
  52. 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 ScholarGoogle ScholarCross RefCross Ref
  53. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  54. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  55. Edward Szpilrajn. 1930. Sur l’extension de l’ordre partiel. Fundamenta Mathematicae 16, 1 (1930), 386–389. http://eudml. org/doc/212499Google ScholarGoogle ScholarCross RefCross Ref
  56. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  57. Robert Endre Tarjan. 1979. Applications of Path Compression on Balanced Trees. J. ACM 26, 4 (1979), 690–715. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. John W. Tukey. 1977. Exploratory data analysis (Addison-Wesley series in behavioral science : quantitative methods). AddisonWesley. http://www.worldcat.org/oclc/03058187Google ScholarGoogle Scholar
  59. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  60. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  61. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  62. 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 ScholarGoogle ScholarCross RefCross Ref
  63. 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 ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Deterministic parallel fixpoint computation

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!