Alya assembly

Program's name: Alya assembly
Available version(s): Programming language(s): Fortran ·
Programming model(s): OpenMP ·

Alya is a simulation code for high performance computational mechanics. Alya solves coupled multiphysics problems using high performance computing techniques for distributed and shared memory supercomputers, together with vectorization and optimization at the node level.

This kernel corresponds to the algebraic system assembly of a finite element code (FE) for solving partial differential equations (PDE’s). The matrix assembly consists of a loop over the elements to compute element matrices and right-hand sides and their assemblies in the local system.

There are two available versions of this kernel:

  • baseline: which makes use of atomic constructs to synchronise access to shared data.
  • multidependencies: which leverages the use of multidependencies features provided by OmpSs-2 programming model to avoid the use of atomic constructs.

How to build

The kernel requires at least gfortran 10.1.0 to be built.

#> ./compile.sh

How to execute

#> export OMP_NUM_THREADS=4 (or whatever you want)
#> ./miniapp.x

If everything goes fine, you should see something like that:

 start read
 VECTOR_SIZE read=          16
 ifdef read=      NO_COLORING
 element chunks=           300
 end   read
 Number of subdomains=           1
Assembly Execution Time =  2.008 seconds.
 loop finished correctly