Arbor’s Python API will be the most convenient interface for most users.
Arbor requires Python version 3.6 and later. It is advised that you update
pip as well.
We strongly encourage using
pip to install Arbor.
To get help in case of 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.
Every point release of Arbor is pushed to the Python Package Index. For x86-64 Linux and MacOS platforms, we provide binary wheels. The easiest way to get Arbor is with pip:
pip3 install arbor
To test that Arbor is available, try the following in a Python interpreter to see information about the version and enabled features:
>>> import arbor >>> print(arbor.__version__) >>> print(arbor.__config__)
For builds from Arbor’s source, you will need to have some development packages installed. Installing Arbor
for any other platforms than listed above,
pip will attempt a build from source and thus require these
packages as well.
Ubuntu/Debian: git cmake gcc python3-dev python3-pip libxml2-dev
Fedora/CentOS/OpenSuse: git cmake gcc-c++ python3-devel python3-pip libxml2-devel
MacOS: get brew here and run brew install cmake clang python3 libxml2
Windows: the simplest way is to use WSL and then follow the instructions for Ubuntu.
In addition, you’ll need a few Python packages present:
pip3 install ninja scikit-build wheel setuptools numpy
If you wish to get the latest Arbor straight from the master branch in our git repository, you can run:
pip3 install git+https://github.com/arbor-sim/arbor.git
If you want to work on Arbor’s code, you can get a copy of our repo and point pip at the local directory:
# get your copy of the Arbor source git clone https://github.com/arbor-sim/arbor.git --recursive # make your changes and then instruct pip to build and install the local source pip3 install ./arbor/
Every time you make changes to the code, you’ll have to repeat the second step.
By default Arbor is installed with multi-threading enabled. To enable more
advanced forms of parallelism and other features, Arbor comes with a few
compilation options. These are of the form
-D<KEY>=<VALUE>, must be appended
pip invocation via
--install-option="-D<...>" --install-option="-D<...>" ... and can
be used on both local (
pip3 install ./arbor) and remote (
arbor) copies of Arbor. See the examples below.
If you run into build issues while experimenting with build options, be sure
to remove the
_skbuild directory. If you had Arbor installed already,
you may need to remove it first before you can (re)compile it with the flags you need.
Also, make sure to pass each option individually via
The following flags can be used to configure the installation:
ARB_WITH_NEUROML=<ON|OFF>: Enable support for NeuroML2 morphologies, requires
ARB_WITH_MPI=<ON|OFF>: Enable MPI support, requires MPI library. Default
ARB_GPU=<none|cuda|cuda-clang|hip>: 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.
ARB_VECTORIZE=<ON|OFF>: Enable vectorization. The architecture argument, documented below, may also have to be set appropriately to generated vectorized code. See Architecture for details.
ARB_ARCH=<native|*>: CPU micro-architecture to target. The advised default is
native. See here for a full list of options.
There are more, advanced flags that can be set. We are using
CMake under the hood, so all flags and options valid in
be used in this fashion.
Detailed instructions on how to install using CMake are in the Python configuration section of the installation guide. CMake is recommended if you need more control over compilation and installation, plan to use Arbor with C++, or if you are integrating with package managers such as Spack and EasyBuild.
In the examples below we assume you are installing from a local copy.
Vanilla install with no additional features enabled:
pip3 install ./arbor
With MPI support. This might require loading an MPI module or setting the
pip3 install ./arbor --install-option="-DARB_WITH_MPI=ON"
pip3 install ./arbor --install-option="-DARB_VECTORIZE=ON" --install-option="-DARB_ARCH=skylake"
Enable NVIDIA GPUs (compiled with nvcc). This requires the CUDA toolkit:
pip3 install ./arbor --install-option="-DARB_GPU=cuda"
Enable NVIDIA GPUs (compiled with clang). This also requires the CUDA toolkit:
pip3 install ./arbor --install-option="-DARB_GPU=cuda-clang"
Enable AMD GPUs (compiled with hipcc). This requires setting the
pip3 install ./arbor --install-option="-DARB_GPU=hip"
Note on performance¶
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.