Approach

IDEAS community partnerships are advancing scientific productivity through better scientific software.


IDEAS Goals

IDEAS goals are to qualitatively change the culture of high-performance computational science and to provide a foundation (through software productivity methodologies and an advanced software ecosystem) that enables transformative and reliable next-generation predictive science and decision support.

Our integrated approach to process improvement focuses on four complementary focus areas:

Together, these drive IDEAS partnerships toward fostering a diverse and inclusive research culture.

Curating methodologies and educational resources

We use a multifaceted approach to develop, customize, curate, and deploy best practices as a fundamental way to improve software sustainability and programmer productivity. This work requires distilling the collective understanding of team and community members with many years of valuable experience in designing and producing high-quality, reusable HPC scientific software. This experience, when combined with knowledge obtained from the broader software engineering community, has provided a foundation for focused discussion, distillation, and development of a large and growing collection of resources for scientific software teams, including topics such as agile processes, collaboration via revision control workflows, reproducibility, and scientific software design, refactoring, and testing. Specific activities include:

Establishing the Better Scientific Software (BSSw.io) website

We have established the Better Scientific Software (BSSw.io) website as a hub for sharing information on practices to improve software productivity and sustainability. Readers benefit from blog articles, curated content, and event information contributed by over 250 international community members, covering a wide range of topics relating to scientific software planning, development, performance, reliability, collaboration, and skills.

Devising Productivity and Sustainability Improvement Planning (PSIP)

We have devised Productivity and Sustainability Improvement Planning (PSIP), a light-weight, iterative workflow where teams incrementally and iteratively upgrade software practices. Teams are now more productively tackling science goals through PSIP advances in areas such as software builds, testing, refactoring, revision control, documentation, and coding standards.

Advancing team of teams concepts

We are advancing team of teams concepts to strengthen collaborations within the community, with emphasis on improving connections among the many multi-institutional teams that contribute to the Extreme-Scale Scientific Software Stack (E4S).

Establishing software communities

Self-organizing software communities, including developers and users of related technologies, who deeply understand their own requirements and priorities, are well positioned to determine effective strategies for collaboration and coordination. Leveraging involvement in ECP software ecosystem activities as well as experience in defining and deploying best practices in software engi- neering for computational science, members of the IDEAS-ECP project are devising resources to help teams prepare for and participate in ECP software ecosystems and also to increase trust in computational results.

Software Development Kits (SDKs)

Software Development Kits (SDKs) establish collaborative structures for product communities. The SDK approach grew out of the original IDEAS xSDK to provide cross-team collaboration among math libraries teams by design. The activities conducted within the SDKs have been effective at accelerating design space exploration and making compatible collections of libraries and tools that benefit users, facilities, and the product development teams themselves. SDKs also establish community software policies to advance the quality, usability, and interoperability of related software technologies, while supporting autonomy of diverse teams that naturally have different drivers and constraints.

Code Analysis and mining Tools (CAT) SDK

The Code Analysis and mining Tools (CAT) SDK is the most recent contribution to SDK community building. CAT-SDK—a productized suite of analysis tools (including those for analyzing repositories, source code, and pull requests)—enables software teams to gain insight into the day-to-day programming aspects of projects to help understand and improve development processes.

Extreme-scale Scientific Software Stack (E4S)

The Extreme-scale Scientific Software Stack (E4S) is a curated stack that incorporates the various topical SDKs (including programming models and runtimes, math libraries, data and visualization libraries, and development tools) and relies on the Spack software management ecosystem. E4S facilitates the combined use of independent software packages by application teams, while also improving transparency and reproducibility of computational results.

Providing opportunities for peer knowledge sharing and training

Central to IDEAS work are multipronged efforts that help grow and mobilize a dynamic community to improve software quality, productivity, and sustainability. Our goal is to establish a ”virtuous 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. Specific activities are:

Producing the webinar series Best Practices for HPC Software Developers

Launched in 2016 in partnership with the DOE computing facilities ALCF, NERSC, and OLCF, the webinar series Best Practices for HPC Software Developers provides a venue for many topics in HPC scientific software devel- opment from practitioners throughout the international community.

