Systems Architecture
7th Edition
ISBN:9781305080195
Author:Stephen D. Burd
Publisher:Stephen D. Burd
Chapter11: Operating Systems
Section: Chapter Questions
Problem 14VE
icon
Related questions
Question

please i just need Clear answer with screen shot for output if needed

 

#include <stdio.h>
#include <omp.h>
int main(int argc, char *argv[]) {
int i, thread_id;
int glob_nloops, priv_nloops; glob_nloops = 0;
// parallelize this chunk of code
#pragma omp parallel private(priv_nloops, thread_id)
{
priv_nloops = 0;
thread_id = omp_get_thread_num(); // parallelize this for loop #pragma omp for
for (i=0; i<100000; ++i)
{
++priv_nloops;
}
// make this a "critical" code section
#pragma omp critical
{
printf("Thread %d is adding its iterations (%d) to sum (%d), ",
thread_id, priv_nloops, glob_nloops);
glob_nloops += priv_nloops;
printf(" total nloops is now %d.\n", glob_nloops);
}
}
printf("Total # loop iterations is %d\n",
glob_nloops); return 0;
}

Program2: Critical Code
Using OpenMP you can specify something called a "critical" section of code. This is code that is performed by all
threads, but is only performed by one thread at a time (i.e. in serial). This provides a convenient way of letting you
do things like updating a global variable with local results from each thread, and you don't have to worry about
things like other threads writing to that global variable at the same time (a collision).
#include <stdio.h>
#include <omp.h>
int main (int argc, char *argv[])
int i, thread id;
int glob_nloops, priv_nloops;
glob_nloops = 0;
parallelize this chunk of code
#pragma omp parallel private (priv_nloops, thread_id)
priv_nloops
thread id = omp_get_thread num ();
7 parallelize this for loop
#pragma omp for
for (i=0; i<100000; ++i)
03;
++priv_nloops;
|/ make this a "critical" code section
#pragma omp critical
printf ("Thread %d is adding its iterations (%d) to sum (%d), ",
thread_id, priv_nloops, glob_nloops);
glob_nloops += priv_nloops;
printf (" total nloops is now %d.\n", glob_nloops);
printf("Total # loop iterations is %d\n",
glob_nloops) ;
return 0;
Transcribed Image Text:Program2: Critical Code Using OpenMP you can specify something called a "critical" section of code. This is code that is performed by all threads, but is only performed by one thread at a time (i.e. in serial). This provides a convenient way of letting you do things like updating a global variable with local results from each thread, and you don't have to worry about things like other threads writing to that global variable at the same time (a collision). #include <stdio.h> #include <omp.h> int main (int argc, char *argv[]) int i, thread id; int glob_nloops, priv_nloops; glob_nloops = 0; parallelize this chunk of code #pragma omp parallel private (priv_nloops, thread_id) priv_nloops thread id = omp_get_thread num (); 7 parallelize this for loop #pragma omp for for (i=0; i<100000; ++i) 03; ++priv_nloops; |/ make this a "critical" code section #pragma omp critical printf ("Thread %d is adding its iterations (%d) to sum (%d), ", thread_id, priv_nloops, glob_nloops); glob_nloops += priv_nloops; printf (" total nloops is now %d.\n", glob_nloops); printf("Total # loop iterations is %d\n", glob_nloops) ; return 0;
Expert Solution
steps

Step by step

Solved in 3 steps

Blurred answer
Knowledge Booster
Avoiding deadlock
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Systems Architecture
Systems Architecture
Computer Science
ISBN:
9781305080195
Author:
Stephen D. Burd
Publisher:
Cengage Learning