47 lines · c
1// RUN: %libomp-compile-and-run2#include <stdio.h>3#include "omp_testsuite.h"4 5int test_omp_parallel_shared()6{7 int i;8 int sum;9 int known_sum;10 11 sum = 0;12 known_sum = (LOOPCOUNT * (LOOPCOUNT + 1)) / 2 ;13 14 #pragma omp parallel private(i) shared(sum)15 {16 17 int mysum = 0;18 #pragma omp for19 for (i = 1; i <= LOOPCOUNT; i++) {20 mysum = mysum + i;21 }22 #pragma omp critical23 {24 sum = sum + mysum;25 }26 27 28 }29 if (known_sum != sum) {30 fprintf(stderr, "KNOWN_SUM = %d; SUM = %d\n", known_sum, sum);31 }32 return (known_sum == sum);33}34 35int main()36{37 int i;38 int num_failed=0;39 40 for(i = 0; i < REPETITIONS; i++) {41 if(!test_omp_parallel_shared()) {42 num_failed++;43 }44 }45 return num_failed;46}47