Skip to main content

Definition

Charm++ is a C++-based parallel programming system that implements a message-driven migratable objects programming model, supported by an adaptive runtime system.

Discussion

Charm++  [1] is a parallel programming system developed at the University of Illinois at Urbana-Champaign. It is based on a message-driven migratable objects programming model, and consists of a C++-based parallel notation, an adaptive runtime system (RTS) that automates resource management, a collection of debugging and performance analysis tools, and an associated family of higher level languages. It has been used to program several highly scalable parallel applications.

Motivation and Design Philosophy

One of the main motivations behind Charm++ is the desire to create an optimal division of labor between the programmer and the system: that is, to design a programming system so that the programmers do what they can do best, while leaving to the “system” what it can automate best. It was observed that...

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 1,600.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 1,799.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Bibliography

  1. Kale LV, Krishnan S (1993) CHARM + + : a portable concurrent object oriented system based on C + +. In: Paepcke A (ed) Proceedings of OOPSLA’93, ACM, New York, September 1993, pp 91–108

    Google Scholar 

  2. Shu WW, Kale LV (1990) Chare Kernel – a runtime support system for parallel computations. J Parallel Distrib Comput 11:198–211

    Article  Google Scholar 

  3. Kale LV (1987) Parallel execution of logic programs: the REDUCE-OR process model. In: Proceedings of the fourth international conference on logic programming, Melbourne, May 1987, pp 616–632

    Google Scholar 

  4. Kale LV, Ramkumar B, Saletore V, Sinha AB (1993) Prioritization in parallel symbolic computing. In: Ito T, Halstead R (eds) Lecture notes in computer science, vol 748. Springer, pp 12–41

    Google Scholar 

  5. Lin Y‐J, Kumar V (1991) And-parallel execution of logic programs on a sharedmemory multiprocessor. J Logic Program 10(1/2/3&4):155–178

    Article  MathSciNet  Google Scholar 

  6. Frigo M, Leiserson CE, Randall KH (1998) The implementation of the Cilk-5 multithreaded language. In: ACM SIGPLAN ’98 conference on programming language design and implementation (PLDI), Montreal, June 1998. vol 33 of ACM Sigplan Notices, pp 212–223

    Google Scholar 

  7. Agha G (1986) Actors: a model of concurrent computation in distributed systems. MIT, Cambridge

    Google Scholar 

  8. Yonezawa A, Briot J‐P, Shibayama E (1986) Object-oriented concurrent programming in ABCL/1. ACM SIGPLAN Notices, Proceedings OOPSLA ’86, Nov 1986, 21(11):258–268

    Article  Google Scholar 

  9. Kale LV, Shu W (1989) The Chare Kernel base language: preliminary performance results. In: Proceedings of the 1989 international conference on parallel processing, St. Charles, August 1989, pp 118–121

    Google Scholar 

  10. Kale LV (1990) The Chare Kernel parallel programming language and system. In: Proceedings of the international conference on parallel processing, August 1990, vol II, pp 17–25

    Google Scholar 

  11. Kale LV, Krishnan S (1996) Charm + + : parallel programming with message-driven objects. In: Wilson GV, Lu P (eds) Parallel programming using C + +. MIT, Cambridge, pp 175–213

    Google Scholar 

  12. Gursoy A, Kale LV (2003) Performance and modularity benefits of message-driven execution. J Parallel Distrib Comput 64:461–480

    Article  Google Scholar 

  13. Lawlor OS, Kale LV (2003) Supporting dynamic parallel object arrays. Concurr Comput Pract Exp 15:371–393

    Article  MATH  Google Scholar 

  14. Brunner RK, Kale LV (2000) Handling application-induced load imbalance using parallel objects. In: Parallel and distributed computing for symbolic and irregular applications. World Scientific, Singapore, pp 167–181

    Google Scholar 

  15. Kale Lv, Zheng G (2009) Charm + + and AMPI: adaptive runtime strategies via migratable objects. In: Parashar M (ed) Advanced computational infrastructures for parallel and distributed applications. Wiley-Interscience, Hoboken, pp 265–282

    Google Scholar 

  16. Kale LV, Bohm E, Mendes CL, Wilmarth T, Zheng G (2008) Programming petascale applications with Charm + + and AMPI. In: Bader B (ed) Petascale computing: algorithms and applications. Chapman & Hall, CRC, Boca Raton, pp 421–441

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer Science+Business Media, LLC

About this entry

Cite this entry

Kalé, L.V. (2011). Charm++. In: Padua, D. (eds) Encyclopedia of Parallel Computing. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-09766-4_242

Download citation

Publish with us

Policies and ethics