-
Data parallelism is (an attempt at) a high-level language.
-
High-level languages have inherent advantages and disadvantages:
-
It's easier to concentrate on the high-level ideas.
-
This means you can write the program faster
-
This means you're more likely to get it right
-
The underlying system takes over the low-level details.
-
This means you can't micro-manage the execution
-
This means you can't always tell what will happen
1 |
Abstractions like data parallelism split the work between the programmer and the compiler.
|
2 |
Programmerıs task: Solve the problem in this model.
-
Concentrate on high-level structure and concepts
-
Aggregate operations on large data structures
-
Data in global arrays with mapping information
|
3 |
Compilerıs task: Map conceptual (massive) parallelism to physical (finite) machine.
-
Fill in the grungy details
-
Guided by user ³hints² like mapping information
-
Optimizing computation and communication
|