At this point? They *got* to this point by playing a role in your dreams.
I haven't moved *anything*. You love Crayish architectures. I love
busiesses that make sense. Computers are no longer a toy for me.
They're a means to an end. I really don't care what architecture wins.
I can't think of something appropriately compact and eloquent to say
in reply. Of course a computer has to make business sense. I, and
others, have argued for Cray-type machines because relative amateurs
can hack decent code for them. That makes them good for scientific
computation in more ways than one. You can't easily hack and you
can't easily debug cluster code. Cray-type machines also tend to have
decent bisection bandwidth, a department in which Blue Gene, at least
as installed at LLNL, is pathetic.
Let me repeat; "you keep saying this", but if the problems can't be solved
by streaming they don't save any power at all. The universe of problems
that are solvable by streaming is on the order of the size of
"embarrasingly parallel" problems that can be solved with an array of a
kabillion 8051s.
We really don't know at this point. There was a long thread on
comp.arch, last summer I think, where we thrashed through a proposed
register-transfer architecture from someone who didn't really know
what he was doing (remember the WIZ processor architecture?). It got
weird enough to pull John Mashey out of the woodwork.
At one point, the thread attracted one Nicholas (sp?) Capens, who had
written some shader code to which he provided links. He talked about
"straightening out the kinks" so you could stream code. Those are the
right words. It's hard to get a compiler to do that sort of thing,
although compilers have mostly learned how to do what I could do as a
Cray Fortran programmer, but what I knew how to do is far from
exhausting what is possible. Using the vector mask register to merge
two streams when you don't know which of two results to use is an
example of streaming a computation that doesn't stream without some
trickery.
People *are* doing that kind of stuff with shaders right now, and some
are playing around with doing things other than graphics that way.
There is no general set of transformations you can perform, no general
theory of coding to say what is possible. Putting a compiler to work
on naive c or Fortran and expecting it to make everything suitable for
a stream processor is a non-starter, but we don't yet know what are
the real limits of human cleverness. I think we have barely scratched
the surface.
As to embarrassingly parallel, I think the Kasparov chess match
provided one example of what is possible, and, again, we don't really
know what people will do when arbitrarily large numbers of
embarrassingly parallel operations are almost free.
I though you were one of the nay--sayers, like Felger. ;-)
I picture Felger staying warm in winter with his racks of vacuum-tube
logic. ;-).
Note the smiley. I'd really like to go here, but I don't know where the
confidentiality edge is, so... Let me just say that you aren't the
only one noticing these things.
I had assumed so.
How much? What areas of computing?
Isn't 10x the standard for what constitutes a breakthrough?
1. Image processing (obvious)
2. Graphics (obvious)
3. Physics for games (obvious, discussed in another thread)
4. Physics for proteins (obvious, the only question is how big an
application it is and how much difference it will make).
5. Brute force searching (not obvious, outside my area of competence,
really)
6. Monte Carlo (any problem can be made embarrassingly parallel that
way). Financial markets are an obvious application.
7. Information retrieval (n-grams, cluster analysis and such stuff,
outside my area of competence).
8. Bioinformatics (outside my area of competence).
There's more, I'm sure, but that should be a start.
RM