Prevention of a data race in a parallelised program, Operating System

Assignment Help:

Present your own fully documented and tested programming example illustrating the prevention of a data race in a parallelised program.

This is an example where total number of prime number between 2 and 10000 is being calculated. The order of memory accesses is prevented from being non-deterministic and from the code data race is avoided by making it parallelized with OpenMP directives.  The inconsistency can be seen by running the program consecutively for 3 or more times.

 

#include

#include

#include

#define MyThreads 4

#define num 10000

 

   int primeNum[num];

   int primeF[num];

 

   int is_prime(int v)

   {

    int i;

    int lim = floor(sqrt(v)) + 1;

 

    for (i = 2; i < lim; i++) {

           /* no need to check against known composites */

           if (!primeF[i])

               continue;

           if (v % i == 0) {

               primeF[v] = 0;

               return 0;

           }

       }

       return (v > 1);

   }

 

   int main(int argn, char **argv)

   {

       int i;

       int total = 0;

            printf("Enter a number greater than 2");

            scanf("%d", &num)

   #ifdef _OPEnumMP

       omp_set_dynamic(0);

       omp_set_num_threads(MyThreads);

   #endif

 

       for (i = 0; i < num; i++) {

           primeF[i] = 1;

       }

 

       #pragma omp parallel for

       for (i = 2; i < num; i++) {

           if ( is_prime(i) ) {

               primeNum[total] = i;

               total++;

           }

       }

        printf("total prime numbers that lie between 2 and %d: %d\n",

              num, total);

       return 0;

   }


Related Discussions:- Prevention of a data race in a parallelised program

Write a linux script to add name in class list, For this exercise I wanted ...

For this exercise I wanted to give you some real-world examples of useful bash scripts. Therefore, you will write a couple of scripts that I actually use in my teaching to automate

Define a layer that is not of an io management module, Define a layer that ...

Define a layer that is not of an IO management module  MCS that is Management Control System is not of an IO management module

Determine the syntax of the assembler directive equ, Determine the syntax o...

Determine the syntax of the assembler directive EQU The following is syntax of the assembler directive EQU: EQU

Making the transition to client - server programming, Making the Transition...

Making the Transition to Client - Server Programming Making the transition to client - server programming is a significant effort. Client - server applications must be designed

Can a direct access file be read sequentially, Can a direct access file be ...

Can a direct access file be read sequentially? Explain. Yes. Keep a counter, cp, initially set to 0. After reading record cp, increment cp.

Define the dosexecpgm function used in the os/2, Define the DosExecPgm Func...

Define the DosExecPgm Functions used in the OS/2 DosExecPgm (objBuffer, objLen, flags, cmdLine, env, &resultCode, execName) DosExecPgm function is designed to load an execut

What are the objectives of operating system?, What are the objectives of op...

What are the objectives of operating system? Objectives of OS 1.      Convenience: An OS makes a computer more suitable to use. 2.      Efficiency : An OS allows t

Sector sparing, What is sector sparing is proper definition

What is sector sparing is proper definition

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd