Yup: Eugen Leitl also sent a pointer to this the other day. Very interesting.

I haven't had a chance to read the main article yet, but I was struck by the line:

>  • To maximize programmer productivity, future programming
> models must be more human-centric than the conventional focus
> on hardware or applications.

I have been hammering away at this issue for a very long time. The programming tools used to build software in general, and parallel software in particular, are nothing short of atrocious. The reason, I think, is that the people who use such tools are not necessarily the best judges of what the tools should be like.

I know that sounds crazy, but I think it does make sense if you take a larger view: after all, since when did a typewriter engineer have to be a great writer?

I am not making the suggestion simply *because* of the historical analogy, of course, but because the psychologist part of me sees things in the practical craft of software development that, frankly, look as though they were almost designed to make it difficult for the software engineer (or architect) to work quickly and safely.

For example, one thing that we know causes people to lose track of what they are doing is when they are forced to engage in large amounts of context switching -- so forcing the programmer to continually switch tasks to deal with finicky little details is a good way to guarantee trouble. Finding ways to prevent this context switching is not at all easy, but there are very few people whose job it is to sit down and think about how the context switching occurs, and find ways to fix it. These people need to be specialists in that problem - typewriter engineers, not authors.

Going back to the parallel computing issue, there are ways to conceive of parallel computing that make it easier to handle the problems that arise. One is the CSP/occam approach, although that is not perfect. Another is the one that I am working on, which is less efficient but may end up being more secure.

I have been trying to interest various people in taking the programmer psychology problem seriously for many years, but there seems to be a bit of a turf-war or machismo problem at work here. Software engineers maybe think that "psychology" is such a feeble-minded science that it could hardly have anything to teach people engaged in a real engineering discipline. Something, at any rate, makes them decide that it should get the lowest conceivable priority. I honestly think that software engineers are personally insulted by the idea that anyone except themselves should know how to write software tools.

Interesting.


Richard Loosemore


David Hart wrote:
Hi All,

A recent paper which contains many topics worthy of discussion here, and which integrates knowledge from semiconductor design, scientific computing, machine learning, embedded systems, and others:


      http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.pdf

Accompanying wiki: http://view.eecs.berkeley.edu/wiki/ <http://view.eecs.berkeley.edu/wiki/Main_Page>

ABSTRACT & EXCERPTS (http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.html)

The recent switch to parallel microprocessors is a milestone in the history of computing. Industry has laid out a roadmap for multicore designs that preserves the programming paradigm of the past via binary compatibility and cache coherence. Conventional wisdom is now to double the number of cores on a chip with each silicon generation.

A multidisciplinary group of Berkeley researchers met nearly two years to discuss this change. Our view is that this evolutionary approach to parallel hardware and software may work from 2 or 8 processor systems, but is likely to face diminishing returns as 16 and 32 processor systems are realized, just as returns fell with greater instruction-level parallelism.

We believe that much can be learned by examining the success of parallelism at the extremes of the computing spectrum, namely embedded computing and high performance computing. This led us to frame the parallel landscape with seven questions, and to recommend the following: • The overarching goal should be to make it easy to write programs that execute efficiently on highly parallel computing systems • The target should be 1000s of cores per chip, as these chips are built from processing elements that are the most efficient in MIPS (Million Instructions per Second) per watt, MIPS per area of silicon, and MIPS per development dollar. • Instead of traditional benchmarks, use 13 "Dwarfs" to design and evaluate parallel programming models and architectures. (A dwarf is an algorithmic method that captures a pattern of computation and communication.) • "Autotuners" should play a larger role than conventional compilers in translating parallel programs. • To maximize programmer productivity, future programming models must be more human-centric than the conventional focus on hardware or applications. • To be successful, programming models should be independent of the number of processors. • To maximize application efficiency, programming models should support a wide range of data types and successful models of parallelism: task-level parallelism, word-level parallelism, and bit-level parallelism. • Architects should not include features that significantly affect performance or energy if programmers cannot accurately measure their impact via performance counters and energy counters. • Traditional operating systems will be deconstructed and operating system functionality will be orchestrated using libraries and virtual machines. • To explore the design space rapidly, use system emulators based on Field Programmable Gate Arrays (FPGAs) that are highly scalable and low cost.

Since real world applications are naturally parallel and hardware is naturally parallel, what we need is a programming model, system software, and a supporting architecture that are naturally parallel. Researchers have the rare opportunity to re-invent these cornerstones of computing, provided they simplify the efficient programming of highly parallel systems.

-----

David

------------------------------------------------------------------------
This list is sponsored by AGIRI: http://www.agiri.org/email
To unsubscribe or change your options, please go to:
http://v2.listbox.com/member/?list_id=303

-----
This list is sponsored by AGIRI: http://www.agiri.org/email
To unsubscribe or change your options, please go to:
http://v2.listbox.com/member/?list_id=303

Reply via email to