$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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