Installation¶
This page explains how to install nabu in various situations.
Installing in a python environment¶
If you are familiar with the Python programming language and a package manager (pip
, conda
), you can install nabu using
pip install "nabu[full]"
this will install the latest (stable) release.
To install the current development version:
pip install git+https://gitlab.esrf.fr/tomotools/nabu.git
Note that nabu does not ship compiled code, so installing nabu itself should not be complicated (“pure-python package”).
The difficult part is usually to install the optional dependencies (Cuda/OpenCL for JIT compilation of GPU code). Notably, dependencies like pycuda and pycudwt do not have pre-compiled binaries, and the compilation will fail if your system does not have the Cuda toolkit installed.
We provide pre-compiled wheels in the nabu wheelhouse.
Note that they were build for python 3.11, cuda 11.7 on architecture SM_80
.
To use these wheels, you can use
pip install "nabu[full]" --find-links http://www.silx.org/pub/nabu/wheels --prefer-binary --trusted-host www.silx.org
Installing using conda¶
Nabu does not have a conda recipe yet. This section will show how to create a conda environment, and then to install nabu in this conda environment.
We recommend using mamba for an overall faster process.
mamba create -y -n nabu pip python=3.11
mamba activate nabu
mamba install -y pip wheel
mamba install -y scipy matplotlib
mamba install -y scikit-image silx hdf5plugin
mamba install -y ipython notebook ipympl
mamba install -y pyqt
Note
If you don’t use mamba, simply replace “mamba” with “conda” in the above lines
If your system does not have the cuda toolkit installed, use the following lines:
mamba install cudatoolkit-dev
mamba install pycuda
This will install the whole cuda toolkit (including compiler). We usually avoid that to use the one of the system and reduce the environment size.
Then, switch to pip
to install the remaining things:
pip cache purge
pip install --upgrade setuptools wheel
pip install pycuda --trusted-host www.silx.org --find-links http://www.silx.org/pub/nabu/wheels --prefer-binary
pip install pyopencl --trusted-host www.silx.org --find-links http://www.silx.org/pub/nabu/wheels --prefer-binary
pip install pyvkfft --trusted-host www.silx.org --find-links http://www.silx.org/pub/nabu/wheels --prefer-binary
pip install git+https://github.com/lebedov/scikit-cuda
pip install "nabu[full]" --find-links http://www.silx.org/pub/nabu/wheels --prefer-binary --trusted-host www.silx.org
Frequently asked questions¶
Does nabu need a GPU ?¶
No. Nabu can reconstruct a full volume without needing a GPU.
That being said:
The overall process will likely be slow
The FBP steps still requires pyopencl, and OpenCL ICD/implementation installed on the host
Technically speaking, the reference implementation for each individual step (flat-field, filtering, etc) is in Python/numpy.
That’s why a GPU is recommended (not required) if you want to use nabu.
Which OS/python version are supported ?¶
Nabu is only tested on Linux. As it is primarily designed for running on a compute cluster, there is no plan to support Windows or MacOS. Pull requests for fixes on these platforms will still be welcome.
Nabu supports Python >= 3.5, though at this point many of its dependencies will probably require python >= 3.6 or 3.7.
What about conda ?¶
Currently there is no conda recipe for nabu. There might be in the future.
What are nabu dependencies ?¶
The most complicated part, when it comes to installing nabu, is the installation of its optional dependencies:
Computations acceleration (GPU/manycore CPU):
pycuda
,scikit-cuda
Image processing and fitting utils:
scikit-image
Rings artefact removal using Fourier-Wavelets method on Nvidia GPUs:
pycudwt
Fast and memory-efficient Fourier transform in Cuda/OpenCL:
pyvkfft