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".
This document describes RAPP version 0.8. See the project home-page at http://savannah.nongnu.org/projects/rapp/ for newer versions and updated information.
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:
The following sections describe the contents of RAPP in more detail.