Prototyping with OpenMP
ACPI Multiprocessor PC Software Product Testing Debug Tutorial: OpenMP gives developers of multiprocessing and multithreaded applications on multiple platforms access to an exceptionally large number of tools for creating, testing, and debugging multithreaded applications.

by George Walsh, technical editor and writer. Intel Corp.

The intricacies of programming for multiple processors and platforms have always challenged programmers. However, in 1997, via the cooperation of Intel, Compaq, Hewlett-Packard, IBM, Kuck & Associates, Silicon Graphics and Sun Microsystems a new API, OpenMP, was created. According to the OpenMP Architecture Review Board, "The OpenMP Application Program Interface (API) supports multi-platform shared-memory parallel programming in C/C++ and Fortran on all architectures, including Unix platforms and Windows NT platforms. Jointly defined by a group of major computer hardware and software vendors, OpenMP is a portable, scalable model that gives shared-memory parallel programmers a simple and flexible interface for developing parallel applications for platforms ranging from the desktop to the supercomputer."

Since that time, OpenMP has allowed developers of multiprocessing and multithreaded applications on multiple platforms to enjoy access to an exceptionally large number of tools for creating, testing, and debugging multithreaded applications.

OpenMP, a Bird's Eye View
OpenMP is an application development tool designed to make programming threaded applications quicker, easier, and less error prone. Clay P. Breshears writes in his article Intel® Threading Tools and OpenMP: "OpenMP is a set of pragmas, API functions, and environment variables that enable you to incorporate threads into your applications at a relatively high-level. The OpenMP pragmas are used to denote regions in the code that can be run concurrently. An OpenMP compliant compiler transforms the code and inserts the proper function calls to execute these regions in parallel. In most cases, the serial logic of the original code can be preserved and is easily recovered by ignoring the OpenMP pragmas at compilation time."

A serial program can be transformed into a multi-threaded program using OpenMP, and a program developed using OpenMP can be recompiled as a serial application. This is a tremendous aid in debugging a program, allowing developers to determine if a given problem is related to the threading, or is based on something inherent in the code itself. OpenMP also alleviates the need to rewrite code for parallel processing when an application is ported to computer systems from multiple vendors. The API was developed to make it compatible with every known platform. Therefore, building an application completely with OpenMP reduces testing time because you need not maintain separate front ends to match proprietary language extensions.

Subscribers who liked this article also read:
Building from scratch: open standards and mobility
by Geoff Koch, editor. Intel Corp. The URL coursework.stanford.edu ...
Intel C++ Compiler 8.1 for Windows free evaluation software
This product provides tools for Windows software developers to creat...
Branch and loop reorganization to prevent misdirects
by Jeff Andrews, application engineer, Intel Corp. Proven technique...

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

OpenMP Application Program Interface Spec 2.5
Introduction This document specifies a collection of compiler direc...
Choosing between OpenMP* and Explicit Threading Methods
Introduction OpenMP provides a powerful, portable, and simple means o...
More WorkSharing with OpenMP
Abstract By Richard Gerber As you know, OpenMP* contains a very po...
More Work–Sharing with OpenMP*
Abstract By Richard Gerber As you know, OpenMP* contains a very ...
Discussion Forum: Visual Fortran Compiler for Windows
This forum is the place to ask questions of and share information with...

Related Jobs:

Software Development Engineer #150235 - WA - Redmond - Microsoft Corporation
We here at adCenter are dedicated to create high end and innovative ad...
SR Master Data Administrator - SAP FI/CO #10000 - CA - Culver City - Sony Corporation of America
Req Code: 10000 Title: SR Master Data Administrator - SAP FI/CO Lo...
Security Architect #54561 - CA - Sacramento - EML Incorporated
Duration: 6 months The Security Architect will be responsible for c...
Oracle Apps DBA #12428 - OH - Evendale - Radiant Systems, Inc
Oracle Apps DBA with over 3 years experience in 11i Oracle Apps. Wo...
Applications Developer - MN - Western Suburbs - The Protomold Company, Inc.
Protomold is the world’s largest and fastest growing Rapid Injection M...
Speed Team Jobs #UNIV095 - NC - Research Triangle Park - IBM Corporation
Job Details As a member of a project and team based internship progr...
Software Development Engineer #150260 - WA - Redmond - Microsoft Corporation
We here at adCenter are dedicated to create high end and innovative ad...
Network/Telecom Systems Engineer 4-IT #IRC279157 - US - Miami - Oracle
Global Network Engineering helps establish standards across the enterp...
Software Development Engineer in Test #150097 - WA - Redmond - Microsoft Corporation
Are you deeply passionate about computer security? Do you want to posi...
Content Specialist #144557 - WA - Redmond - Microsoft Corporation
The User Experience (UX) group at Microsoft Game Studios (MGS) is seek...