Open In App

OpenMP | Introduction with Installation Guide

After a long thirst for parallelizing highly regular loops in matrix-oriented numerical programming, OpenMP was introduced by

OpenMP Architecture Review Board (ARB) on 1997



. In the subsequent releases, the enthusiastic OpenMP team added many features to it including the task parallelizing, support for accelerators, user-defined reductions and lot more. The latest

OpenMP 5.0



release was made in 2018 November.

Open Multi-processing (OpenMP)

is a technique of parallelizing a section(s) of C/C++/Fortran code. OpenMP is also seen as an extension to C/C++/Fortran languages by adding the parallelizing features to them. In general, OpenMP uses a

portable

,

scalable

model that gives programmers a simple and flexible interface for developing parallel applications for platforms that ranges from the normal desktop computer to the high-end supercomputers.

THREAD Vs PROCESS

A process is created by the OS to execute a program with given resources(memory, registers); generally, different processes do not share their memory with another. A thread is a subset of a process, and it shares the resources of its parent process but has its own stack to keep track of function calls. Multiple threads of a process will have access to the same memory.

Parallel Memory Architectures

Before getting deep into OpenMP, let’s revive the basic parallel memory architectures. These are divided into three categories;

Steps for Installation of OpenMP

Running First Code in OpenMP




// OpenMP header
#include <omp.h>
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char* argv[])
{
    int nthreads, tid;
 
    // Begin of parallel region
    #pragma omp parallel private(nthreads, tid)
    {
        // Getting thread number
        tid = omp_get_thread_num();
        printf("Welcome to GFG from thread = %d\n",
               tid);
 
        if (tid == 0) {
 
            // Only master thread does this
            nthreads = omp_get_num_threads();
            printf("Number of threads = %d\n",
                   nthreads);
        }
    }
}

Output:

This program will print a message which will be getting executed by various threads.

Compile: 
gcc -o gfg -fopenmp geeksforgeeks.c

Execute:
./gfg


Article Tags :