Results 1 -
4 of
4
Productive Parallel Programming: The PCN Approach
- Scientific Programming
, 1992
"... We describe the PCN programming system, focusing on those features designed to improve the productivity of scientists and engineers using parallel supercomputers. These features include a simple notation for the concise specification of concurrent algorithms, the ability to incorporate existing Fort ..."
Abstract
-
Cited by 39 (6 self)
- Add to MetaCart
We describe the PCN programming system, focusing on those features designed to improve the productivity of scientists and engineers using parallel supercomputers. These features include a simple notation for the concise specification of concurrent algorithms, the ability to incorporate existing Fortran and C code into parallel applications, facilities for reusing parallel program components, a portable toolkit that allows applications to be developed on a workstation or small parallel computer and run unchanged on supercomputers, and integrated debugging and performance analysis tools. We survey representative scientific applications and identify problem classes for which PCN has proved particularly useful. Keywords: PCN, program composition, parallel programming, reuse, templates. 1 Introduction After many years as academic curiosities, computers combining hundreds or thousands of powerful microprocessors have overtaken vector processors and become essential tools for scientists and...
Compositional Parallel Programming Languages
- ACM Transactions on Programming Languages and Systems
, 1996
"... this paper, we discuss alternative approaches to the realization of this principle, which holds that properties of program components should be preserved when those components are composed in parallel with other program components. We review two programming languages, Strand and Program Composition ..."
Abstract
-
Cited by 21 (3 self)
- Add to MetaCart
this paper, we discuss alternative approaches to the realization of this principle, which holds that properties of program components should be preserved when those components are composed in parallel with other program components. We review two programming languages, Strand and Program Composition Notation, that support compositionality via a small number of simple concepts, namely monotone operations on shared objects, a uniform addressing mechanism, and parallel composition. Both languages have been used extensively for large-scale application development, allowing us to provide an informed assessment of their strengths and weaknesses. We observe that while compositionality simplifies development of complex applications, the use of specialized languages hinders reuse of existing code and tools, and the specification of domain decomposition strategies. This suggests an alternative approach based on small extensions to existing sequential languages. We conclude the paper with a discussion of two languages that realize this strategy. Categories and Subject Descriptors: D.3.2 [Programming Languages]: Language Classifications ---Concurrent, distributed, and parallel languages; D.3.3 [Programming Languages]: Language Constructs and Features---Concurrent programming structures General Terms: Languages Additional Key Words and Phrases: Compositionality, Parallel Languages, Parallel Programming ACM Transactions on Programming Languages and Systems, Vol. 8, No. 1, January 1999. Compositional Parallel Programming Languages \Delta 113 1. INTRODUCTION Parallel programming is widely regarded as difficult: more difficult than sequential programming, and perhaps (at least this is our view) more difficult than it needs to be. In addition to the normal programming concerns, the para...
A Compiler Approach to Scalable Concurrent Program Design
- ACM TOPLAS
, 1992
"... The programmer's most powerful tool for controlling complexity in program design is abstraction. We seek to use abstraction in the design of concurrent programs, so as to separate design decisions concerned with decomposition, communication, synchronization, mapping, granularity, and load balancing. ..."
Abstract
-
Cited by 11 (7 self)
- Add to MetaCart
The programmer's most powerful tool for controlling complexity in program design is abstraction. We seek to use abstraction in the design of concurrent programs, so as to separate design decisions concerned with decomposition, communication, synchronization, mapping, granularity, and load balancing. This paper describes programming and compiler techniques intended to facilitate this design strategy. The programming techniques are based on a core programming notation with two important properties: the ability to separate concurrent programming concerns, and extensibility with reusable programmerdefined abstractions. The compiler techniques are based on a simple transformation system together with a set of compilation transformations and portable run-time support. The transformation system allows programmer-defined abstractions to be defined as source- to-source transformations that convert abstractions into the core notation. The same transformation system is used to apply compilation transformations that incrementally transform the core notation toward an abstract concurrent machine. This machine can be implemented on a variety of concurrent architectures using simple run-time support.
Strand and PCN: Two Generations of Compositional Programming Languages
, 1993
"... Two parallel languages and their associated programming systems are reviewed and evaluated. Both Strand and PCN are designed to facilitate parallel program development by providing an expressive high-level notation; by integrating tools for debugging, performance analysis, etc.; and by providing por ..."
Abstract
- Add to MetaCart
Two parallel languages and their associated programming systems are reviewed and evaluated. Both Strand and PCN are designed to facilitate parallel program development by providing an expressive high-level notation; by integrating tools for debugging, performance analysis, etc.; and by providing portability across different parallel computers. Both provide explicit parallel constructs and use singleassignment variables as an abstraction for communication and synchronization. They support a compositional approach to program design, in which programs composed from simpler components inherit the properties of these components. Strand, developed in 1988, is a first-generation system specialized for symbolic applications. PCN, developed in 1990, is a second-generation system that supports both symbolic and numeric computing. Both systems are available on a range of parallel computers, have been widely distributed, and are in use in many applications. This article summarizes their principal ...

