|
Ublas : |
Subject: [ublas] Question on ublas performance (resending as subscriber).
From: Sunil Thomas (sgthomas27_at_[hidden])
Date: 2010-04-20 21:09:43
Hi all,
I've been using boost 1.34 ublas library, especially the
compressed_matrix class for sparse matrices in
compressed row storage form. But I noticed that simply accessing an element
of the matrix (to assign
it a value, for example) slows my application down to unusable levels, for
problems of the order of just
80,000 unknowns. I've identified the program is there and yes, I am
allocating the memory as I should
be for the matrix, - for example here is a snippet (of important lines):
************************************************************************************
matrix_A = compressed_matrix(nelem_a(), nelem_a(), nonzeros()); //
allocation
matrix_A(uic1, uic1) += -trans; // assignment
matrix_A(uic2, uic2) += -trans; // assignment
************************************************************************************
where all variables (and/or functions), e.g. uic1, uic2, trans, neleme_a(),
nonzeros(), etc.. are all well-defined
(this is all been checked thoroughly). Commenting out the two assignment
statements for example reduced
my overall run time from 110 seconds to 0 (practically zero), for 80000
runs. Has anyone encountered this
problem and know of a solution? I've heard a lot of stories about how
boost::ublas is just not up there in
performance and I certainly hope I am missing something trivial. Do later
versions of boost address this
better?
Greatly appreciate any help.
Thanks,
Sunil.