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.
![]()
![]() | 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:

