Performance Obstacles for Threading: How do they affect OpenMP code?
What is Multi-threading in Multithreaded Client Server Application Search Engine Games: Now that multi-core processors are becoming mainstream, developers need to thread their code so it will run in parallel. OpenMP can provide a useful way to thread an application. But what should you know about your threaded code’s performance, and what does that mean when using OpenMP? In an earlier paper, we discovered that all threading methods have a consistent startup cost, but that OpenMP has some performance advantages over typical Windows threading, due to its use of thread pooling.

Why thread, and what does that have to do with performance?

You might thread your application for three different reasons. Each requires different measurements of performance.

  1. Doing the same work faster:
    If we have a fixed application workload (e.g., applying an effect to a still photo), we thread to get the work done faster. When measuring this code, we’ll record the execution times and the speedup gained by threading.


  2. Doing more work:
    If an application is extended to do more of the same workload (e.g., updating a larger buffer of pixels) or to add different work to the workload (e.g., adding particle effects to a game pipeline), then we thread to get more work through the application. We usually measure this as throughput. To measure this code, we’ll want to measure throughput, which is the “volume” of work measured against overall execution time.


  3. Offsetting the time taken by slow operations:
    If an application has long operations like file loads, then we thread to do these operations in advance, so the results are available as soon as they're needed. There are several ways to measure this code, but the main measure is a qualitative one; are there any user-perceived delays from these operations? Depending on your workload, this may or may not be easy to measure. Many applications (especially games) are already using threading (and some other technologies, like asynchronous disk I/O) to offset the time taken by slow operations.

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

Creating high-performance embedded applications through compiler optimizations
from Intel Corp. The role of the compiler in application developmen...
J2EE performance optimization, part 3 - design of experiments for performance tuning
by Kingsum Chow, Ph.D., senior performance architect, Managed Runtime ...
Rational Performance Tester demo
IBM Rational Performance Tester is a performance and load testing so...
De-Mystifying Software Performance Optimization
by Paul Del Vecchio, senior performance analyst, Software and Solu...
Developing your site for performance: principles and techniques of cost-effective Web site acceleration, part 3
Developing your site for performance: principles and techniques of cos...

Related Jobs:

Associate Software Engineer - CA - Santa Clara - Willow Technology, Inc.
We are looking for a software engineer with tremendous potential for ...
Senior Consultant #151594 - WA - Bellevue - Microsoft Corporation
This position requires a mix of advanced technology and strategic busi...
Senior Architect- Architecture and Engineering Group #16393 - US - New York - Bloomberg L.P.
DESCRIPTION: Bloomberg's Research & Technology Services team in R&D ...
Support Professional #150553 - WA - Issaquah - Microsoft Corporation
Microsoft Developer Support SharePoint Portal Server (Developer) Hiri...
Software Tester QA / Technical Support - Canada - Burnaby - Logical Software Corporation
We are looking for one smart multi-talent person who is familiar with ...
Loadrunner performance Tester #2590297 - NH - Nashua - Ajilon Consulting
Title : Loadrunner performance Tester Posted : 01-20-2006 ...
Senior Software Engineer - CA - Palo Alto - MailFrontier, Inc.
Join high-caliber software engineering team developing MailFrontier ap...
Sr. Software Engineer #058175 - TX - Austin - Symantec Corporation
Job Requisition # : 058175 Job Title : Sr. Software Engineer Locat...
Software Engineer #100-19 - CA - Palo Alto - MailFrontier, Inc.
Join high-caliber software engineering team developing MailFrontier ap...
S/W Engineer #13 - CA - Milpitas - Sigma Designs, Inc.
Description of duties and responsibilities: Responsible for the ana...