The development of new applications is becoming increasingly complex. Simultaneously, optimising these applications is gaining in importance. The Institute for High Performance Computing at RWTH Aachen University is conducting research on methods and tools for the optimisation of applications. In this process, performance and correctness analyses play a central role. These methods and tools are being applied within the framework of the EU project POP2 – Performance Optimisation and Productivity. The POP project was already introduced in a separate article. Today we would like to inform about a specific successful POP audit.
As part of the project, an audit was carried out for the CalculiX application. CalculiX is a free simulation software. This programme uses the finite element and the finite volume method as numerical methods to solve various simulation problems. In this audit, the execution of a flow simulation was investigated and optimised, which simulates the flow speed of air in a pipe.
The result of an initial correctness analysis pointed to a data race in the code. The data race and the resulting non-deterministic results were resolved during the audit. An analysis of the load balance also revealed that when solving the systems of equations, one thread ran for significantly longer than all the others. As a result of this analysis, the work could be distributed to other threads that had already completed their calculations. This redistribution allowed the available resources to be used more efficiently. Furthermore, an analysis of I/O performance revealed that a high number of writing I/O accesses took place with a very small data size. By introducing a buffer, this writing process could be implemented more efficiently. As a performance analysis of the code revealed, the runtime of the code could be reduced by more than 30 percent due to all implemented improvements.
Interested in learning more about the CalculiX POP audit?
You can find a detailed description of the analysis and its results on the POP project blog.
Responsible for the content of this article is Stéphanie Bauens