05.08.2014 Views

here - Stefan-Marr.de

here - Stefan-Marr.de

here - Stefan-Marr.de

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2.3. Concurrent vs. Parallel Programming: Definitions<br />

were mostly concerned with small-scale systems that used time shared execution.<br />

Following their argumentation, the term parallelism on the other hand<br />

comes from the supercomputing community, which was mostly concerned<br />

with large-scale systems and physically parallel execution of programs. However,<br />

for the purpose of their book, they conclu<strong>de</strong> the discussion by saying:<br />

“we will use the terms [concurrent and parallel] interchangeably to refer to logical<br />

concurrency”.<br />

Definitions of Sottile et al. Overall, the field distinguishes the two terms<br />

based on the un<strong>de</strong>rlying execution mo<strong>de</strong>l. A set of concrete <strong>de</strong>finitions is<br />

given by Sottile et al. [2010, p. 23-24]. They write: “We <strong>de</strong>fine a concurrent<br />

program as one in which multiple streams of instructions are active at the same<br />

time.” Later, they go on and write: “Our <strong>de</strong>finition of a parallel program is an<br />

instance of a concurrent program that executes in the presence of multiple hardware<br />

units that will guarantee that two or more instruction streams will make progress<br />

in a single unit of time.” While these <strong>de</strong>finitions are seldom spelled out precisely<br />

in literature, the <strong>de</strong>finitions of Sottile et al. seem to reflect the common<br />

consensus of what concurrency and parallelism mean. T<strong>here</strong>fore, parallel programs<br />

are consi<strong>de</strong>red to be a subset of concurrent programs. For instance,<br />

Sun Microsystems, Inc. [2008] uses very similar <strong>de</strong>finitions.<br />

Not all parallel programs are concurrent programs. The major issue of<br />

characterizing parallel programs as a subset of concurrent programs is the<br />

implication that all parallel programs are concurrent programs as well. Thus,<br />

all parallel programs can be mapped on a sequential execution. However,<br />

t<strong>here</strong> are useful algorithms such as the elimination stack proposed by Shavit<br />

and Touitou [1995b] that are not strictly linearizable [Herlihy and Wing, 1990].<br />

Which means, parallel programs can have executions that cannot be replicated<br />

by any concurrent program, i. e., they cannot be mapped on a sequential execution<br />

without losing semantics.<br />

Current <strong>de</strong>finitions do not add value to explain programming concepts. In<br />

addition to the conceptual problem of characterizing parallel programs as a<br />

subset of concurrent programs, the notion of a subset relation does not add<br />

explanatory value in practice, either.<br />

For example, Cilk’s fork/join with a work-stealing scheduler implementation<br />

[Blumofe et al., 1995] is <strong>de</strong>signed for parallel programming. The i<strong>de</strong>a of<br />

fork/join is to recursively divi<strong>de</strong> a task to enable parallel execution of sub-<br />

19

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!