Release Highlights

  • Bug fixes spanning areas across the entire system.
  • AMPI feature additions: MPI-2.2 support, nonblocking and neighborhood collectives, and new extension APIs.
even more...

New in 6.7.1

Changes in this release are primarily bug fixes for 6.7.1. The major exception is AMPI. A brief list of changes follows:

  • Charm++ Bug Fixes
    1. Startup and exit sequences are more robust
    2. Error and warning messages are generally more informative
    3. CkMulticast's set and concat reducers work correctly
  • Adaptive MPI Features
    1. AMPI's extensions have been renamed to use the prefix 'AMPI_' and to follow MPI's naming conventions
    2. AMPI_Migrate(MPI_Info) is now used for both dynamic load balancing and all fault tolerance schemes
    3. AMPI now officially supports MPI-2.2, and has support for MPI-3.1's nonblocking and neighborhood collectives
  • Platforms and Portability
    1. Cray regularpages build has been fixed
    2. Clang compiler target for BlueGene/Q systems added
    3. Communication thread tracing for SMP mode added
    4. AMPI compiler wrappers are easier to use with autoconf and cmake

The complete list of issues that have been merged/resolved in 6.7.1 can be found here. The associated git commits can be viewed here.

What's New in 6.7.0

Here is a list of significant changes that this release contains over version 6.6.1

  • Features
    1. New API for efficient formula-based distributed spare array creation.
    2. Missing MPI-2.0 API additions to AMPI.
    3. Out-of-tree build is now supported.
    4. New target: multicore-linux-arm7
    5. PXSHM auto detects the node size.
    6. Added support for ++mpiexec with poe.
    7. Add new API related to migration in AMPI.
    8. CkLoop is now built by default.
    9. Scalable startup is now the default behavior when launching a job using chamrun.

    Over 120 bug fixes, spanning areas across the entire system. Here is a list of the major fixes:

  • Bug Fixes
    1. Bug fix to handle CUDA threads correctly at exit.
    2. Bug fix in the recovery code on a node failure.
    3. Bug fixes in AMPI functions - MPI_Comm_create, MPI_Testall.
    4. Disable ASLR on Darwin builds to fix multi-node executions.
    5. Add flags to enable compilation of Charm++ on newer Cray compilers with C++11 support.
  • Deprecations and Deletions
    1. CommLib has been deleted.
    2. +nodesize option for PXSHM is deprecated
    3. CmiBool has been dropped in favor of C++'s bool.
    4. CBase_Foo::pup need not be called from Foo::pup.

The complete list of issues that have been merged/resolved in 6.7.0 can be found here. The associated git commits can be viewed here.

New in 6.6.1

Changes in this release are primarily bug fixes for 6.6.0. A concise list of affected components follows:

  1. CkIO
  2. Reductions with syncFT
  3. mpicxx based MPI builds
  4. Increased support for macros in CI file
  5. GNI + RDMA related communication
  6. MPI_STATUSES_IGNORE support for AMPIF
  7. Restart on different node count with chkpt
  8. Immediate msgs on multicore builds

A complete listing of features added and bugs fixed can be seen in our issue tracker here.

New in 6.6.0

  • Machine target files for Cray XC systems ('gni-crayxc') have been added
  • Interoperability with MPI code using native communication interfaces on Blue Gene Q (PAMI) and Cray XE/XK/XC (uGNI) systems, in addition to the universal MPI communication interface
  • Support for partitioned jobs on all machine types, including TCP/IP and IB Verbs networks using 'netlrts' and 'verbs' machine layers
  • A substantially improved version of our asynchronous library, CkIO, for parallel output of large files
  • Narrowing the circumstances in which the runtime system will send overhead-inducing ReductionStarting messages
  • A new fully distributed load balancing strategy, DistributedLB, that produces high quality results with very low latency
  • An API for applications to feed custom per-object data to specialized load balancing strategies (e.g. physical simulation coordinates)
  • SMP builds on LRTS-based machine layers (pamilrts, gni, mpi, netlrts, verbs) support tracing messages through communication threads
  • Thread affinity mapping with +pemap now supports Intel's Hyperthreading more conveniently
  • After restarting from a checkpoint, thread affinity will use new +pemap/+commap arguments
  • Queue order randomization options were added to assist in debugging race conditions in application and runtime code
  • The full runtime code and associated libraries can now compile under the C11 and C++11/14 standards.
  • Numerous bug fixes, performance enhancements, and smaller improvements in the provided runtime facilities
  • Deprecations
    • The long-unsupported FEM library has been deprecated in favor of ParFUM
    • The CmiBool typedefs have been deleted, as C++ bool has long been universal
    • Future versions of the runtime system and libraries will require some degree of support for C++11 features from compilers
Binaries:
Filter by: (select multiple by holding down ctrl on Windows and Linux or alt on Mac OS)

Binary tarballs with 'devel' in their name include support for debugging and tracing, and are compiled without optimization. Tarballs with 'production' in their name are optimized, omit assertion checks, and avoid the overhead of debugging and tracing support.

The latest development version of Charm++ can be downloaded directly from our source archive. The Git version control system is used, which is available from here.

This development version may not be as portable or robust as the released versions. Therefore, it may be prudent to keep a backup of old copies of Charm++.

  1. Check out the latest development version of Charm++ from the repository:

    • $ git clone https://charm.cs.illinois.edu/gerrit/charm

  2. This will create a directory named charm. Move to this directory:

    $ cd charm

    To obtain the current stable release, 6.7.1, switch to branch charm-6.7.1:

    • $ git checkout charm-6.7.1
  3. And now build Charm (net-linux example):

    $ ./build charm++ netlrts-linux-x86_64 [ --with-production | -g ]

This will make a netlrts-linux-x86_64 directory, with bin, include, lib etc subdirectories.

Nightly Charm Binaries:
Filter by: (select multiple by holding down ctrl on Windows and Linux or alt on Mac OS)

These binaries are compiled every night from the version control system, and tested for every platform, so you will always find here a working version. Every precompiled binary contains also the entire source tree, and it will be guaranteed to compile on the desired architecture. Previous nightly build versions of Charm++ are also available.

Binary tarballs with 'devel' in their name include support for debugging and tracing, and are compiled without optimization. Tarballs with 'production' in their name are optimized, omit assertion checks, and avoid the overhead of debugging and tracing support.

The latest development version of Projections can be downloaded directly from our source archive. The Git version control system is used, which is available from here. To build Projections, you will also need ant.

  1. Check out Projections from the repository:

    • $ git clone http://charm.cs.uiuc.edu/gerrit/projections

  2. This will create a directory named projections. Move to this directory:

    $ cd projections

  3. And now build Projections:

    $ make

The latest development version of Charm Debug can be downloaded directly from our source archive. The Git version control system is used, which is available from here.

  1. Check out Charm Debug from the repository:

    • $ git clone http://charm.cs.uiuc.edu/gerrit/ccs_tools

  2. This will create a directory named ccs_tools. Move to this directory:

    $ cd ccs_tools

  3. And now build Charm Debug:

    $ ant