https://github.com/mortvest/hastl
HaSTL: A fast GPU implementation of STL decomposition with missing values and support for both CUDA and OpenCL
https://github.com/mortvest/hastl
cuda forecasting gpu opencl time-series time-series-analysis
Last synced: over 1 year ago
JSON representation
HaSTL: A fast GPU implementation of STL decomposition with missing values and support for both CUDA and OpenCL
- Host: GitHub
- URL: https://github.com/mortvest/hastl
- Owner: mortvest
- License: mit
- Created: 2021-07-06T13:43:56.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2023-09-11T19:16:18.000Z (almost 3 years ago)
- Last Synced: 2025-02-03T17:59:04.989Z (over 1 year ago)
- Topics: cuda, forecasting, gpu, opencl, time-series, time-series-analysis
- Language: Python
- Homepage:
- Size: 40.3 MB
- Stars: 11
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
HaSTL
=================================================================
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.
Requirements
------------
You would need a working OpenCL or CUDA installation/header files, C compiler and these Python packages:
- futhark-ffi==0.14.2
- wheel
Installation
------------
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 .
Usage
-----
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=..)
References
----------
[1] Cleveland, Robert B., et al. "STL: A seasonal-trend decomposition." J. Off. Stat 6.1 (1990): 3-73.