- A.1 Manual installation
- A.2 Installation through the Spack package manager
- A.3 Charm++ installation directories
- A.4 Reducing disk usage
Spack package manager. Building from the source code provides more flexibility, since one can choose the options as desired. However, a precompiled binary may be slightly easier to get running.
- From Charm++ website - The current stable version (source code and binaries) can be downloaded from our website at http://charm.cs.illinois.edu/software.
- From source archive - The latest development version of Charm++ can be downloaded from our source archive using git clone http://charm.cs.illinois.edu/gerrit/charm.
If you download the source code from the website, you will have to unpack it using a tool capable of extracting gzip'd tar files, such as tar (on Unix) or WinZIP (under Windows). Charm++ will be extracted to a directory called ``charm''.
A typical prototype command for building Charm++ from the source code is:
./build TARGET TARGET ARCHITECTURE [OPTIONS] where,
- is the framework one wants to build such as charm++ or AMPI.
- TARGET ARCHITECTURE
- is the machine architecture one wants to build for such as netlrts-linux-x86_64, pamilrts-bluegeneq etc.
- are additional options to the build process, e.g. smp is used to build a shared memory version, -j8 is given to build in parallel etc.
In Table A.1, a list of build commands is provided for some of the commonly
used systems. Note that, in general, options such as smp,
--with-production, compiler specifiers etc can be used with all targets.
It is advisable to build with
--with-production to obtain the best
performance. If one desires to perform trace collection (for Projections),
--enable-tracing --enable-tracing-commthread should also be passed to the
Details on all the available alternatives for each of the above mentioned
parameters can be found by invoking
./build --help. One can also go through the
build process in an interactive manner. Run
./build, and it will be followed by
a few queries to select appropriate choices for the build one wants to perform.
As mentioned earlier, one can also build Charm++ using the precompiled binary in a manner similar to what is used for installing any common software.
When a Charm++ build folder has already been generated, it is possible to
perform incremental rebuilds by invoking
make from the
inside it. For example, with a netlrts-linux-x86_64 build, the path
netlrts-linux-x86_64/tmp. On Linux and macOS, the tmp symlink
in the top-level charm directory also points to the tmp directory of the most
Alternatively, CMake can be used for configuring and building Charm++. You can
ccmake for an overview of available options.
Note that some are only effective when passed with
-D from the
command line while configuring from a blank slate. To build with all defaults,
cmake . is sufficient, though invoking CMake from a separate location
mkdir mybuild && cd mybuild && cmake ../charm) is recommended.
Charm++ can also be installed through the Spack package manager (
A basic command to install Charm++ through Spack is the following:
$ spack install charmpp
By default, the netlrts network backend with SMP support is built. You can specify
other backends by providing the
backend parameter to spack. It is
also possible to specify other options, as listed in
Section A.1.2, by adding them to the Spack command prepended
by a '
+'. For example, to build the MPI version of Charm++ with
the integrated OpenMP support, you can use the following command:
$ spack install charmpp backend=mpi +omp
To disable an option, prepend it with a '
~'. For example,
to build Charm++ with SMP support disabled, you can use the following command:
$ spack install charmpp ~smp
By default, the newest released version of Charm++ is built. You can select
another version with the '
@' option (for example,
build the current git version of Charm++ , specify the
$ spack install charmpp@develop
The main directories in a Charm++ installation are:
- Executables, such as charmc and charmrun,
used by Charm++ .
- Documentation for Charm++ , such as this
document. Distributed as LaTeX source code; HTML and PDF versions
can be built or downloaded from our web site.
- The Charm++ C++ and Fortran user include files (.h).
- The static libraries (.a) that comprise Charm++ .
- The shared libraries (.so/.dylib) that comprise Charm++ ,
if Charm++ is compiled with the
- Example Charm++ programs.
- Source code for Charm++ itself.
- Directory where Charm++ is built.
- Test Charm++ programs used by autobuild.
The charm directory contains a collection of example-programs and
test-programs. These may be deleted with no other effects. You may
strip all the binaries in