Indexical parallel programming

Date

2018-06-26

Authors

Du, Weichang

Journal Title

Journal ISSN

Volume Title

Publisher

Abstract

Indexical programming means programming languages and/or computational models based on indexical logic and possible world semantics. Indexical languages can be considered as the result of enriching conventional languages by allowing constructs to vary according to an implicit context or index. Programs written in an indexical language define the way in which objects vary from context to context, using context switching or indexical operators to combine meanings of objects from different contexts. Based on indexical semantics, in indexical programs, context parallelism means that computations of objects at different contexts can be performed in parallel, and indexical communication means that parallel computation tasks at different contexts communicate with each other through indexical operators provided by the indexical language. The dissertation defines the indexical functional language mLucid--a multidimensional extension of the programming language Lucid proposed by Ashcroft and Wadge. The language enriches the functional language ISWIM by incorporating functional semantics with indexical semantics. The indexical semantics of mLucid is based on the context space consisting of points in an arbitrary n-dimensional integer space. The meanings of objects, called intensions, in mLucid are functions from these contexts to data values. The language provides five primitive indexical operators, origin, next, prev, fby and before to switch context along a designated dimension. The dimensionality of an intension in the indexical semantics of mLucid is defined as the set of dimensions that determines the range of the context space in which the tension varies. An abstract interpretation are defined that maps mLucid expressions to approximations of dimensionalities. Context parallelism and indexical communication in mLucid programs are defined by a semantics-based dependency relation between the values of variables at different contexts. In parallel programming, the context space of mLucid is divided into a time dimension and space dimensions. The time dimension can be used to specify time steps in synchronous computations, or to specify indices of data streams in asynchronous computations. The space dimensions can be used to specify process-to-processor mappings. The dissertation shows that mLucid supports several parallel programming models, including systolic programming, multidimensional dataflow programming, and data parallel programming.

Description

Keywords

Parallel programming (Computer science)

Citation