MPI on macOS
Repast4Py requires that a working MPI implementation be installed. On macOS, the MPICH MPI implementation can be installed using the Homebrew package manager, or compiled from source. In either case, first install the macOS Xcode command line tools, if necessary, by running the following in a terminal window.
This will start a dialog for the tools installation.
To install MPICH using the homebrew package manager, first install Homebrew by going to the Homebrew site, and follow the installation instructions. Once Homebrew is installed, install MPICH by running the following in a terminal window.
% /opt/homebrew/bin/brew install mpich
Check if the install was successful with by running one of the MPICH MPI compiler wrappers.
% /opt/homebrew/bin/mpicxx --version Apple clang version 14.0.0 (clang-1400.0.29.102) Target: arm64-apple-darwin21.6.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin
|The version information might differ.|
Compile MPICH from Source
Once the command line tool installation is complete, download the mpich source from here, any recent stable version will work. The source then needs to be unarchived, configured, and compiled in a terminal window.
# cd to wherever the mpich tar ball was downloaded (e.g, ~/Downloads) % cd ~/Downloads # Replace mpich-4.0.3.tar.gz with the downloaded version % tar xf mpich-4.0.3.tar.gz % cd mpich-4.0.3 # Replace $HOME/sfw/mpich-4.0.3 with where you want to install mpich % ./configure --disable-fortran --prefix=$HOME/sfw/mpich-4.0.3 # Compile and install the source % make install
|The compilation will take a few minutes or more, depending on your machine.|
Testing the MPI Installation
Once MPICH is installed, we can test the MPI installation by installing the
mpi4py Python package
which requires a MPI installation, and is itself a Repast4Py requirement.
As part of its installation
mpi4py needs to be able to find the MPI
compilation wrappers installed as part of MPI implementation.
To determine if the wrappers can be found, run the following in a
% mpicc --version
If the wrappers are not found, you will see an error like
zsh: command not found: mpicc, and you will need to add the wrapper location to the
PATH environment variable. If you installed via Homebrew, this will be
/opt/homebrew/bin. If you installed from source, this will be the install directory specified
prefix argument plus
# Replace X with `opt/homebrew` for Hombrew or wherever you installed mpich # for source % export PATH=X/bin:$PATH % mpicc --version Apple clang version 14.0.0 (clang-1400.0.29.102) Target: arm64-apple-darwin21.6.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin
In the same terminal window, install and test
mpi4py by importing it.
% pip3 install mpi4py Collecting mpi4py ... % python3 Python 3.9.6 (default, Aug 5 2022, 15:21:02) [Clang 14.0.0 (clang-1400.0.29.102)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from mpi4py import MPI
mpi4py install is successful, install Repast4Py and
test it with an import.
% CC=mpicxx pip3 install repast4py Collecting repast4py ... % python3 Python 3.9.6 (default, Aug 5 2022, 15:21:02) [Clang 14.0.0 (clang-1400.0.29.102)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from repast4py import space
The MPI compilation wrappers also need to be on the