RAPP Developer's Manual

0.7

Copyright (C) 2010, Axis Communications AB, LUND, SWEDEN
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".

The RAPP library is divided into two distinct parts – the API layer and the Compute layer. The API layer handles argument validation and error handling, and then call the low-level functions in the Compute layer, where the actual processing takes place.

The Compute layer can implement a function in two versions, a generic version and a vector version. The vector version uses a platform-specific implementation of the Vector Abstraction Layer (VAL). This way it is possible to support a broad range of SIMD architectures with a minimal amount of development, maintenance and debugging work.

Implementations are parameterized by a few compile-time constants. The fastest implementations and parameters are selected automatically by a tuning process when the library is built. RAPP is tuned on the following platforms: