Boost logo

Boost Users :

From: jhrwalter (walter_at_[hidden])
Date: 2002-08-05 13:34:59


--- In Boost-Users_at_y..., Walter Bowen <yg-boost-users_at_m...> wrote:
> Hi,
> I am new to uBLAS. I am looking to see if it will be useful
for my
> application (I develop 6-Degrees-of-freedom flight simulations used
to
> analyze avionics systems.) I have benchmarked a few lines of code
with
> RogueWave's Math.h++ (testing for execution speed) and made the
> following observation.
>
> Observation 1) For matrix products of two small (~3-by-3) matrices
(
> i.e., prod(smallMat1, smallMat2) ) uBLAS executes MUCH FASTER than
> Math.h++.

Fine.

> Observation 2) For matrix produces of two large matrices (100 by
100)
> uBLAS and Math.h++ give similar execuation speed.

As Toon already pointed out, you could try 1000 by 1000 matrices to
check, if math.h++ uses blocked operations internally (which uBLAS
doesn't).

> Obervation 3) (This is the kicker...) for strung-together matrix
> products like "Mat1 * Mat2 * Mat3 * Mat4 * Mat5", which I am
> implementing as
> "prod(Mat1, prod(Mat2, prod( Mat3, prod(Mat4,Mat5) ) ) ) Math.h++
is
> MUCH MUCH FASTER than uBLAS. -- by ~2 orders OF MAGNITUDE! I
believe
> that this is a characteristic of the scalability of template
> expressions.

Correct. This observation was first stated by Benedikt Weber during
uBLAS review:

http://lists.boost.org/MailArchives/boost/msg31283.php

> My question is this: Is there a way I an instruct uBLAS not to use
> template expressions when for strung-together matrix products?

You could reintroduce temporaries directly

prod(Mat1,
  matrix<your_type> (prod(Mat2,
    matrix<your_type> (prod(Mat3,
        matrix<your_type> (prod(Mat4,Mat5)))))))

or use some recently introduced free functions:

prod(Mat1,
    prod<matrix<your_type> > (Mat2,
        prod<matrix<your_type> > (Mat3,
            prod<matrix<your_type> > (Mat4,Mat5))))

HTH

Joerg

P.S.: this is certainly the third FAQ entry ;-)


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net