Arbor’s Python wrapper will be the most convenient interface for most users.
The easiest way to get Arbor is with pip:
pip3 install arbor
Every point release it pushed to the Python Package Index. If you wish to install another version, it is also possible to use Setuptools directly on a local copy of the source code, or instruct pip to install directly from our git repository:
# use setuptools and python directly git clone https://github.com/arbor-sim/arbor.git --recursive python3 install ./arbor/setup.py # tell pip to build and install from master pip install git+https://github.com/arbor-sim/arbor.git
You will need to have some development packages installed in order to build Arbor this way. For Debian/Ubuntu: sudo apt install build-essential python-dev, Fedora/Red Hat/CentOS: sudo yum install @development-tools python-devel.
Arbor’s Setuptools process simplifies installation for common configurations on laptops and workstations by calling CMake under the hood.
To install Arbor on a HPC cluster, or to configure Arbor with system-specific options, we recommend using the CMake build process.
To test that Arbor is available in Python, try the following in a Python 3 interpreter to see information about the version and enabled features:
>>> import arbor >>> print(arbor.__version__) >>> print(arbor.__config__)
By default Arbor is installed with multi-threading enabled. To enable more advanced forms of parallelism, the following optional flags can be used to configure the installation:
--mpi: Enable MPI support (requires MPI library).
--gpu: Enable GPU support for NVIDIA GPUs with nvcc using
cuda, or with clang using
cuda-clang(both require cudaruntime). Enable GPU support for AMD GPUs with hipcc using
hip. By default set to
none, which disables gpu support.
--vec: Enable vectorization. This might require choosing an appropriate architecture using
--arch: CPU micro-architecture to target. By default this is set to
setup.py the flags must come after
install on the command line,
and if being passed to pip they must be passed via
--install-option. The examples
below demonstrate this for both pip and
Vanilla install with no additional features enabled:
pip3 install arbor python3 ./arbor/setup.py install
With MPI support. This might require loading an MPI module or setting the
pip3 install --install-option='--mpi' ./arbor python3 ./arbor/setup.py install --mpi
pip3 install --install-option='--vec' --install-option='--arch=skylake' arbor python3 ./arbor/setup.py install --vec --arch=skylake
Enable NVIDIA GPUs (compiled with nvcc). This requires the CUDA toolkit:
pip3 install --install-option='--gpu=cuda' ./arbor python3 ./arbor/setup.py install --gpu=cuda
Enable NVIDIA GPUs (compiled with clang). This also requires the CUDA toolkit:
pip3 install --install-option='--gpu=cuda-clang' ./arbor python3 ./arbor/setup.py install --gpu=cuda-clang
Enable AMD GPUs (compiled with hipcc). This requires setting the
pip3 install --install-option='--gpu=hip' ./arbor python3 ./arbor/setup.py install --gpu=hip
Setuptools compiles the Arbor C++ library and
wrapper, which can take a few minutes. Pass the
--verbose flag to pip
to see the individual steps being performed if you are concerned that progress
Detailed instructions on how to install using CMake are in the Python configuration section of the installation guide. CMake is recommended for developers, integration with package managers such as Spack and EasyBuild, and users who require fine grained control over compilation and installation.
To report problems installing with pip,
run pip with the
--verbose flag, and attach the output (along with
the pip command itself) to a ticket on
Arbor’s issues page.
If a downstream dependency requires Arbor be built with
a specific feature enabled, use
define the constraints.
For example, a package that depends on arbor version 0.3 or later
with MPI support would add the following to its requirements:
arbor >= 0.3 --install-option='--gpu=cuda' \ --install-option='--mpi'
The Python interface can incur significant memory and runtime overheads relative to C++ during the model building phase, however simulation performance is the same for both interfaces.
Python 2 reached end of life in January 2020. Arbor only provides support for Python 3.6 and later.
It might be possible to install and run Arbor
using Python 2.7 by setting the
PYTHON_EXECUTABLE variable when
However, Arbor is not tested against Python 2.7, and we won’t be able
to provide support.