Parallel Programming with Migratable Objects
Relevant links: exascale relevance, the manual, mini-apps, downloads, charmplusplus.org
Charm++ is a machine independent parallel programming system. Programs written using this system will run unchanged on MIMD machines with or without a shared memory. It provides high-level mechanisms and strategies to facilitate the task of developing even highly complex parallel applications.
Charm++ programs are written in C++ with a few library calls and an interface description language for publishing Charm++ objects. Charm++ supports multiple inheritance, late bindings, and polymorphism.
Platforms: The system currently runs on IBM's Blue Gene/Q and OpenPOWER systems, Cray XE6, XK7, and XC40 systems, Infiniband and Omni-Path clusters, clusters of UNIX workstations and even single-processor UNIX, Mac, and Windows machines. It also contains support for running on accelerators such as Xeon Phis and GPGPUs.
The design of the system is based on the following tenets:
- Efficient Portability: Portability is an essential catalyst for the development of reusable parallel software. Charm++ programs run unchanged on MIMD machines with or without a shared memory. The programming model induces better data locality, allowing it to support machine independence without losing efficiency.
- Latency Tolerance: Latency of communication - the idea that remote data will take longer to access - is a significant issue common across most MIMD platforms. Message-driven execution, supported in Charm++, is a very useful mechanism for tolerating or hiding this latency. In message driven execution (which is distinct from just message-passing), a processor is allocated to a process only when a message for the process is received. This means when a process blocks, waiting for a message, another process may execute on the processor. It also means that a single process may block for any number of distinct messages, and will be awakened when any of these messages arrive. Thus, it forms an effective way of scheduling a processor in the presence of potentially large latencies.
- Dynamic Load Balancing: Dynamic creation and migration of work is necessary in many applications. Charm++ supports this by providing dynamic (as well as static) load balancing strategies.
- Reuse and Modularity: It should be possible to develop parallel software by reusing existing parallel software. Charm++ supports this with a well-developed ``module'' construct and associated mechanisms. These mechanisms allow for compositionality of modules without sacrificing the latency-tolerance. With them, two modules, each spread over hundreds of processors, may exchange data in a distributed fashion.
The Programming Model: Programs consist of potentially medium-grained processes (called chares), a special type of replicated process, and collections of chares. These processes interact with each other via messages. There may be thousands of medium-grained processes on each processor, or just a few, depending on the application. The ``replicated processes'' can also be used for implementing novel information sharing abstractions, distributed data structures, and intermodule interfaces. The system can be considered a concurrent object-oriented system with a clear separation between sequential and parallel objects. As shown in this figure, the objects are mapped by the runtime system to appropriate processors to balance the load.
Reusable Libraries: The modularity-related features make the system very attractive for building library modules that are highly reusable because they can be used in a variety of data-distributions. We have just begun the process of building such libraries, and have a small collection of library modules. However, we expect such libraries, contributed by us and other users, to be one of the most significant aspects of the system.
Regular and Irregular Computations: For regular computations, the system is useful because it provides portability, static load balancing, and latency tolerance via message driven execution, and facilitates construction and flexible reuse of libraries. The system is unique for the extensive support it provides for highly irregular computations. This includes management of many medium-grained processes, support for prioritization, dynamic load balancing strategies, handling of dynamic data-structures such as lists and graphs, etc.
People
Papers / Talks
-
22-052022
PaperImproving Scalability with GPU-Aware Asynchronous Tasks
- Jaemin Choi
- David F. Richards
- Laxmikant Vasudeo Kale
-
22-022022
PaperAccelerating Messages by Avoiding Copies in an Asynchronous Task-based Programming Model
- Nitin Bhat
- Sam White
- Laxmikant Vasudeo Kale
-
22-012022
PaperEnabling Support for Zero Copy Semantics in an Asynchronous Task-Based Programming Model
- Nitin Bhat
- Sam White
- Laxmikant Vasudeo Kale
-
20-032020
PaperScalable molecular dynamics on CPU and GPU architectures with NAMD
- James Phillips
- David J. Hardy
- Julio Maia
- John E. Stone
- João Ribeiro
- Rafael Bernardi
- Ronak Akshay Buch
- Giacomo Fiorin
- Jérôme Hénin
- Wei Jiang
- Ryan McGreevy
- Marcelo C. R. Melo
- Brian K. Radak
- Robert Skeel
- Abhishek Singharoy
- Yi Wang
- Benoît Roux
- Aleksei Aksimentiev
- Zaida Luthey-Schulten
- Laxmikant Vasudeo Kale
- Klaus Schulten
- Christophe Chipot
- Emad Tajkhorshid
-
18-022018
PaperMulti-level Load Balancing with an Integrated Runtime Approach
- Seonmyeong Bak
- Harshitha Menon
- Sam White
- Matthias Diener
- Laxmikant Vasudeo Kale
-
17-082017
PaperIntegrating OpenMP into the Charm++ Programming Model
- Seonmyeong Bak
- Harshitha Menon
- Sam White
- Matthias Diener
- Laxmikant Vasudeo Kale
-
16-202016
Phd Thesis -
16-192016
PaperHandling Transient and Persistent Imbalance Together in Distributed and Shared Memory
- Harshitha Menon
- Seonmyeong Bak
- Phil Miller
- Sam White
- Nitin Bhat
- Laxmikant Vasudeo Kale
-
16-142016
PaperRuntime Coordinated Heterogeneous Tasks in Charm++
- Michael P. Robson
- Ronak Akshay Buch
- Laxmikant Vasudeo Kale
-
16-052016
PaperOpenAtom: Scalable Ab-Initio Molecular Dynamics with Diverse Capability
- Nikhil Jain
- Eric Bohm
- Eric Mikida
- Subhasish Mandal
- Minjung Kim
- Prateek Jindal
- Qi Li
- Sohrab Ismail-Beigi
- Glenn Martyna
- Laxmikant Vasudeo Kale
-
14-312014
TalkScalable Replay with Partial-Order Dependencies for Message-Logging Fault Tolerance
- Jonathan Lifflander
- Esteban Meneses
- Harshitha Menon
- Phil Miller
- Sriram Krishnamoorthy
- Laxmikant Vasudeo Kale
-
14-212014
PaperScalable Replay with Partial-Order Dependencies for Message-Logging Fault Tolerance
- Jonathan Lifflander
- Esteban Meneses
- Harshitha Menon
- Phil Miller
- Sriram Krishnamoorthy
- Laxmikant Vasudeo Kale
-
14-192014
Paper- Laxmikant Vasudeo Kale
- Akhil Langer
- Osman Sarood
-
14-122014
PaperPICS: A Performance-Analysis-Based Introspective Control System to Steer Parallel Applications
- Yanhua Sun
- Jonathan Lifflander
- Laxmikant Vasudeo Kale
-
13-462013
Paper- Laxmikant Vasudeo Kale
- Gengbin Zheng
-
13-452013
Paper -
13-442013
Paper- Filippo Gioachin
- Chee Wai Lee
- Jonathan Lifflander
- Yanhua Sun
- Laxmikant Vasudeo Kale
-
13-432013
Paper- James Phillips
- Klaus Schulten
- Abhinav Bhatele
- Chao Mei
- Yanhua Sun
- Eric Bohm
- Laxmikant Vasudeo Kale
-
13-422013
Paper- Glenn Martyna
- Eric Bohm
- Ramprasad Venkataraman
- Laxmikant Vasudeo Kale
- Abhinav Bhatele
-
13-412013
Paper- Thomas Quinn
- Pritish Jetley
- Laxmikant Vasudeo Kale
- Filippo Gioachin
-
13-402013
Paper -
13-392013
Paper- Eduardo Rodrigues
- Celso Mendes
- Jairo Panetta
-
13-382013
Paper- Orion Lawlor
- Michael Breitenfeld
- Philippe Geubelle
- Gengbin Zheng
-
13-372013
Paper- Keith Bisset
- Ashwin M. Aji
- Tariq Kamal
- Jae-Seung Yeom
- Madhav V. Marathe
- Eric Bohm
- Abhishek Gupta
-
13-362013
PaperControlling Concurrency and Expressing Synchronization in Charm++ Programs
- Laxmikant Vasudeo Kale
- Jonathan Lifflander
-
13-162013
PaperParallel Science and Engineering Applications: The Charm++ Approach
- Laxmikant Vasudeo Kale
- Abhinav Bhatele
-
13-032013
PosterCharm++: Migratable Objects + Active Messages + Adaptive Runtime = Productivity + Performance
- Laxmikant Vasudeo Kale
- Anshu Arya
- Nikhil Jain
- Akhil Langer
- Jonathan Lifflander
- Harshitha Menon
- Xiang Ni
- Yanhua Sun
- Ehsan Totoni
- Ramprasad Venkataraman
- Lukasz Wesolowski
-
12-092012
TalkComposable and Modular Exascale Programming Models with Intelligent Runtime Systems
- Laxmikant Vasudeo Kale
-
11-412011
PaperUsing Shared Arrays in Message-Driven Parallel Programs
- Phil Miller
- Aaron Becker
- Laxmikant Vasudeo Kale
-
11-272011
PaperOptimizations for Message Driven Applications on Multicore Architectures
- Pritish Jetley
- Laxmikant Vasudeo Kale
-
11-042011
PaperEvaluation of Simple Causal Message Logging for Large-Scale Fault Tolerant HPC Systems
- Esteban Meneses
- Greg Bronevetsky
- Laxmikant Vasudeo Kale
-
10-132010
PaperOptimizing a Parallel Runtime System for Multicore Clusters: A Case Study
- Chao Mei
- Gengbin Zheng
- Filippo Gioachin
- Laxmikant Vasudeo Kale
-
10-062010
PaperCharm++ and AMPI: Adaptive Runtime Strategies via Migratable Objects
- Laxmikant Vasudeo Kale
- Gengbin Zheng
-
08-092008
PaperSome Essential Techniques for Developing Efficient Petascale Applications
- Laxmikant Vasudeo Kale
-
07-042007
PaperProgramming Petascale Applications with Charm++ and AMPI
- Laxmikant Vasudeo Kale
- Eric Bohm
- Celso Mendes
- Terry Wilmarth
- Gengbin Zheng
-
05-062005
Phd Thesis -
04-162004
PaperPerformance and Modularity Benefits of Message-Driven Execution
- Attila Gursoy
- Laxmikant Vasudeo Kale
-
96-111996
PaperCharm++: Parallel Programming with Message-Driven Objects
- Laxmikant Vasudeo Kale
- Sanjeev Krishnan
-
96-101996
PaperStructured Dagger: A Coordination Language for Message-Driven Programming
- Laxmikant Vasudeo Kale
- Milind Bhandarkar
-
96-091996
PaperThreads for Interoperable Parallel Programming
- Laxmikant Vasudeo Kale
- Joshua Yelon
- Timothy Knauff
-
95-151995
PaperAgents: an Undistorted Representation of Problem Structure
- Joshua Yelon
- Laxmikant Vasudeo Kale
-
95-031995
PaperThe Charm Parallel Programming Language and System:Part II - The Runtime System
- Laxmikant Vasudeo Kale
- Balkrishna Ramkumar
- Amitabh Sinha
- Attila Gursoy
-
95-021995
PaperThe Charm Parallel Programming Language and System:Part I --- Description of Language Features
- Laxmikant Vasudeo Kale
- Balkrishna Ramkumar
- Amitabh Sinha
- Attila Gursoy
-
93-021993
PaperCHARM++ : A Portable Concurrent Object Oriented System Based On C++
- Laxmikant Vasudeo Kale
- Sanjeev Krishnan
-
92-101992
PaperDynamic Adaptive Scheduling in an Implementation of a Data Parallel Language
- Ed Kornkven
- Laxmikant Vasudeo Kale
-
90-101990
Phd Thesis -
90-081990
PaperChare Kernel - A Runtime Support System for Parallel Computations
- Wennie Shu
- Laxmikant Vasudeo Kale
-
89-091989
PaperAn Abstract Machine for the Reduce or Process Model for Parallel Prolog
- Balkrishna Ramkumar
- Laxmikant Vasudeo Kale