Installation¶
mmu
can be installed from PyPi.
pip install mmu
We provide wheels with pre-compiled binaries for:
MacOS [x86, ARM]
Linux
Windows
MMU
relies on a C++ extension for the computationally intensive routines or those that will be called over many items.
The extension is wrapped using Pybind11 and requires a compiler with support for C++14.
The compilation of the extension is triggered by the setup.py
using Scikit-Build.
If you encounter an issue please rerun the installation with verbose mode on,
pip install mmu -v
, and create an issue with the output.
Optimised build¶
Installing the package from source requires a C++ compiler with support for C++14. If you have a compiler available it is advised to install without the wheel as this enables architecture specific optimisations.
When building from source the extension is optimised for your architecture, e.g. .
Native architecture flags are enabled, -march=native
, -mtune=native
and the CPU is checked for support of SSE3, SSE4, AVX and AX2.
You can install from PyPi with these optimisations enabled using:
pip install mmu --no-binary mmu
If you are installing from source and want to disable these, e.g. when compiling for usage on a different architecture use:
CMAKE_ARGS="-DMMU_ENABLE_ARCH_FLAGS=OFF" pip install mmu --no-binary mmu
Multithreading¶
The extension of mmu
has extensive multithreading support through OpenMP.
If you install the package from source multithreading will be enabled automatically if OpenMP is found.
You can either explicitly enable OpenMP, which will now raise an exception if it cannot be found:
CMAKE_ARGS="-DMMU_ENABLE_OPENMP=ON" pip install mmu --no-binary mmu
# or if you want en
or explicitly disable it:
CMAKE_ARGS="-DMMU_DISABLE_OPEMP=ON" pip install mmu --no-binary mmu