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:
Monte Carlo simulation using various industry library solutions
by Sergey A. Maidanov. Intel Corp. Monte Carlo simulation is one of...
Simulation without a simulator
by Sergey N. Zheltov, project manager, and Stanislav V. Bratanov, soft...
Introduction to remote program logic under Python
by David Mertz, PhD, writer and software developer. Intel Corp. W...

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

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

Related Jobs:

Software Development Engineer #145458 - WA - Redmond - Microsoft Corporation
Do you want to be at the forefront of revolution that is happening in ...
R&D Project Lead - CA - Santa Clara - Synaptics
R&D Project Lead Location: Santa Clara, CA Department: R & D Sy...
Software Engineer - CA - Milpitas - Sigma Designs, Inc.
Description of duties and responsibilities: Design and implement ad...
Data Analyst 1/TS/SCI #5573 - OH - Dayton - CACI International Inc
Requirements Under close supervision, Analyst assists in applying...
Sr. CAE II (ESL) #5643 - CA - Mountain View - Synopsys, Inc.
US01-Mountain View - Corp Applications Engineering --------------...
Software Development Engineer #145501 - WA - Redmond - Microsoft Corporation
Do you want to be at the forefront of revolution that is happening in ...
Software Test Engineers #932 - MD - Gaithersburg - DRS Technologies, Inc.
DRS Electronic Systems, Inc. (ESI) is seeking Senior Software System E...
Senior Software System Engineers #930 - MD - Gaithersburg - DRS Technologies, Inc.
DRS Electronic Systems, Inc. (ESI) is seeking Senior Software System E...
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 #146335 - WA - Redmond - Microsoft Corporation
Do you want to be at the forefront of revolution that is happening in ...