Toward a Parallel Implementation of J: Data Parallelism in Functional, Array-Oriented Languages with Function Rank

Abstract

The notion of function rank has important implications for the field of parallel computing. In particular, certain formalizations of function rank can be helpful for exploiting potential concurrency in the form of data parallelism, because function rank can allow the programmer to express safely, easily, and in an automatically data parallel fashion both the application of a function to subcollections of a regularly shaped multidimensional collection and the extension of a function to similar problems in higher dimensions. This paper illustrates this importance by discussing solutions using function rank to three parallel problems, each chosen to represent a different parallel design patterns. Addi- tionally, included are both a set of proposals for a parallel implementation of J, which is an array-oriented, functional programming language with function rank, as well as a prototype implementation of a parallel regular collections library using function rank in Scala. Perfor- mance results for solutions using the prototype Scala library (as well as C with OpenMP, for comparison) to each of the problems are also given, though this work is intended only as a proof of concept

    Similar works