Parallel Programming Languages, Libraries, Models and Notations
TimeSunday, November 12th8:30am - 12pm
DescriptionModern supercomputers present several challenges to effectively program parallel applications: exposing concurrency, optimizing data movement, controlling load imbalance, addressing heterogeneity, handling variations in application behavior, tolerating system failures, etc. By leveraging Charm++, application developers have been able to successfully address these challenges and efficiently run their code on large supercomputers. The foundational concepts underlying Charm++ are overdecomposition, asynchrony, migratability, and adaptivity. A Charm++ program specifies collections of interacting objects, which are assigned to processors dynamically by the runtime system.
Charm++ provides an asynchronous, message-driven, task-based programming model with migratable objects and an adaptive runtime system that controls execution. It automates communication overlap, load balance, fault tolerance, checkpoints for split-execution, power management, MPI interoperation, and promotes modularity.
This tutorial will begin with an explanation of the foundational concepts, followed by a detailed exposition of the syntax and specific capabilities, with several simple example programs, as well as real-world application case studies. We will illustrate how users can write Charm++ programs in C++ which can scale across a range of supercomputers and scales.