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".
  

This document describes RAPP version 0.7. See the project home-page at http://savannah.nongnu.org/projects/rapp/ for newer versions and updated information.

Design Overview

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.

Figure 1: Design Overview.

Tuning

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:

Contents

The following sections describe the contents of RAPP in more detail.

Next section: API Layer


Generated on 4 May 2011 for RAPP Compute by  doxygen 1.6.1