Skip to main content
Log in

MCFX: A new parallel programming framework for multicore systems

  • Special Issue Paper
  • Published:
Computer Science - Research and Development

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Similar content being viewed by others

References

  1. 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

  2. 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

  3. Goetz B, Peierls T, Bloch J, Bowbeer J, Holmes D, Lea D (2006) Java Concurrency in Practice. Addision-Wesley, Amsterdam

    Google Scholar 

  4. Richardson H (1996) High performance fortran: history, overview and current developments. Tech. Rep., 1.4 TMC-261, Thinking Machines Corporation

  5. Sunderam VS (1990) Pvm: A framework for parallel distributed computing. Concurrency Pract Exper 2:315–339

    Article  Google Scholar 

  6. Gropp W, Lusk E, Skjellum A (1994) Using MPI: Portable Parallel Programming with the Message Passing Interface. MIT Press, Cambridge, MA

    Google Scholar 

  7. Gehani N (1983) Ada: An Advanced Introduction. Prentice-Hall, Upper Saddle River, NJ

    Google Scholar 

  8. 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

  9. 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

  10. Halstead Jr RH (1985) Multilisp: a language for concurrent symbolic computation. ACM Trans Program Lang Syst 7(4):501–538

    Article  MATH  Google Scholar 

  11. Shapiro E (1989) The family of concurrent logic programming languages. ACM Comput Surv 21(3):413–510

    Article  Google Scholar 

  12. Agha G (1986) Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge, MA

    Google Scholar 

  13. Kale LV, Krishnan S (1993) Charm++: A portable concurrent object oriented system based on c++. Tech. Rep., Champaign, IL

  14. Bodin F, Priol T, Mehrotra P, Gannon D (1994) Object parallelism in pc++*

  15. Kesselman C (1996) High performance parallel and distributed computation in compositional cc++. SIGAPP Appl Comput Rev 4(1):24–26

    Article  Google Scholar 

  16. 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

  17. 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

  18. Dechter R, Pearl J (1985) Generalized best-first search strategies and the optimality of a*. J ACM 32(3):505–536

    Article  MATH  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Liang Chen.

Rights and permissions

Reprints 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

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00450-009-0072-x

Keywords

Navigation