Boost logo

Ublas :

Subject: Re: [ublas] Initial submission plan?
From: Rutger ter Borg (rutger_at_[hidden])
Date: 2009-02-12 15:39:39

Jesse Perla wrote:

> I am starting to test the LAPACK bindings today (using the Intel MKL on
> windows right now if anyone cares about that) and will start to give
> feedback. Just to confirm, the only "high level" interface we have right
> now is for "solve" as far as I can tell? And the documentation isn't yet
> part of the package?:

Sounds good -- good to hear your test environment, given that I'm on ATLAS
or MKL on Debian Linux, it spreads our testing capabilities. The code in
solve.hpp serves merely as an example at the moment, I'm not sure if it
will work. The documentation provided by the numeric_bindings as they were
is what we got. The quickbook documentation is being worked on.

> Also: It will be great when the binding's are in boost proper. My request
> is that we have a rough tutorial of how to use traits to bind to ublas
> generically. Maybe using a BLAS or LAPACK subset as an example?

I'm not sure if I understand your exact request. The traits work very
similar to e.g. Boost.TypeTraits.

> I am
> going to have to write some numeric bindings (which I will submit if they
> are any
> good) and would love to have a rough guide of how to go about it. The
> generated source code is great

For the thing closest to this, please check the current existing
documentation, I think it has a section on it.

> Also: perhaps before this is submitted it is worth testing rough designs
> for binding to distributed matrices (e.g. how would PBLAS and SCALAPACK
> work?). If those are thought through beforehand, it will make it easier
> for
> me to bind to these kinds of things eventually. I still don't quite
> understand how bindings takes care of passing in data stored in ublas to
> underlying routines, vs. hijacking different storage.

The data stored in underlying matrices is gained access to by an added level
of indirection (traits). It's also used for the matrix size, and so on,
because it is stored in the matrix type. Before writing SCALAPACK bindings,
you would probably need to write types like distributed_matrix<> and
distributed_vector<>. To get this right and clean is a challenge in itself
I guess.

Please don't hesitate to provide feedback, the more the better.