Janus: Statically-Driven and Profile-Guided Automatic Dynamic Binary Parallelisation
CGO 2019 - Proceedings of the 2019 IEEE/ACM International Symposium on Code Generation and Optimization
MetadataShow full item record
Zhou, K., & Jones, T. M. (2019). Janus: Statically-Driven and Profile-Guided Automatic Dynamic Binary Parallelisation. CGO 2019 - Proceedings of the 2019 IEEE/ACM International Symposium on Code Generation and Optimization, 15-25. https://doi.org/10.1109/CGO.2019.8661196
We present Janus, a framework that addresses the challenge of automatic binary parallelisation. Janus uses same-ISA dynamic binary modification to optimise application binaries, controlled by static analysis with judicious use of software speculation and runtime checks that ensure the safety of the optimisations. A static binary analyser first examines a binary executable, to determine the loops that are amenable to parallelisation and the transformations required. These are encoded as a series of rewrite rules, the steps needed to convert a serial loop into parallel form. The Janus dynamic binary modifier reads both the original executable and rewrite rules and carries out the transformations on a per-basic-block level just-in-time before execution. Lifting static analysis out of the runtime enables the global and profile-guided views of the application; ambiguities from static binary analysis can in turn be addressed through a combination of dynamic runtime checks and speculation guard against data dependence violations. It allows us to parallelise even those loops containing dynamically discovered code. We demonstrate Janus by parallelising a range of optimised SPEC CPU 2006 benchmarks, achieving average speedups of 2.1× and 6.0× in the best case.
Arm Ltd Engineering and Physical Sciences Research Council (EP/K026399/1), Engineering and Physical Sciences Research Council (EP/P020011/1)
External DOI: https://doi.org/10.1109/CGO.2019.8661196
This record's URL: https://www.repository.cam.ac.uk/handle/1810/289284