Installation

export prefix=DEST_DIRECTORY

If prefix environmental variable is not set (or empty), the default DEST_DIRECTORY is $HOME/qlat-build/default.

Optionally, you can also specify a temp directory for the installation procedure:

export temp_dir=TEMP_DIRECTORY

If temp_dir environmental variable is not set (or empty), the default TEMP_DIRECTORY is $prefix/temp. An efficient choice for TEMP_DIRECTORY can be /dev/shm/$(whoami)/temp.

Install on Ubuntu

sudo apt-get install -y python3-full
sudo apt-get install -y python3-dev python3-venv python3-wheel
sudo apt-get install -y git bzip2 autoconf unzip
sudo apt-get install -y libopenmpi-dev ninja-build patchelf
sudo apt-get install -y libeigen3-dev libgsl-dev libopenblas-dev
sudo apt-get install -y zlib1g-dev libssl-dev libmpfr-dev
sudo apt-get install -y gnuplot texlive-metapost poppler-utils
sudo apt-get install -y libfftw3-dev

Qlattice only

./build.sh
source DEST_DIRECTORY/setenv.sh

Qlattice and Grid/GPT

./scripts/download-core.sh
./build.sh default-gpt
source DEST_DIRECTORY/setenv.sh

Install on Mac

brew install llvm autoconf automake
brew install coreutils flock findutils pkg-config
brew install open-mpi ninja patchelf
brew install eigen gsl
brew install zlib openssl@3 mpfr
brew install gnuplot texlive poppler
brew install fftw

Qlattice only

./build.sh
source DEST_DIRECTORY/setenv.sh

Qlattice and Grid/GPT

./scripts/download-core.sh
./build.sh default-gpt
source DEST_DIRECTORY/setenv.sh

Install on UCONN HPC

First, download dependencies downloaded to the distfiles directory.

./scripts/download.sh

Note you may need to download on your local computer and copy the data to the server.

Run the build script:

./build.sh uconn
source DEST_DIRECTORY/setenv.sh

General instructions

The library itself is only composed of header files located in the qlat directory.

The major dependencies can be downloaded with

./scripts/download.sh

These dependencies will be downloaded to the distfiles directory.

There are scripts in the scripts directory used to install the dependencies.

To install, we first set the prefix environment variable to specify the target directory.

export prefix=DEST_DIRECTORY

If $prefix is not set, the default value in conf.sh is used, which is $HOME/qlat-build/default.

The build.sh will install everything into the $prefix directory by running all the scripts in the scripts directory. For example, the following command will install everything into DEST_DIRECTORY.

./build.sh

On some systems, one may need to specify the system type:

./build.sh TARGET

TARGET can be default, default-gpt, uconn, qcdserver, bnlknl, summit, … This script will call ./scripts/build.TARGET.sh to perform relevant builds.

The environment variables needed to use the library can be set with the following command:

source DEST_DIRECTORY/setenv.sh

There are few different scripts to build the Grid library. Choose one best suit the machine (or create a custom one).

After the first complete install, one can re-install individual components by running the specific script. For example, to just re-install the Qlattice header files and python library:

./scripts/qlat-utils.sh
./scripts/qlat.sh

It is also possible to build CPS, Grid, and GPT. For examples:

./scripts/qmp.sh
./scripts/qio.sh
./scripts/cps.sh
./scripts/qlat-cps.sh

./scripts/c-lime.sh
./scripts/grid-clehner.avx2.sh
./scripts/qlat-grid.sh

./scripts/gpt.sh

It may be convenient to create a symbolic link $HOME/qlat-build/default, which points to the actual directory DEST_DIRECTORY. The prefix environment variable can be empty if the symbolic link is created.

Custom installation

If there is no existing ./scripts/build.TARGET.sh for the machine. You may need to create a new one. Also, you may need to create a ./scripts/setenv.TARGET.sh script.

The purpose of the ./scripts/setenv.TARGET.sh is to create the DEST_DIRECTORY/setenv.sh scripts, which can be sourced to set the environmental variables. The DEST_DIRECTORY/setenv.sh scripts will be sourced automatically in all the other installation scripts (e.g. ./scripts/qlat.sh).

The ./scripts/qcore.sh script will create the following wrappers:

DEST_DIRECTORY/qcore/bin/CC.sh
DEST_DIRECTORY/qcore/bin/CXX.sh
DEST_DIRECTORY/qcore/bin/MPICC.sh
DEST_DIRECTORY/qcore/bin/MPICXX.sh

These wrappers will simply try to call the appropriate corresponding compiler.

The environment variables, CC, CXX, MPICC, MPICXX, affect most installation scripts in ./scripts. If these environment variables are empty, then the default setenv.sh will use qcore/setenv.sh to set them to use the wrappers created by ./scripts/qcore.sh. This behavior can be overridden by setting these environment variables to the desired non-empty value in ./scripts/setenv.TARGET.sh or ./scripts/build.TARGET.sh.

Once python3 is available, the compiler wrappers will support the --wrapper-remove-arg= option. One can set CFLAGS and/or CXXFLAGS with this option to remove some unwanted flags generated by the configure script.

Usage

The environment variables needed to use the library can be set with the following command:

source DEST_DIRECTORY/setenv.sh

There are example programs provided in the examples directory. Once the library is completed installed, one can run the following command to compile and run all the examples:

./scripts/qlat-examples-cpp.sh
./scripts/qlat-examples-py.sh
./scripts/qlat-examples-py-gpt.sh # require GPT
./scripts/qlat-examples-py-cps.sh # require CPS and qlat-cps
./scripts/qlat-examples-cpp-grid.sh # require Grid and qlat-grid