Installation

The Quantum Package can be downloaded on GitHub as an archive or as a git repository.

git clone https://github.com/LCPQ/quantum_package

Before anything, go into your quantum_package directory and run

./configure

This script will create the quantum_package.rc bash script, which sets all the environment variables required for the normal operation of the Quantum Package.

Running this script will also tell you which external dependencies are missing and need to be installed.

When all dependencies have been installed, ( the configure will tell you) source the quantum_package.rc in order to load all environment variables and compile the Quantum Package.

Requirements

When all the dependencies have been installed, go into the config directory, and copy the configuration file that corresponds to your architecture. Modify it if needed, and run configure with configure -c.

cp ./config/gfortran.example config/gfortran.cfg
./configure -c config/gfortran.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 configure executable

The configure executable can help you in installing the minimal dependencies you will need to compile the Quantum Package. The command is to be used as follows:

./configure --install <package>

The following packages are supported by the configure installer:

  • ninja
  • irpf90
  • zeromq
  • f77zmq
  • ocaml ( \(\approx\) 10 minutes)
  • ezfio
  • docopt
  • resultsFile
  • bats

Example:

./configure -i ezfio

Note

When installing the ocaml package, you will be asked the location of where it should be installed. A safe option is to enter the path proposed by the Quantum Package:

QP>> Please install it here: /your_quantum_package_directory/bin

So just enter the proposition of the Quantum Package and press enter.

If the configure executable fails to install a specific dependency

If the configure executable does not succeed to install a specific dependency, there are some proposition of how to download and install the minimal dependencies to compile and use the Quantum Package

Before doing anything below, try to install the packages with your package manager (apt, 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.

Note

The IRPF90_PATH variable may need to be updated in the configuration file $QP_ROOT/etc/irpf90.rc.

ZeroMQ and its Fortran binding

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 $QP_ROOT/external directory
  • Extract the archive, go into the zeromq-* directory and run the following commands
./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
  • Copy the f77_zmq_free.h file in the ZMQ module as follows:
cp f77_zmq_free.h ${QP_ROOT}/src/ZMQ/f77_zmq.h

Zlib

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 $QP_ROOT/external directory
  • Extract the archive, go into the zlib-* directory and run the following commands
./configure --prefix=${QP_ROOT}
make
make install

OCaml

OCaml is a general purpose programming language with an emphasis on expressiveness and safety.

  • Download the installer of the OPAM package manager here : https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh and move it in the $QP_ROOT/external directory

  • If you use OCaml only with the Quantum Package, you can install the OPAM directory containing the compiler and all the installed libraries in the $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
    

    You the opam command can be installed in the $QP_ROOT/bin directory. To do this, take the output of echo ${QP_ROOT}/bin and use it as an answer to where opam should be installed.

  • Install the OCaml compiler

    opam init --disable-sandboxing --comp=4.07.0
    eval `${QP_ROOT}/bin/opam env`
    
  • Install the required external OCaml libraries

    opam install ocamlbuild cryptokit zmq core sexplib ppx_sexp_conv ppx_deriving getopt
    

EZFIO

EZFIO is the Easy Fortran Input/Output library generator.

Docopt

Docopt is a Python package defining a command-line interface description language.

If you have pip for Python2, you can do

pip2 install --user docopt

Otherwise,