← Back to team overview

dolfin team mailing list archive

Re: profiling an assembly

 

> On Sun, May 18, 2008 at 09:38:57PM +0200, Murtazo Nazarov wrote:
>> > On Sun, May 18, 2008 at 01:24:19PM -0500, Matthew Knepley wrote:
>> >> On Sat, May 17, 2008 at 9:40 AM, Johan Hoffman <jhoffman@xxxxxxxxxx>
>> >> wrote:
>> >> > If the petsc sparse matrix structure works as I expect; to
>> insert/add
>> >> an
>> >> > element you go to the particular row and search all non-zero
>> entries
>> >> of
>> >> > that row until you find your column. So the complexity would be =
>> >> #dofs x
>> >> > #row non-zero entries
>> >>
>> >> Not exactly. We maintain sorted columns, so the expected time for all
>> >> insertions
>> >> is smaller. The numbers that Murtazo gets do not match our own, which
>> >> suggests
>> >> to me that the wrapper is taking non-trivial time for these small
>> >> matrices.
>> >>
>> >>    Matt
>> >
>> > We might be doing something stupid in the wrapper (like giving PETSc
>> > the wrong options), but I'm pretty sure the overhead the wrapper adds
>> > when calling MatSetValues is small.
>> >
>> > Here's the full code for PETScMatrix::add():
>> >
>> > void PETScMatrix::add(const real* block,
>> >                       uint m, const uint* rows,
>> >                       uint n, const uint* cols)
>> > {
>> >   dolfin_assert(A);
>> >   MatSetValues(A,
>> >                static_cast<int>(m),
>> >                reinterpret_cast<int*>(const_cast<uint*>(rows)),
>> >                static_cast<int>(n),
>> >                reinterpret_cast<int*>(const_cast<uint*>(cols)),
>> >                block, ADD_VALUES);
>> > }
>> >
>> > This should be easy to check when profiling the code. Murtazo: What's
>> > the difference between PETScMatrix::add and MatSetValues?
>> >
>>
>> I think there is no difference. When we call PETScMatrix::add it
>> basically
>> calls MatSetValues. Or is it going something else there?
>>
>> murtazo
>
> That's my point. Nothing else is going on, but it would be good to get
> this confirmed from the profile.

If this is confirmed, which is likely, then we should try to understand
why Matt gets better timings than we do.

Maybe it is as simple as setting the right options in petsc.

/Johan


> --
> Anders
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev
>




References