Article

Parallel Programming Languages

Authors:
To read the full-text of this research, you can request a copy directly from the author.

Abstract

this article always refers to the logical processors in the underlying parallel execution model of the language, and not to hardware processors). A more decoupled data model is provided by the distributed-memory model in which each processor has its own address space of memory locations inaccessible to other processors. The choice of the data model determines how processors communicate with each other --- in a shared-memory model, they communicate by reading and writing shared locations, but in a distributed-memory model, they communicate by sending and receiving messages.

No full-text available

Request Full-text Paper PDF

To read the full-text of this research,
you can request a copy directly from the author.

... They will be able to analyze and measure performance in different parallel architectures and tune the code for better performance. Classification of programming languages according to their data and control models can be found in [6]. During the learning processes it is desirable to provide opportunities to students to do parallel programming exercises in different parallel programming models as much as possible. ...
Conference Paper
Knowledge of parallel programming is an essential requirement in multicore era. To meet this requirement, teaching parallel programming is important at university level. Further, students should have an exposure to different parallel architectures and programming models as well. In order to achieve this objective, it is appropriate to use an integrated system having different parallel architectures and supporting programming languages. Though it is difficult to find a system as stated above, Multi Core Students Experimental Processor (MCSEP) designed on the base of Students Experimental Processor provides an opportunity to develop such system. The MCSEP can be configured to one of the five architectures: SISD, SIMD, MIMD, Multiple-SIMD, and Multiple-MIMD. Each architecture can further be configured to one of six Instruction Set Architectures: Memory-Memory, Accumulator, Extended Accumulator, Stack, Register Memory, and Load Store. As there are no programming tools for the MCSEP, a compiler and a simplified programming language, SEPCom has been developed for using all the features of the multicore processor MCSEP. The SEPCom is a Java like programming language with parallel programming features. The test results show that SEPCom performs well in all architectures available in the MCSEP. Therefore SEPCom can be used for writing parallel programs for different parallel architectures. Consequently, students can develop appropriate programs to do their experiments, and moreover to analyze and measure performances in different parallel architectures. Further, students can also use it as a case study for learning compiler design.
Conference Paper
Knowledge of parallel programming is an essential requirement in multicore era. To meet this requirement, teaching parallel programming is important at university level. Further, students should have an exposure to different parallel architectures and programming models as well. In order to achieve this objective, it is appropriate to use an integrated system having different parallel architectures and supporting programming languages. Though it is difficult to find a system as stated above, Multi Core Students Experimental Processor (MCSEP) designed on the base of Students Experimental Processor provides an opportunity to develop such system. The MCSEP can be configured to one of the five architectures: SISD, SIMD, MIMD, Multiple-SIMD, and Multiple-MIMD. Each architecture can further be configured to one of six Instruction Set Architectures: Memory-Memory, Accumulator, Extended Accumulator, Stack, Register Memory, and Load Store. As there are no programming tools for the MCSEP, a compiler and a simplified programming language, SEPCom has been developed for using all the features of the multicore processor MCSEP. The SEPCom is a Java like programming language with parallel programming features. The test results show that SEPCom performs well in all architectures available in the MCSEP. Therefore SEPCom can be used for writing parallel programs for different parallel architectures. Consequently, students can develop appropriate programs to do their experiments, and moreover to analyze and measure performances in different parallel architectures. Further, students can also use it as a case study for learning compiler design.
Full-text available
Article
We describe a new approach to programming distributed-memory computers. Rather than having each node in the system explicitly programmed, we derive an efficient message-passing program from a sequential shared-memory program annotated with directions on how elements of shared arrays are distributed to processors. This article describes one possible input language for describing distributions and then details the compilation process and the optimization necessary to generate an efficient program.
Full-text available
Article
It is difficult to achieve elegance, efficiency, and parallelism simultaneously in functional programs that manipulate large data structures. We demonstrate this through careful analysis of program examples using three common functional data-structuring approaches-lists using Cons, arrays using Update (both fine-grained operators), and arrays using make-array (a “bulk” operator). We then present I-structure as an alternative and show elegant, efficient, and parallel solutions for the program examples in Id, a language with I-structures. The parallelism in Id is made precise by means of an operational semantics for Id as a parallel reduction system. I-structures make the language nonfunctional, but do not lose determinacy. Finally, we show that even in the context of purely functional languages, I-structures are invaluable for implementing functional data abstractions.
Full-text available
Book
Occam is a programming language designed for parallel computers, notably the transputer. The principal author of this manual is Steven Ericsson-Zenith, David May provided oversight and direction, and David Shepherd provided documentation of the standard libraries, Appendix J onward. All were members of the Transputer Architecture Group, under David May, at INMOS, Ltd.
Full-text available
Article
Method Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 9.4.1 Inheritance and Overriding . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 9.4.2 Overloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 9.4.3 Examples of Abstract Method Declarations . . . . . . . . . . . . . . . 190 9.4.3.1 Example: Overriding . . . . . . . . . . . . . . . . . . . . . . . . 190 9.4.3.2 Example: Overloading . . . . . . . . . . . . . . . . . . . . . . . 191 10 Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 10.1 Array Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 10.2 Array Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii 10.3 Array Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 10.4 Array Access...
Article
This paper suggests that input and output are basic primitives of programming and that parallel composition of communicating sequential processes is a fundamental program structuring method. When combined with a development of Dijkstra's guarded command, these concepts are surprisingly versatile. Their use is illustrated by sample solutions of a variety of a familiar programming exercises.
Article
This report is the PVM version 2.3 users' guide. It contains an overview of PVM and how it is installed and used. Example programs in C and Fortran are included. PVM stands for Parallel Virtual Machine. It is a software package that allows the utilization of a heterogeneous network of parallel and serial computers as a single computational resource. PVM consists of two parts: a daemon process that any user can install on a machine, and a user library that contains routines for initiating process on other machines, for communicating between processes, and synchronizing process. 1 refs., 3 figs., 3 tabs.
Article
In the context of sequential computers, it is common practice to exploit temporal locality of reference through devices such as caches and virtual memory. In the context of multiprocessors, we believe that it is equally important to exploit spatial locality of reference. We are developing a system which, given a sequential program and its domain decomposition, performs process decomposition so as to enhance spatial locality of reference. We describe an application of this method - generating code from shared-memory programs for the (distributed memory) Intel iPSC/2.
Article
The CDC STAR-100 brings a new concept in computing to LLL. The STAR is a string(vector) - oriented machine that is most efficient when it performs the same operations on sequentially stored operands. This approach to computer design opens up new areas of problem-solving techniques. Some algorithms that are long and cumbersome on other machines can be easily and efficiently programmed on the STAR computer. The vector extensions described in this paper represent an attempt to expand LRLTRAN (a dialect of FORTRAN) into a useful computer language for the STAR. The additions will enable an LRLTRAN-language compiler to produce vector code and hence allow the programmer to access, via LRLTRAN, the powerful STAR hardware instructions.
Article
An abstract is not available.
Article
This paper provides a basic description of a FORTRAN system for the ILLIAC IV. In this context “FORTRAN system” means exactly what one would expect — a user familiar with a different system will find no major surprises when he uses ILLIAC FORTRAN. The language is the same — a dialect of ANSI standard FORTRAN. The processors are the same — a compiler which generates relocatable binary files from FORTRAN source text, a link editor which collects and joins separately compiled program pieces into a single module, a loader which loads and relocates a single module into ILLIAC memory, a library of functions, and an I/O subsystem which supports formatted and unformatted FORTRAN I/O.
Article
The introduction of vector processors and multiprocessors has caused the most dramatic changes in Fortran and its dialects. The emerging generation of supercomputers utilizes both vector processing and multiprocessing. The challenge is to provide language constructs and software tools that will allow the programmer to easily exploit the capabilities of the machine. This paper outlines the development of vector and multiprocessor language constructs in Fortran. Significant architectures, their languages, and optimizers are described. The paper concludes with a description of Cedar Fortran, the language for the Cedar Multiprocessor under development at the University of Illinois, Urbana-Champaign. Cedar is a hierarchical, shared-memory, vector multiprocessor. As such, its language, Cedar Fortran, contains many of the language features that are described for vector processors and multiprocessors.
Article
The success of the von Neumann model of sequential computation is attributable to the fact that it is an efficient bridge between software and hardware: high-level languages can be efficiently compiled on to this model; yet it can be effeciently implemented in hardware. The author argues that an analogous bridge between software and hardware in required for parallel computation if that is to become as widely used. This article introduces the bulk-synchronous parallel (BSP) model as a candidate for this role, and gives results quantifying its efficiency both in implementing high-level language features and algorithms, as well as in being implemented in hardware
Article
Multilisp is a version of the Lisp dialect Scheme extended with constructs for parallel execution. Like Scheme, Multilisp is oriented toward symbolic computation. Unlike some parallel programming languages, Multilisp incorporates constructs for causing side effects and for explicitly introducing parallelism. The potential complexity of dealing with side effects in a parallel context is mitigated by the nature of the parallelism constructs and by support for abstract data types: a recommended Multilisp programming style is presented which, if followed, should lead to highly parallel, easily understandable programs. Multilisp is being implemented on the 32-processor Concert multiprocessor; however, it is ultimately intended for use on larger multiprocessors. The current implementation, called Concert Multilisp , is complete enough to run the Multilisp compiler itself and has been run on Concert prototypes including up to eight processors. Concert Multilisp uses novel techniques for task scheduling and garbage collection. The task scheduler helps control excessive resource utilization by means of an unfair scheduling policy; the garbage collector uses a multiprocessor algorithm based on the incremental garbage collector of Baker.
Article
High Performance Fortran (HPF) is evaluated by rewriting sequential model programs for Householder reduction, simulated annealing, and grid relaxation. The author concludes that HPF has severe conceptual and practical limitations.
Article
Typescript (photocopy). Thesis (Ph. D.)--Colorado State University, 1989. Includes bibliographical references (leaves [129]-134).
Article
We describe Charm++, an object oriented portable parallel programming language based on C++. Its design philosophy, implementation, sample applications and their performance on various parallel machines are described. Charm++ is an explicitly parallel language consisting of C++ with a few extensions. It provides a clear separation between sequential and parallel objects. The execution model of Charm++ is message driven, thus helping one write programs that are latencytolerant. The language supports multiple inheritance, dynamic binding, overloading, strong typing, and reuse for parallel objects. Charm++ provides specific modes for sharing information between parallel objects. Extensive dynamic load balancing strategies are provided. It is based on the Charm parallel programming system, and its runtime system implementation reuses most of the runtime system for Charm. 1 Introduction In the last decade, parallel processing has emerged as a powerful new technology. Many large scale comme...
Article
The Virtual Programming Laboratory (VPL) is a Web-based virtual programming environment built based on a client-server architecture. The system can be accessed on any platform (Unix, PC, or Mac) using a standard Java-enabled browser. Software delivery over the Web imposes a novel set of constraints on design. We outline the tradeoffs in this design space, motivate the choices necessary to deliver an application, and detail the lessons learned in the process. We discuss the role of Java and other Web technologies in the realization of the design. VPL facilitates the development and execution of parallel programs. The initial prototype supports high-level parallel programming based on Fortran 90 and High Performance Fortran (HPF), as well as explicit low-level programming with the MPI message-passing interface. Supplementary Java-based platform-independent tools for data and performance visualization are an integral part of the VPL. Pablo SDDF trace files generated by the Pablo performan...
Concurrent Prolog: collected p apers
  • K Ueda
