Boost logo

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.