With the emergence of the multicore architecture comes the promise of integrating enormous computing power in a single chip, thereby enabling parallel computing in all types of platforms including handheld computers and desktop machines. Providing proper software support for applications is critical to harness the true power of this architecture. An inherent characteristic of multicores that presents a significant obstacle is runtime variation: reliability, energy/thermal behavior and process variation will vary across identically designed components of a multicore, producing a negative impact on application power consumption and performance. Runtime variation has been identified as one of the key problems that could block further scaling of circuits if not properly addressed.
This research project is developing an advanced execution system, called a Robust Execution Environment (REEact), that dynamically mediates, controls and adapts an application's execution to the runtime resource landscape originating from runtime variations. It employs a combination of techniques in adapting both the hardware resources and the application software code to overcome the impact of runtime variations. At the hardware level, it adapts the resources, such as setting the speed/voltage of a node on the multicore. At the software level, REEact dynamically optimizes code, taking into account performance and power consumption due to runtime variations. It elicits the help of the OS in determining what resources to use in running the application. REEact informs the OS about information it dynamically discovers about latency, power, and application behavior. REEact is built as multi-layer hierarchical runtime system that interacts with the parallel application, the OS, and the underlying multicore architecture to ensure that maximum performance is achieved.
With the emergence of multiple central processing units (i.e., "cores") on a processor comes the promise of integrating enormous computing power in a single chip, thereby enabling parallel computing in all types of platforms, including mobile, desktop and server computers. Providing support for applications to harness the true power of this processor type is critical. Multi-core processors have an inherent characteristic that presents a significant obstacle: reliability, performance, and energy/thermal behavior vary across identically designed components of a multicore processor during the execution of software applications, producing a negative impact on power consumption and performance. Runtime variation has been identified as one of the key problems that could block further improvement of circuits if not addressed. This research project developed an advanced execution system, called REEact (Robust Execution Environment), to mediate, control and adapt an application's execution to the runtime resource landscape originating from runtime variations. REEact employed a combination of techniques to adapt the hardware resources and application software to overcome the impact of runtime variation. It dynamically changed the application through optimizations that take into account performance and power consumption due to runtime variations. It optimized the amount of work done concurrently on multiple cores and the assignment of work to cores to achieve better performance, based on other activity in the system. It also optimized the use of hardware capabilities, such as enabling/disabling the prefetching of data from memory and scheduling the application software to different cores to avoid thermal failure. The project determined that these optimizations successfully improved performance in response to runtime variation. REEact was built as multi-layer hierarchical runtime system that interacted with the parallel application, the operating system, and the underlying multicore processor. The project designed, developed and implemented REEact for a variety of computer systems, including large computers that have multiple processors, each with multiple cores. REEact was developed to be extensible to allow adaptation to new architecture features and incorporation of new new transformations and optimizations. The project found that carefully designed interfaces and capabilities made REEact flexible enough to support many transformations and optimizations while reducing programmer burden to implement the transformations and optimizations. The project trained twelve graduate students---five at the University of Pittsburgh, four at Penn State University, and three at the University of Virginia. In addition, the project included a number of undergraduate students. The project undertook a many outreach activities, including participating in several CRA-W Grad Cohort Workshops, leading a Schloss-Dagstuhl seminar on software dynamic translation, and presenting a conference tutorial on software dynamic translation. The project team also organized and led a CRA-W Discipline-Specific Workshop to increase participation of members of underrepresented groups by providing career mentoring advice and an overview of future research directions. The theme of the workshop was Multicore Systems: Architectures, Runtime Systems and Software Development. The workshop included a number of invited talks and was attended by over 35 graduate students from underrepresented groups.