Subject: Re: [boost] How to structurate libraries ?
From: David A. Greene (greened_at_[hidden])
Date: 2009-01-16 18:37:28
On Thursday 15 January 2009 12:46, Joel Falcou wrote:
> Frank Mori Hess a écrit :
> > I was referring to my recollection of this post from the guy who designed
> > valarray:
> > http://www.oonumerics.org/oon/oon-list/archive/0493.html
> > where he says it was intended to be highly optimizable for running on
> > vector supercomputers
> But beware, few compilers nowadays are able to automagically turn scalar
> code into
> proper, optimized SIMD code (or, again, I'll be pleased to be introduced
> to one).
> Automatic vectorization - like automatic parallelisation in general - is
> still in its infancy and largely academic.
Vectorization has been a known technology since the '60's. Companies like PGI
and Pathscale provide auto-vectorization for SSE. Cray recently released a
vectorizing compiler for the XT supercomputer.
Auto parallelization has been around since at least the '80's in
production machines. I'm sure it was around even earlier than that.
The tricky thing about SSE is all of the instructions that don't fit neatly
into operations expressible in higher-level languages. Things like
permutations and shuffles. Compilers will use some of those instructions
(for complex data, for example), but in general the intrinsics are needed to
do really fancy stuff. Perhaps your SIMD library could invent convenient ways
to express those idioms in a machine-independent way.
Your simple SIMD expression example isn't terribly compelling. Any competent
compiler should be able to vectorize a scalar loop that implements it.
What would be compelling is a library to express things like the Cell's
scratchpad. Libraries to do data staging would be interesting because more
and more processers are going to add these kinds of local memory.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk