Channels ▼


Inside the VSIPL++ API

Source Code Accompanies This Article. Download It Now.

Mark is the founder and Chief Sourcerer of CodeSourcery. He is also the Release Manager for the GNU Compiler Collection.

VSIPL++ is a C++ API specification for high-performance signal- and image-processing applications. You can use VSIPL++ for radar applications, software-defined radios, or similar systems. VSIPL++ programs perform operations (such as signal-processing or linear algebra operations) on vectors, matrices, and tensors.

A unique feature of the VSIPL++ API is that it includes direct support for parallel applications. In this article, I show how you build a simple parallel signal-processing application with just a few lines of code. Even if you are not interested in this specific application area, you will find VSIPL++ interesting as an example of a high-performance API for parallel numerical computing.

The VSIPL++ API was defined by the VSIPL Forum (, a group of industrial and governmental partners, with sponsorship from the U.S. Department of Defense. The API design goals were "the three Ps"—productivity, performance, and portability. In other words, it should be easy to write programs, the programs should run fast, and it should be possible to move programs from one system to another.

Sourcery VSIPL++ ( is CodeSourcery's optimized implementation of the VSIPL++ API. Sourcery VSIPL++ is available at no charge under the GNU Public License (GPL) and under a traditional software license for a fee. Because VSIPL++ is an open API, other people are free to develop competing implementations of VSIPL++. The examples I present here do not use any special features of Sourcery VSIPL++, and should work with any implementation of the API.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.