This project provides next generation programming tools that enable compositional construction of complex, adaptive, software systems. As the name connotes, the adaptive code kitchen is a loose collection of capabilities by which an application scientist can specify and realize "recipes" of adaptivity around native object codes. These capabilities include function interception, continuation modification, dynamic process checkpointing and rollback, and runtime recommendation. The project develops both the compile-time and runtime infrastructure enabling these capabilities and also a cookbook of standard adaptivity schemas, which can be instantiated to cover a wide range of adaptation possibilities. Using the adaptive code kitchen, the application scientist can incorporate libraries of native object codes, specify problem/task boundaries, organize his application into clouds of related functions, instantiate one of the supplied adaptivity schemas, and track the application's progress through an interactive monitor. As a domain case study, the project investigates computational fluid dynamics simulations, especially the modeling of turbulence.
Besides improved understanding of application composition systems, the impacts of the adaptive code kitchen project are in both the domain context and in educational outreach. The accurate modeling and prediction of turbulent flows, especially in airplanes, ships, and automobiles, as supported by the adaptive code kitchen can have a major impact in reducing energy consumption. In addition, the investigators will offer short-term courses at Virginia Tech showcasing the use of the techniques developed here and, in this manner, give domain scientists across campus the training and expertise they need to construct their own adaptive applications.