← Back to team overview

dolfin team mailing list archive

Re: SymmetricAssembler and SystemAssembler

 

On 3 September 2012 13:40, Anders Logg <logg@xxxxxxxxx> wrote:
> On Mon, Sep 03, 2012 at 09:21:05AM +0200, Joachim Berdal Haga wrote:
>> > re-assembling the coefficient matrix. SystemAssembler OTOH can easily
>> > be reimplemented in terms of SymmetricAssembler + Assembler.
>> > (SymmetricAssembler only does rank-2, to avoid duplication; hence,
>> > both are required)
>>
>> ... and, just to mention it, it wouldn't be a problem to support
>> rank-0/1 as well in SymmetricAssembler, in which case we can get down
>> to one assembler implementation. Plus OpenMP.
>
> If we can get the same speed as Assembler + all the features of
> SymmetricAssembler, then I think both should be merged into one.

I'll have to check again, but I think it was around 1-2% slower,
mainly because it initialises two tensors instead of one. This can
mostly be dealt with if they are merged (no need to initialise
asymm-part tensor if symmetricity is not requested).

> Is there an overhead for putting the OpenMP code into the regular
> assembler? We would trivially loop over one color.

The OpenMP one - like the System one - uses a different order of
operations than the normal one. I'm not sure if the difference is
arbitrary or not, I did look at it last year and remember thinking it
could be converted to work in the "standard" order, and hence be
merged. But there may be dragons.

-j.


References