The high performance super-computers of today and the ordinary computers of tomorrow have an ever-increasing number of cores. Utilizing these computers efficiently will allow research advancements in every field of science, from understanding the brain to understanding the fundamental particles to understanding the cosmos. These new computers are increasingly complex and difficult to program. At the same time, standard algorithms used in science and engineering are evolving and are increasingly hard to map to these machines. Advances in programming models, tools, and implementations which make implementing complex algorithms simpler, while achieving high performance, are essential to making high performance computing a standard tool of all scientists.
Regular algorithms, usually expressed with matrices, have driven high performance computing. Increasingly there is considerable interest in using large-scale computers for irregular algorithms. Irregular algorithms arise in manipulating graphs, sparse-matrices, trees, adaptive meshes, etc and are increasingly a standard tool used by computational scientists. Expressing such algorithms at a high-level has allowed high-performance run-times to achieve performance comparable to the best hand-coded implementations of these algorithms on shared-memory machines. A high level description frees the programmer from the complexities of parallel programming. The PIs are building run-times and compilers to allow the execution of complex, irregular algorithms on distributed-memory, large-scale computers. A high-level representation allows the system to exploit considerable knowledge about the semantics of the algorithm to optimize communication, mask latency, and achieve high-performance.