Subject: Re: [boost] Accelerating algorithms with SIMD - Segmented iterators and alternatives
Date: 2010-10-12 01:57:34
> Even a "good" vectorizing C++ compiler is pretty bad, practically
> worthless, and while research continues apace, the practical implications
> of the state of the art hasn't really changed for decades. The simple
> fact is that most of the time the compiler just can't make enough useful
> assumptions about general C code to vectorize it safely. People write SSE
> code by hand in assembly (calling intrisics is writing assembly by hand,
> but more verbose) or accept the scalar code the compiler generates.
> Fortran is a different story, it is a language designed to make life easy
> for the compiler. The compiler can hardly fail to vectorize fortran code,
> but other than calling fortran libraries from C interfaces that doesn't
> help us much. If you just defined an object model that faithfully
> duplicates semantics of fortran and let people program that in C++ you
> could auto-vectorize it in the C++ compiler if it became part of the
> standard, but that would take years and cost millions of lives
>, its much easier to do it with a JIT runtime environment in a library.
> Since we already have the compiler technology for languages that allow it
> to work well it seems best to implement such a language as a DSEL that
> allows us to use that compiler technology from C++ rather than try to
> implement a vector compiler in a template metaprogram or keep beating our
> heads against the vectorizing general C code brick wall. JIT runtime is
> an end run around standardization and is kind of like going through
> Belgium to invade France. You get to Paris without all the fuss.
I have rouble seeing how JIT and High Performance or JIT and EMbedded
platform can be usable together, hence our static solution. I urge people
to get a look at our boost'con slides. We are not speaking in the air, we
already have working proof of concept and even more than that.