In Cooperation:

Third International Workshop on Software Engineering for High Performance Computing in

Computational Science and Engineering

November 20, 2015

Held in Conjunction with SC15

Home      Call for Papers      Committee      Schedule

Shared Notes


This workshop is concerned with identifying and applying appropriate software engineering (SE) tools and practices (e.g., code generators, static analyzers, validation + verification (V&V) practices, design approaches, and maintenance practices) to support and ease the development of Computational Science & Engineering (CSE) software for High Performance Computing (HPC). Specifically:
  • CSE applications, which include, large parallel models/simulations of the physical world running on HPC systems.
  • CSE applications that utilize HPC systems (e.g., GPUs computing, compute clusters, or supercomputers) to manage and/or manipulate large amounts of data.
Despite the increasing demand for utilizing HPC for CSE applications, software development for HPC historically attracted little attention from the SE community. Paradoxically, the HPC CSE community has increasingly been adopting SE techniques and tools. Indeed, the development of CSE software for HPC differs significantly from the development of more traditional business information systems, from which many SE best practices and tools have been drawn. These differences appear at various phases of the software lifecycle as described below:
  • Requirements:
    • Risks due to the exploration of relatively unknown scientific/engineering phenomena;
    • Constant change as new information is gathered;
  • Design
    • Data dependencies within the software;
    • The need to identify the most appropriate parallelization strategy for CSE algorithms;
    • The presence of complex communication among HPC nodes that could degrade performance;
    • The need for fault tolerance and task migration mechanisms to mitigate the need to restart time-consuming computations due to software or hardware errors;
  • V&V
    • Results are often unknown when exploring novel science or engineering areas and algorithms;
    • Popular tools often do not work on the latest HPC architectures; they need to be tuned to handle many threads executing at the same time.>/li>
  • Deployment
    • Failure of components within running systems is expected due to system size;
    • Long system lifespans necessitate porting across multiple platforms
Therefore, in order to identify and develop appropriate tools and practices to support HPC CSE software, members of the SE community, the CSE community and the HPC community must interact with each other. This workshop aims to provide a platform to facilitate this interaction by encourage paper submission and workshop participation by people from all three communities. In addition to presentation and discussion of the accepted papers, significant time during the workshop will be devoted to large and small group discussions among the participants to identify important research questions at the intersection of SE and HPC CSE that are in need of additional study.

Previous editions of this workshop have focused discussion around a number of interesting topics, including: bit-by-bit vs. scientific validation, reproducibility, unique characteristics of CSE software that affect software development choices, major software quality goals for CSE software, crossing the communication chasm between SE and CSE, measuring the impact of SE on scientific productivity, SE tools and methods needed by the CSE community, and how to effectively test CSE software.

For more information contact Jeffrey Carver.
Last Updated on April 1, 2015 by Jeffrey Carver