|
Ublas : |
From: Sourabh (sourabh_at_[hidden])
Date: 2007-03-02 07:21:25
Hi,
Can anyone please suggest me some optimizations in the loop to improve
the overall speed of the following program ?
The steps I am doing are:
1. Solve for Y the equation: (I-X) Y = B, where X is a lower triangular
sparse matrix.
2. Multiply Y with lower triangular sparse matrix Z, A = Y*Z.
3. Add A to another vector.
The sizes in the above steps are of order of 100.
The above mentioned sequence is repeated by 2e9 times. So it is taking too
much time.
I am sure if I optimize the inner-most loop, it can be made fast.
What optimizations can be made in the loop ?
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/triangular.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <boost/numeric/ublas/matrix_sparse.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>
using namespace boost::numeric::ublas;
int main (int argc, char* argv[])
{
unsigned int samples = atoi (argv[1]);
unsigned int numpaths = atoi (argv[2]);
unsigned short gatesperpath = atoi (argv[3]);
for (unsigned int i = 0; i < samples; ++i) {
for (unsigned int j = 0; j < numpaths ; ++ j) {
mapped_matrix<double> lembda (gatesperpath, gatesperpath);
identity_matrix<double> ident (gatesperpath);
slopes = solve (lembda, omegas, lower_tag ());
vector <double> delays (gatesperpath);
delays = prod (lembda, slopes);
delays += omegas;
}
}
}
-- -- Sourabh