cgi-estonia-space / ALUs

GPU accelerated earth observation data processors
https://twitter.com/spacest372
GNU General Public License v3.0
24 stars 3 forks source link
earth-observation eo gpu gpu-computing nvidia nvidia-gpu sentinel-1 sentinel-2

ALUS

Collection of processing operators/routines defined by software - plural of ALU(Arithmetic Logic Unit)
or
ALU for Space/Surveillance etc.

A software project that targets to utilize Nvidia GPUs for processing earth observation data (faster).
Kickstart of this project was funded through ESA's EOEP programme
Current development is funded through ESA's GSTP programme

Developed by CGI Estonia.

Quick performance overview

For further comprehensive evaluation see Wiki

Out of the box usage

Verified releases can be downloaded from - https://github.com/cgi-estonia-space/ALUs/releases/ One can download docker image with all of the needed dependencies from dockerhub or simply docker pull cgialus/alus-devel

Executing

Each algorithm is a separate executable. Currently available ones are (more info and usage in parenthesis):

When building separately, these are located at <build_dir>/alus_package

Update PATH environment variable in order to execute everywhere:
export PATH=$PATH:/path/to/<alus_package>

See --help for specific arguments/parameters how to invoke processing. For more information see detailed explanation of Sentinel 1 processors' processing arguments.

Docker example

NVIDIA driver and NVIDIA Container Toolkit must be installed together with docker.

docker pull cgialus/alus-devel:latest
docker run -t -d --gpus all --name alus_container cgialus/alus-devel
docker exec -t alus_container mkdir /root/alus
docker cp <latest build tar archive> alus_container:/root/alus/
docker exec -t alus_container bash -c "tar -xzf /root/alus/*.tar.gz -C /root/alus/"
# Use docker cp to transfer all the input datasets, auxiliary data, then either
docker exec -t alus_container bash -c "cd /root/alus; ./alus-<alg> ...."
# Or connect to shell
docker exec -it alus_container /bin/bash
# Running coherence estimation routine example
./alus-coh -r S1A_IW_SLC__1SDV_20200724T034334_20200724T034401_033591_03E49D_96AA.SAFE \
-s S1A_IW_SLC__1SDV_20200805T034334_20200805T034401_033766_03E9F9_52F6.SAFE \
-o /tmp/ -p VV --orbit_dir <orbit files location> --sw IW1 --dem srtm_43_06.tif --dem srtm_44_06.tif
# Running calibration routine example
./alus-cal -i S1A_IW_SLC__1SDV_20180815T154813_20180815T154840_023259_028747_4563.SAFE \
-o /tmp/alus_S1A_IW_SLC__1SDV_20180815T154813_20180815T154840_023259_028747_4563_Calib_tc.tif \
--sw IW1 -p VV --type beta --dem srtm_42_01.tif

Dependencies

Setup of dependencies

Building

cmake . -Bbuild
cd build
make -j8

Jupyter Notebook

There is a Jupyter Notebook located at jupyter-notebook folder with a user-friendly interface and automated auxiliary file downloads. It can be used in conjunction with binaries to easily execute code. Read the instructions.

Minimum/Recommended requirements

For specific, check each processor's README.

Below are rough figures:

Contributing

Contribution guidelines

License

GNU GPLv3

Release notes

Binary downloads