Given the increasing complexity of manycore architectures, a wide range of architecture parameters must be tuned at design-time to find the best tradeoffs in terms of multiple metrics such as energy and delay. Given the huge design space of manycore architectures, automatic design space exploration is necessary to systematically support at design-time the exploration and the comparison of the design alternatives in terms of multiple competing objectives. At runtime, manycore architectures offer a set of resources that can be assigned and managed dynamically to get a specified Quality of Service. Applications can expose to the runtime a set of software knobs (including application parameters, code transformations and code variants) to trade-off Quality of Results and Throughput. Resource management and application autotuning are key issues for enabling computing systems to operate close to optimal efficiency by adjusting their behavior in the face of changing conditions, operating environments, usage contexts and resource availability while meeting the requirements on energy-efficiency and Quality-of-Service.
This talk will present multi-objective DSE techniques for many-core architectures. The key techniques include a set of sampling and optimization techniques for finding Pareto points and Design of Experiment techniques to identify the experimentation plan. Machine learning techniques can be used to obtain a prediction of the system behavior based on the set of training data generated by DoE. This talk also presents an application autotuning framework to tune the software knobs in an adaptive multi-application scenario. To support this scenario, where different applications are running concurrently on the same platform, the system resources should be assigned and managed efficiently to the active applications. The approach exploits the concept of orthogonality between application autotuning and runtime management of system resources to support multiple adaptive applications. Overall, the main challenge is to exploit design-time and run-time concepts to lead to an effective way of “self-aware” computing.