Skip to content

mit-gfx/recfilter

Repository files navigation

Domain specific language for recursive filters

This a domain-specific language based on Halide that allows easy implementation of recursive or IIR filters for n-dimensional data.

Requirements

  • Ubuntu 14.04, Fedora 20 and Mac OSX
  • our spiked version of Halide
    • included as submodule, it should download and build automatically upon running make
    • uses NVIDIA's nvvm backend for CUDA ptx generation rather than the open source ptx backend
    • other minor modifications
  • Halide requirements: llvm 3.4, clang 3.4 (see Halide building instructions)
  • NVIDIA CUDA toolkit 7 and above (version 6.0 or 6.5 will not suffice)

The makefile in the base directory should build everything and place the executables in bin.

Directory structure

$(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)

See also:

TODO list:

  • Allow initializing 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).
  • Provide better interoperability between Halide::Var and RecFilter::RecFilterDim.
  • Provide better semantics for color images, color channels must be specified as a Halide::Tuple e.g. R(x,y) = Tuple(red,green,blur) which is not intuitive.
  • Allow support for tiling of RecFilter which do not have any scans, currently this is done via a non-intuitive scheduling command.
  • Change the RecFilter::compute_at interface to something cleaner for merging a recursive filter with a downstream operation.

Releases

No releases published

Packages

No packages published

Languages