Boost logo

Ublas :

From: Sourabh (sourabh_at_[hidden])
Date: 2007-03-02 07:21:25

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