Key Pages
Category: | Science and Technology |
Domain: | |
Keywords: |
Computer Science - software, parallel programming, concurrent programming, grid computing, nanoscale computing
|
Outlook: |
Parallel programming -- programming for hundreds or thousands of concurrent independent processes or 'threads' – may become increasingly important over the next decade as the result of developments in both hardware and software. Programming for small scale mobile and embedded devices may be an exception to this trend.
|
Summary Analysis: |
By 2015, parallel or concurrent programming may be the dominant mode of coding, rather than the niche technique it is today. A variety of new computing architectures will necessitate parallel programming:
This future capability is increasingly indistinguishable from what we call supercomputing today. In the future, even mobile devices will likely have access to high-performance supercomputing over broadband networks. To benefit from parallel hardware, the software must provide enough concurrent operations to use all the hardware. Today, the system software used on most contemporary supercomputers is a crude variant of UNIX with limited programs written in Fortran, C, and C++, augmented with a few language or library extensions for parallelism and with application libraries like the Titanium extensions to Java for higher performance computing. Even though some early software development tools exist, programming supercomputer software that supports massive parallelism requires special expertise to optimise performance at multiple levels below the operating system. Modern mainstream application programmers who are deeply knowledgeable about their application domains typically have little or no practical knowledge of using massive parallel processes to generate better results or user experiences. They usually employ high-level tools that mask the complexity of lower-level, massively parallel software and hardware processes. Indeed, application designers at large have not been educated in how to think about discretising computational tasks to take advantage of the improved computing machinery that is expected to be widely available starting around 2015. Designers of parallel computing applications will need to be capable of determining the utility and cost of a solution based on expert judgments of factors other than time taken -- for instance, on accuracy or trustworthiness. According to a recent National Academy of Sciences study, 'Determining the trade-off among these factors is a critical task. The calculation depends on many things -- the algorithms that are used, the hardware and software platforms, the software that realizes the application and that communicates the results to users. . . . The design of the algorithms, the computing platform, and the software environment governs performance and sometimes the feasibility of getting a solution'.
|
Implications: |
| |
Early Indicators: |
| |
What to Watch: |
| |
Parallels/Precedents: |
| |
Enablers/drivers: |
| |
Leaders: |
Institutions:
| |
Figures: | ||
Sources: |
|
At A Glance: | When: |
3-10 Years
| |
Where: |
Global
| ||
How Fast: |
Years
| ||
Likelihood: |
Medium
| ||
Impact: |
Medium-Low
| ||
Controversy: |
Low
|
Related Outlooks: |