Creating and teaching tutorials on scientific software practices

IDEAS tutorials focus on topics software testing, verification, revision control, refactoring, agile processes, and more. We present important considerations and practices in scientific software development, typically based on “best practices” identified in the broader software engineering community, tailored and adapted to needs of the HPC scientific software community.

Launching the Better Scientific Software (BSSw) Fellowship Program

The BSSw Fellowshop Program gives recognition and funding to leaders and advocates of high-quality scientific software. The main goal is to foster and promote practices, processes, and tools to improve developer productivity and software sustainability of scientific codes. BSSw Fellows are selected annually based on an application process that includes the proposal of a funded activity ($25k) that promotes better scientific software. We encourage diverse applicants at all career stages, ranging from students through early-career, mid-career, and senior professionals. Initiated in 2018 with DOE support, with NSF joining sponsorship in 2021, a total of 27 BSSw Fellows in the 2018–2023 cohorts have developed training materials (including presentations in the HPC Best Practices webinar series) on topics such as code reviews, software testing, planning, design, and team collaboration; 27 BSSw Honorable Mentions have received recognition through community engagement.

The BSSw Fellowship Program is helping to advance the culture and careers of research software engineers (RSEs)[70], whose work is central to the sustainment of scientific software— focusing community attention on RSE contributions and providing a larger stage to advance causes related to high-quality software[28]. Moreover, the program provides a pathway to introduce newcomers with strong software skills to the DOE community. Extension and growth of the BSSw Fellowship Program, with broader integration throughout DOE offices that use advanced computing, would help to grow the community of people and training resources needed for trans-disciplinary research.

Fostering cross-organization dialogue

We create opportunities for a regular cadence of informal cross-institutional dialogue and mecha- nisms to further build community by sharing lessons learned. In CSE, most conferences, work- shops, and journals focus on scientific results and advances in algorithms and methodologies that help create them. Fewer opportunities exist to discuss the process of developing software—which provides the foundation for CSE collaboration and scientific discoveries. Promoting and providing opportunities for such discussions to take place, through workshops and focused sessions within larger conferences, as well as other types of events, is a key part of the IDEAS outreach strategy. Specific activities are:

Organizing BOFs, workshops, and other community events

We lead events that foster discussion of issues in scientific software development. A growing number of scientific meetings “crowd source” portions of their content, allowing meeting participants to propose and organize sessions. We typically organize such sessions together with like-minded community members and invite a broad selection of speakers. We advertise these events widely and create archives to capture the events for future reference (e.g., BOFs on software engineering for CSE at the SC and ISC conference series[9]). We also organize standalone workshops that provide the opportunity for more in-depth interactions, notably the Collegeville Workshop on Scientific Software.

Leading a panel series on performance portability

We led an ECP panel series on performance portability. As teams are working toward performance portability across emerging exascale architectures, we partnered with DOE computing facilities and the three focus areas of ECP (application development, software technology, and hardware and integration) to lead an online panel series considering common themes of algorithmic and data locality challenges. Discussion focused on lessons learned, identifying gaps, and discovering opportunities for partnerships in work toward performance portability.

Hosting a panel series on Strategies for Working Remotely

In response to the COVID-19 pandemic and need for many in our community to transition to unplanned remote work, in spring of 2020 we launched the panel series Strategies for Working Remotely, which explores experiences transitioning from co-located and partially distributed teams to fully virtual teams, and teams of teams. Panelists have discussed challenges, lessons learned, and unforeseen benefits, as well as opportunities to work toward sustainable hybrid approaches for distributed team collaboration in HPC.

Hosting a webinar series on HPC Workforce Development and Retention

As part of the ECP Broadening Participation Initiative, in 2022 we initiated a webinar series as part of a multifaceted strategy to expand the pipeline and workforce for DOE high-performance computing. Led by the multi-lab HPC Workforce Development and Retention Action Group, webinars have addressed topics such as ally skills, diversifying computing, mentoring, and normalizing inclusion by embracing difference.