Question How can design time help to reduce the complexity of runtime optimization? Curse of dimensionality During design-time the possible space for optimization is restricted Currently: – Start from a sequential solution – Stepwise increase Narrowing down the search space in each phase
Optimization @ Different Phases Design Time Implementation time Runtime
Design Time Architecture Design Optimization Variation Points – Component Allocation, Replication, Implementation – Hardware #cores, cpu speed, scheduling algorithm – Component configuration Goal: – Find good solution w.r.t. to different criteria Result a set of solutions (Pareto Front) that are optimal w.r.t. different criteria Performance, reliability, cost, energy efficiency (interesting since it is hard to optimize Only valid for the assumptions made by the optimization
Implementation / Compilation Time Input Parameters – HW Properties #of cores, cache size Variation Points – Tiling for loop iterations – reorder of instructions Goal – Minimize execution time or minimum amount of communication Means: – Smart compilation – Manual – Measurement Result: – A program with several parameters that can be changed at runtime (#of threads, blocksize…) – Parameterized schedule – Model that describes the effect of parameters on execution time
Runtime Variation Points – # of used threads – Memory footprint – Application specific parameters Means – Search-based optimization – Combine with prediction to assess the effect of parameter changes Result – Parameter Values
Interaction of Phases Feedback cycles #cores & #of threads used How do these interaction affect the prediction & optimization process?
Expectation How to use model prediction for runtime optimization? – Block Size HW-dependent? How to do good task scheduling? – Adaptive translation & execution Good starting point for search? – Preliminary measurement Multicriteria optimization at runtime? Extending design-time optimization towards runtime? Parameter- space exploration How can design time help to reduce the complexity of runtime optimization? – Curse of dimensionality – During design-time the possible space for optimization is restircted – Currently: Start from a sequential solution Stepwise increase Narrowing down the search space in each phase