O'Reilly logo

Algorithms and Parallel Computing by Fayez Gebali

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

6.4 OpenMP

OpenMP is a concurrency platform for multithreaded, shared-memory parallel processing architecture for C, C++, and Fortran. By using OpenMP, the programmer is able to incrementally parallelize the program with little programming effort. The programmer manually inserts compiler directives to assist the compiler into generating threads for the parallel processor platform. The user does not need to create the threads nor worry about the tasks assigned to each thread. In that sense, OpenMP is a higher-level programming model compared with pthreads in the POSIX library.

At the current state of the art, there is something to be gained using manual parallelization. Automatic parallelizing compilers cannot compete with a hand-coded parallel program. OpenMP uses three types of constructs to control the parallelization of a program [69]:

1. Compiler directives

2. Runtime library routines

3. Environment variables

To compile an OpenMP program, one would issue the command

gcc -openmp file.c -o file.

Listing 6.4 The following pseudocode is a sketch of how OpenMP parallelizes a serial code [69]:

1: #include <omp.h>

2: main () {

3: int var1, var2, var3;

4: Serial code executed by master thread

5: x22EE_MathematicalPi-Six_8n_000100

6: #pragma omp parallel private(var1, var2) shared(var3)

7: {

8: Parallel section executed by all threads

9:

10: }

11: Resume serial code

12: }

Line 1 is an include file that defines ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required