[Trilinos-Users] Tpetra_CrsMatrix, {replace, insert}LocalValues slow/overkill?
Nico Schlömer
nico.schloemer at ua.ac.be
Thu May 20 06:45:33 MDT 2010
Hi all,
I have this nonlinear problem here for which I need to compute the
complex<double>-valued Jacobian in each Newton step. To store the data
of a Jacobian I use a Tpetra_CrsMatrix<complex<double> >, but to
actually make use of it, I have to transform the whole thing to an
Epetra system: Some packages I use just don't support Tpetra as well
yet. For transformation I use my own Komplex class which essentially
does the same as Trilinos::Komplex except that it digests
Tpetra_CrsMatrices.
Anyway, I just profiled my code and I noticed that the bare filling
process of the Tpetra_CrsMatrix, i.e., all the
if ( A_->isFillComplete() )
A_->replaceLocalValues( localRow, columnIndices, values );
else
A_->insertLocalValues( localRow, columnIndices, values );
calls take about 20% of the total calculation time which I find way too
much for the mere bookkeeping it's used for. I now wonder if there's any
smarter way to handle the situation.
Of course I could just abandon the whole Tpetra_CrsMatrix idea as a
whole, just store all (localRow, columnIndices, values) triples raw, and
feed those into the my Komplex constructor, but that feels somewhat
un-Trilinos-ish.
Comments?
Cheers,
Nico
More information about the Trilinos-Users
mailing list