- Portable programming models that allow expert and typical programmers to express parallelism easily and allow software to be efficiently reused on multiple generations of evolving hardware;
- Parallel-computing architectures driven by applications, including enhancements of chip multiprocessors, conventional data-parallel architectures, application-specific architectures, and radically different architectures;
- Open interface standards for parallel programming systems that promote cooperation and innovation to accelerate the transition to practical parallel computing systems; and
- Engineering and computer-science educational programs that incorporate an increased emphasis on parallelism and use a variety of methods and approaches to better prepare students for the types of computing resources that they will encounter in their careers.
Although all of those areas are important, fundamental power and energy constraints mean that even the best efforts might not yield a complete solution. Parallel computing systems will grow in performance over the long term only if they can become more power-efficient. Therefore, in addition to a focus on parallel processing, we need research and development on much more power-efficient computing systems at all levels of technology, including devices, hardware architecture, and software systems.