Talk:The Landscape of Parallel Computing Research: A View From Berkeley
I liked the whitepaper posted on the main page. Looking fwd to keeping myself abreast with latest developments in the field of parallel computing.
I currently don't work on parallel computing -but do work v close to the hardware.
(removed SPAM link)
I too enjoyed the whitepaper about parallel computing. It highlights many of the issues and difficulties faced in parallel computing today.
Is it possible that the lack of progress in developing parallel programming languages because language is intrinsically the wrong paradigm? Like trying to describe Beethoven's 5th symphony using engineering blueprints. Languages are inherently sequential, with one word following another, with one sentence following another. If languages were the appropriate model, why would events that occur concurrently be separated by potentially thousands and thousands of lines? I believe it is because language does not correctly model the behavior we're trying to affect.
May I suggest that we replace the "language" model with a new model for expressing parallel programs, something that captures both the general context of multiple cores and the sequence of actions taken by individual cores. And not something abstract and mathematical but something simple and visceral that we can grasp right away. We need to save our brains for the complex interaction of the cores and not waste our time matching curley braces and checking for semicolons at the ends of statements.
I believe that flocks of birds or schools of fish are natural examples that could be used to describe how multiple cores would cooperate to achieve a common goal. Assuming systems with thousands of cores, each core would have basic instincts (in ROM) and would be programmable to accept new behaviors.
The basic instincts could be similar to the following:
- Hatch (load a new program)
- Look for food (wait for selected event)
- Eat the food (consume the event and process it accordingly)
- Feed another bird (pass a message)
- Sing for a bird (announce an event or condition)
- Respond to singing (respond to another bird)
- Join with another bird (consolidate data or events)
- Hatch a baby (spawn a new instance of the bird)
- Log history & performance
- Return to Egg
These basic instincts would provide the interaction framework for the birds. Programmers would do most of their work configuring the birds to cooperate to achieve their common goal, similar to programmers setting the properties of Javabeans. Only when the bird actually ate something and needed to process it would a programmer actually do what we commonly think of programming today.
The Hatch a Baby instinct and the Return to Egg instinct are perhaps the most interesting.
- When a bird has eaten enough (programmer defined), it hatches a baby. That means that the bird would find an egg (available core) and duplicates itself into that core. This behavior would allow the system to tune itself automatically for the currently experienced conditions.
- When a bird is hungry for too long (also programmer defined), the bird would Return to Egg (that being more politically correct than dying). That egg then becomes available for other birds to hatch. Like automatic garbage collection.
These instincts mean a programmer doesn't need to know exactly how many cores to allocate for his program - the flock will autotune the running program to meet current requirements. If the person is a really fast typist, the keystroke eater birds will have a lot of babies. If there are a lot of Santa Claus counter birds, most of them will return to egg (until Dec 24th).
One could even introduce "genetic mutations" into the code of the babies and then let evolution take its course - efficient mutations eat more and reproduce more. Inefficient mutations Return to Egg, efficient mutations replace the inefficient versions. Over time, the system would perform better and beter.
I am convinced that as long as we remain brainlocked on programming languages and writing lines of code, we will continue to write parallel programs slowly and with a great deal of effort. Using new models, such as flocks of birds, could make developing many core systems much faster and easier.
Let me know what you think
Nelson Chamberlain email@example.com
In response to Nelson's proposal, I'd be very interested in seeing any applications of the idea in order to assess its feasibility. Are any of the dwarfs amenable to the above formulation? If so would the implementation outperform a more direct approach? All in all, I like the spirit of the proposal but feel it introduces a level of indirection for which we might take a performance hit.
- Douglas Campbell
Technical assistance required
Greetings: I have not found a forum for Wiki technical matters. Who should I contact concerning image uploads and math functions?
Thanks, - Leonard G. 20:28, 18 February 2008 (PST)