Release Highlights
  • POWER7 for BlueWaters development systems (new in 6.2.1)
  • 64-bit MIPS, such as SiCortex, using mpi-linux-mips64
  • Windows HPC cluster, using mpi-win32/mpi-win64
  • Mac OSX 10.6, Snow Leopard (32-bit and 64-bit)
even more...

What's New in 6.2

New Supported Platforms:

  • POWER7 for BlueWaters development systems (new in 6.2.1)
  • 64-bit MIPS, such as SiCortex, using mpi-linux-mips64
  • Windows HPC cluster, using mpi-win32/mpi-win64
  • Mac OSX 10.6, Snow Leopard (32-bit and 64-bit)

General Changes

  • Runtime support
    • (new in 6.2.1) Topology information gathering has been optimized
    • (new in 6.2.1) Converse (seed) load balancers have many new optimizations applied
    • (new in 6.2.1) CPU affinity can be set more easily using +pemap and +commap options instead of the older +coremap
    • Smarter build/configure scripts
    • A new interface for model-based load balancing
    • new CPU topology API
    • a general implementation of CmiMemoryUsage()
    • Bug fix: Quiescence detection (QD) works with immediate messages
    • New reduction functions implemented in Converse
    • CCS (Converse Client-Server) can deliver message to more than one processor
    • Added a memory-aware adaptive scheduler, which can be optionally compiled in to charm
    • Added preliminary support for automatic message prioritization (disabled by default)
  • Charm++
    • (new in 6.2.1) Better support for multicasts on groups
    • (new in 6.2.1) HybridLB (hierarchical balancing for very large core-count systems) has been substantially improved
    • (new in 6.2.1) Load balancing infrastructure has further optimizations and bug fixes
    • Cross-array and cross-group sections
    • Structured Dagger (SDAG): Support templated arguments properly
    • Plain chares support checkpoint/restart (both in-memory and disk-based)
    • Conditional packing of messages and parameters in SMP scenario
    • Changes to the CkArrayIndex class hierarchy
      • sizeof() all CkArrayIndex* classes is now the same
      • Codes using custom array indices have to use placement-new to construct their custom index. Refer example code: examples/charm++/hello/fancyarray/
      • Backward Incompatibility: CkArrayIndex[4D/5D/6D]::index are now of type int (instead of short) However the data is stored as shorts. Access by casting CkArrayIndexND::data() appropriately
      • Deprecation: The direct use of public data member CkArrayIndexND::index (N=1..6) is deprecated. We reserve the right to change/remove this variable in future releases of Charm++. Instead, please access the indices via member function: int CkArrayIndexND::data()
  • Adaptive MPI (AMPI)
    • (new in 6.2.1) AMPI now implements MPI_Issend
    • (new in 6.2.1) AMPI's MPI_Alltoall uses a flooding algorithm more agressively, versus pairwise exchange
    • Compilers renamed to avoid collision with host MPI (ampicc, ampiCC, ampif77, ampif90)
    • Improved MPI standard conformance, and documentation of non-conformance:
      • Bug fixes in: MPI_Ssend, MPI_Cart_shift, MPI_Get_count
      • Support MPI_IN_PLACE in MPI_(All)Reduce
      • Define various missing constants
    • Return the received message's tag in response to a non-blocking wildcard receive, to support SuperLU
    • Improved tracing for BigSim
  • Multiphase Shared Arrays (MSA)
    • Typed handles to enforce phases
    • Split-phase synchronization to enable message-driven execution
    • 3D arrays
  • TCharm:
    • (new in 6.2.1) Object mappings can be read from a file, to allow offline topology-aware placement
    • Automatic tracing of API calls for simulation and analysis
  • Debugging
    • Wider support for architectures other than net- (in particular MPI layers)
    • Improved support for large scale debugging (better scalability)
    • Enhanced record/replay stability to handle various events, and to signal unexpected messages
    • New detailed record/replay: The full content of messages can be recorded, and a single processor can be re-executed outside of the parallel application
  • Performance analysis:
    • Tracing of nested entry methods
    • (new in 6.2.1) Projections 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)
  • Automatic Performance Tuning: Created an automatic tuning framework [still for experimental use only]
  • CkMulticast: Network-topology / node aware spanning trees used internally for and lower bytes on the network and improved performance in multicasts and reductions delegated to this library
  • Comlib: Improved OneTimeMulticastStrategy classes
  • BigSim
    • Out-of-core support, with prefetching capability
    • Detailed tracing of MPI calls
    • Detailed record/replay support at emulation time, capable of replaying any emulated processor after obtained recorded logs.
  • (new in 6.2.1) Virtualized ARMCI support has been extended to cover the functions needed by Coarray Fortran (CAF)

Architecture-specific changes

  • Net-*: Can run jobs with more than 1024 PEs
  • Net-* (new in 6.2.1): Can use clusters' mpiexec systems for job launch, via the ++mpiexec option to charmrun. Tested to work with no additional effort on Abe, and some small scripting on Ranger and Lonestar.
  • Net-Linux: New charmrun option ++no-va-randomization to disable address space randomization (ASLR). This is most useful for running AMPI with isomalloc
  • MPI: Default to using ampicxx instead of mpiCC
  • MPI-SMP: The +p option now has the same semantics as in other smp builds
  • Power 7: Support for VSX in SIMD abstraction API
  • Blue Gene/L: Compilers and options have been updated to the latest ones
  • Blue Gene/P
    • Added routines for measuring performance counters on BG/P.
    • Updated to support latest DCMF driver version. On ANL's Intrepid, you may need to set BGP_INSTALL=/bgsys/drivers/V1R4M1_460_2009-091110P/ppc in your environment. This is the default on ANL's Surveyor.
  • Cray XT: cputopology information is now available on XT3/4/5
  • Infiniband (ibverbs):
    • Bug fix: plug memory leaks that caused failures in long runs
    • Optimized to reduce startup delays
  • LAPI: Support for SMP (experimental in 6.2.0, refined in 6.2.1)
  • LAPI: Builds on Linux as well as AIX

Releases in the 6.2 series

  • 6.2.0 (2010-04-06): First in release series
  • 6.2.1 (2010-07-04): Bugfix and improvement patch release
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. In addition, Charm++ can be obtained using Git's emulation of a CVS server.

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 Charm++ from the repository:

    • $ git clone git://charm.cs.uiuc.edu/charm.git
    • OR
    • $ cvs -d ':pserver:anonymous@charm.cs.uiuc.edu:12401/charm.git' co charm

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

    $ cd charm

  3. And now build Charm (net-linux example):

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

This will make a net-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. In addition, Projections can be obtained using Git's emulation of a CVS server.

  1. Check out Projections from the repository:

    • $ git clone git://charm.cs.uiuc.edu/projections.git
    • OR
    • $ cvs -d ':pserver:anonymous@charm.cs.uiuc.edu:12401/projections.git' co -d projections master

  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. In addition, Charm Debug can be obtained using Git's emulation of a CVS server.

  1. Check out Charm Debug from the repository:

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

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

    $ cd ccs_tools

  3. And now build Charm Debug:

    $ ant