Welcome to the Intel® Software Dispatch Subscription Program

High performance image processing and visualization in .NET client applications: Intel Integrated Performance Primitives (IPP)
Image Processing and Digital Signal Processing in Real Time: The high performance of modern client machines means that substantial amounts of image processing can be performed on the client side, enabling advanced data visualization and analysis. Intel's IPP software can greatly increase client capabilities by providing highly-optimized primitives that exploit the parallelism available from Streaming SIMD Extensions in the Intel Architecture.

by Ian Griffiths and Chris Sells, consultants. Intel Corp.

Not so many years ago, serious image processing meant using highly specialized hardware when same-day service was required. However, microprocessor manufacturers have consistently delivered exponential performance improvements for so long that even relatively modest client systems can now perform non-trivial image manipulation very quickly. These client capabilities were especially aided by the introduction of Streaming SIMD (Single Instruction Multiple Data) Extensions to Intel® processors a few years ago, along with Intel's highly-optimized libraries for exploiting the technology. This article shows how to take advantage of these libraries in .NET client applications.

Intel Integrated Performance Primitives (IPP)
The SIMD instructions at the heart of Intel's MMX™ technology and Streaming SIMD Extensions enable significant parallelism in certain kinds of computation. They are particularly well suited to image processing. However, most compilers do not generate code that exploits this technology effectively. Since developers do not usually want to write assembly language to exploit these features directly, Intel supplies a set of libraries called the Integrated Performance Primitives—highly optimized functions for exploiting the full potential of the SIMD features of the Intel Architecture.

The IPP libraries also support the Intel Itanium® architecture. The Itanium processor is not yet supported under .NET, but when it is, your image processing applications will be well placed to exploit the processor's potential.

The IPP software provides an extremely wide range of functionality, broken down into three broad application areas. Two of these, Signal Processing and Small Matrices support, are beyond the scope of this article. Here we will focus on IPPI, the Imaging part of IPP. It provides support for basic mathematical operations, composition, color conversion, threshold operations, filtering, FFT, DCT, statistical processing, geometric transformations, wavelet operations, and computer vision utilities, as well as JPEG codec functions, and decoder operations for H.263 and MPEG-4.

The actual performance benefits of using IPP depend on many factors, but to provide a rough idea of what to expect, we performed a test on an 850 MHz Mobile Intel Pentium® III — M processor-based system. Scaling a 2000x3000 pixel 24bpp image to two-thirds of its original size using cubic interpolation was approximately three times faster using IPPI than using GDI+. Scaling it to one-tenth of its original size was about six times faster. (The test compared the ippiResize function using the IPPI_INTER_CUBIC interpolation mode against the GDI+ Graphics.DrawImage function using InterpolationMode.BiCubic.)

Subscribers who liked this article also read:
Enterprise Java performance: best practices
by Kingsum Chow, Ricardo Morin, Kumar Shiv, Software and Solutions Gro...

If you're interested in this topic, these articles may be helpful:

Accelerating .NET applications with the Intel VTune Performance Analyzer 6.1
by Alan Zeichick, The Intel VTune Performance Analyzer is more than...
Developing for performance in an agile manner
by Larry O'Brien, author. Intel Corp. Agile processes, exemplified ...
The pillars of application quality: security, functionality, and performance testing
from SPI Dynamics Inc. As enterprises put more essential daily busi...
Utilizing thread pools in performance-critical applications
by Blake Thompson, application engineer, Intel Corp. When using ...
Threading Games for High Performance on Intel® Processors
The evolution of the multi-threaded processor design is the trend for ...

Related Jobs:

R&D Project Lead - CA - Santa Clara - Synaptics
R&D Project Lead Location: Santa Clara, CA Department: R & D Sy...
Technical Director #1204 - MD - Gaithersburg - DRS Technologies, Inc.
DRS Electronic Systems, Inc. (ESI) is seeking a Technical Director. T...
Senior DSP SW/Systems Engineer #255459 - CA - San Jose - Formalized Design
Assignment Information Project Location: San Jose, CA Desired S...
S/W Engineer #13 - CA - Milpitas - Sigma Designs, Inc.
Description of duties and responsibilities: Responsible for the ana...
Software Development Engineer #145500 - WA - Redmond - Microsoft Corporation
We are looking for a highly motivated individual with strong program...
Technical Sales Specialist #3039 - IL - Chicago - Electronics For Imaging,Inc.
EFI is the world leader in digital imaging and print management solu...
Software Development Engineer #145501 - WA - Redmond - Microsoft Corporation
Do you want to be at the forefront of revolution that is happening in ...
Software Development Engineer #141536 - WA - Redmond - Microsoft Corporation
We are currently building the next great embedded platform at Microsof...
R&D Engineer, Sr II #5888 - CA - Mountain View - Synopsys, Inc.
US01-Mountain View - R&D Engineering ----------------------------...
Software Development Engineer #146335 - WA - Redmond - Microsoft Corporation
Do you want to be at the forefront of revolution that is happening in ...