Charm++ is a portable adaptive runtime system for parallel applications. Application developers create an object-based decomposition of the problem of interest, and the runtime system manages issues of communication, mapping, load balancing, fault tolerance, and more. Sequential code implementing the methods of these parallel objects is written in C++. Calls to libraries in C++, C, and Fortran are common and straightforward. Charm++ is portable across individual workstations, clusters, accelerators (Cell SPEs and GPUs), and supercomputers such as those sold by IBM (Blue Gene, POWER) and Cray (XT3/4/5/6). Applications based on Charm++ are used on at least 5 of the 20 most powerful computers in the world.
|Tags||runtime Programming Programming - Components and Libraries Programming - Tools programming languages programming language High Performance parallel Parallel processing parallel programming Parallelization Parallel Computing|
|Operating Systems||Linux Windows Mac OS X Solaris AIX BlueGene Cray|
|Implementation||C++ C Java Python CUDA Assembly|
Release Notes: Net builds now support the use of a cluster's mpiexec systems for job launch, via charmrun's ++mpiexec option. CPU affinity can be set more easily using +pemap and +commap options instead of the older +coremap. Projection logs can be spread across multiple directories, speeding up output when dealing with thousands of cores. +trace-subdirs N will divide log files evenly among N subdirectories of the trace root, named PROGNAME.projdir.K. Many other changes were made.