Learning a strategy for adapting a program analysis via Bayesian optimisation

Hakjoo Oh, Hongseok Yang, Kwangkeun Yi

Research output: Chapter in Book/Report/Conference proceedingConference contribution

17 Citations (Scopus)

Abstract

Building a cost-effective static analyser for real-world programs is still regarded an art. One key contributor to this grim reputation is the difficulty in balancing the cost and the precision of an analyser. An ideal analyser should be adaptive to a given analysis task, and avoid using techniques that unnecessarily improve precision and increase analysis cost. However, achieving this ideal is highly nontrivial, and it requires a large amount of engineering efforts. In this paper we present a new approach for building an adaptive static analyser. In our approach, the analyser includes a sophisticated parameterised strategy that decides, for each part of a given program, whether to apply a precision-improving technique to that part or not. We present a method for learning a good parameter for such a strategy from an existing codebase via Bayesian optimisation. The learnt strategy is then used for new, unseen programs. Using our approach, we developed partially flowand context-sensitive variants of a realistic C static analyser. The experimental results demonstrate that using Bayesian optimisation is crucial for learning from an existing codebase. Also, they show that among all program queries that require flow-or context-sensitivity, our partially flow-and context-sensitive analysis answers the 75% of them, while increasing the analysis cost only by 3.3x of the baseline flow-and context-insensitive analysis, rather than 40x or more of the fully sensitive version.

Original languageEnglish
Title of host publicationOOPSLA 2015 - Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming Systems, Languages, and Applications
EditorsPatrick Eugster, Jonathan Aldrich
PublisherAssociation for Computing Machinery
Pages572-588
Number of pages17
ISBN (Electronic)9781450336895
DOIs
Publication statusPublished - 2015 Oct 23
Event2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2015 - Pittsburgh, United States
Duration: 2015 Oct 252015 Oct 30

Publication series

NameProceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA
Volume25-30-Oct-2015

Conference

Conference2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2015
CountryUnited States
CityPittsburgh
Period15/10/2515/10/30

Fingerprint

Costs

Keywords

  • Bayesian Optimization
  • Program Analysis

ASJC Scopus subject areas

  • Software

Cite this

Oh, H., Yang, H., & Yi, K. (2015). Learning a strategy for adapting a program analysis via Bayesian optimisation. In P. Eugster, & J. Aldrich (Eds.), OOPSLA 2015 - Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming Systems, Languages, and Applications (pp. 572-588). (Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA; Vol. 25-30-Oct-2015). Association for Computing Machinery. https://doi.org/10.1145/2814270.2814309

Learning a strategy for adapting a program analysis via Bayesian optimisation. / Oh, Hakjoo; Yang, Hongseok; Yi, Kwangkeun.

OOPSLA 2015 - Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming Systems, Languages, and Applications. ed. / Patrick Eugster; Jonathan Aldrich. Association for Computing Machinery, 2015. p. 572-588 (Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA; Vol. 25-30-Oct-2015).

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Oh, H, Yang, H & Yi, K 2015, Learning a strategy for adapting a program analysis via Bayesian optimisation. in P Eugster & J Aldrich (eds), OOPSLA 2015 - Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming Systems, Languages, and Applications. Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA, vol. 25-30-Oct-2015, Association for Computing Machinery, pp. 572-588, 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2015, Pittsburgh, United States, 15/10/25. https://doi.org/10.1145/2814270.2814309
Oh H, Yang H, Yi K. Learning a strategy for adapting a program analysis via Bayesian optimisation. In Eugster P, Aldrich J, editors, OOPSLA 2015 - Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming Systems, Languages, and Applications. Association for Computing Machinery. 2015. p. 572-588. (Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA). https://doi.org/10.1145/2814270.2814309
Oh, Hakjoo ; Yang, Hongseok ; Yi, Kwangkeun. / Learning a strategy for adapting a program analysis via Bayesian optimisation. OOPSLA 2015 - Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming Systems, Languages, and Applications. editor / Patrick Eugster ; Jonathan Aldrich. Association for Computing Machinery, 2015. pp. 572-588 (Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA).
@inproceedings{509d3d103b0046b09969c3c4f67456d1,
title = "Learning a strategy for adapting a program analysis via Bayesian optimisation",
abstract = "Building a cost-effective static analyser for real-world programs is still regarded an art. One key contributor to this grim reputation is the difficulty in balancing the cost and the precision of an analyser. An ideal analyser should be adaptive to a given analysis task, and avoid using techniques that unnecessarily improve precision and increase analysis cost. However, achieving this ideal is highly nontrivial, and it requires a large amount of engineering efforts. In this paper we present a new approach for building an adaptive static analyser. In our approach, the analyser includes a sophisticated parameterised strategy that decides, for each part of a given program, whether to apply a precision-improving technique to that part or not. We present a method for learning a good parameter for such a strategy from an existing codebase via Bayesian optimisation. The learnt strategy is then used for new, unseen programs. Using our approach, we developed partially flowand context-sensitive variants of a realistic C static analyser. The experimental results demonstrate that using Bayesian optimisation is crucial for learning from an existing codebase. Also, they show that among all program queries that require flow-or context-sensitivity, our partially flow-and context-sensitive analysis answers the 75{\%} of them, while increasing the analysis cost only by 3.3x of the baseline flow-and context-insensitive analysis, rather than 40x or more of the fully sensitive version.",
keywords = "Bayesian Optimization, Program Analysis",
author = "Hakjoo Oh and Hongseok Yang and Kwangkeun Yi",
year = "2015",
month = "10",
day = "23",
doi = "10.1145/2814270.2814309",
language = "English",
series = "Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA",
publisher = "Association for Computing Machinery",
pages = "572--588",
editor = "Patrick Eugster and Jonathan Aldrich",
booktitle = "OOPSLA 2015 - Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming Systems, Languages, and Applications",

}

