Abstract
Fork95 is an imperative parallel programming language intended to express algorithms for synchronous shared memory machines (PRAMs). It is based on ANSI C and offers additional constructs to hierarchically divide processor groups into subgroups and manage shared and private address subspaces. Fork95 makes the assembly-level synchronicity of the underlying hardware available to the programmer at the language level. Nevertheless, it supports locally asynchronous computation where desired by the programmer. We present a one pass compiler, fcc, which compiles Fork95 and C programs to the SB-PRAM machine. The SB-PRAM is a lock-step synchronous, massively parallel multiprocessor currently being built at Saarbrücken University, with a physically shared memory and uniform memory access time. We examine three important types of parallel computation frequently used for the parallel solution of real-world problems. While farming and parallel divide-and-conquer are directly supported by Fork95 language constructs, pipelining can be easily expressed using existing language features; an additional language construct for pipelining is not required.
Similar content being viewed by others
References
F. Abolhassan, J. Keller, and W. J. Paul, On Physical Realizations of the Theoretical PRAM Model. Technical Report 21/1990, Sonderforschungsbereich 124 VLSI Entwurfsmethoden und Parallelität, Universität Saarbrücken, 1990.
Jörg Keller, Wolfgang J. Paul, and Dieter Scheerer, Realization of PRAMs: Processor Design,Proc. WDAG94, 8th Int. Workshop on Distributed Algorithms, Springer Lecture Notes in Computer Science,857:17–27 (1994).
A. Geist, A. Beguelin, J. Dongarra, W. Jiang, R. Manchek, and V. Sunderam, PVM 3 User’s Guide and Reference Manual. Technical Report ORNL/TM-12187, Oak Ridge National Laboratory, Oak Ridge, Tennessee 37831 (September 1994).
R. Butler and E. L. Lusk, User’s Guide to the P4 Parallel Programming System. Technical Report ANL-92/17, Argonne National Laboratory (October 1992).
R. Butler and E. L. Lusk, Monitors, Messages, and Clusters: The P4 Parallel Programming System,Parallel Computing,20(4):547–564 (April 1994).
Michael Philippsen and Markus U. Mock, Data and Process Alignment in Modual-2*, inAutomatic Parallelization—New Approaches to Code Generation, Data Distribution and Performance Prediction, C. W. Keßler ed., Wiesbaden: Vieweg, pp. 177–191 (1994).
K.-C Li and H. Schwetman, Vector C: A Vector Processing Language.Journal of Parallel and Distributed Computing,2:132–169 (1985).
J. Rose and G. Steele, C*: An Extended C Language for Data Parallel Programming. Technical Report PL87-5, Thinking Machines Inc., Cambridge, Massachusetts (1987).
P. J. Hatcher and M. J. Quinn,Dataparallel Programming on MIMD Computers, MIT-Press (1991).
Judith Schlesinger and Maya Gokhale, DBC Reference Manual. Technical Report TR-92-068, Supercomputing Research Center (1992).
P. C. P. Bhatt, K. Diks, T. Hagerup, V.C. Prasad, S. Saxena, and T. Radzik, Improved Deterministic Parallel Integer Sorting,Information and Computation, Vol. 94 (1991).
M. I. Cole,Algorithmic Sceletons: Structured Management of Parallel Computation. Pitman and MIT Press (1989).
P. de la Torre and C. P. Kruskal, Towards a Single Model of Efficient Computation in Real Parallel Machines,Future Generation Computer Systems,8:395–408 (1992).
T. Heywood and S. Ranka, A Practical Hierarchical Model of Parallel Computation. Part I: The Model,Journal of Parallel and Distributed Computing,16:212–232 (1992).
T. Heywood and S. Ranka, A Practical Hierarchical Model of Parallel Computation. Part II: Binary Tree and FFT Algorithms,Journal of Parallel and Distributed Computing,16:233–249 (1992).
Y. Ben-Asher, D. G. Feitelson, and L. Rudolph, ParC—An Extension of C for Shared Memory Parallel Processing,Software—Practice and Experience,26(5):581–612 (May 1996).
Robert D. Blumofe, Christopher F. Joerg, Bradley C. Kuszmaul, Charles E. Leiserson, Keith H. Randall, and Yuli Zhou, Cilk: An Efficient Multi-Threaded Run-Time System, inProc. 5th ACM SIGPLAN Symp. on Principles and Practices of Parallel Programming, pp. 207–216 (1995).
T. Hagerup, A. Schmitt, and H. Seidl, FORK: A High-Level Language for PRAMs,Future Generation Computer Systems,8:379–393 (1992).
C. León, F. Sande, C. Rodríguez, and F. García, A PRAM Oriented Language,Euromicro Workshop on Parallel and Distributed Processing, pp. 182–191 (1995).
F. Abolhassan, R. Drefenstedt, J. Keller, W. J. Paul, and D. Scheerer, On the Physical Design of PRAMs,Computer Journal,36(8):756–762 (December 1993).
Jochen Röhrig, Implementierung der P4-Laufzeitbibliothek auf der SB-PRAM. Master Thesis, Universität Saarbrücken (1996).
T. Grün, T. Rauber, and J. Röhrig, The Programming Environment of the SB-PRAM,Proc. ISMM’95 (1995). http://www-wjp. cs.uni-sb.de /SBPRAM/.
Arno Formella, Jörg Keller, and Thomas Walle, HPP: A High-Performance PRAM,Proc. 2nd Int. Euro-Par Conference. Springer LNCS1124, 425–434 (1996).
ANSI American National Standard Institute, Inc., New York, American National Standards for Information Systems, Programming Language C. ANSI X3.159-1989 (1990).
Christoph W. Keßler and Helmut Seidl, Language Support for Synchronous Parallel Critical Sections. Technical Report 95-23, FB IV Informatik der Universität Trier (1995). http://www.informatik.uni-trier.de/~kessler/fork95.html.
A. Gottlieb, B. Lubachevsky, and L. Rudolph, Basic Techniques for the Efficient Coordination of Large Numbers of Cooperating Sequential Processes.ACM Transactions on Programming Languages and Systems,5(2), 164–189 (April 1983).
Henri Bal,Programming Distributed Systems, Prentice Hall (1990).
Christoph W. Keßler, Automatische Parallelisierung numerischer Programme durch Mustererkennung, Ph.D. Thesis, Universität Saarbrücken (1994).
Peter M. Kogge and Harold S. Stone, A Parallel Algorithm for the Efficient Solution of a General Class of Recurrence Equations,IEEE Transactions on Computers,C-22(8): 786–793 (August 1973).
Guy E. Blelloch, Scans as Primitive Parallel Operations,IEEE Transactions on Computers,38(11):1526–1538 (November 1989).
C. W. Keßler and J. L. Träff, A Library of Basic PRAM Algorithms and its Implementation in FORK, inProc. 8th Annual ACM Symposium on Parallel Algorithms and Architectures, ACM Press, New York, pp. 193–195 (June 24–26 1996).
Karin Käppner, Analysen zur Übersetzung von FORK, Teil 1. Master Thesis, Universität Saarbrücken, 1992.
Markus Welter, Analysen zur Übersetzung von FORK, Teil 2. Master Thesis, Universität Saarbrücken, 1992.
C. W. Fraser and D. R. Hanson, A Code Generation Interface for ANSI C,Software—Practice and Experience,21(9):963–988 (September 1991).
C. W. Fraser and D. R. Hanson, A Retargetable Compiler for ANSI C,SIGPLAN Notices,26(10):29–43 (October 1991).
C. W. Fraser and D. R. Hanson,A Retargetable C Compiler: Design and Implementation, Benjamin Cummings Publishing Company (1995).
G. Jones and M. Goldsmith,Programming in Occam 2, Prentice Hall (1988).
C. A. R. Hoare,Communicating Sequential Processes, Prentice Hall International Series in Computer Science (1995).
Constantine D. Polychronopoulos,Parallel Programming and Compilers, Kluwer Academic Publishers (1988).
C. W. Keßler, Parallel Fourier-Motzkin Elimination, inProc. 2nd Int. Euro-Par Conference, Springer LNCS 1124, pp. 66–71 (August 27–29, 1996).
Volker Strassen, Gaussian Elimination is Not Optimal,Numerische Mathematik,14(3):354–356 (1969).
Christoph W. Keßler and Helmut Seidl, Fork95 Language and Compiler for the SB-PRAM. inProc. 5th Workshop on Compilers for Parallel Computers, pp. 409–421. Dept. of Computer Architecture, University of Malaga, Spain. Report No. UMA-DAC-95/09 (June 28–30 1995). http://www.informatik.uni-trier.de/∼kessler/fork95.html.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Keßler, C.W., Seidl, H. The Fork95 parallel programming language: Design, implementation, application. Int J Parallel Prog 25, 17–50 (1997). https://doi.org/10.1007/BF02700045
Issue Date:
DOI: https://doi.org/10.1007/BF02700045