High Performance Embedded Computing
Software Initiative (HPEC-SI)

HPEC-SI Status

The High Performance Embedded Computing Software Initiative (HPEC-SI) is developing a parallel C++ library to address embedded signal processing. The initiative incorporates existing research results and extends the Vector Signal Image Processing Library (VSIPL). Fiscal year 2003 and 2004 results include:

  • Demonstrations: CIP (completed), AEGIS (underway), SBR (underway), DADS (initiated), MUDS (initiated)
  • C++ VSIPL++ specification (v1.0a) and code (v0.9)
  • parallel VSIPL++ specification in progress
  • high-performance parallel C++ VSIPL++ programs demonstrated.

HPEC-SI's VSIPL++ library will improve existing embedded software technology in three ways:

  1. Portability
    Open standards for the middleware VSIPL++ library will improve portability by a factor of three. Much existing embedded software is not portable, complicating development and maintenance as the underlying hardware changes. Several programs using VSIPL++ and VSIPL have demonstrated code can be ported with little or no code changes with no performance changes.
  2. Productivity
    Through extensive use of object-oriented and template-based technologies, VSIPL++ supports higher-level syntax, reducing kernel lengths by up to a factor of three. Several projects have indicated code is much easier to maintain and optimize using these higher-level concepts.
  3. Performance
    VSIPL++ has been carefully designed to ensure the full potential of the underlying hardware. VSIPL++ incorporates existing research technologies to permit the same program to be run on one or multiple processors. VSIPL++ implementations can incorporate expression-template technology to fusion loops together, yielding loops as fast as hand-coded code.

VSIPL++ development has been split into two parallel tracks: uniprocessor and multiprocessor execution.

  • The uniprocessor specification (v1.0a) will soon be available for public comment. An associated reference implementation (v0.9) will also be available.
  • The multiprocessor specification (v0.5) complements the uniprocessor specification. Since the differences between uniprocessor and multiprocessor programs is quite small, the multiprocessor version requires only about ten percent of the pages. An associated reference implementation is under development.