Descripción del proyecto
We propose to radically extend the frontiers of two major themes in
computing, parallelism and dynamism, and develop a novel paradigm of
computing: dynamic-parallelism. To this end, we will follow two
lines of research. First, we will develop techniques for extracting
efficiency and high performance from parallel programs written in
high-level programming languages. Second, we will develop the
dynamic-parallelism model, where computations can respond to a wide
variety of dynamic changes to their data automatically and
efficiently, by developing novel abstractions (calculi), high-level
programming-language constructs, and compilation techniques. The
research will culminate in a language that extends the C programming
language with support for parallel and dynamic-parallel programming.
The proposal is motivated by urgent needs driven by the advent of
multicore chips, which is making parallelism mainstream, and the
increasing ubiquity of software, which requires applications to
operate on highly dynamic data. These advances demand parallel and
highly dynamic software, which remains too difficult and labor
intensive to develop. The urgency is further underlined by the
increasing data and problem sizes---online data grows
exponentially, doubling every few years---that require similarly
powerful advances in performance.
The proposal will achieve profound impact by dramatically simplifying
the development of high-performing dynamic and dynamic-parallel
software. As a result, programmer productivity and software quality
including correctness, reliability, performance, and resource (e.g.,
time and energy) consumption will improve significantly. The proposal
will not only open new research opportunities in parallel computing,
programming languages, and compilers, but also in other fields where
parallel and dynamic problems abound, e.g., algorithms, computational
biology, geometry, graphics, machine learning, and software systems.