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.