Abstract
Parallel computing is going mainstream with the now ubiquitous multicore and cluster systems. Despite the availability of many parallel programming models, there is no one-size-fits-all solution. Many application experts are still desperately looking for a better solution to meet their needs.
We present a new parallel programming framework called MCFX to improve the productivity of shared memory parallel programming with a high-level parallel execution model. In MCFX, we introduce the concept of domain-specific parallel schedulers at application level. These schedulers are called executable containers. An executable object is a programming object associated with data and actions (processes). A MCFX executable container can concurrently execute the processes of the executable objects stored in the container. One can customize and instantiate many executable containers in a program. An important goal of project MCFX is to let the domain experts with basic knowledge of MCFX to design reusable parallel programming templates for their domains.
Currently we have a functional implementation of the MCFX kernel in C++, several practical examples and a small set of class templates. Our initial results show that parallel programs written with MCFX can achieve good scalable performance on multicore and SMP machines while maintaining sequential-like programmability and readability.
Similar content being viewed by others
References
Duran A, Gonzàlez M, Corbalán J (2005) Automatic thread distribution for nested parallelism in openmp. In: ICS ’05: Proceedings of the 19th Annual International Conference on Supercomputing, ACM, New York, pp. 121–130
Willhalm T, Popovici N (2008) Putting intel(r) threading building blocks to work. In: IWMSE ’08: Proceedings of the 1st International Workshop on Multicore Software Engineering, ACM, New York, pp. 3–4
Goetz B, Peierls T, Bloch J, Bowbeer J, Holmes D, Lea D (2006) Java Concurrency in Practice. Addision-Wesley, Amsterdam
Richardson H (1996) High performance fortran: history, overview and current developments. Tech. Rep., 1.4 TMC-261, Thinking Machines Corporation
Sunderam VS (1990) Pvm: A framework for parallel distributed computing. Concurrency Pract Exper 2:315–339
Gropp W, Lusk E, Skjellum A (1994) Using MPI: Portable Parallel Programming with the Message Passing Interface. MIT Press, Cambridge, MA
Gehani N (1983) Ada: An Advanced Introduction. Prentice-Hall, Upper Saddle River, NJ
Deshpande A, Schultz M (1992) Efficient parallel programming with linda. In: Supercomputing ’92: Proceedings of the 1992 ACM/IEEE conference on Supercomputing. IEEE Computer Society Press, Los Alamitos, CA, pp. 238–244
Goldman R, Gabriel RP (1988) Qlisp: experience and new directions. In: PPEALS ’88: Proceedings of the ACM/SIGPLAN Conference on Parallel Programming: Experience With Applications, Languages and Systems. ACM, New York, pp. 111–123
Halstead Jr RH (1985) Multilisp: a language for concurrent symbolic computation. ACM Trans Program Lang Syst 7(4):501–538
Shapiro E (1989) The family of concurrent logic programming languages. ACM Comput Surv 21(3):413–510
Agha G (1986) Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge, MA
Kale LV, Krishnan S (1993) Charm++: A portable concurrent object oriented system based on c++. Tech. Rep., Champaign, IL
Bodin F, Priol T, Mehrotra P, Gannon D (1994) Object parallelism in pc++*
Kesselman C (1996) High performance parallel and distributed computation in compositional cc++. SIGAPP Appl Comput Rev 4(1):24–26
Frigo M, Leiserson CE, Randall KH (1998) The implementation of the cilk-5 multithreaded language. In: PLDI ’98: Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation, ACM, New York, pp. 212–223
McCool MD, D’Amora B (2006) Programming using rapidmind on the cell be. In: SC ’06: Proceedings of the 2006 ACM/IEEE conference on Supercomputing, ACM, New York, p. 222
Dechter R, Pearl J (1985) Generalized best-first search strategies and the optimality of a*. J ACM 32(3):505–536
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Chen, L., Bairagi, D. & Lin, Y. MCFX: A new parallel programming framework for multicore systems . Comp. Sci. Res. Dev. 23, 217–224 (2009). https://doi.org/10.1007/s00450-009-0072-x
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00450-009-0072-x