K. Ueda. Concurrent Prolog: collected p apers, v olume 1, chapter Guarded Horn Clauses. M.I.T. Press, 1987.
Concurrent Prolog: collected papers, v olume 1, chapter PAR-LOG: parallel programming in logic
  • K Clark
  • S Gregory
K. Clark and S. Gregory. Concurrent Prolog: collected papers, v olume 1, chapter PAR-LOG: parallel programming in logic. M.I.T. Press, 1987.
  • W Gropp
  • E Lusk
  • A Skjellum
W.Gropp, E.Lusk, and A. Skjellum. Using MPI. M.I.T. Press, 1994.
OpenMP: A proposed industry standard API for shared memory programming
  • Openmp Organization
OpenMP Organization. OpenMP: A proposed industry standard API for shared memory programming. available from http://www.openmp.org.
Concurrent Proog: collected papers, v olume 1, chapter A subset of Concurrent Prolog and its interpreter
  • E Shapiro
E. Shapiro. Concurrent Proog: collected papers, v olume 1, chapter A subset of Concurrent Prolog and its interpreter. M.I.T. Press, 1987.
Haskell: a purely functional language
  • J Peterson
J. Peterson et al. Haskell: a purely functional language. http://www.haskell.org, April 1997.
Burroughs Scientiic Processor Vector Fortran Speciication
  • Burroughs Corp
  • Penn Paoli
