HIPAcc

Heterogeneous Image Processing Acceleration


Features

Productivity

HIPAcc allows to describe image processing algorithms at a very high level. This allows fast prototyping of programs to be executed on GPU accelerators, reducing time-to-target significantly. Low-level details of the target language such as CUDA, OpenCL, or Renderscript are hidden from the programmer. Instead, the algorithms can be developed in a familiar C/C++ environment using a domain-specific language (DSL) for image processing. No target-specific code has to be written by programmer - this code is automatically generated and provided by the framework, respectively. This results in a up to 20 times more compact algorithm representation in the DSL compared to low-level CUDA, OpenCL, or Renderscript codes.

Flexibility

HIPAcc increases flexibility in software features as well as target platform support. It supports a variety of software features such as different boundary handling modes. Features are specified by the programmer in the DSL and optimized, corresponding implementations are automatically generated. Thereby, the algorithm description stays the same and is not touched.
Moreover, tailored software variants get generated for different target platforms from the same description. Currently, the Tesla and Fermi GPU architectures from NVIDIA as well as the Evergreen and Northern Island GPU architectures from AMD are supported.
The approach followed by the HIPAcc framework is extensible, so that support for new/future architectures can be easily added.

Portability

The support of different target platforms from the same algorithm description, increases portability. To support multiple target platforms, different code variants, or conditional code (using #ifdefs) are typically written. In contrast, HIPAcc generates target-specific code, optimized for the target architecture from the same algorithm description. This applies not only to target hardware support, but also to the language used to program accelerators: different back ends generate target code for CUDA, OpenCL, Renderscript, or plain C/C++. This breaks the vendor lock-in typically found in tightly coupled hardware/software developments.

Performance

Although algorithms are described at a very high level, the performance in terms of execution time is competitive compared to other image processing approaches. We showed that HIPAcc generates code that is faster than algorithms described in RapidMind, the CUDA back end of the widely used image processing library OpenCV, as well as the NVIDIA Performance Primitives (NPP) library.
HIPAcc can provide competitive performance, since it can optimize the program based on a) domain knowledge for the application domain of image processing, and b) target knowledge on how to map code to the target architecture. This reduced expressiveness allows for better optimizations and the employment of parallel programming patterns at a high abstraction level.

Open Source

The framework is open source and released under Simplified BSD License allowing the integration into scientific, educational, and commercial projects.