Installation

There are various ways to get started with GstLAL:

Installing the latest release

Conda installation

Install conda using the miniconda installer, then run:

$ conda install -c conda-forge gstlal-inspiral

In order to check your installation, you can use:

$ conda list gstlal-inspiral  # to check which version is installed
$ gstlal_play --help

Warning

These packages don’t make use of any math optimizations and is not currently recommended for production or larger-scale analyses.

IGWN distributions of GstLAL

If you are an IGWN member and have access to shared computing resources, up-to-date GstLAL libraries are available in the set of reference software environments maintained by the IGWN Computing and Software Working Group.

LIGO Data Grid (LDG)

GstLAL packages are installed and available by default on the LDG. You can start using the GstLAL library immediately:

$ gstlal_play --help

IGWN Conda Distribution

GstLAL is also available on the IGWN Conda Distribution in a variety of pre-packaged environments. For more information, see computing.docs.ligo.org/conda/.

Building from source

Building from source is required for development (bug fixes, new features, documentation improvements). You can check out the latest source of GstLAL from git:

$ git clone https://git.ligo.org/lscsoft/gstlal.git
$ cd gstlal

Building and installing from source follows the normal GNU build procedures involving:

  1. ./00init.sh

  2. ./configure

  3. make

  4. make install

Since GstLAL is a collection of packages, there is a required build order to install the packages:

  1. gstlal

  2. gstlal-ugly

  3. gstlal-burst / gstlal-inspiral (any order)

If you are building from source, you will also need to install all dependencies before building GstLAL, including:

  • fftw

  • gsl

  • gstreamer

  • lalsuite

  • ldas-tools-framecpp

  • numpy

  • pygobject

  • python-ligo-lw

  • scipy

These dependencies can be installed in various ways, including conda, your favorite package manager (apt/yum), or from source. We also provide containers that are suitable for development.

Singularity container

A development container is provided with all necessary dependencies to install GstLAL from source. Singularity also has extra features that make it possible to create writable containers, making it easy to get started with development:

$ singularity build --sandbox --fix-perms gstlal-dev docker://containers.ligo.org/lscsoft/gstlal:master

This will pull a container from the container registry from the main branch and builds it in ‘sandbox’ mode into /gstlal-dev, which allows one to invoke it in writable mode once it’s built, and is needed to install software into the container. This may take a few minutes to set up compared to a normal pull.

Once that’s finished, you can enter the container in writable mode to install GstLAL from source:

$ singularity run --writable gstlal-dev
$ git clone https://git.ligo.org/lscsoft/gstlal.git
$ cd gstlal

Note

It’s possible to run into issues when adding bind mounts to a writable Singularity container depending on how Singularity is configured. This may cause the following error to occur:

$ singularity run --writable gstlal-dev
WARNING: By using --writable, Singularity can't create /cvmfs destination automatically without overlay or underlay
FATAL:   container creation failed: mount /cvmfs->/cvmfs error: while mounting /cvmfs: destination /cvmfs doesn't exist in container

In this case, one way to resolve this error is to add directories in the container for each of the bind mounts explicitly, e.g.,:

$ mkdir gstlal-dev/cvmfs
$ singularity run --writable -B /cvmfs gstlal-dev
Singularity>

Now you can follow the normal GNU build procedures to build and install GstLAL. It is also recommended to install GstLAL into the container’s /usr directory, done at the configure step, e.g.

$ ./configure --prefix /usr

Math-optimized Libraries

GstLAL relies heavily on Linear Algebra and FFT routines to drive various signal-processing components within the library. Being able to accelerate these math-heavy routines which rely on BLAS with MKL considerably improves performance and introduces significant speedups. The containers that are available via Docker and Singularity are linked against MKL to take advantage of these optimizations. There is no additional work needed from the user.

Work is ongoing to provide Conda packages to allow for similar optimizations.