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
set
> of
> > problems?

[snip]
 
> 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-
array)
> what are
> > the chances of future compilers being able to generate more
optimal
> 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
we
> 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
generated.
> I have added more features since then, so more experiments are
needed.

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?
 
Regards
 
Joerg
 


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk