Forklight: A control-synchronous parallel programming language
ForkLight is an imperative, task-parallel programming language for massively parallel shared memory machines. It is based on ANSI C, follows the SPMD model of parallel program execution, provides a sequentially consistent shared memory, and supports dynamically nested parallelism. While no assumptions are made on uniformity of memory access time or instruction-level synchronicity of the underlying hardware, ForkLight offers a simple but powerful mechanism for coordination of parallel processes in the tradition and notation of PRAM algorithms: Beyond its asynchronous default execution mode, ForkLight offers a mode for control-synchronous execution that relates the program's block structure to parallel control flow.
We give a scheme for compiling ForkLight to C with calls to a very small set of basic shared memory access operations like atomic fetch&add. This yields portability across parallel architectures and exploits the local optimizations of their native C compilers. Our implementation is publically available; performance results are reported. We also discuss translation to OpenMP.
KeywordsShared Memory Current Group Asynchronous Mode Memory Access Time Parallel Random Access Machine
Unable to display preview. Download preview PDF.
- 2.R. Alverson, D. Callahan, D. Cummings, B. Koblenz, A. Porterfield, B. Smith. The Tera Computer System. Proc. 4th ACM Int. Conf. on Supercomputing, pp. 1–6, 1990.Google Scholar
- 4.E. D. Brooks III, B. C. Gorda, K. H. Warren. The Parallel C Preprocessor. Scientific Programming, 1(1):79–89, 1992.Google Scholar
- 6.D. Callahan, B. Smith. A Future-based Parallel Language for a General-Purpose Highly-parallel Computer. Tera Computer Company, http://www.tera.com, 1990.Google Scholar
- 7.W. W. Carlson, J. M. Draper. Distributed Data Access in AC. In Proc. ACM SIGPLAN Symp. on Principles and Practices of Parallel Programming, pages 39–47. ACM Press, 1995.Google Scholar
- 8.M. I. Cole. Algorithmic Skeletons: Structured Management of Parallel Computation. Pitman and MIT Press, 1989.Google Scholar
- 9.R. Cole, O. Zajicek. The APRAM: Incorporating Asynchrony into the PRAM model. Proc. 1st Ann. ACM Symp. on Par. Algorithms and Architectures, pp. 169–178, 1989.Google Scholar
- 11.D. E. Culler, A. Dusseau, S. C. Goldstein, A. Krishnamurthy, S. Lumetta, T. von Eicken, K. Yelick. Parallel Programming in Split-C. Proc. Supercomputing'93, Nov. 1993.Google Scholar
- 13.P. B. Gibbons. A More Practical PRAM model. In Proc. 1st Annual ACM Symposium on Parallel Algorithms and Architectures, pages 158–168, 1989.Google Scholar
- 15.C. W. Keßler, H. Seidl. The Fork95 Parallel Programming Language: Design, Implementation, Application. Int. Journal of Parallel Programming, 25(1):17–50, Feb. 1997.Google Scholar
- 16.C. W. Keßler, H. Seidl. ForkLight: A Control-Synchronous Parallel Programming Language. Tech. Report 98-13, Univ. Trier, FB IV-Informatik, 54286 Trier, Germany, 1998.Google Scholar
- 17.C. E. Leiserson. Programming Irregular Parallel Applications in Cilk. Proc. IRREGULAR'97, pp. 61–71. Springer LNCS 1253, 1997.Google Scholar
- 18.D. Lenoski, J. Laudon, K. Gharachorloo, W.-D. Weber, A. Gupta, J. Hennesy, M. Horowitz, M. S. Lam. The Stanford DASH multiprocessor. IEEE Computer, 25(3):63–79, 1992.Google Scholar
- 19.C. León, F. Sande, C. Rodríguez, F. García. A PRAM Oriented Language. EUROMICRO Wksh. on Par. and Distr. Processing, pp. 182–191. IEEE CS Press, 1995.Google Scholar
- 20.OpenMP ARB. OpenMP White Paper, http://www.openmp.org/, 1997.Google Scholar
- 21.M. Philippsen, W. F. Tichy. Compiling for Massively Parallel Machines. In Code Generatin—Concepts, Tools, Techniques, pp. 92–111. Springer Workshops in Computing, 1991.Google Scholar
- 22.J. M. Wilson. Operating System Data Structures for Shared-Memory MIMD Machines with Fetch-and-Add. PhD thesis, New York University, 1988.Google Scholar