brooks@lll-crg.ARPA (Eugene D. Brooks III) (05/01/85)
> I am going to disagree a lot with brooks@lll-crg.ARPA, but don't take it > personally. It sounds like Mr. Brooks has given the topic a lot of thought Not to mention a lot of work, its Dr. Brooks. :-) >Some of my assumptions are: > - Lots and lots and lots of small processors are better than fewer big > processors. A very bad assumption, you want as many of the most COST EFFECTIVE processors as you can afford. To do anything else is to waste your computational dollar. At the moment the most cost effective processor for vectorizable scientific work is a VLSI vector processor of about 5-10 MFLOP capability. The speed figure is climbing steadly and will probably saturate at not too many factors of two greater. In the serial area the current 32bit micros are certainly very cost effective. Would you pay a dollar for an apple if you could buy it for 50 cents? > - Any particular connection topology will be not quite right for most > applications, so we might be willing to sacrifice the best case behavior > for more generality or better average case behavior (for example nearest > neighbor communication in a 2 dimensional grid is very good, but not > very general. A cube is well connected, but may use too many wires to > achieve its bandwidth) This is points for the cube, it has very general utility. It is one of the most general topologies due to the many topologies imbedded in it. Yes, it has a lot of wires. Whether a k connected network (4x4, 8x8, ... switching nodes instead of 2x2 switch nodes) is better is an open research question. You trade wires for silicon. You have to do the relevant simulations to find the answers to this question. The switching technique described in my recent work applies to these systems as well. You might consider writing the simulations and publishing the papers for these! > I tend to think that it is possible to > get more MIPS per dollar by using smaller, cheaper processing elements. You get the most MIPS for your dollar by using the most COST EFFECTIVE processing elements. These do not happen to be the smallest and cheapest. > I don't see how wiring a 3d cube with 32 processors on a side gives us a > 15 cube. Consider a n=5 hypercube with the processors aligned along a line spaced at say one foot intervals. Each processor is labeled by a 5 bit number. These 5 bits form the first 5 bits of node addresses of the n=15 cube we are constructing. Take 32 of these linear arrays. Place them side by side forming a plane. Connect all of the 0 processors together in a line with the same wiring pattern as used for the linear array. Do the same for all of the other processors. You now have a n=10 hypercube with 1024 processors. The row index forms the next 5 bits in the now 10 bit processor enumeration. All wires run in either the x or y directions and the machine is a physical plane. Now take 32 of these planes and stack them in the z direction one foot apart. Connect the processors in each vertical line (there are 32x32 of them) with the same wiring pattern as for the original line of 32 processors. You now have a n=15 hypercube. It is physically constructed in a 3 dimensional box 32'x32'x32'. All wires run in the x,y or z directions with a very regular pattern. No wires run diagonally. The 1 meg processor is within reach but as I noted earlier I would be quite happy with a 1024 processor cube of 10 MFLOP nodes. Will any one sell me one? I'll settle for 128 nodes as a start. > >Deadlock free routing requires that a specific path be used for each > >sender/reciver pair. Sorry, I should have been more precise. The only known proof for deadlock free routing, without assuming infinite diskpacks at each node or any other unacceptable bandwidth reducer like inhibiting a PE from sending another message until a return receipt is received (see the further caviat below), requires that a specific path be chosen for each sender/receiver pair. This proof is documented in Dick Lang's 81(I think) Caltech Thesis. There is a caviat not clearly documented in Langs thesis as well. If each message is acknowledged with a response indicating the sucessful reception of the message (as part of the reception action) then you need two seperate networks for the messages and responses or infinite disk packs at each node. I ran into a deadlock condition in one of my hypercube simulations. The "cure" was to use seperate networks for the messages and return receipts. Of course there may be a better routing algorithm. If you find it publish it and send me a copy of the paper. In fact send me a copy of the paper before you publish it, I would like to take advantage of the algorithm as soon as possible in my simulations and wouldn't want to wait for the publication lead time. > Thinking Machines Corporation Have you guys over there taught any of your machines to "Think" yet? Sorry, I know its old and you have heard it before but I couldn't resist. :-) > Ah, but there are on the order of 2^N wires in the machine. There are NlogN/2 wires, there logN ports on each network node, there are N nodes and each wire has two ends. Where does the 2^N come from? The utilization of the wires is around 50% as packets travel half the maximal logN distance on average. > > My use of the network is to create a > >shared memory server for a hypercube machine with CRAY style vector processors. > >With simultaneous vector access by all processors the packet conflict problem > >is as severe as it can be. The network provides FULL bandwidth to all > >processors simultaneously. > > It sounds to me like the packet conflict problem is as nice as it could > possibly be for that problem. (Presumably processor number $i$ is > accessing memory $f(i)$ where $f$ is one-to-one. There are several addressing modes, random start addresses with a common stride among the processors, random scatter/gather and random start with random stride. Here the starting f(i) is not one to one as the start addresses are unconstrained and may overlap. The magic of the network is that it moves toward an attractor in its motion, falls into lock step making f(i) one to one and achieves full bandwidth. The vector lengths required to do this are of course a function of the machine size N and are documented in the papers "The butterfly processor-memory interconnection in a vector processing environment" and "The shared memory hypercube". The Hypercube does well on all of the addressing patterns, the butterfly does well on some of them. > local memory The shared memory hypercube has local memory. Whether a segment is local or global is useage determines how you arrange the addressing for the segment. There are N local segments and one global segment in the simplest arrangement. The ith processor has absolute priority and low latency for the ith local segment. It can still access all of the other local segments with lower priority and higher latency. This is one of the BIG advantages of the cube. It can be N scalar machines, 2 N/2 parallel machines, ... or one big parallel machine at the whim of the software. You put the local scalar variables of a task in a local segment. Its very flexible! > Why do you have shared memory? A shared memory machine can do anything a message passing machine can do. You can even efficiently run message passing software. The shared memory machine is then more flexible and useful on a wider range of problems. It turns out that the type of codes run at LLNL are very difficult to run on anything but a shared memory machine. Message passing machines, to the extent that they can live with a lower message bandwidth than aggregate memory bandwidth , ie the processes are loosely coupled, are of course cheaper as the network is cheaper. If we could use one at LLNL it would have been bought a long time ago. > What is the start up time for your vectors (i.e. how big does > a vector have to be before the vector processing part wins over the > scalar processing part.) As you might guess it gets longer as the number of processors used in the problem gets bigger. Notice that I say the number of processors used in the PROBLEM here. For the butterfly its the number of processors in the MACHINE which is potentially a different animal. Luckily its a very slowly growing function (like (logN)^2 with a suitably small constant out front). You would like it, its a large N winner. > Typical vector processors are limited in their > speed by lack of memory bandwidth (this is true for a single processor > with high bandwidth memories (e.g. the CRAY uses a 16-way interleaved > memory in order to try to increase the memory bandwidth). Your choice is as to whether you want to interleave several hypercube topology memory servers, interleave the memory modules or accept a 10-20 mip instruction rate. It is not yet known whether the interleaving will break the adaptive nature of the network that is so crucial to vector performance. This simulation has not yet been done but if you know me, and I am assuming that you have learned a little about me by now, you can be sure the simulation will be done soon. If the interleave does not break the adaptive nature of the network then interleave, if it does break the adaptive nature stay with 10MFLOP processors and 100ns ram. Remember that we are following a line of maximum cost effectivness and not maximum absolute speed per node. A 10MFLOP node is maximally cost effective at the present time and is what you would use anyway. Yes, the processor node is an order of magnitude slower than a Cray. It is also an order of magnitude more cost effective. A 128 node machine seems like a good start. It would cost the same amount as a Cray and be 10 times faster in terms of aggregate performance. > Too many wires, and not very effectivley used. Wrong on both counts, see the comments made above. > Suppose you spent the > same amount of money on a different network which gave you twice the > bandwidth for most of your applications. Find it, prove its better than the cube for most of LLNL's applications, build it and we will buy it. Thats the bottom line. If after spending some time studying the matter you don't find something better, build a shared memory hypercube to the proper specs. We would have bought one of those yesterday. Now isn't that better than Russian roulette! > discussion (somewhere in an earlier posting) is the $k$-shuffle. This > network achieves better bandwidth by decreasing the distance between The k shuffle does not achieve better bandwidth, it achieves a lower latency. Bandwith is bandwidth, latency is latency and parts is parts. :-) The lower latency could translate to shorter vector lengths but as is shown in my paper the vector lengths required for the hypercube are fine. The worry is that the k shuffle will have the start address pickyness of the butterfly which is unacceptible. The answer to this question is not known at present. > Very few programs actually use the > n-cube directly (although there are > a few (e.g. subcube induction to > count the number of processors in a given state - [D.P. Christman, > "Programming the Connection Machine", MIT masters thesis, January, > 1984])) And for most programs the $k$-shuffle will be at least as good. Take a look at the FFT, its an important problem, it blows smoke on the hypercube. As I have said before, the wires is there. The FFT uses all of them. Speaking of smoke, when it clears read the papers I sent you via SNAIL MAIL. Any other takers for those papers? Pun intended. :-) Send me your SNAIL MAIL address!
bradley@think.ARPA (Bradley C. Kuszmaul) (05/03/85)
In this posting, my latest entry in the "dualing hypercubists munch Cray" story, I am going to "almost concede" several of Dr. Brooks' points. For example, the assertion that a 5-10 MFLOP processor is more cost effective than a smaller one may very well be true (one of the percieved problems of the Connection Machine (CM) is that its floating point performance (~60 to 600 MFLOPS, depending on how you measure it) is not as good as one might expect from a machine with 4K chips and 64K processors (four square feet of special purspose silicon, plus memory and glue) If Thinking Machines (TMC) had used 4K chips to maximize floating point speed (with, perhaps, 2K 5 Mflop chips, and 2K network chips), the CM might have a 4 GFLOP performance. The truth is that connection machine was not designed to be a high speed number cruncher, but instead was designed to do something called "logical inferences" (no one really knows how to measure logical inferences per second, but everyone at TMC seems to believe that the CM will do them faster than anything else). My research (apparently, with my ongoing master's research, I lose in the "battle of the titles" to Brooks' completed doctorate) involves trying to run applicative languages (languages without side effects) on the CM. One of the big arguments for running applicative languages is that the parallelism is easy to exploit, and thus programs running on an architecture well suited for such languages should be able to run very quickly (hah!). In order to protect my reputation when the CM does not run my programs very quickly, I claim to be "simulating applicative architectures". :-) Sometimes, I believe that the CM was designed correctly after all, since all the programs I have written are dominated by communication time, so what's the point of spending more on processors if you can't communicate fast enough to keep them busy. Sometimes, I believe that the CM was not designed to be fast enough (it was conservatively designed so that it would work the first time). If the processors were bigger, maybe there would be less of a communications bottleneck (hopefully by initiating less of it) . If the router were faster, or of a different topology, maybe the communications traffic would run faster. If we upped the clock to 10ns, it might be enough faster to make everyone happy. (When I told one of the designers that I want the model two to have a million processors and a 10ns clock, he said I was on drugs, and elaborated with "I don't want to design with ECL, if you look at it the wrong way it fails. How do you distribute and use a 10ns clock with CMOS? How do you get bits across four meter wires at 10ns? You design it, we'll build it") In article <560@lll-crg.ARPA> brooks@lll-crg.ARPA (Eugene D. Brooks III) writes: >> I don't see how wiring a 3d cube with 32 processors on a side gives us a >> 15 cube. >Consider a n=5 hypercube with the processors aligned along a line spaced at say >one foot intervals. Each processor is labeled by a 5 bit number. These 5 bits >form the first 5 bits of node addresses of the n=15 cube we are constructing. A machine in a box 32 feet on a side. Wow! I've been considering building big machines (I've been thinking about machines the size of a small building too), and I'm glad someone else thinks the way I do :-) Of course the million processor machine will be something like 100 feet on a side. (Hopefully that foot includes allowances for accessing the machine to service it, since I can't imagine why else a processor would want to be that far away from its neighbor :-) Ok, so you are wiring up a 5-cube in a linear region, and the wiring bundle will be about 16 wires at the thickest point. That is not too tough (in fact TMC wired up a 5-cube on one printed circuit board - no doubt with an infinite number of layers :-) To get up to the 2M processor machine (sorry about jumping up to 2M from 1M, but 2M is a cube in base 2) you need 128 processors lined up in a row, and the wiring bundle will be 64 wires thick at the thickest point. While it may be possible to do, I still claim that the packaging is very hard. (I suppose it would help to have some custom wires too. The CM uses standard ribbon cable for its longer connections (i.e. the connections along the highest dimensions), and printed circuit board for the lower connectinos. I guess pcb counts as custom wire. (And to think that TMC is getting a 64K machine into a 5 foot cube (apples and oranges of course - 64K of really small processors is not the same as 32K of one foot cubed processors). And the speed of light across a 32 foot region is going to be fun to deal with (I know I am looking forward to it: Lets see now, what time is it anyway) The speed of light problem, can of course, be dealt with in lots of ways (decrease the clock speed of the network, but keep the processors going faster, etc.) >I would be quite happy with a 1024 processor cube of 10 MFLOP nodes. >Will any one sell me one? I'll settle for 128 nodes as a start. I understand that qualified buyers can obtain information about buying a CM from TMC. (Don't look at me that way... I only use TMC's computers (at least during the school year). The prototype is 64K processors with from 1 to 10 Kflops per processor. That's the best I can offer :-) >> >Deadlock free routing requires that a specific path be used for each >> >sender/reciver pair. >Sorry, I should have been more precise. The only known proof for deadlock >free routing, without assuming infinite diskpacks at each node or any >other unacceptable bandwidth reducer like inhibiting a PE from sending >another message until a return receipt is received Such a bandwidth reducer is not neccessarily unacceptable. > (see the further caviat >below), requires that a specific path be chosen for each sender/receiver pair. >This proof is documented in Dick Lang's 81(I think) Caltech Thesis. There is >a caviat not clearly documented in Langs thesis as well. If each message is >acknowledged with a response indicating the sucessful reception of the message >(as part of the reception action) then you need two seperate networks for the >messages and responses or infinite disk packs at each node. I still am not sure I understand. Suppose that each message is acknowledge with a reciept before the next message is allowed to be sent. Then with an N processor machine, there can be at most N messages in the network at one time, so you only need that much memory at each node. Thus I conclude that you are acknowledging messages, but that you are allowed to send more messages before the acknowledgement comes back. I don't know what the acknowledgements do for you, but it seems like you could create exactly the same deadlock by using messages with no acknowledgement (by "simulating" the acknowledgement in software: Whenever a processor would have sent an acknowledgement, it can just send a regular message.) >> Thinking Machines Corporation >Have you guys over there taught any of your machines to "Think" yet? Let's play the Turing test: Can you prove that I am not one of those machines (please don't respond by saying that my postings display a lack of thought) :- >Sorry, I know its old and you have heard it before but I couldn't resist. :-) Could be worse. It used to be International Thinking Machines. (Imagine large blue letters with horizontal stripes spelling out ITM.) >> Ah, but there are on the order of 2^N wires in the machine. >There are NlogN/2 wires, there logN ports on each network node, there are >N nodes and each wire has two ends. Where does the 2^N come from? My N was the number of dimensions, while your N is the number of nodes. Sorry about the confusion. Still seems like a lot of wires to me. >The utilization of the wires is around 50% as packets travel half the maximal >logN distance on average. How big a cube is that? (I am still trying to dig up the reference about 14 cubes only using 25% of their potential bandwidth...) A handwaving argument that larger cubes make less effective use of their wires than smaller cubes goes like this. There are NlogN/2 wires, but only N messages could possibly be inserted into the net at a time, so there is logN factor that is being wasted. Furthermore, as the number of processors grows th neumber of possible collisions increases, further decreasing the percentage of used bandwidth. (You don't have to believe the argument if you don't want to...) >> Why do you have shared memory? >A shared memory machine can do anything a message passing machine can do. >You can even efficiently run message passing software. The shared memory >machine is then more flexible and useful on a wider range of problems. Conversely, a message passing machine can do anything a shared memory machine can do. You can even efficiently run shared memory software. (Apparently that is how you are implementing shared memory) The message passing machine is then more flexible and useful on a wider range of problems. >> Too many wires, and not very effectivley used. >Wrong on both counts, see the comments made above. Too many wires, and not very effectively used. (Boring aren't I) >> discussion (somewhere in an earlier posting) is the $k$-shuffle. This >> network achieves better bandwidth by decreasing the distance between >The k shuffle does not achieve better bandwidth, it achieves a lower latency. >Bandwith is bandwidth, latency is latency and parts is parts. :-) The lower >latency could translate to shorter vector lengths but as is shown in my paper >the vector lengths required for the hypercube are fine. The worry is that >the k shuffle will have the start address pickyness of the butterfly which >is unacceptible. The answer to this question is not known at present. But because the messages spend less time floating around in the network, the network may be able to achieve higher throughput in the $k$ shuffle than in the cube. >> Very few programs actually use the n-cube directly >Take a look at the FFT, its an important problem, it blows smoke on the >hypercube. As I have said before, the wires is there. The FFT uses all of >them. I was afraid you might bring up FFT. Just as a matter of curiosity, what percentag of total computing time do you use up on FFT's? >Speaking of smoke, when it clears read the papers I sent you via SNAIL MAIL. Oh well. My response is wimpy this time. I'll read the papers, and then flame on... -Brad-- bradley@think.uucp (i.e. {decvax!cca,ihnp4!mit-eddie}!think!bradley) bradley@THINK.ARPA
karsh@geowhiz.UUCP (Bruce Karsh) (05/05/85)
> > >> Very few programs actually use the n-cube directly > >Take a look at the FFT, its an important problem, it blows smoke on the > >hypercube. As I have said before, the wires is there. The FFT uses all of > >them. > I was afraid you might bring up FFT. Just as a matter of curiosity, > what percentag of total computing time do you use up on FFT's? Well, in the geophysical industry, it's not uncommon to have mainframes doing almost nothing but ffts. The geophysical industry is probably one of the biggest consumers of computers in the world. (I'm not implying that it's necessary for a parallel machine to do FFT's quickly. But the oil industry would be a very large purchaser of a parallel machine that did FFT's quickly.) -- Bruce Karsh | U. Wisc. Dept. Geology and Geophysics | 1215 W Dayton, Madison, WI 53706 | This space for rent. (608) 262-1697 | {ihnp4,seismo}!uwvax!geowhiz!karsh |
eugene@ames.UUCP (Eugene Miya) (05/07/85)
<1483@think.ARPA> <560@lll-crg.ARPA> > >Some of my assumptions are: > > - Lots and lots and lots of small processors are better than fewer big > > processors. > A very bad assumption, you want as many of the most COST EFFECTIVE > processors > . . . > > I tend to think that it is possible to > > get more MIPS per dollar by using smaller, cheaper processing elements. > You get the most MIPS for your dollar by using the most COST EFFECTIVE > processing elements. These do not happen to be the smallest and cheapest. To reinforce Eugene's comments: We just had a SIG meeting with Joe Oliger (the CS chair at Stanford) recently. Joe came to the conclusion [during the course of thinking] that "fewer, high performance CPU" proponents of multiprocessing had the advantage in being able to fit reasonable portions of problems into individual processor/memories. Do not forget! We are not developing these machines in a vacuum. We have to look at the applications which may be run on these machines. Consider a 100 x 100 x 100 array with 30 variables (and increasing as our known of the natural sciences increases). I can barely fit a fluid dynamics code on a 32-node Hypercube because the storage requirements per CPU are fierce [a different example, not the 100^3x30 example]. If I am repeating myself from any earlier postings, sorry. Jack Dennis had to revise the way he thought dataflow machines need to be built after two weeks here: he needs more memory and faster I/O. If there is any one thing multiprocessors allow us to do, it is add yet more memory. Hum? :-) > > What is the start up time for your vectors (i.e. how big does > > a vector have to be before the vector processing part wins over the > > scalar processing part.) I have just tested this recently on four different CRAY architectures. Short vector startup time is very good. The vector registers are faster than the scalar registers after you pass 3 elements. I have a graph that shows this. [To: Eugene Brooks: I sent a copy of this graph to Frank McMahon, the guy who developed the Livermore Loops, for scatter- gather operations in hardware on the XMP/48.] DON'T WORRY about vector STARTUP on a CRAY, the difference is insignificant, you are wasting your time optimizing this arena. A 205 might be another story, more later. > > Typical vector processors are limited in their > > speed by lack of memory bandwidth (this is true for a single processor > > with high bandwidth memories (e.g. the CRAY uses a 16-way interleaved Our Cray has a much higher degree of interleave. The new C-2 will have 128-way. --eugene miya NASA Ames Research Center {hplabs,ihnp4,dual,hao,decwrl,allegra}!ames!aurora!eugene
henry@utzoo.UUCP (Henry Spencer) (05/09/85)
> Short vector startup time is very good. The vector registers are faster > than the scalar registers after you pass 3 elements. ... > ... DON'T WORRY about > vector STARTUP on a CRAY, the difference is insignificant, you are > wasting your time optimizing this arena. ... It should be noted that this is probably the single biggest reason why the Cray machines have been so successful, compared to most previous supercomputer efforts: they're scorching fast even on scalars, and get full vector performance on even short vectors. This is why sales of Cray machines are already an order of magnitude larger than the combined sales of the Star-100 and the ASC, both of which were Real Fast if they could ever get their pipelines full... Life is much easier for the poor users when they don't need to sweat blood to make their vectors long enough for full-speed operation. -- Henry Spencer @ U of Toronto Zoology {allegra,ihnp4,linus,decvax}!utzoo!henry
bradley@think.ARPA (Bradley C. Kuszmaul) (05/10/85)
Path: think!mit-eddie!genrad!panda!talcott!harvard!seismo!hao!ames!eugene From: eugene@ames.UUCP (Eugene Miya) Newsgroups: net.arch Subject: Re: "The Shared Memory Hypercube" Do you smell any smoke? Date: 6 May 85 23:05:16 GMT Date-Received: 8 May 85 08:09:55 GMT References: <2132@sun.uucp> <1447@think.ARPA> <551@lll-crg.ARPA> <1483@think.ARPA> <560@lll-crg.ARPA> > >Some of my assumptions are: > > - Lots and lots and lots of small processors are better than fewer big > > processors. > A very bad assumption, you want as many of the most COST EFFECTIVE > processors > . . . > > I tend to think that it is possible to > > get more MIPS per dollar by using smaller, cheaper processing elements. > You get the most MIPS for your dollar by using the most COST EFFECTIVE > processing elements. These do not happen to be the smallest and cheapest. We just had a SIG meeting with Joe Oliger (the CS chair at Stanford) recently. Joe came to the conclusion [during the course of thinking] that "fewer, high performance CPU" proponents of multiprocessing had the advantage in being able to fit reasonable portions of problems into individual processor/memories. The claimed advantage is predicated on the idea that each processor solving more of the problem is better, either in programming ease, communications overhead, or some other measure of cost. This advantage may go away again if small portions of the problems are the RIGHT thing for each processor to handle. Such an case might be some finite element analysis problem, in which it might be both easy to program each processor to simulate exactly one element, and there is not a lot of communication between different parts of the problem (e.g. if all the interaction is with the nearest neighbors of the finite element). (Of course, if it is too hard to write the program, then I lose, and if every element wants to talk to every other element in every discrete time unit, then I lose. I think it is actually easier to program lots and lots of processors than "just" several processors, and I think that most simulations have strong localality of communication properties.) Do not forget! We are not developing these machines in a vacuum. We have to look at the applications which may be run on these machines. Consider a 100 x 100 x 100 array with 30 variables (and increasing as our known of the natural sciences increases). I claim that what you really want is 100^3 processors each with only enough memory for the 30 variables that you need. I think that the problems that you are addressing are due to the fact that the natural granularity of the problem does not match the natural granularity of the machine you are using. If you are iteratively solving PDE's on a 100^3 matrix, then there is not that much communication between different parts of the matrix (there is some local communication), so you might want to put each element of the matrix in a different processor, where the processors are (at least logically, if not physically) arranged 3d grid network. (Handwaving cost argument: If adding a processor to every couple of thousand bits of memory increases the memory cost by only a few percent (including all the costs of power supplies, boards, air conditioners etc.), and furthermore, you can use an otherwise cheaper memory system because you don't need all the interleave hardware, and the memory does not have to be that fast, and you don't need caches between the processor(s) and the memory, then it might very well be the case that for essentially the cost of a large, (but relatively low cost per bit) memory you can have a supercomputer. Why put the cental processor(s) in?) I can barely fit a fluid dynamics code on a 32-node Hypercube because the storage requirements per CPU are fierce [a different example, not the 100^3x30 example]. Details? Jack Dennis had to revise the way he thought dataflow machines need to be built after two weeks here: he needs more memory and faster I/O. That is not quite how I interpreted the report of the RIACS study that he gave to his research group. He mostly seemed pleased that FORTRAN programmers could actually learn to program in an applicative language. Adding memory and faster I/O may be just as expensive as just adding more processors. (Of course, Jack thinks I am an extremist for believing that a million processors is not enough, so my interpretation of what he said is also subject to correction (e.g. I would not want to try to explain to him how I ever got the idea that he said or meant the things I am attributing to him. :-)) If there is any one thing multiprocessors allow us to do, it is add yet more memory. Hum? :-) If there is one thing that adding more memory does , it is increase the cost of the system, especially when you have to do more hacking to get the processors to talk to the memory (e.g. shared memory, interleaving...) > > What is the start up time for your vectors (i.e. how big does > > a vector have to be before the vector processing part wins over the > > scalar processing part.) I have just tested this recently on four different CRAY architectures. Short vector startup time is very good. I am aware that the Cray is good at short vectors (that's one of the reasons that the Cray so popular.) The Cray is one of the few vector machine architectures which is good at short vectors. My question had to do with how good Dr. Brook's computer is at vectors (he said that he was connecting several "Cray class" processors together, which is not the same thing as several Cray processors.) > > Typical vector processors are limited in their > > speed by lack of memory bandwidth (this is true for a single processor > > with high bandwidth memories (e.g. the CRAY uses a 16-way interleaved Our Cray has a much higher degree of interleave. The new C-2 will have 128-way. Which only reinforces the idea that vector processors are often limited by their bandwidth. I understand that the C-2 (Cray 2?) is running a faster clock (~ 4ns) and slower memory (>100ns) than the Cray 1 (12.5 (or 9) ns and 50 (or faster) ns respectively. This means that an interleave of something like 25 is the minimum that you can get away with without loss of performance (and just as the Cray 1 "has to have" an interleave of four to keep the processor busy on memory operations, there are a number of reasons for increasing the interleave far beyond the minimum. (e.g. the processor hitting the memory interleave, multiple processors with one memory, independent I/O processors.) I have also heard rumors to the effect that Cray has broken down and put multiport memory in. These high bandwidth memories are very expensive, and I think there is an argument for avoiding them. Note that this argument, by itself, is good for arguing for anything from a 10Kflop processor that the Connection Machine uses up to the 10MIPS processors that Brooks advocates, but that it becomes hard to justify a 1Gflop processor simply because of the high cost of the memory system. I have some specific questions for Dr. Brooks (which I suspect he has good answers for): In the discussion of the architecture which you advocate, we have been concentrating on the bandwidth considerations. I am now wondering about latency issues. What is the latency of your shared memory? (If you are running a 10MIPS processor, does that mean that a memory operation on shared memory can complete in time for the next memory operation to continue? Do you use pipelining to help deal with any such latency problems? If you do, how "full" and "deep" does the pipeline have to be to keep the processor busy. Is there local memory for each processor, and does it have lower latency than the global memory?-- bradley@think.uucp (i.e. {decvax!cca,ihnp4!mit-eddie}!think!bradley) bradley@THINK.ARPA