Implementing 2DT on a Multiprocessor

The implementation of a parallel functional language is discussed. 2DT-programs are composed of local SPMD-computations and global transformations of 2-dimensional data structures leading to a coarse grain compute-communicate scheme. The implementation is made up of virtual processes doing the local computations and abstract processors emulating several virtual processes and taking care of communication. Code and data structures which are common to virtual processes are shared and allocated to abstract processes in order to make context switches cheap. Code that would be executed redundantly by logical processes is converted to abstract code and executed only once. Aims of this effort are maximizing the amount of parallelism, keeping communication cheap and managing parallelism efficiently.