Best Practices in Software Engineering

One of the roles of Software Outlook is to promote best practice in software engineering methodologies. Identifying what makes “high-quality software for researchers” will be part of this process. As part of this work package, we have identified existing best practice guidance and are promoting them to CCP and HEC developers. Additionally, with the help of our Hartree Centre colleagues, we have developed a series of articles on best practice. Further details are available in the Software Engineering Best Practices Area.


Code Containerisation

Code containerisation is starting to become a popular activity and of interest to CCPs. There are now a number of containerisation options available and it is important that the correct chose is made according to the needs of the individual CCPs. We are aware of CCPs that have had both positive and negative experiences with containers and we will work to understand the differences. Software Outlook has reviewed current containerisation options to enable us to promote the best to the CCPs/HECs. Further details are available in the Code Containerisation Area.


Code Coupling at Scale

As available computational power increases, there is a growing interest in the uses of complex multiscale solvers in a range of life science, physical science and engineering projects. In most cases, a single solver will not offer all of the required capabilities and, hence, a complex coupling framework is required to translate data between solvers and coordinate their separate calculations. In this work, we will aim to assess and demonstrate the practical applicability of existing code coupling tools in coupling two independent codes. Further details are available in the Code Coupling Area.


Hybrid Programming with CPUs/GPUs/Accelerators

During the last 10 years, the use of CPUs in conjunction with GPUs has gone from being an interesting research idea (with institutions purchasing standalone systems with GPU cards to investigate their use) to recent HPC clusters having large numbers of GPUs. Thus, hybrid GPU/CPU possibilities are now widely available and frameworks/libraries for using them have rapidly evolved. Many CCPs and HECs are now wanting to exploit these next generation architectures and wish to appropriately port their simulation codes. A survey of hybrid programming frameworks has been done and comparisons of GPU support performed using suitable kernels from CCP codes. We are also providing training on porting codes, including when it is suitable to do this and when it should be avoided. This work has centred around GPUs, but we have also included some comments about other accelerators. Further details are available in the Hybrid Programming Area.


Physics and Mathematics Libraries

Physics and mathematics are at the heart of most simulation codes. There are normally parts of the code where external physics and maths libraries can be used and these parts of the code can quickly become a bottleneck if the wrong library or method is used. The CCPs and HECs have identified linear algebra solvers (direct methods, iterative methods and preconditioners) and fast Fourier transforms as being current bottlenecks within their codes. As part of this project, we will identify possible libraries and investigate their suitability for the CCPs and HECs. Further details are available in the Physics and Mathematics Libraries Area.