Parallel & Testing

Parallel & Testing#

Parallel Computing#

FEniCS-SZ has been designed to utilize the parallel computing features of its underlying libraries FEniCS and PETSc. We demonstrate that throughout the repository in notebooks dedicated to testing parallel scaling and accuracy using mpi4py and ipyparallel.

Scaling performance will be affected by the resources available on the machine FEniCS-SZ is run on. In particular, poor scaling performance may be seen on binder and on github actions, where the website is generated. Wherever a scaling result is shown we include a figure showing a pre-computed version of the test’s behavior on a dedicated machine.

Testing#

Building the website is performed by github actions automatically when a new release is pushed to the repository’s release branch. This requires running all the notebooks, which include assertions throughout that the results are correct. Failing any of these assertions will cause the website to fail to build and the release to be rejected.

Tests vary from numerical convergence tests, either against analytic solutions or published community benchmark results, to regression tests, comparing the latest results to old output. In addition we test that the docker image builds succesfully, that all output is wiped from committed notebooks and that the python modules generated from the notebooks are up to date.

In the next section we will discuss some background tutorial problems that motivate our final application. Those already familiar with the finite element method should skip ahead to our implementation of subduction zone problems or to the global suite of subduction zone models.