Tools and Practices
Incubating and curating methodologies
Development and dissemination of best practices is a fundamental requirement for improving developer productivity and software sustainability. The IDEAS team has many years of collective experience in producing and maintaining high-quality HPC scientific software. Much of this knowledge is gathered from the broader software engineering community and customized for specific needs of scientific software on topics such as agile processes, collaboration via revision control workflows, reproducibility, scientific software design, refactoring, and testing. A key focus is promoting continuous technology refreshment.
-
Productivity and Sustainability Improvement Planning (PSIP): A lightweight workflow for continual, incremental software process improvement. PSIP helps software teams take action on improving their software practices by focusing on one change at a time with a clearly defined series of steps to completion. It has been used successfully by a number of software teams in the ECP to make valuable improvements in their software processes.
-
BSSw.io: A hub to find and share scientific software development resources.
-
Collaboration via teams of teams: Recognizing the importance of multiteam collaboration to address the challenges of next-generation computational science, we have advanced the concepts of teams of teams to strengthen community partnerships and scale productivity and innovation. This lens has been used to understand and foster connections among the many multi-institutional teams that contribute to the ECP.
Fostering software communities
Since its inception, the IDEAS project has prioritized bringing together software teams to share knowledge and coordinate activities in a way that encourages communities to self-organize. This work has been particularly important for teams who are developing software ecosystems, where interoperability and compatibility are essential, yet it is not common practice for developers and users of related technologies to collaborate closely across independent projects at the community level. Each product community has different characteristics and needs, so the activities within communities vary accordingly. The results are often embodied in a “software development kit” (SDK).
-
Extreme-scale Scientific Software Development Kit (xSDK): A growing community of HPC math libraries focused on improving the interoperability of member products, to the benefit of their users. The xSDK community started as part of the IDEAS-Classic project and was spun off into a separate project under the ECP.
-
Code Analysis and mining Tools (CAT) SDK: A suite of analysis tools, developed by the IDEAS-ECP team, including those for analyzing repositories, source code, and pull requests, which enables software teams to gain insight into the day-to-day programming aspects of projects to help understand and improve development processes.
-
ECP Software Development Kits (SDKs): The SDK approach of establishing collaborative structures for product communities grew from the original IDEAS-Classic xSDK. ECP extended the SDK approach to other areas, including programming models, development tools, data and visualization, and workflows.
-
Extreme-scale Scientific Software Stack (E4S): A curated software stack that incorporates various topical SDKs (including programming models and runtimes, math libraries, data and visualization libraries, and development tools) which facilitates the combined use of independent software packages by application teams, while also improving transparency and reproducibility of computational results. The E4S originated in the ECP as a standalone effort inspired by previous IDEAS SDK efforts.
Disseminating knowledge
A central IDEAS goal is to establish a community-driven cycle in which widespread awareness of the importance of software quality and related issues in turn promotes sharing, discussion, and refinement of practices and resources for producing better scientific software. Key activities include producing several webinar and panel discussion series, developing and delivering training, and providing recognition to leaders and advocates of high-quality scientific software. In addition, we create opportunities for informal cross-institutional dialogue and mechanisms to build community by sharing lessons learned.
-
Best Practices for HPC Software Developers (HPC-BP) Webinar Series: The HPC Best Practices webinars address issues faced by developers of computational science and engineering (CSE) software on high-performance computers (HPC).
-
Tutorials on scientific software practices: The Better Scientific Software (BSSw) tutorials focus on issues of developer productivity, software sustainability, and reproducibility in scientific research software, particularly targeting high-performance computers.
-
Better Scientific Software (BSSw) Fellowship Program: Providing recognition and funding to leaders and advocates of high-quality scientific software.
-
BoFs, workshops, and community events: Creating opportunities to talk about software development, productivity, and sustainability as part of larger meetings or standalone.
-
ECP panel series on performance portability: Experiences of projects in the Exascale Computing Project Application Development with performance portability – how they’ve handled it and the outcomes they’ve realized.
-
Panel series on Strategies for Working Remotely: Exploring strategies for working remotely, with emphasis on how HPC teams can be effective and efficient in long-term hybrid settings.
-
HPC Workforce Development and Retention Action Group (HPC-WDR): The HPC-WDR Action Group originated as an extension of the IDEAS-ECP project as part of the ECP Broadening Participation Initiative’s strategy to expand the pipeline and workforce for DOE high-performance computing (whitepaper). The HPC-WDR Action Group organizes a webinar series which has discussed topics such as ally skills, diversifying computing, mentoring, and normalizing inclusion by embracing difference and publishes a website which archives the webinars as well as related resources.