Approaches for developing code that is efficient, scalable, and portable—from laptops to emerging extreme-scale architectures.
Achieving good performance of CSE code requires attention to both efficiency (use of appropriate algorithms and data structures for target problems and architectures, impacting the speed of runtime execution) and scalability (as computing resources increase, solving a fixed-sized problem faster and/or handling larger problem sizes). However, focus on performance can have detrimental effects on other software quality metrics such as correctness, portability, and usability. We provide information to help to improve performance while considering software design, practices, and processes that enable the preservation of other quality metrics.
Software exhibiting similar performance across multiple platforms, with the time to solution reflecting efficient utilization computational resources on each platform.
The practice of aggregating computing power in a way that delivers much higher performance than one could get out of a typical desktop computer or workstation in order to solve large problems, often in science and engineering.
Factors that must be considered when developing software for the leadership-class supercomputers, among the fastest computers in the world.