please i just need Clear answer with screen shot for output if needed #include #include int main(int argc, char *argv[]) { int i, thread_id; int glob_nloops, priv_nloops; glob_nloops = 0; //...



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




#include
#include
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;>
{
++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<br>Using OpenMP you can specify something called a
#include 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;="" "/="">
Extracted 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 #include 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; ++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="">
Jun 05, 2022
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here