[Prev][Next][Index][Thread]

Re: performance for scientific computing



"Sébastien de Menten" wrote:
> 
> > >> But I cannot really follow what you want to do. After all, calculation
> > >> of A*A always requires allocation of a matrix holding the
> > >> result. Maybe you should describe your requirements again.
> > >>
> > > That is true for A*A but when we want to compute C=A*A+cos(A), you need
> > > only to allocate memory for C and nothing more:
> >
> > AFAIK optimizing away temporaries in such complex vector or matrix
> > expressions is a hard problem and still a research topic. The APL
> > vendors have struggled with it for ages. The SAC project:
> > http://www.informatik.uni-kiel.de/~sacbase/ is working in that
> > direction but the numerical market is probably too small for
> > general-purposes languages like Dylan (or C, or Java etc) to
> > pick up such optimizations.
> >
> 
> For the general-purposes language C++, one can look at blitz++ which does
> this "optimisation" via templates. I guess that programs like Matlab do the
> same thing. The only need is to rewrite the expression
>     C = A*A+cos(A)
> in, if C as dimension (N1,N2)
>     for (int i=0;i<N1;i++)
>         for (int j=0;j<N2;j++)
>             C(i,j) = A(i,j)*A(i,j)+cos(A(i,j))
> 
> Well, that's the basis. If one wants to optimise for cache hits or parallel
> implementation, it is more complex but I only need the basis.
> I think that with macro expression we can get the same things that with C++
> templates (in an easier way due to a better macro conception in
> Lisp/Scheme/Dylan than in C++ templates).
> 
> BUT, I just noted that GwydionDylan will *never* have macro ability (wow,
> they have just dropped one of the essential features as if it was a detail
> !!!).

You could not be more off-target :-)
The Gwydion Project is consisting of two Dylan implementations:

- Mindy (byte-code compiler & interpreter, written in C, slow execution, no macros,
	not-too-close tracking of the language as defined in DRM)
- d2c (full blown compiler, full macro system, close DRM compliance (and improving rapidly)
	powerful optimizer, emits C code for gcc consumption, but other backends possible).

Mindy is basically only needed to bootstrap d2c from scratch.

> 
> BTW, does anyone know why they did not write Gwydion Dylan in Lisp/Scheme
> instead of using a low-level language (C I think) ? These 3 languages are
> quite similar and the little differencies could have been soften with
> macros. I probably miss some point.
> 
> Sebastien

Hope this helps,

	Gabor



Follow-Ups: References: