Dear Vikram,
as in the examples, I am using the libmesh::KellyErrorEstimator.
I’m compiling libmesh with the --enable-perflog option. Does it automatically
give all the details you have listed in the example?
For the time being, I am attaching two perfLogs I had saved with only “coarse
scale” data for 2 levels of refinements.
It looks like that most of the time is spent in the AMR step, probably in the
call to reinit().
Thanks,
Simone
NO AMR:
------------------------------------------------------------------------------------------------------------
| perf_log Performance: Alive time=18.0494, Active time=18.0426
|
------------------------------------------------------------------------------------------------------------
| Event nCalls Total Time Avg Time Total Time
Avg Time % of Active Time |
| w/o Sub w/o Sub With Sub
With Sub w/o S With S |
|------------------------------------------------------------------------------------------------------------|
| no amr matrix assembly 1 0.1545 0.154465
0.1545 0.154465 0.86 0.86 |
| no amr linear solve 101 4.8069 0.047593
4.8069 0.047593 26.64 26.64 |
| no amr rhs assembly 101 12.0348 0.119156
12.0348 0.119156 66.70 66.70 |
| time loop 1 1.0464
1.046422 17.8884 17.888405 5.80 99.15 |
------------------------------------------------------------------------------------------------------------
| Totals: 204 18.0426
100.00 |
------------------------------------------------------------------------------------------------------------
AMR:
------------------------------------------------------------------------------------------------------------
| perf_log Performance: Alive time=209.305, Active time=209.298
|
------------------------------------------------------------------------------------------------------------
| Event nCalls Total Time Avg Time Total Time
Avg Time % of Active Time |
| w/o Sub w/o Sub With Sub
With Sub w/o S With S |
|------------------------------------------------------------------------------------------------------------|
|
|
| amr 303 195.1102 0.643928 195.1102
0.643928 93.22 93.22 |
| amr solve 303 13.9907 0.046174 13.9907
0.046174 6.68 6.68 |
| time loop 1 0.1974 0.197370
209.2990 209.299042 0.09 100.00 |
------------------------------------------------------------------------------------------------------------
| Totals: 607 209.2983
100.00 |
------------------------------------------------------------------------------------------------------------
On Apr 27, 2017, at 11:02, Vikram Garg
<[email protected]<mailto:[email protected]>> wrote:
Hello Rossi,
Two questions:
1) Which error estimator/indicator are you using to mark elements for
refinement ?
2) Can you send the perfLog output from libMesh ? You might need to recompile
libMesh with the option --enable-perflog.
Looks something like this:
-----------------------------------------------------------------------------------------------------------------
| libMesh Performance: Alive time=0.013423, Active time=0.007095
|
-----------------------------------------------------------------------------------------------------------------
| Event nCalls Total Time Avg Time Total
Time Avg Time % of Active Time |
| w/o Sub w/o Sub With
Sub With Sub w/o S With S |
|-----------------------------------------------------------------------------------------------------------------|
|
|
|
|
| DofMap
|
| add_neighbors_to_send_list() 6 0.0001 0.000012 0.0001
0.000012 1.01 1.01 |
| build_sparsity() 6 0.0002 0.000033 0.0011
0.000187 2.78 15.84 |
| create_dof_constraints() 6 0.0000 0.000001 0.0000
0.000001 0.07 0.07 |
| distribute_dofs() 6 0.0001 0.000025 0.0004
0.000066 2.09 5.57 |
| dof_indices() 688 0.0010 0.000001 0.0010
0.000001 14.36 14.36 |
| old_dof_indices() 300 0.0001 0.000000 0.0001
0.000000 0.96 0.96 |
| prepare_send_list() 7 0.0000 0.000000 0.0000
0.000000 0.01 0.01 |
| reinit() 6 0.0002 0.000041 0.0002
0.000041 3.48 3.48 |
|
|
| EquationSystems
|
| build_solution_vector() 1 0.0001 0.000056 0.0001
0.000064 0.79 0.90 |
Thanks.
On Wed, Apr 26, 2017 at 10:09 PM, Rossi, Simone
<[email protected]<mailto:[email protected]>> wrote:
Dear Roy, dear Paul, dear all,
I am testing AMR in libmesh using simple linear elements.
My test case is a propagating front described by a reaction-diffusion equation
with a cubic bistable reaction term.
I followed the adaptivity examples to create this test case.
The run times for 100 timesteps using AMR can be more than 10 times slower than
when using a fine uniform grid.
For example, with a 16 x 16 x 16 uniform grid, 100 iterations take about 18
seconds with a single processor.
With AMR, using a 2 x 2 x 2 grid and 3 levels of refinement, 100 iterations
take about 800 seconds.
I’m attaching the code I’m using.
Without AMR, I build the matrix ( mass + dt * stiffness ) once and I update the
rhs at every timestep.
Conversely, with AMR I am building the matrix and the rhs at every timestep for
all the refinement levels.
Do you have any suggestions?
Thanks a lot for your help,
All the best,
Simone
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org<http://slashdot.org/>!
http://sdm.link/slashdot
_______________________________________________
Libmesh-users mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/libmesh-users
--
Vikram Garg
Postdoctoral Associate
The University of Texas at Austin
http://vikramvgarg.wordpress.com/
http://www.runforindia.org/runners/vikramg
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users