dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #18730
[Question #117960]: Matrix multiplication by vector slow with uBLAS
New question #117960 on DOLFIN:
https://answers.launchpad.net/dolfin/+question/117960
Hi,
I was digging in my code to try to find some reason for the slowdown I get using the updated(>0.9.5) versions of dolfin,
(since the dolfin demos do not reproduce the huge time differences I have in my code).
I've found that the main issue is the matrix by vector multiplication that I use in some methods .
When using uBLAS backend I get a huge slowdown compared with PETSc
In the simple dolfin code below PETSc is at least 40 times faster.
Is this an expected behavior?
I reproduced the problem in a simple code:
main.cpp:
------------------------------------------------------------------------------
#include <dolfin.h>
#include "TestForm.h"
using namespace dolfin;
int main(int argc, char *argv[])
{
parameters["linear_algebra_backend"]=argv[1];
Timer maintimer(argv[1]);
maintimer.start();
UnitSquare mesh(100,100);
TestForm::FunctionSpace V(mesh);
TestForm::BilinearForm a(V,V);
TestForm::LinearForm L(V);
Constant f(1.0);
L.f=f;
Matrix A;
assemble(A,a);
Vector x;
assemble(x,L);
Vector y(x);
y.zero();
A.mult(x,y);
maintimer.stop();
summary();
}
-----------------------------------------------------------------
with
TestForm.ufl:
----------------------------------------------------------------
scalar = FiniteElement("Lagrange", "triangle", 1)
v = TestFunction(scalar)
u1 = TrialFunction(scalar)
f= Coefficient(scalar);
a = v*u1*dx
L = f*v*dx
------------------------------------------------------------------
using uBLAS approx 2.5s and with PETSc approx 0.06s.
Could someone please test the code...
Thanks in advance.
Nuno Lopes.
--
You received this question notification because you are a member of
DOLFIN Team, which is an answer contact for DOLFIN.