Saturday, June 28, 2008

vanroy-mc-panel.pdf (application/pdf Object)

vanroy-mc-panel.pdf (application/pdf Object)

The challenge of programming
multi-core processors is real, but it is not a technical
challenge. It is a purely sociological challenge.
Technically, we have known since the 1980s how to
program multi-core processors (in the guise of sharedmemory
multiprocessors) and how to write programs for
them (in terms of parallel algorithms). There is a
simple, natural, and powerful approach for
programming these machines: dataflow programming.
Many languages and systems implement this approach
(see, e.g., Wikipedia for a long list). They are
descendants of the venerable Id, Id Nouveau, SISAL,
and other early dataflow languages. Google's wellpublicized
MapReduce is one of the most popular new
tools that takes advantage of dataflow ideas [1], but
these ideas are not new. In fact, they date from the
1970s [2]. A good exposition is given in chapter 4 of
[3]. The basic insight is that there exists a form of
concurrent programming, deterministic concurrency,
that has no race conditions, is as easy to program as
sequential programs, and can exploit parallel processors
as a bonus. Deterministic concurrency is enjoying a
renaissance thanks to clusters and multi-core processors.

No comments: