Software Sustainability and Performance Engineering
Software plays an important role in many scientific domains. In this context, large components are often written over long periods of time by a large number of developers. Often, these projects are also only developed for a specific computing environment, for example a specific HPC system or local computing resources.
As the number of developers increases and a project is developed over a longer period of time, the likelihood of errors being introduced into the code base increases, as it is not possible to manually test all possible configurations and validate the results for each change. As a result, either the quality of the code decreases or significant manpower must be invested for integration testing before a new version can be released.
In addition, using the software in different computing environments requires additional effort for adjustments and validations of the software.
This is especially true when porting software to new hardware architectures.
With continuous integration, testing and benchmarking, software developers have methods and tools at their disposal to automate these tasks and reduce the necessary effort.
The Software Sustainability and Performance Engineering (SSPE) team supports scientific software developers in selecting the right tools to make scientific codes fit for the future, to make optimal use of the available computing resources and advises on porting, testing and benchmarking on new architectures, for example the systems of the Future Technologies Partition of the NHR Center NHR@KIT.