[Trilinos-Users] measuring time taken by preconditioner and solver

Yeom, Jae-Seung yeom2 at llnl.gov
Mon Dec 29 18:15:33 MST 2014


I am trying to measure the time taken by preconditioner and solver separately.
If possible, I am trying to measure the per-iteration time using a high-resolution timer.
As a start, I looked at where AZ_second() is called.
I have some questions and also wish to make sure if my understanding is correct.

The timing value of 'status[AZ_solve_time]' includes the time taken by both preconditioner and solver.
'AZ_precondition()' (or 'Epetra_Aztec_precond()') is called inside of each iteration of an iterative solver as long as a preconditioner is set. One exception is with 'az_gmresr.c', in which 'precond->prec_function()' is called unconditionally. (I am not sure if this is necessary or simply a missing condition check)

In 'AZ_precondition()', the execution time is measured and accumulated to timing[0] of the given 'AZ_PRECOND' structure when 'AZ_recursion_level' is 0.
In addition, each solver measures the time of initial preconditioning and stores it into 'options[AZ_first_precond]' before going into iteration.

My questions are that what is the main reason to measure the first preconditioning separately?
Is there some extra work done for the first call of a preconditioner?
Will 'AZ_recursion_level' be 0 unless I do not use 'AZ_smoother' as the choice of precoditioner and do not call 'recursiveIterate()'?

Thanks,

Jae-Seung Yeom
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://software.sandia.gov/pipermail/trilinos-users/attachments/20141230/516a8bf9/attachment.html>


More information about the Trilinos-Users mailing list