International Journal of Parallel Programming

, Volume 25, Issue 1, pp 17–50 | Cite as

The Fork95 parallel programming language: Design, implementation, application

  • Christoph W. Keßler
  • Helmut Seidl


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.

Key Words

Fork95 parallel programming language synchronous program execution PRAM parallel programming paradigms 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    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.Google Scholar
  2. 2.
    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).Google Scholar
  3. 3.
    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).Google Scholar
  4. 4.
    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).Google Scholar
  5. 5.
    R. Butler and E. L. Lusk, Monitors, Messages, and Clusters: The P4 Parallel Programming System,Parallel Computing,20(4):547–564 (April 1994).zbMATHCrossRefGoogle Scholar
  6. 6.
    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).Google Scholar
  7. 7.
    K.-C Li and H. Schwetman, Vector C: A Vector Processing Language.Journal of Parallel and Distributed Computing,2:132–169 (1985).CrossRefGoogle Scholar
  8. 8.
    J. Rose and G. Steele, C*: An Extended C Language for Data Parallel Programming. Technical Report PL87-5, Thinking Machines Inc., Cambridge, Massachusetts (1987).Google Scholar
  9. 9.
    P. J. Hatcher and M. J. Quinn,Dataparallel Programming on MIMD Computers, MIT-Press (1991).Google Scholar
  10. 10.
    Judith Schlesinger and Maya Gokhale, DBC Reference Manual. Technical Report TR-92-068, Supercomputing Research Center (1992).Google Scholar
  11. 11.
    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).Google Scholar
  12. 12.
    M. I. Cole,Algorithmic Sceletons: Structured Management of Parallel Computation. Pitman and MIT Press (1989).Google Scholar
  13. 13.
    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).CrossRefGoogle Scholar
  14. 14.
    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).zbMATHCrossRefMathSciNetGoogle Scholar
  15. 15.
    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).zbMATHCrossRefMathSciNetGoogle Scholar
  16. 16.
    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).CrossRefGoogle Scholar
  17. 17.
    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).Google Scholar
  18. 18.
    T. Hagerup, A. Schmitt, and H. Seidl, FORK: A High-Level Language for PRAMs,Future Generation Computer Systems,8:379–393 (1992).CrossRefGoogle Scholar
  19. 19.
    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).Google Scholar
  20. 20.
    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).CrossRefGoogle Scholar
  21. 21.
    Jochen Röhrig, Implementierung der P4-Laufzeitbibliothek auf der SB-PRAM. Master Thesis, Universität Saarbrücken (1996).Google Scholar
  22. 22.
    T. Grün, T. Rauber, and J. Röhrig, The Programming Environment of the SB-PRAM,Proc. ISMM’95 (1995). http://www-wjp. /SBPRAM/.Google Scholar
  23. 23.
    Arno Formella, Jörg Keller, and Thomas Walle, HPP: A High-Performance PRAM,Proc. 2nd Int. Euro-Par Conference. Springer LNCS1124, 425–434 (1996).Google Scholar
  24. 24.
    ANSI American National Standard Institute, Inc., New York, American National Standards for Information Systems, Programming Language C. ANSI X3.159-1989 (1990).Google Scholar
  25. 25.
    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). Scholar
  26. 26.
    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).zbMATHCrossRefGoogle Scholar
  27. 27.
    Henri Bal,Programming Distributed Systems, Prentice Hall (1990).Google Scholar
  28. 28.
    Christoph W. Keßler, Automatische Parallelisierung numerischer Programme durch Mustererkennung, Ph.D. Thesis, Universität Saarbrücken (1994).Google Scholar
  29. 29.
    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).MathSciNetCrossRefGoogle Scholar
  30. 30.
    Guy E. Blelloch, Scans as Primitive Parallel Operations,IEEE Transactions on Computers,38(11):1526–1538 (November 1989).CrossRefGoogle Scholar
  31. 31.
    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).Google Scholar
  32. 32.
    Karin Käppner, Analysen zur Übersetzung von FORK, Teil 1. Master Thesis, Universität Saarbrücken, 1992.Google Scholar
  33. 33.
    Markus Welter, Analysen zur Übersetzung von FORK, Teil 2. Master Thesis, Universität Saarbrücken, 1992.Google Scholar
  34. 34.
    C. W. Fraser and D. R. Hanson, A Code Generation Interface for ANSI C,Software—Practice and Experience,21(9):963–988 (September 1991).CrossRefGoogle Scholar
  35. 35.
    C. W. Fraser and D. R. Hanson, A Retargetable Compiler for ANSI C,SIGPLAN Notices,26(10):29–43 (October 1991).CrossRefGoogle Scholar
  36. 36.
    C. W. Fraser and D. R. Hanson,A Retargetable C Compiler: Design and Implementation, Benjamin Cummings Publishing Company (1995).Google Scholar
  37. 37.
    G. Jones and M. Goldsmith,Programming in Occam 2, Prentice Hall (1988).Google Scholar
  38. 38.
    C. A. R. Hoare,Communicating Sequential Processes, Prentice Hall International Series in Computer Science (1995).Google Scholar
  39. 39.
    Constantine D. Polychronopoulos,Parallel Programming and Compilers, Kluwer Academic Publishers (1988).Google Scholar
  40. 40.
    C. W. Keßler, Parallel Fourier-Motzkin Elimination, inProc. 2nd Int. Euro-Par Conference, Springer LNCS 1124, pp. 66–71 (August 27–29, 1996).Google Scholar
  41. 41.
    Volker Strassen, Gaussian Elimination is Not Optimal,Numerische Mathematik,14(3):354–356 (1969).CrossRefMathSciNetGoogle Scholar
  42. 42.
    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).∼kessler/fork95.html.Google Scholar

Copyright information

© Plenum Publishing Corporation 1997

Authors and Affiliations

  • Christoph W. Keßler
    • 1
  • Helmut Seidl
    • 1
  1. 1.Fachbereich IV-InformatikUniversität TrierTrierGermany

Personalised recommendations