[Dune] [#742] performace loss between 1.2.2 and 2.0 (Attachment added)

Dune flyspray at dune-project.org
Wed Feb 17 19:00:13 CET 2010


THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.

A new Flyspray task has been opened.  Details are below. 

User who did this - Andreas Dedner (dedner) 

Attached to Project - Dune
Summary - performace loss between 1.2.2 and 2.0
Task Type - Bug Report
Category - Dune Modules
Status - New
Assigned To - 
Operating System - Unspecified / All
Severity - High
Priority - Urgent
Reported Version - SVN (pre2.0)
Due in Version - 2.0
Due Date - Undecided
Details - There is a significant performance loss between the
release 1.2.2 and 2.0. This can for example be seen
using the finitevolume test in the dune-grid-howto.
There are at least 2 issues we found:
1) in common/fvector.hh: the use of memcpy
   in the copy constructor and assignment operator 
   leads to about 20% loss. It is probably only
   a good idea for large vectors - but FieldVectors
   are quite often small. This was introduced in
   rev. 5874.
2) The second issue are changes in Yasp from rev. 6005.
   A patch reverting some of these changes is attached.
   With the patch applied we gain about 50%.
   They concern the reasonable separation of the
   Intersection from the IntersectionIterator but 
   perhaps the use of the shared_ptr cost too much 
   performance. 

Summary (using YaspGrid<2>)
dune-common, dune-grid: releases/1.2.2
dune-grid-hwoto: releases/1.2
a:                   2m52.759s 2m52.432s 2m52.169s   | 170s
------------------------------------------
dune-common, dune-grid: trunk
dune-grid-howto: trunk and releases/1.2:
b: howto trunk:      6m17.540s 6m03.663s 6m09.943s   | 370s
c: howto 1.2:        6m07.869s 6m12.032s 6m11.272s   | 370s
d: howto trunk no mc:5m04.990s 5m15.163s 5m07.877s   | 310s
e: howto 1.2 no mc:  5m35.168s 5m41.208s 5m40.581s   | 340s
f: howto trunk no mc
   and yasp patch:   2m22.751s 2m23.167s 2m20.617s   | 140s
------------------------------------------

1) memcopy (mc) leads to +9% (c/e) or +19% (b/d)
2) other changes between 1.2.2 and 2.0 lead to +80% (d/a)
   or +100% (e/a)
   This difference seems to be caused by the seperation of
   Intersection/IntersectionIterator in YaspGrid 
   (shared_ptr?)
   Applied patch is a partial revert of -r6005.
3) f/a<1 and d/e<1 is probably due to the new interface 
   methods (center...)
4) why b=c is somewhat unclear (would expect b/c<1)


One or more files have been attached.

More information can be found at the following URL:
http://www.dune-project.org/flyspray/index.php?do=details&task_id=742

You are receiving this message because you have requested it from the Flyspray bugtracking system.  If you did not expect this message or don't want to receive mails in future, you can change your notification settings at the URL shown above.




More information about the Dune mailing list