Historical Context and Evolution of Languages 139
In many of the languages discussed thus far, one of the key discrepancies
was related to language support for distributing data amongst the processing
elements where concurrently executing threads or processes would act on it.
Some parallel languages, such as Cilk (used in later chapters and described in
Appendix C), focus on parallelism from the task and control flow perspective
with less emphasis on data. It was the sole responsibility of the program-
mer to write the necessary code to, say, distribute portions of large matrices
amongst a set of processors. The choice of data decomposition and distri-
bution is important for performance reasons to exploit locality. To remove
the responsibility of