← Back to team overview

dolfin team mailing list archive

Re: [HG DOLFIN] Add OpenMP code to assembler (commented out for now).

 



Niclas Jansson wrote:
Niclas Jansson <njansson@xxxxxxxxxx> writes:

dolfin@xxxxxxxxxx (DOLFIN) writes:

One or more new changesets pushed to the primary dolfin repository.
A short summary of the last three changesets is included below.

changeset:   6855:51f268bf79d79b0de5d3cb20a7cacb35357c81ce
tag:         tip
user:        "Garth N. Wells <gnw20@xxxxxxxxx>"
date:        Wed Aug 26 14:30:18 2009 +0100
files:       demo/pde/elasticity/cpp/main.cpp dolfin/fem/Assembler.cpp
description:
Add OpenMP code to assembler (commented out for now).


If insertion is done in a critical section there would virtually be
no scope for speedup (for larger number of threads)


I have a problem where the element tensors are very complicated and costly to compute and the linear solve is cheap - with a small number of threads I get a modest speed up. Annoyingly, PETSc dies when calling VecGetValues with more than one thread.

A better idea would probably be to either

1) Partition the mesh, and only have a critical section for shared
cells.

2) Assemble into a private matrix and either add them together A_1 +
... + A_n or add them together with some fancy tree reduction algorithm.


The best idea is for us to complete the message passing-based parallelistion ;). I have interior facet integrals which are not yet supported which is why I've tried OpenMP inside the assembler.

Garth

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



References