|qp| can be downloaded on GitHub as an archive or as a git repository.
git clone https://github.com/QuantumPackage/qp2
Before anything, go into your :file:`quantum_package` directory and run
./configure
This script will create the :file:`quantum_package.rc` bash script, which sets all the environment variables required for the normal operation of |qp|. It will also initialize the git submodules that are required, and tell you which external dependencies are missing and need to be installed. The required dependencies are located in the external/qp2-dependencies directory, such that once |qp| is configured the internet connection is not needed any more.
When all dependencies have been installed, (the :command:`configure` will inform you what is missing) source the :file:`quantum_package.rc` in order to load all environment variables and compile |QP|.
Now all the requirements are met, you can compile the programs using
make
conda env create -f qp2.yml

- Linux OS
- Fortran compiler : GNU Fortran, Intel Fortran or IBM XL Fortran
- `GNU make`_
- `Autoconf`_
- `Python`_ > 3.7
- |IRPF90| : Fortran code generator
- |EZFIO| : Easy Fortran Input/Output library generator
- |BLAS| and |LAPACK|
- Zlib
- `GNU Patch`_
- |ZeroMQ| : networking library
- GMP : Gnu Multiple Precision Arithmetic Library
- |OCaml| compiler with |OPAM| package manager
- |Ninja| : a parallel build system
- |pkg-config| : a tool which returns information about installed libraries
When all the dependencies have been installed, go into the :file:`config` directory, and copy the configuration file that corresponds to your architecture. Modify it if needed, and run :command:`configure` with :option:`configure -c`.
cp ./config/gfortran.example config/gfortran_avx.cfg
./configure -c config/gfortran_avx.cfg
Note
The popcnt
instruction accelerates a lot the programs, so the
SSE4.2, AVX or AVX2 instruction sets should be enabled in the
configuration file if possible.
Using the :command:`configure` executable
The :command:`configure` executable can help you in installing the minimal dependencies you will need to compile the |QP|. The command is to be used as follows:
./configure -i <package>
The following packages are supported by the :command:`configure` installer:
- ninja
- zeromq
- f77zmq
- gmp
- ocaml (\approx 5 minutes)
- docopt
- resultsFile
- bats
- zlib
Example:
./configure -i ninja
If the :command:`configure` executable fails to install a specific dependency
If the :command:`configure` executable does not succeed in installing a specific dependency, you should try to install the dependency on your system by yourself.
Before doing anything below, try to install the packages with your package manager (:command:`apt`, :command:`yum`, etc).
Ninja is a build system (like GNU make), with a focus on speed.
- Download the latest binary version of Ninja here : https://github.com/ninja-build/ninja/releases/latest
- Unzip the ninja-linux.zip file, and move the ninja binary into the :file:`${QP_ROOT}/bin` directory.
IRPF90 is a Fortran code generator for programming using the Implicit Reference to Parameters (IRP) method.
If you have pip for Python2, you can do
python3 -m pip install --user irpf90
Otherwise,
- Download the latest version of IRPF90 here : https://gitlab.com/scemama/irpf90/-/archive/v1.7.2/irpf90-v1.7.2.tar.gz and move the downloaded archive in the :file:`${QP_ROOT}/external` directory
- Extract the archive and go into the :file:`irpf90-*` directory to run :command:`make`
Note
The :envvar:`IRPF90_PATH` variable may need to be updated in the configuration file :file:`${QP_ROOT}/etc/irpf90.rc`.
ZeroMQ is a high-performance asynchronous messaging library.
- Download the latest stable version of ZeroMQ here : https://github.com/zeromq/libzmq/releases/latest and move the downloaded archive in the :file:`${QP_ROOT}/external` directory
- Extract the archive, go into the :file:`zeromq-*` directory and run the following commands
./configure --prefix="${QP_ROOT}" --without-libsodium
make
make install
- Download the Fortran binding here : https://github.com/zeromq/f77_zmq/releases/latest and move the downloaded archive in the :file:`${QP_ROOT}/external` directory
- Extract the archive, go into the :file:`f77_zmq-*` directory and run the following commands
export ZMQ_H=${QP_ROOT}/include/zmq.h
make
cp libf77zmq.a ${QP_ROOT}/lib
cp libf77zmq.so ${QP_ROOT}/lib
- Copy the :file:`f77_zmq_free.h` file in the
ZMQ
module as follows:
cp f77_zmq_free.h ${QP_ROOT}/src/zmq/f77_zmq.h
Zlib is the compression library used by gzip.
- Download the latest version of Zlib here: https://www.zlib.net/zlib-1.2.11.tar.gz and move it in the :file:`${QP_ROOT}/external` directory
- Extract the archive, go into the :file:`zlib-*` directory and run the following commands
./configure --prefix=${QP_ROOT}
make
make install
With Debian or Ubuntu, you can use
sudo apt install zlib1g-dev
GMP is the GNU Multiple Precision Arithmetic Library.
- Download the latest version of gmp here: ftp://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2 and move it in the :file:`${QP_ROOT}/external` directory
- Extract the archive, go into the :file:`gmp-*` directory and run the following commands
./configure --prefix=${QP_ROOT}
make
make install
With Debian or Ubuntu, you can use
sudo apt install libgmp-dev
OCaml is a general purpose programming language with an emphasis on expressiveness and safety.
The following packages are required (Debian or Ubuntu):
sudo apt install libncurses5-dev pkg-config libgmp3-dev m4
Download the installer of the OPAM package manager here : https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh and move it in the :file:`${QP_ROOT}/external` directory
If you use OCaml only with |qp|, you can install the OPAM directory containing the compiler and all the installed libraries in the :file:`${QP_ROOT}/external` directory as
export OPAMROOT=${QP_ROOT}/external/opam
Run the installer
echo ${QP_ROOT}/bin ${QP_ROOT}/external/opam_installer.sh --no-backup --fresh
The :command:`opam` command can be installed in the :file:`${QP_ROOT}/bin` directory. To do this, take the output of
echo ${QP_ROOT}/bin
and use it as an answer to where :command:`opam` should be installed.Install the OCaml compiler
opam init --comp=4.11.1 eval `${QP_ROOT}/bin/opam env`
If the installation fails because of bwrap, you can initialize opam using:
opam init --disable-sandboxing --comp=4.11.1 eval `${QP_ROOT}/bin/opam env`
Install the required external OCaml libraries
opam install ocamlbuild cryptokit zmq sexplib ppx_sexp_conv ppx_deriving getopt
Docopt is a Python package defining a command-line interface description language.
If you have pip for Python3, you can do
python3 -m pip install --user docopt
Otherwise,
- Download the archive here : https://github.com/docopt/docopt/releases/tag/0.6.2
- Extract the archive
- Copy :file:`docopt-0.6.2/docopt.py` in the :file:`${QP_ROOT}/scripts` directory
resultsFile is a Python package to extract data from output files of quantum chemistry codes.
If you have pip for Python3, you can do
python3 -m pip install --user resultsFile