This a domain-specific language based on Halide that allows easy implementation of recursive or IIR filters for n-dimensional data.
make
The makefile in the base directory should build everything and place the executables in bin
.
$(RECFILTER_DIR)
|- halide/ (Halide submodule - cloned automatically on running make)
|- lib/ (RecFilter library)
|- apps/ (benchmarking applications)
|- tests/ (tests to check the correctness of tiling algebra)
|- demos/ (application demos)
|- gpu/ (CUDA benchmarks from NVIDIA toolkit and Thrust)
RecFilter
from another RecFilter
directly, i.e.
allow R(x,y) = S(x,y)
, currently this is done using R(x,y) = S.as_func()(x,y)
.Halide::Var
and RecFilter::RecFilterDim
.Halide::Tuple
e.g. R(x,y) = Tuple(red,green,blur)
which is not intuitive.RecFilter
which do not have any scans, currently
this is done via a non-intuitive scheduling command.RecFilter::compute_at
interface to something cleaner for merging
a recursive filter with a downstream operation.