Abstract
The programming of SIMD machines that strongly support data parallelism, such as the Connection Machine, 1 presents new challenges for language, compiler, and algorithm designers. We propose an array language that captures many of the abstractions that are necessary for the effective programming of such machines, thereby liberating the user from having to specify low-level details. Consequently, this new language, ALP, allows for efficient compilation using state-of-the-art techniques, achieving hand-code quality. We demonstrate the effectiveness of our approach by two examples which show that despite being an array language, ALP does not restrict expressiveness to rigidly regular computational structures.
Similar content being viewed by others
References
Aho, A.V., Sethi, R., and Ullman, J.D. 1986. Compilers-Principles, Techniques, and Tools. Addison-Wesley, Reading, Mass.
Babb II, R.G., ed. 1988. Programming Parallel Processors. Addison-Wesley, Reading, Mass.
Bertsekas, D.P., and Tsitsiklis, J.N. 1989. Parallel and Distributed Computation. Prentice-Hall, Englewood Cliffs, N.J.
Blelloch, G.E. 1989. Scans as primitive parallel operations. IEEE Trans. Comps., C-38, 11 (Nov.), 1526–1539.
Callahan, D., and Kennedy, K. 1988. Compiling programs for distributed-memory multiprocessors. The J. Supercomputing, 2, 2 (Oct.), 151–169.
Dietz, H., and Klappholz, D. 1985. Refined C: A sequential language for parallel programming. In Internat. Conf. on Parallel Processing (Aug.)
Gehani, N.H., and Roome, W.D. 1986. Concurrent C. Software Practice and Experience, 16, 9 (Sept.), 821–844.
Hillis, W.D. 1985. The Connection Machine, MIT Press, Cambridge, Mass.
Iverson, K. 1962. A Programming Language. John Wiley, N.Y.
Klappholz, D., Kallis, A., and Kong, X. 1989. Refined C: An update. In Second Workshop on Languages and Compilers for Parallel Processing (Aug.).
Koelbel, C., Mehrotra, P., and Van Rosendale, J. 1990. Supporting shared data structures on distributed memory architectures. In Second ACM SIGPLAN Symp. on Principles and Practice of Parallel Programming (Mar.), pp. 177–186.
Ladner, R.E., and Fischer, M.J. 1980. Parallel prefix computation. JACM, 27, 4 (Oct.), 831–838.
Lindenmayer, A. 1968. Mathematical models for cellular interaction in development, parts I and II. J. Theoretical Biology, 18: 280–315.
Metcalf, M., and Reid, J. 1987. Fortran 8X Explained. Oxford Science Pub.
Pinter, R.Y., and Pinter, S.S. 1989. Efficient breadth-first expansion on the Connection Machine, or: Parallel processing of L-systems. Tech. rept. YALEU/DCS/TR-719, Dept. of Comp. Sci., Yale Univ. (July).
Prusinkiewicz, P.W. 1986. Graphical applications of L-systems. In Graphics Interface '86–Vision Interface '86 (May), pp. 247–253.
Sabot, G.W. 1988a. Paralation Lisp Reference Manual. Tech. rept. PL87-11, Thinking Machines Corp.
Sabot, G.W. 1988b. The Paralation Model: Architecture Independent Parallel Programming. MIT Press, Cambridge, Mass.
Steele, G.L. 1984. Common LISP: The Language. Digital Press.
Thinking Machines. 1987. Connection Machine Model CM-2 Technical Summary. Tech rept. HA87-4, Thinking Machines Corp.
Author information
Authors and Affiliations
Additional information
Work supported in part by ONR grant number N00014-89-J-1906 while on sabbatical leave at the Department of Computer Science, Yale University.
Work supported in part by NSF grant number DCR-8405478 while on sabbatical leave at the Department of Computer Science, Yale University.
Rights and permissions
About this article
Cite this article
Ortiz, L.F., Pinter, R.Y. & Pinter, S.S. An array language for data parallelism: Definition, compilation, and applications. J Supercomput 5, 7–29 (1991). https://doi.org/10.1007/BF00155855
Issue Date:
DOI: https://doi.org/10.1007/BF00155855