Boost logo

Boost :

From: jhrwalter (walter_at_[hidden])
Date: 2002-01-08 06:04:36

--- In boost_at_y..., "rgarcia1771" <garcia_at_c...> wrote:
> Hi Gary,
> --- In boost_at_y..., "Gary Powell" <powellg_at_a...> wrote:
> > After a quick look at the code, I'm not seeing the full suite of
> > operators, that libraries like MTL and others have. (Expression
> template
> > stuff.) Is this because multi-array is designed for a different
> of
> > problems?

> multi_array is primarily a multi-dimensional container
> type library that interoperates with the standard library containers
> and algorithms. In addition it supplies core functionality (namely,
> view creation and storage ordering) necessary for numerical
> applications and extensions. The library IS intended to be used for
> numeric purposes,
> but operators should be layered atop what I am proposing.

If you compare multi_array with Fortran90 arrays, it could make sense
to extend multi_array with basic element-wise operations (based on
expression templates). Parts of these could then be reused by matrix
or tensor libraries, which build upon or integrate multi_array.
> I agree that the relationship between multi_array's types and the
> matrix representations in ublas and MTL should be more clearly
> defined.
Correct. That's one of the things we'll have to investigate.

> > While the runtime speed may be a problem (C array vs multi-
> what are
> > the chances of future compilers being able to generate more
> code?
> > My past experience has been that speed is everything but of course
> that came
> > with lots of implementation bugs that could have been avoided if
> had a
> > strongly typed multi array to work with. Hence my dilemma.
> I am investigating the performance implications of the
> library and its design. Several others have been doing this
> as well (which I very much appreciate). In some of my early
> experiments, KCC was able to optimize away the abstraction layer
> for operator[](). I verified this by analyzing the C code
> I have added more features since then, so more experiments are

OTOH, would it technically be possible at all to provide a proxy free
implementation of an interface like
operator () (int i)
operator () (int i, int j)
operator () (int i, int j, int k)
for low rank multi_arrays?

Boost list run by bdawes at, gregod at, cpdaniel at, john at