From: Rossi, S. <sr...@em...> - 2017-04-27 16:09:31
|
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 <vik...@gm...<mailto:vik...@gm...>> 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 <sr...@em...<mailto:sr...@em...>> 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 Lib...@li...<mailto:Lib...@li...> 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 |