HPC Progress Starting from 10X
I was fortunate to have worked very closely with Seymour Cray for many years in many different roles and capacities. I started working with Seymour and Seymour’s machines at Control Data Corp. I was the Account Manager at Lawrence Livermore National Lab when Sid Fernbach was the “leader” and then the Account Manager at DOE. Although I took it for granted at the time, I was in “graduate school” between the world’s leading designer and the world’s leading user. I sometimes think about that very special set of circumstances and didn’t realize how very special it was taking it all for granted and thinking that it was the way all high tech companies and users worked. Before Seymour died I also worked with him at Cray Computer Corp and then at SRC Computers. I left SRC Computers after Seymour died.
Now, reflecting on the past and looking towards the future let’s think about performance increases and how to get some significant performance increases. A reasonable starting goal is to look for performance increase of 10X with a pathway to get, at least, another 10X.
Consider the problems and issues. It’s hard to add more racks and because of power, heat and other considerations, we have to look at other areas. It would be nice if we can just go to the most fundamental part and get transistors to switch 10X faster. Faster electron transmission would be nice too. It would be easy if we could reach in and turn the dials up ignoring, for the moment, heat dissipation and transmission delays. This is why there is tremendous effort being spent on speeding up transistors. Well, let’s consider changing to gallium arsenide transistors. Seymour changed from silicon to gallium arsenide for speed and some other characteristics including reduced power requirements and a few others, but even then with gallium arsenide we will still face limits. A lot of labs around the world are working on faster transistors including a silicon-germanium composite, so there is some hope for faster devices. As I understand, these improvements are around 2X-4X or so, but even 2X would be great. Well, we are reaching limits (and can’t just get around some physical limitations) so this approach is not going to get us very far down the road, and herein lies the most significant issue.
In search of speed in the late 1950’s Seymour changed from germanium transistors to new transistors from a new start up company in California, Fairchild Semiconductor, “Planar Silicon Transistors”. Of course, that was before the label of “Silicon Valley” existed. Seymour may have been the first, if not one of the first to use silicon transistors for HPC, also well before the label of “HPC”. This was for the Control Data Corp 6600. The 6600 was a revolutionary machine that also greatly expanded the existing computer model addressing real code and real workload issues. If you take a “Big Picture” look at the 6600 you would see that it exploited the “RAM” model foretelling the future. We have all been on a pathway set by a model, which was already, somewhat, fully exploited with the 6600. The model hasn’t really changed and really all we have been doing over the last several decades is riding the coattails of technology improvements, tweaking the model, improving it here and there, and adding parallelism. In search of faster serial speed for the Cray 3 and Cray 4 Seymour was again to change, this time, from silicon to gallium arsenide transistors.
We cannot expect technology to get us large improvements, therefore, we have to address fundamental model changes on how we process codes and work loads. The guys in the farmhouse in Princeton thought they were in “fat city” when they came up with the idea of using CRTs as random access memory (RAM). As I remember each CRT was 40 words by 40 bits. They had a few CRTs, which was, at the time, all of the random access memory that existed on the planet. They were losing bits until they discovered that sunlight coming in the windows hit the CRTs resulting in dropping bits. They had to cover up all the windows. I would like to know what they were thinking and considering as options besides RAM and CRTs, but did not use and why. They were free thinkers and unencumbered by RAM or even users at the time. Over the last 50 years many root models changes were considered so it is important to understand the history, circumstances and compromises made at the time.
Even if you can come up with a plan to get to a 10X improvement (and if we just assume that we can) you arrive with a lot of problems to be overcome. Here we run in into that issue that seems to always come up with any speed improvement, memory, but you also come face-to-face with just moving stuff around and the limitations of even using wire. And one always needs to keep in mind power and transmission issues. We find several technology brick walls coming at us at one time. So, this technology driven path does not seem to be easy, quick or may not be cost effective. That said we would still welcome (and use!) any technology improvements.
Since improvements in technology will only get us so far, I am suggesting, just as Seymour was driven, to look at root level model changes; this may be the only way to see large improvements of 10X, and a path to another 10X or more. Seymour was always pushing speed and many may be surprised to know that follow on machines to the Cray 4 were quite different but also technology driven as usual. They follow further attempts to include additional parallelism in an electrical structure without abandoning the serial structure of computer programs and adding in features that became possible because of advances in technology. Seymour was a “free thinker” always considering and thinking about root model changes that would become necessary. Root level model changes are more easily considered and understood if you consider both the details and big picture coupled with broad based historical knowledge.
If we can start with a blank sheet, it is always good to keep in mind that there is a great need to reduce power and the easy way is to just make everything simpler and eliminate or reduce parts. It’s time to also go back to the very source and reconsider just how users are using machines and what they are trying to accomplish. In other words go back to look not only how real codes load the machine, but how and what they are trying to accomplish. Then we need to go back address different new and faster models. I really don’t think we in the computer business have been good vendors to our users. We have been forcing users to become computer experts just to use our machines. Users are just using a “tool” to get there work done and really don’t care about all this “technology” that we force them to understand in order to use computers. And the complexities are only increasing, with various types of parallelism, cache levels, threads, threadblocks, etc. Seymour always looked at applying his “gift” to give other people a better, faster, simpler, easier to use “tool” to better understand the world around us.
Seymour would sometimes get tired of my continued questions about what else he was thinking about and why he didn’t use it or go in a different direction. Given the right circumstances, Seymour was disarmingly straightforward. At the right time Seymour even welcomed a discussion because, I think, it gave him a way to talk about what he was thinking; it was part of his discovery process when he came to difficult questions or a roadblock. I found I learned much more from what was thrown out and the process to the answer, especially when most answers seemed quite simple – it’s the “Why didn’t I think of that?” moment. The real question becomes not the answer, but rather, if it’s so simple, why didn’t I think of that? You may quickly find that it was really not that simple or you were not asking the right question. Understanding the answer, going to the root and also understanding the history is always much better and far richer if you can and are able to understand all the “whys.” Sometimes, we are all too ready to just look for the “answer.”