Sunteți pe pagina 1din 26

Tips for optimizing your computations

with Code_Aster

Outline

Where does the code spend time ?


Some tips to optimize a (sequential) study
Parallel version of Code_Aster
Parametric studies

2 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Where does Code_Aster spend time?

3 - Code_Aster and Salome-Meca course material

GNU FDL Licence

A simple simulation with Code_Aster

Nonlinear
solver

4 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Time loop

Dominating steps : Assembly/Solve


Elementary matrices computations to build K
may take time if the material constitutive equations are
complex

Solving the linear system KU = F


Usually (and always for linear problems) the most
expensive step

These steps should be efficient since they are


called by:
the iterative loop of the nonlinear solver
the time loop

5 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Tips for optimizing a (sequential) study

6 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Definition of the problem


Optimize the mesh
to keep a reasonable number of unknowns

Prefer AFFE_CHAR_CINE (to AFFE_CHAR_MECA) to define


boundary conditions:
AFFE_CHAR_MECA uses dualization :
Pros :

general and flexible approach


Cons :

it increases the number of unknowns and results to a saddle-point matrix.

AFFE_CHAR_CINE uses elimination :


Pros :

no additional unknowns
better numerical properties for the resulting matrix : allows to use more efficient (iterative) solvers.
Cons :

less general: it allows local boundary conditions (u=u0) but no global linear relations (ex
LIAISON_SOLIDE)

7 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Choose an efficient linear solver


Direct solvers are classically preferred in computational
mechanics
Based on a LU factorization of K followed by triangular solves.
Robust method (though costly for large systems)
In Code_Aster
native direct solver (sequential only) : DEFAULT

RES = STAT_NON_LINE(
SOLVEUR=_F(METHODE=MULT_FRONT,)
)
external direct solver (sequential and parallel)

RES = STAT_NON_LINE(
SOLVEUR=_F(METHODE=MUMPS,)
)

8 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Choose an efficient linear solver


Iterative solvers may be very efficient
They are faster than direct solvers but sometimes fail to converge.
They demand a good preconditioner
Matrices may have a very poor conditionning number when structural elements (beams,
) are present

In Code_Aster
native iterative solver (sequential only)

RES = STAT_NON_LINE(
SOLVEUR=_F(METHODE=GCPC,)
)
external iterative solver (ONLY parallel )

RES = STAT_NON_LINE(
SOLVEUR=_F(METHODE=PETSC,)
)
9 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Select relevant memory parameters


It is very important to select an appropriate value in ASTK

10 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Evaluate the memory requirement of your job


If the required memory is overestimated, the job will have a very
low priority on Aster5 .. and it will wait before starting.
If the required memory is underestimated, the job will transfer
data between the disk and the RAM and this process slows the
computation.
Reporting on memory usage can be found in the .mess file

11 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Example : test case perf005b 512Mo

System time is large wrt


user time
=> indicates a potential lack
of memory

12 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Example : test case perf005b 512Mo

NOMBRE TOTAL DE
LIBERATIONS > 0,
indicates that
data is transferred to/from
the disk during the
computation. The diagnosis
lack of memory is
confirmed.

13 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Example : test case perf005b 1Go

This number has


decreased a lot

System time is
now(much) smaller
than CPU user time
Total CPU Time has
decreased
from 195.40s to 98.46s
14 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Use Code_Aster parallel version (_mpi)

15 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Is it worth it using a parallel version of


Code_Aster ?
Aster5 is a cluster
1 node = 2 CPUs (Intel Xeon E5-2600 V2), each with 12 cores
48 standard nodes with 24 Go RAM
48 large memory nodes
24 with 256 Go RAM and 24 with 512 Mo RAM

Parallel version of Code_Aster are available (_mpi)


But every studies will not benefit from being run on several cores
You can predict from simple rules of thumb if using parallelism is
worthwhile for your study

16 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Practical rules of thumb


Always start with a sequential run and try to optimize it
Find out where Code_Aster spends time
In elementary computations ?
In the solver process ?
A lot of time steps are necessary to model your problem ?
.

What is the size (i.e. the number of degrees of freedom) of your


problem ?
Now
Do you intend to increase the (space) resolution (mesh refinement, ) ?

17 - Code_Aster and Salome-Meca course material

GNU FDL Licence

What can you expect if using parallelism ?


Elementary computations are slow
Elementary computations are independent tasks
They are distributed in a very efficient way if several processors are used
Use a parallel version

The solver is slow


If the number of degrees of freedom is small (< 50000)
Parallelism will not be very efficient

If the number of degrees of freedom is large enough,


Choose a parallel solver (MUMPS or PETSC)
Use a parallel version

There are a lot of time steps


There is no time parallelism facility in Code_Aster
Do not use a parallel version

18 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Summary

19 - Code_Aster and Salome-Meca course material

GNU FDL Licence

How to use MPI with Code_Aster ?

Select an
MPI
version
( *_mpi)

20 - Code_Aster and Salome-Meca course material

GNU FDL Licence

How to use MPI with Code_Aster ?

Choose the number


of processors
mpi_nbcpu = 2, 4, 8
Do not change
mpi_nbnoeud
(remains equal to 1)

21 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Parametric studies

22 - Code_Aster and Salome-Meca course material

GNU FDL Licence

What for?
A parametric study is a series of simulations where one or more
parameters of the problem are varied.
The purpose is to investigate the impact of a variation of the
parameter(s)
a geometrical size, physical material property, mechanical load .

Astk includes a facility for running parametric studies

23 - Code_Aster and Salome-Meca course material

GNU FDL Licence

Key steps to define a parametric study

24 - Code_Aster and Salome-Meca course material

GNU FDL Licence

More advanced features

u2.08.07 contains a complete tutorial showing how to:


define (syntax of the .distr file, ),
run (simulations are distributed among the processors)
analyze a parametric study (structure of the results
directory, how to use a base )

25 - Code_Aster and Salome-Meca course material

GNU FDL Licence

End of presentation
Is something missing or unclear in this document?
Or feeling happy to have read such a clear tutorial?
Please, we welcome any feedbacks about Code_Aster training materials.
Do not hesitate to share with us your comments on the Code_Aster forum
dedicated thread.

26 - Code_Aster and Salome-Meca course material

GNU FDL Licence

S-ar putea să vă placă și