Burroughs Corp., Paoli, Penn. Burroughs Scientiic Processor Vector Fortran Speciication, 1 9 7 8.
The e ects of program restructuring, algorithm change and architectural choice on program performance
  • D Kuck
D. Kuck et al. The e ects of program restructuring, algorithm change and architectural choice on program performance. In International Conference o n P a r allel Programming, pages 129{138, 1984.
Towards e ciency and portability:programming with the BSP model
  • M Goudreau
  • K Lang
  • S Rao
  • T Suel
  • T Tsantilas
M. Goudreau, K. Lang, S. Rao, T. Suel, and T. Tsantilas. Towards e ciency and portability:programming with the BSP model. In Proceedings of the 8th annual ACM Symposium on Parallel Algorithms and Architectures, p a g e s 1{12, June 1996.
An introduction to VECTRAN and its use in scienti c computing
  • G Paul
  • M Wilson
G. Paul and M. Wilson. An introduction to VECTRAN and its use in scienti c computing. In Proceedings of the 1978 LASL Workshop on Vector and Parallel Processing, pages 176{204, 1978.
A user's guide to PVM: Parallel virtual machine
  • A Beguelin
  • G Geist
  • W Jiang
  • T Manchek
  • K Moore
  • V Sunderam
A.Beguelin, G. Geist, W. Jiang, T. Manchek, K. Moore, and V. Sunderam. A user's guide to PVM: Parallel virtual machine. Technical Report TM-11826, Oak Ridge National Laboratories, 1991.
Burroughs Scienti c Processor Vector Fortran Speci cation
  • Burroughs Corp
  • Penn Paoli
Burroughs Corp., Paoli, Penn. Burroughs Scienti c Processor Vector Fortran Speci cation, 1 9 7 8.
Occam 2 Reference manual
  • Inmos Ltd
Inmos Ltd. Occam 2 Reference manual. Prentice-Hall Inc, 1988.
MATLAB Programmer's Manual
  • Mathworks Inc
  • Natick
MathWorks Inc., Natick, MA 01760. MATLAB Programmer's Manual, 1996.
  • R Nikhil
  • K Pingali
  • Arvind Id Nouveau
R. Nikhil, K. Pingali, and Arvind. Id Nouveau. Technical Report CSG Memo 265, M.I.T. Laboratory for Computer Science, 1986.
  • Thinking Machines Corp
  • Cambridge
Thinking Machines Corp., Cambridge, MA 02139. Paris Reference Manual, 1991.