In this talk we examine how high performance computing has changed over 
the last 10-year and look toward the future in terms of trends. These 
changes have had and will continue to have a major impact on our 
software.  Some of the software and algorithm challenges have already 
been encountered, such as management of communication and memory 
hierarchies through a combination of compile--time and run--time 
techniques, but the increased scale of computation, depth of memory 
hierarchies, range of latencies, and increased run--time environment 
variability will make these problems much harder.

We will look at five areas of research that will have an importance 
impact in the development of software and algorithms.

We will focus on following themes:

  * Redesign of software to fit multicore and hybrid architectures
  * Automatically tuned application software
  * Exploiting mixed precision for performance
  * The importance of fault tolerance
  * Communication avoiding algorithms