Skip to content

Latest commit

 

History

History
356 lines (211 loc) · 8.37 KB

INSTALL.rst

File metadata and controls

356 lines (211 loc) · 8.37 KB

Installation

|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

Installation of dependencies via a Conda environment

conda env create -f qp2.yml



Requirements

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.

Help for installing external dependencies

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

Ninja is a build system (like GNU make), with a focus on speed.

IRPF90

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,

Note

The :envvar:`IRPF90_PATH` variable may need to be updated in the configuration file :file:`${QP_ROOT}/etc/irpf90.rc`.

ZeroMQ and its Fortran binding

ZeroMQ is a high-performance asynchronous messaging library.

./configure --prefix="${QP_ROOT}" --without-libsodium
make
make install
export ZMQ_H=${QP_ROOT}/include/zmq.h
make
cp libf77zmq.a ${QP_ROOT}/lib
cp libf77zmq.so ${QP_ROOT}/lib
cp f77_zmq_free.h ${QP_ROOT}/src/zmq/f77_zmq.h

Zlib

Zlib is the compression library used by gzip.

./configure --prefix=${QP_ROOT}
make
make install

With Debian or Ubuntu, you can use

sudo apt install zlib1g-dev

GMP

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

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

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,

resultsFile

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