TY - GEN

T1 - Learning a strategy for adapting a program analysis via Bayesian optimisation

AU - Oh, Hakjoo

AU - Yang, Hongseok

AU - Yi, Kwangkeun

PY - 2015/10/23

Y1 - 2015/10/23

N2 - Building a cost-effective static analyser for real-world programs is still regarded an art. One key contributor to this grim reputation is the difficulty in balancing the cost and the precision of an analyser. An ideal analyser should be adaptive to a given analysis task, and avoid using techniques that unnecessarily improve precision and increase analysis cost. However, achieving this ideal is highly nontrivial, and it requires a large amount of engineering efforts. In this paper we present a new approach for building an adaptive static analyser. In our approach, the analyser includes a sophisticated parameterised strategy that decides, for each part of a given program, whether to apply a precision-improving technique to that part or not. We present a method for learning a good parameter for such a strategy from an existing codebase via Bayesian optimisation. The learnt strategy is then used for new, unseen programs. Using our approach, we developed partially flowand context-sensitive variants of a realistic C static analyser. The experimental results demonstrate that using Bayesian optimisation is crucial for learning from an existing codebase. Also, they show that among all program queries that require flow-or context-sensitivity, our partially flow-and context-sensitive analysis answers the 75% of them, while increasing the analysis cost only by 3.3x of the baseline flow-and context-insensitive analysis, rather than 40x or more of the fully sensitive version.

AB - Building a cost-effective static analyser for real-world programs is still regarded an art. One key contributor to this grim reputation is the difficulty in balancing the cost and the precision of an analyser. An ideal analyser should be adaptive to a given analysis task, and avoid using techniques that unnecessarily improve precision and increase analysis cost. However, achieving this ideal is highly nontrivial, and it requires a large amount of engineering efforts. In this paper we present a new approach for building an adaptive static analyser. In our approach, the analyser includes a sophisticated parameterised strategy that decides, for each part of a given program, whether to apply a precision-improving technique to that part or not. We present a method for learning a good parameter for such a strategy from an existing codebase via Bayesian optimisation. The learnt strategy is then used for new, unseen programs. Using our approach, we developed partially flowand context-sensitive variants of a realistic C static analyser. The experimental results demonstrate that using Bayesian optimisation is crucial for learning from an existing codebase. Also, they show that among all program queries that require flow-or context-sensitivity, our partially flow-and context-sensitive analysis answers the 75% of them, while increasing the analysis cost only by 3.3x of the baseline flow-and context-insensitive analysis, rather than 40x or more of the fully sensitive version.

KW - Bayesian Optimization

KW - Program Analysis

UR - http://www.scopus.com/inward/record.url?scp=84958597240&partnerID=8YFLogxK

UR - http://www.scopus.com/inward/citedby.url?scp=84958597240&partnerID=8YFLogxK

U2 - 10.1145/2814270.2814309

DO - 10.1145/2814270.2814309

M3 - Conference contribution

T3 - Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA

SP - 572

EP - 588

BT - OOPSLA 2015 - Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming Systems, Languages, and Applications

A2 - Eugster, Patrick

A2 - Aldrich, Jonathan

PB - Association for Computing Machinery

ER -