[aspect-devel] Fwd: matrix assembly
Wolfgang Bangerth
bangerth at math.tamu.edu
Fri Aug 30 05:37:46 PDT 2013
Let's bring this discussion to the aspect mailing list :-)
-------- Original Message --------
Subject: matrix assembly
Date: Wed, 28 Aug 2013 12:23:38 +0200
From: Thomas Geenen <geenen at gmail.com>
To: Timo Heister <heister at math.tamu.edu>, Wolfgang Bangerth <bangerth at gmail.com>
hi Timo and Wolfgang,
i was doing some scaling test with aspect again on our own system @SURFsara to
produce some additional numbers for my oslo presentation.
i only do a few solve steps so the relative amount of walltime spend in the
assembly phase sort of popped out to me.
i tried a few things to speed things up like pulling some constants outside
the loop and replacing method calls with temp arrays but since i could only
shave off 20% or so it seems that the compiler already did a good job there.
then i noticed that with the addition of compositions the order of the gauss
integration for both temperature and composition is determined by the
composition. that explains why i did not see a drop in walltime when i reduced
the order for the temperature equation from 2(default) to 1.
this default case has in 3D 64 gauss points per element since in the assembly
routine we do even
internal::Assembly::Scratch::
AdvectionSystem<dim> (finite_element, mapping,
QGauss<dim>(parameters.composition_degree+2),
do we really need such a high order integration scheme?
cheers
Thomas
ps i suggest setting the gauss order here
{
if (temperature_or_composition.is_temperature())
{
computing_timer.enter_section (" Assemble temperature system");
system_matrix.block (2,2) = 0;
const int degree=parameters.temperature_degree+2
}
else
{
computing_timer.enter_section (" Assemble composition system");
system_matrix.block(3+temperature_or_composition.compositional_variable,
3+temperature_or_composition.compositional_variable) = 0;
const int degree=parameters.composition_degree+2
}
More information about the Aspect-devel
mailing list