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

Reply via email to