Toward a Toolchain for Pipeline Parallel Programming on CMPs [abstract] (PDF)
John Giacomoni, Tipp Moseley, Graham Price, Brian Bushnell, Manish Vachahrajani, and Dirk Grunwald
Proceedings of the 2007 Workshop on Software Tools for Multicore Systems (STMCS), March 2007.
Today's processors exploit the fine grain data parallelism that exists
in many applications via ILP design, vector processing, and SIMD
instructions. Thus, future gains must come from chip-multiprocessors,
which present developers with previously unimaginable computing
resources. Programmers can use these resources for coarse-grain
data-parallel computation or task parallelism. Given the extensive
research history in coarse-grain data parallelism, we argue that the
right approach is to invest research effort on task parallelism
because it is currently poorly supported in programming languages,
operating systems and performance analysis tools. Such an approach
encourages refactoring working sequential applications into
task-parallel, and in particular pipeline-parallel, applications.
Thus, we join the minority chorus that believes the best strategy for
developing parallel programs may be to evolve them from sequential
implementations.
There are challenges; future multi-core systems are likely to be
heterogeneous and consist of many types of cores. Programmers need
support in understanding and exploiting such systems. We believe that
the systems community needs to focus on building complete toolchains
that encompass all four stages of parallel program development for
task parallelism: identification, implementation, verification, and
runtime system support. This paper discusses this vision and our
efforts in developing such a toolchain.