Threading Models for High-Performance Computing: Pthreads or OpenMP?
Comparing OpenMP MPI Programming Linux Threads Pthread LIbrary: In 1997, a group of vendors came together under the aegis of hardware manufacturer, Silicon Graphics, to formulate a new threading interface. Their common problem was that the primary operating systems of the time all imposed drastically different ways of programming for threads. UNIX employed Pthreads, Sun used Solaris threads, Windows used its own API, and Linux used Linux threads (until its subsequent adoption of Pthreads).

What is OpenMP?

In 1997, a group of vendors came together under the aegis of hardware manufacturer, Silicon Graphics, to formulate a new threading interface. Their common problem was that the primary operating systems of the time all imposed drastically different ways of programming for threads. UNIX employed Pthreads, Sun used Solaris threads, Windows used its own API, and Linux used Linux threads (until its subsequent adoption of Pthreads). The committee wanted to design an API that would enable a codebase to run without changes equally well on Windows and UNIX/Linux. In 1998, it delivered the first API specification of what was called OpenMP (In those days, the term ‘open’ was associated with the concept of support from multiple vendors—as in open systems—rather than with today’s implication of open source.)

The OpenMP specification consists of APIs, a set of pragmas, and several settings for OpenMP-specific environment variables. As further revisions have been made to the standard, it has become clear that one of OpenMP’s most useful feature is its set of pragmas. By judicious use of these pragmas, a single-threaded program can be made multithreaded without recourse to APIs or environment variables. With the recent release of OpenMP 2.0, the OpenMP Architecture Review Board (ARB), which is the official name for the committee that formulates the OpenMP specification, made clear its preference that developers use the pragmas, rather than the APIs. Let’s examine this approach in greater depth, starting with a recap of what pragmas are.

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

Threading Games for High Performance on Intel® Processors
The evolution of the multi-threaded processor design is the trend for ...
Enterprise Java performance: best practices
by Kingsum Chow, Ricardo Morin, Kumar Shiv, Software and Solutions Gro...
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...
High Performance Linux Clusters with OSCAR, Rocks, OpenMosix, and MPI
by Joseph D. Sloan. O'Reilly Media Inc. To the outside world, a "su...
J2EE performance optimization, part 3 - design of experiments for performance tuning
by Kingsum Chow, Ph.D., senior performance architect, Managed Runtime ...

Related Jobs:

Software Engineer #100-19 - CA - Palo Alto - MailFrontier, Inc.
Join high-caliber software engineering team developing MailFrontier ap...
Senior HP OpenView Consultant - WI - Madison - AE Business Solutions
Seeking a Senior HP OpenView expert to help our customers implement an...
Java Developer #102 - VA - Northern - Edge Professional Services, LLC.
Job Title: Java Developer Job Location: Northern , VA Job De...
Sr. Software Engineer / Developer #CA2986 - CA - Camarillo - Vitesse Semiconductor Corporation
BSCS; 7 to 10 years experience with embedded software development. Mus...
PeopleSoft Functional Supply Chain Consultant - MA - Lexington - Surebridge
Job Description and Areas of Responsibilities: Major responsibility wi...
PeopleSoft Functional HR/Payroll Consultant - MA - Lexington, - Surebridge
Job Description and Areas of Responsibilities: Major responsibility wi...
Software Development Engineer #134641 - CA - Mountain View - Microsoft Corporation
Are you motivated to take on new challenges? Do you want to pioneer in...
Programming Writer #132618 - WA - Redmond - Microsoft Corporation
Do you like to program? Do you like to write? Are you excited by Inter...
Senior Software Engineer - CA - Palo Alto - MailFrontier, Inc.
Join high-caliber software engineering team developing MailFrontier ap...
Project Manager #139792 - WA - Issaquah - Microsoft Corporation
Project Manager / Sr. Project Manager This position will project man...