In this work, we propose an application composition
system (ACS) that allows design-time exploration and automatic
run-time optimizations so that we relieve application
programmers and compiler writers from the challenging
task of optimizing the computation in order to achieve
high performance. Our new framework, called "Design
Optimizer for Scientific Applications" (DOSA), allows the
programmer or compiler writer to explore alternative designs
and optimize for speed (or power) at design-time and
use its run-time optimizer as an automatic ACS. The ACS
constructs an efficient application that dynamically adapts
to changes in the underlying execution environment based
on the kernel model, architecture, system features, available
resources, and performance feedback. The run-time
system is a portable interface that enables dynamic application
optimization by interfacing with the output of DOSA.
It thus provides an application composition system that determines
suitable components and performs continuous performance
optimizations. We focus on utilizing advanced architectural
features and memory-centric optimizations that
reduce the I/O complexity, cache pollution, and processormemory
traffic, in order to achieve high performance. The
design-time effort uses a computer-aided design space exploration
that provides a user-friendly graphical modeling
environment, high-level performance estimation and profiling,
and the ability to integrate low-level simulators suitable
for HPC architectures.