Dynamic feedback
- 1 May 1997
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 32 (5) , 71-84
- https://doi.org/10.1145/258916.258923
Abstract
This paper presents dynamic feedback, a technique that enables computations to adapt dynamically to different execution environments. A compiler that uses dynamic feedback produces several different versions of the same source code; each version uses a different optimization policy. The generated code alternately performs sampling phases and production phases. Each sampling phase measures the overhead of each version in the current environment. Each production phase uses the version with the least overhead in the previous sampling phase. The computation periodically resamples to adjust dynamically to changes in the environment.We have implemented dynamic feedback in the context of a parallelizing compiler for object-based programs. The generated code uses dynamic feedback to automatically choose the best synchronization optimization policy. Our experimental results show that the synchronization optimization policy has a significant impact on the overall performance of the computation, that the best policy varies from program to program, that the compiler is unable to statically choose the best policy, and that dynamic feedback enables the generated code to exhibit performance that is comparable to that of code that has been manually tuned to use the best policy. We have also performed a theoretical analysis which provides, under certain assumptions, a guaranteed optimality bound for dynamic feedback relative to a hypothetical (and unrealizable) optimal algorithm that uses the best policy at every point during the execution.This publication has 32 references indexed in Scilit:
- Lazy Threads: Implementing a Fast Parallel CallJournal of Parallel and Distributed Computing, 1996
- Profile-assisted instruction schedulingInternational Journal of Parallel Programming, 1994
- Communication optimization and code generation for distributed memory machinesACM SIGPLAN Notices, 1993
- Global optimizations for parallelism and locality on scalable parallel machinesACM SIGPLAN Notices, 1993
- Profile‐guided automatic inline expansion for C programsSoftware: Practice and Experience, 1992
- Demonstration of automatic data partitioning techniques for parallelizing compilers on multicomputersIEEE Transactions on Parallel and Distributed Systems, 1992
- SPLASHACM SIGARCH Computer Architecture News, 1992
- Multiprocessors and run‐time compilationConcurrency: Practice and Experience, 1991
- Experience with the SETL OptimizerACM Transactions on Programming Languages and Systems, 1983
- An empirical study of FORTRAN programsSoftware: Practice and Experience, 1971