#include <omp.h>extern "C" void abort (void);struct Y{int l[5][10];};struct X{struct Y y;float b[10];};voidparallel (int a, int b){int i, j;struct X A[10][5];a = b = 3;for (i = 0; i < 10; i++)for (j = 0; j < 5; j++)A[i][j].y.l[3][3] = -10;#pragma omp parallel shared (a, b, A) num_threads (5){int i, j;#pragma omp atomica += omp_get_num_threads ();#pragma omp atomicb += omp_get_num_threads ();#pragma omp for private (j)for (i = 0; i < 10; i++)for (j = 0; j < 5; j++)A[i][j].y.l[3][3] += 20;}for (i = 0; i < 10; i++)for (j = 0; j < 5; j++)if (A[i][j].y.l[3][3] != 10)abort ();if (a != 28)abort ();if (b != 28)abort ();}main(){parallel (1, 2);return 0;}