Speaker
Description
The PURE keyword, introduced in Fortran 95, imposes constraints on a procedure – namely that it cannot perform side effects such as I/O (e.g. printing to the screen). PURE procedures have benefits from a software engineering perspective, making programs easier to test and guiding their development – as shown in https://pbartholomew08.github.io/thoughts/testing_pure_fortran.html. Another potential benefit is that by providing the compiler with additional information, PURE may enable additional optimisations. During the ASiMoV project, we undertook an effort to increase the use of PURE in the ASiMoV-CCS CFD solver, with the goal of improving code quality based on our experiences with using PURE in Fortran elsewhere. As most of the procedures this was applied to were relatively small we did not expect to see significant performance benefits, however with minimal changes we obtained significant improvements in several key components of the solver and an approximately 20% performance benefit overall. In this presentation we will assess the causes of these benefits and whether it is compiler dependent.