Parallel computing for imaging applications
Imaging applications can take advantage of Hyper-Threading technology, reaping substantial performance benefits.

from Intel Corp.

Desktop developers, it's time to thread your apps. Today's operating systems are engineered to make best use of computer resources, and Hyper-Threading Technology (HT technology) better utilizes those resources. This article illustrates how imaging applications can take advantage of this groundbreaking technology, reaping substantial performance benefits. The code samples discussed in this paper show an18–20% performance gain.

Threading a serial application
To reap the benefits of HT technology, you need to thread your applications correctly. Choose the most effective threading method to get off to a fast start. To do this, you need to describe your application in terms of two threading or parallel programming models: data parallelism (data decomposition) and task-level parallelism (functional decomposition).

Data decomposition
Data decomposition or data parallelism is a programming model that implies creation of multiple threads to independently process smaller pieces of data. This implies that the same independent operation is applied repeatedly to different data. Compute-intensive tasks with a large degree of independence like compute-intensive loops in applications are good candidates for data decomposition.

A good decomposition requires that the threads not conflict with each other and operate with completely unrelated data. Work to avoid multiple threads accessing the same data at the same time and computations that depend on each other. Good decomposition may require a code rewrite to avoid thread conflicts.

Functional decomposition
Functional decomposition or task-level parallelism is a programming model that implies creation of multiple threads, mapped to process independent functional tasks that execute asynchronously. Again when running multiple threads it's important to minimize thread conflicts.

Parallelizing imaging applications
In the case of imaging applications, it's pretty easy to find compute-intensive tasks to parallelize. Image processing algorithms consist of pixel operations that are often independent. Hence their computations can be done in parallel.

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

Multi-Threading for Experts: Inside a Parallel Application
by Sergey N. Zheltov, project manager, and Stanislav V. Bratanov, soft...
Parallelism Drives Performance: A Perspective on the Future of Processing
In this interview, noted Intel Fellow David Kuck, who has been working...
Tutorial: Introduction to Hyper-Threading Technology
Course Description and Objectives Description: This course describe...
Georgia Tech Takes a Parallel Path
Communicating the concepts and possibilities of multi-core processing ...
High performance Linux clustering, part 2: build a working cluster - writing parallel programs and configuring your system
by Aditya Narayan, founder, QCD Microsystems. First published by IBM a...

Related Jobs:

Sr. Software Architect #551851 - CO - Louisville - Sun Microsystems
Title: Sr. Software Architect Location: Colorado LOUISVILLE, CO ...
Program Manager #143341 - WA - Redmond - Microsoft Corporation
Are you looking for a great opportunity to apply process discipline an...
Principal Solution Architects -(CSP) - TX - Dallas - Flagstone Inc.
Our client is a Billion dollar plus global corporation working with Gl...
MS SQL Server Developer / ETL Specialist #2514528 - PA - Philadelphia - Ajilon Consulting
Title : MS SQL Server Developer / ETL Specialist Posted : 12-0...
.NET Developer/Architect #2043100 - OH - Independence - Ajilon Consulting
Title : .NET Developer/Architect Posted : 05-25-2005 Conta...
MS SQL Server DBA #2460274 - PA - Philadelphia - Ajilon
Description : With over 50 offices in North America, Ajilon Consulti...
QA Engineer 2-ProdDev #IRC280786 - MN - Minneapolis - Oracle
The Retail QA department works in all phases of product development, ...
Software Engineer 2 #53917 - PA - Malvern - Siemens AG
Software Engineer 2 Company Siemens Medical Solutions USA, Inc. ...
Software Engineer/ i Series #54667 - UT - Salt Lake City - Siemens AG
Software Engineer/ i Series Company Siemens Medical Solutions USA, ...
System Performance IPT Lead #S04-3081 - AZ - Scottsdale - General Dynamics C4 Systems
Job Title System Performance IPT Lead Location Scottsdale AZ Reloc...