Charm4py v0.12 released


These are the most important changes in the new release:

  • Added experimental charm.pool library which is similar to Python’s
    multiprocessing Pool, but also works in a distributed setting (multiple hosts),
    tasks can create other tasks all of which use the same shared pool,
    and can benefit from Charm++'s support for efficient communication layers
    such as MPI. See pool documentation for more information.

  • Improved support for building and running with Charm++'s MPI communication
    layer. See Install and Running sections of the documentation for more information.

  • Substantially improved the performance of threaded entry methods by allowing
    thread reuse.

  • Blocking allreduce and barrier is now supported inside threaded entry methods:
    result = charm.allReduce(data, reducer, self) and charm.barrier(self).

  • Can now indicate if array elements use AtSync at array creation time
    by passing useAtSync=True in Array creation method.


charm.pool is very new and therefore considered experimental. Please post feedback and suggestions. The performance obtained with it is very good compared to Python’s pool of workers in multiprocessing library, and especially compared to Dask. I encourage others to try it. I will post some benchmark results soon.