Abstract
dc:description.abstractThis thesis focuses on specifying compiler analyses in a declarative language, namely Datalog. This work contains three contributions: expanding the number of programs Datalog, specifically Soufflé (a superset of Datalog), can support; providing a declarative implementation of a well-known analysis; and introducing a new program analysis. First, a new construct is introduced into Soufflé allowing consistent negation of relations used to infer facts about that same negated relation. This can be seen as a join point in inference when a rule partially pauses inference until the negated relation is in a consistent state, and it is safe to evaluate the negation. Soufflé, with consistent negation, is then used to specify a natural encoding of a depth-first graph exploration using a visited set and the sum of affine multivariable polynomials with partially disjoint variable domains. The technique allows previously difficult-to-implement problems to be implemented with asymptotically better performance, in a more natural and expressive fashion. Second, a declarative implementation of GVN is presented—a common program analysis to find equivalent program variables—called DGVN. This implementation breaks a data dependence throughout the whole GVN algorithm that previously limited its parallelism. The Soufflé implementation also makes use of the previously described new negation-aiding construct to increase performance and to allow a natural expression of the algorithm. DGVN is complete enough to be evaluated on benchmarks from Specint. Third, a definition of pairwise program commutativity is presented, useful to automatic parallelising compilers that transform data dependency graphs. This definition is then lifted into the set domain, allowing for interface-boundary respecting commutativity specifications using semantic program properties, as source-code inline annotations. This system is then used to encode commutative functions from libc and other common data structures and employed to parallelise several benchmark applications.
Degree
thesis:*- Name dc:type.qualificationname
- Doctor of Philosophy (PhD)
- Level dc:type.qualificationlevel
- Doctoral
- Grantor dc:publisher.institution
- University of Cambridge
- Year dc:date.issued
- 2022
Author and committee
dc:creator, dc:contributor.*- Author dc:creator
-
- Isaacs, Joseph
- Advisors dc:contributor.advisor
-
- Jones, Timothy
- Mycroft, Alan
Subjects
dc:subject × 1Rights
dc:rightsIdentifiers
dc:identifier.*- DOI dc:identifier.doi
- https://doi.org/10.17863/CAM.100114
- OAI identifier oai:identifier
- oai:www.repository.cam.ac.uk:1810/354249