dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #20238
Re: [Bug 668862] Re: Sparsity pattern computation dead slow with 'real' spaces
On 22/11/10 22:28, Johan Hake wrote:
> On Saturday November 20 2010 10:02:36 Garth Wells wrote:
>> I've done some testing, and using unordered_set appears to not perform
>> as well as Set for standard problems.
>
> What are the differences in timing here?
I saw around a factor of 2. unordered_map also seems to use a lot more
memory.
> The difference in timing using
> unordered_set for Real spaces where dramatically better.
>
>> Each dof (matrix row) has its own set. The sets are usually small, and
>> independent of the mesh size. The problem is that the size of set that
>> belongs to the global dof is equal to the number of columns in the
>> matrix, and when looping over this set (which becomes very large)
>> std::find is called a lot.
>
> Is this true for any form? Why is this so notable when computing the sparsity
> pattern when a subspace belongs to Real?
>
No, only forms with global dofs (like Real).
>> I don't see simple solution from the SparsityPattern side. What's
>> probably needed is an extension to UFC to distinguish between local and
>> global dofs.
>
> How would this help?
>
If we know that a dof is global, we can just insert it in the sparsity
pattern for all cells. No need to perform a search (which is what get
expensive for the 'Real' row, which is full).
Garth
> Johan
>
--
Sparsity pattern computation dead slow with 'real' spaces
https://bugs.launchpad.net/bugs/668862
You received this bug notification because you are a member of DOLFIN
Team, which is subscribed to DOLFIN.
Status in DOLFIN: Confirmed
Bug description:
The computation of the sparsity pattern is dead slow when real spaces are used, i.e.,
R = FunctionSpace(mesh, 'R', 0)
To see the problem, compare the neumann-poisson and poisson demos with fine meshes (256x256)
Follow ups
References