Second International Workshop on Software Engineering for
High Performance Computing System Applications
Sunday, May 15, 2005
St. Louis, Missouri
Co-located with ICSE-2005
High performance computing systems are used to develop software for wide variety of domains including nuclear physics, crash simulation, satellite data processing, fluid dynamics, climate modeling, bioinformatics, and financial modeling. The TOP500 website lists the 500 highest performance computing systems along with their specifications and owners. The diversity of government, scientific, and commercial organizations present on this list illustrates the growing prevalence and impact of HPCS applications on modern society.
Recent initiatives in the HPCS community, such as the DARPA High Productivity Computing Systems Program and the
Workshop on the Roadmap for the Revitalization of High-End Computing recognize that dramatic increases in low-level HPCS benchmarks of processor speed and memory access times do not necessarily translate into high-level increases in actual development productivity. While the machines are getting faster, the developer effort required to fully exploit these advances can be prohibitive. There is an emerging movement within the HPCS community to define new ways of measuring high performance computing systems, ways which take into account not only the low-level hardware components, but the higher-level productivity costs associated with producing usable HPCS applications. This movement creates an opportunity for the software engineering community to apply our techniques and knowledge to a new and important application domain.
Furthermore, the design, implementation, development, and maintenance of HPCS software systems can differ in significant ways from the systems and development processes more typically studied by the software engineering community:
- The requirements often include conformance to sophisticated mathematical models. Indeed, requirements may often take the form of an executable model in a system such as Mathematica, and the implementation involves porting to the
HPCS.
- The software development process, or "workflow" for HPCS application development may differ profoundly from traditional software engineering processes. For example, one scientific computing workflow, dubbed the "lone researcher", involves a single scientist developing a system to test a hypothesis. Once the system runs correctly once and returns its results, the scientist has no further need of the system. This contrasts with standard software engineering lifecycle models, in which the useful life of the software is expected to begin, not end, after the first correct execution.
- "Usability" in the context of HPCS application development may revolve around optimization to the machine architecture so that computations complete in a reasonable amount of time. The effort and resources involved in such optimization may exceed initial development of the algorithm.
This one day workshop will bring together researchers and practitioners from the software engineering and high performance computing system applications communities who have an interest in or have already begun pursuing research in this area. The goals of this workshop are to share perspectives, present findings from research and practice relevant to HPCS application development, and to generate a research agenda to improve tools, techniques, and experimental methods for HPCS software engineering in the future.
|