Optimization of an IGA Code in MATLAB for parallel computing

HSU

28. February 2024

Dr.Ing. Georgios Michaloudis (Professorship Structural Analysis, UniBw M)

Goal of this project within the framework of hpc.bw is the optimization of the performance of an In-House MATLAB Code, which is being developed from our researchers. The general area of application of the Code is Computational Structural Mechanics by deploying the Isogeometric Analysis framework. Novel computational methods are being permanently deployed aiming at investigations in the fields of Fracture Mechanics and of the analysis of shell and membrane structures. The Code can perform static as well as dynamic analyses. AA

A main focus is the investigation of propagation of fracture in structures by means of the Phase-Field approach, which requires very fine meshes and local adaptive refinement of the original discretization. This results in models with high numbers of degrees of freedom and hence in very large systems of equations. In combination with other sources of nonlinearities and with algorithms which are geometrically highly demanding (such as contact approaches) occur extremely high requirements regarding the computational resources.

The MATLAB Code is enhanced with .MEX files calling FORTRAN subroutines to improve performance, its implementation utilizes the MATLAB commands for parallel execution (e.g. parfor) and runs under LINUX, WINDOWS and MAC installations. However, it is observed that adding more processors does not lead to the expected acceleration of the computation. Computing with more than 8 processors practically does not improve the performance. Significant acceleration of the performance is observed when comparing the wall times between two and four processors, some improvement is still noticeable when eight processors are used instead of four, but further increasing of the resources does not lead to any remarkable improvement. Additionally, it is currently meaningless to deploy multiple nodes in one computation. The memory of those nodes will be reserved for the running simulation, but their processors will not contribute to the computed solution. The computation is performed vastly on the processors of the first node.

Our main focus and expectation from this cooperation within the hpc.bw project is to exploit the potential provided from our HPC-LINUX Cluster, which operates in our Laboratory of Engineering Informatics. The Cluster consists of 41 Nodes (soon to be extended to 49 Nodes) and of totally 896 processors (soon to be extended to 1280 processors). In a first step it is essential that the Code is optimized for running efficiently in an SMP (shared memory) environment of one Cluster Node. In a second step it would be beneficial to enable the Code to execute computations in an MPP environment, by running simulations on multiple Cluster Nodes. Beside the optimization of the core implementation of the Code, the possibility of increasing efficiency by improving the scalability of the Cluster will be investigated. Further support within the project will be oriented in the creation of new optimized FORTRAN and C++ subroutines, which will be then deployed from .MEX files, in order to improve the performance of numerical functions, which are time consuming.