Programming
today’s multi-core platforms with 4-8 cores is too time-intensive for broad
utilization in the applications industry, and the results are unpredictable. It
is fairly routine that a dedicated and well-intentioned project focused on
porting an application to a multi-core platform may in fact result in performance
degradation. Thus, if the effort required for successful parallel
programming is not drastically reduced and the results made more predictable,
the high cost of parallel software development will choke the flow of
application innovation from the computing industry. This could, in turn, stall
the growth of the semiconductor industry. At the same time, isolated efforts in
re-architecting sequential software for many-core targets have demonstrated 10X
– 40X (or even greater) performance improvements relative to their original
sequential implementation. Thus, parallel programming offers software
development not only its greatest challenge, but also its greatest opportunity,
in many decades.
The Programming Concurrent Systems theme simultaneously addresses this challenge
and demonstrating the opportunity. The Theme researchers have converged on
three pivotal approaches that will likely create sweeping success in removing
this roadblock: (i) domain specific languages and application frameworks, (ii)
implicitly parallel programming approaches, and (iii) customized application
interfaces for heterogeneous platforms.

Domain-specific languages and application
frameworks allow domain experts to create innovative parallel applications
using common parallel problem solving algorithms and computational structures
crafted by parallel programming experts. The domain knowledge embedded in these
languages and frameworks can also enable automation of the complex process of
parallel application optimization and tuning that is painstakingly done by
human programmers today. Implicitly parallel programming systems allow programmers
to express parallel algorithms in ways that enhance software engineering
practices and to employ an informed compilation system to complete the parallel
code arrangements and tuning for improved portability and productivity.
Programmers no longer need to mangle code for threaded execution, a major
source of parallel programming cost. Customized parallel execution taps the
domain-knowledge and the program analysis information from both clusters above
and automates the use of flexible runtime software and reconfigurable hardware
to drastically improve the software productivity in heterogeneous platforms
while achieving execution efficiency and scalability goals.
Major collaborative research efforts are needed to develop these three approaches
into concrete methodologies, coherent systems, and popular tools. We work
closely with FCRP sponsors to ensure that these methodologies, systems, and
tools have major impact on the infrastructure, mobile, and sensor node
application segments. Furthermore, we will extend the current GSRC client
application focus to server software service functions and workloads.