In writing parallel programs, programmers expose parallelism and
optimize it to meet a particular performance goal on a single
platform under an assumed set of workload characteristics. In the
field, changing workload characteristics, new parallel platforms,
and deployments with different performance goals make the
programmer's development-time choices suboptimal. To address this
problem, this paper presents the Degree of Parallelism Executive
(DoPE), an API and run-time system that separates the concern of
exposing parallelism from that of optimizing it. Using the DoPE API,
the application developer expresses parallelism options. During
program execution, DoPE's run-time system uses this information to
dynamically optimize the parallelism options in response to the
facts on the ground. We easily port several emerging parallel
applications to DoPE's API and demonstrate the DoPE run-time
system's effectiveness in dynamically optimizing the parallelism for
a variety of performance goals.