dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #22412
[Bug 747318] [NEW] Python: Make algebra faster by using pool of vectors
Public bug reported:
In Python, the natural way to write matrix algebra involves a lot of
temporary vector creation. By implementing a pool of vectors, I see a
15-20% performance improvement in a matrix-algebra heavy workload. The
basic idea is to add a method to the GenericMatrix interface (Python
only, probably). Then Matrix.__mul__ (and everywhere else a vector is
needed) can use this method whenever they need to create a vector, and
they are transparently re-used whenever they go out of scope.
@vec_pool
def create_vec(self, dim=1):
vec = dolfin.Vector()
self.resize(vec, dim)
return vec
The implementation of the vec_pool decorator is found here: http://bazaar.launchpad.net/~jobh/cbc.block/trunk/download/head:/block/object__pool.py/object_pool.py
(code copyright me, LGPL or whatever you prefer.)
** Affects: dolfin
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of DOLFIN
Team, which is subscribed to DOLFIN.
https://bugs.launchpad.net/bugs/747318
Title:
Python: Make algebra faster by using pool of vectors
Status in DOLFIN:
New
Bug description:
In Python, the natural way to write matrix algebra involves a lot of
temporary vector creation. By implementing a pool of vectors, I see a
15-20% performance improvement in a matrix-algebra heavy workload. The
basic idea is to add a method to the GenericMatrix interface (Python
only, probably). Then Matrix.__mul__ (and everywhere else a vector is
needed) can use this method whenever they need to create a vector, and
they are transparently re-used whenever they go out of scope.
@vec_pool
def create_vec(self, dim=1):
vec = dolfin.Vector()
self.resize(vec, dim)
return vec
The implementation of the vec_pool decorator is found here: http://bazaar.launchpad.net/~jobh/cbc.block/trunk/download/head:/block/object__pool.py/object_pool.py
(code copyright me, LGPL or whatever you prefer.)
Follow ups
References