Organick Lecture 2008
High Performance Programs and Programmers: A Personal Perspective
Fran Allen
IBM Fellow Emerita
IBM T. J. Watson Research Center
University of Utah School of Computing
Wednesday, February 20, 2008 7:30 p.m.
Turing Award Winner
Fran calls supercomputers one of the miracles of our time.
“In the beginning there was Fortran.” Jim Gray
Fran’s first assignment was to teach the scientist of IBM Research Fortran which had just been released.
Up till then the scientists had written their code by hand in assembly.
John Backus set goals, stuck with them, and achieved them.
Fortran had two objectives:
Increase the productivity of programmers.
Be almost as efficient and hand crafted code.
Fran’s next project was the IBM Stretch 1956-1961
Fred Brooks
The stretch was announced to be 100x faster than any existing machine
Memory Access Time was the main performance limitation
The stretch had up to 6 overlapping storage references at one time.
Had up to 11 instructions in flight at a time in the processor.
The stretch was built for solving engineering and scientific problems
HARVEST
built for the NSA, delivered in 1962
Used for code breaking.
The HARVEST was a streaming data computation model.
It had eight instructions.
IO, memory, and computational where all balanced and synced to a clock.
Only machine that maintained this balanced.
The machines language ALPHA was designed for the NSA problem and the machine.
The stretch, when deliver to Los Alamos, missed its performance target by 50%.
The stretch was an attempt to do what was beyond the capabilities of the people and the technology of the time.
The stretch had huge influence on IBM future systems, particularly the IBM 360.
We don’t take risks developing new systems like we use too. The strech was taking a risk and eventually winning because of it.
The IBM 360 unified the business and scientific product roles.
This was a goal, particularly a unified instruction set, was set by Fred Brooks.
There were competitions of competing ideas to find the best solutions.
John Cocke was a engineer who “never wrote a “paper” or “gave a talk”".
John Cocke build the most difficult part of the machine, the look ahead.
John Cocke was in charge of the ACS project that was eventually cancelled in 1968.
The ACS compiler did many pioneering things in the area of compilers.
John Cocke decided to stop trying to create the worlds fastest computer, (the ACS machine), and decided to create the best performance/cost machine which resulted in the Power PC.
Ideas in our field come from problems.
Good an useful results come from problems that result from building something.
It takes twenty years from the appearance of a problem to it being totally solved in a product.
The new thing will be simpler, slower, cooler multicore processors.
The real challenge is to organize tasks to execute in parallel.
How do we use these multicores and get performance out of them?
Fran says we are not ready to do parallel yet. Maybe after 20 years we will be ready.
Everyone will have multicores, not just the high end scientific community.
How these cores will be used is a big question for the software and application people.
We now have a parallel hammer, how will we use it?
Parallelism
“The biggest problem Computer Science has ever faced.” John Hennessy
“The best opportunity Computer Science has to improve user productivity, application performance, and system integrity.” Fran Allen
Coming back to Elliot Organick
The things that succeed best are those that have complete clarity about what the problem is and what the solutions are.
Writing things down and engaging communication is the key to success.
Questions:
What have we learned from the transputer.
The CSP work done for the transputer I think is interesting.
Is the problem in conceptualization or in finding a language to describe our conceptualizations?
Tony Hoard wrote a paper called “Toward the understanding of parallel computers”.
John Nash had some ideas about a parallel machine while working for RAND.
Could you expand on your ideas system integrity?
Language integrity could be a second order effect of better languages.
Users still have to know about the raw details of the machine to get great performance.
Parallelism will increase and the hardware will get easier.
The complexity of hardware will move to parallelism in software.
We have a lot of work in front us and it will be interesting to see
You mentioned that you would like to see caches disappear.
Scratchpad memories may be a better solution than caches.
But being responsible for the memory hierarchy whether you want to or not can be as much a curse as a blessing.