Installation#
The detailed installation processes for different environments are described below. The easiest installation with a good computation performance is achieved by using the phono3py conda package. Installation of phonopy before the installation of phono3py is required. See how to install phonopy at https://phonopy.github.io/phonopy/install.html. Phono3py relies on phonopy, so please use the latest release of phonopy when installing phono3py.
Installation using conda#
Using conda is the easiest way for installation of phono3py for linux and macOS. These packages are made and maintained by Jan Janssen. The installation is simply done by:
% conda install -c conda-forge phono3py
All dependent packages should be installed.
Installation from source code#
When installing phono3py from the source code, a few libraries are required
before running pip install
.
Note that at version 3.3.0, the build system of phono3py was modernized.
Nanobind, cmake, and scikit-build-core are used for the building. The receipt is
written in CMakeLists.txt
and pyproject.toml
. The old setup.py
was
removed.
If phono3py is compiled with a special compiler or special options, manual
modification of CMakeLists.txt
may be needed.
Linear algebra library: BLAS, LAPACK, and LAPACKE
OpenMP library: For the multithreding support.
These packages may be installed by the package manager of OS (e.g. apt
) or
conda environment. Automatic search of required libraries and flags that are
already on the system is performed by cmake.
Building with automatic search of library configurations by cmake#
With installed cmake and required libraries on the system, cmake tries to find libraries to be linked and the compiler flags that are required during the build. This phono3py build can be launched by
% pip install -e . -vvv
See an example at Installation instruction of latest development version of phono3py. In the standard output, flags and libraries found by cmake are shown. Please carefully check if those configurations are expected ones or not.
Building without linking LAPACKE#
Experimental
To compile phono3py without linking LAPACKE in C, use the following command:
% BUILD_WITHOUT_LAPACKE=ON pip install -e . -vvv
When this option is enabled, linking to BLAS and LAPACKE libraries is not required, so installing these libraries for C compilation may not be necessary. However, since numpy and scipy rely on BLAS and LAPACK libraries, their runtime versions are still required.
Installation instruction of latest development version of phono3py#
When using conda, PYTHONPATH
should not be set if possible because potentially
wrong python libraries can be imported.
Download miniforge
Miniforge is downloaded at conda-forge/miniforge. The detailed installation instruction is found in the same page. If usual conda or miniconda is used, the following
~/.condarc
setting is recommended:channel_priority: strict channels: - conda-forge
Initialization of conda and setup of conda environment
% conda init <your_shell>
<your_shell>
is oftenbash
but may be something else. It is important that after runningconda init
, your shell is needed to be closed and restarted. See more information byconda init --help
.Then conda allows to make conda installation isolated by using conda’s virtual environment.
% conda create -n phono3py python % conda activate phono3py
Install necessary conda packages for phono3py
For x86-64 system:
% conda install numpy scipy h5py pyyaml matplotlib-base c-compiler cxx-compiler cmake spglib
Unless Building without linking LAPACKE, the following packages will be necessary to compile phono3py:
% conda install "libblas=*=*mkl" mkl-include
A libblas library can be chosen among
[openblas, mkl, blis, netlib]
. If specific one is expected, it is installed by (e.g. openblas)% conda install "libblas=*=*openblas"
For macOS ARM64 system:
% conda install numpy scipy h5py pyyaml matplotlib-base c-compiler cxx-compiler spglib cmake
Unless Building without linking LAPACKE, the following package will be necessary to compile phono3py:
% conda install openblas
The latest phonopy and phono3py are obtained from github, and they are compiled and installed by:
% mkdir dev % cd dev % git clone https://github.com/phonopy/phonopy.git % git clone https://github.com/phonopy/phono3py.git % cd phonopy % pip install -e . -vvv % cd ../phono3py % pip install . -vvv
Dependent libraries#
OpenMP#
GCC on Ubuntu#
With system provided gcc, libgomp1
may be necessary to enable OpenMP
multithreading support. This library is probably installed already in your
system. If you don’t have it and you use Ubuntu linux, it is installed by:
% sudo apt-get install libgomp1
LAPACKE#
LAPACK library is used in a few parts of the code to diagonalize matrices. LAPACKE is the C-wrapper of LAPACK and LAPACK relies on BLAS. Both single-thread or multithread BLAS can be used in phono3py. In the following, multiple different ways of installation of LAPACKE are explained.
OpenBLAS provided by conda#
The installation of LAPACKE is easy by conda. It is:
% conda install -c conda-forge openblas
Netlib LAPACKE provided by Ubuntu package manager (with single-thread BLAS)#
LAPACKE (http://www.netlib.org/lapack/lapacke.html) can be installed from the
Ubuntu package manager (liblapacke
and liblapacke-dev
):
% sudo apt-get install liblapack-dev liblapacke-dev
Using HDF5 files on NFS mounted file system#
If you are using HDF5 files on an NFS-mounted file system, you might need to disable file locking. This can be done by setting the following environment variable:
export HDF5_USE_FILE_LOCKING=FALSE
Trouble shooting#
Phonopy version should be the latest to use the latest phono3py.
There are other pitfalls, see https://phonopy.github.io/phonopy/install.html#trouble-shooting.