HaSTL [ˈheɪstiɛl]: A fast GPU implementation of batched Seasonal and Trend decomposition using Loess (STL) [1] with missing values and support for both CUDA and OpenCL (C and multicore backends are also available). Loosely based on stlplus, a popular library for the R programming language. The GPU code is written in Futhark, a functional language that compiles to efficient parallel code.
You would need a working OpenCL or CUDA installation/header files, C compiler and these Python packages:
- futhark-ffi==0.14.2
- wheel
You may want to run the program in a Python virtual environment. Create it via:
python -m venv env
Then, activate the virtual environment via:
. env/bin/activate
Upgrade pip via:
pip install --upgrade pip
Then select the backends (choose from opencl, cuda, c and multicore) that you wish to build by setting the environment variable:
export HASTL_BACKENDS="opencl multicore c"
If no environmental variable is set, only the sequential c backend would be compiled.
The package can then be easily installed using pip. This will take a while, since we need to compile the shared libraries for your particular system, Python implementation and all selected backends:
pip install hastl
To install the package from the sources, first get the current stable release via:
git clone https://github.com/mortvest/hastl
Install the dependencies via:
pip install -r requirements.txt
Afterwards, you can install the package. This can also take a while:
python setup.py sdist bdist_wheel pip install .
Examples of HaSTL usage can be found in the examples/ direcotry. The simplest snippet should contain:
from hastl import STL stl = STL(backend=..) seasonal, trend, remainder = stl.fit(data, n_p=.., q_s=..)
[1] Cleveland, Robert B., et al. "STL: A seasonal-trend decomposition." J. Off. Stat 6.1 (1990): 3-73.