blob: 382bfa2a00ca2f8527df22060b2443cd214dc5d8 [file] [log] [blame]
Jim Cownie18d84732014-05-10 17:02:09 +00001<ompts:test>
2<ompts:testdescription>Test which checks the omp parallel copyin directive.</ompts:testdescription>
3<ompts:ompversion>3.0</ompts:ompversion>
4<ompts:directive>omp parallel copyin</ompts:directive>
5<ompts:dependences>omp critical,omp threadprivate</ompts:dependences>
6<ompts:testcode>
7#include <stdio.h>
8#include <stdlib.h>
9#include "omp_testsuite.h"
10
11static int sum1 = 789;
12#pragma omp threadprivate(sum1)
13
14int <ompts:testcode:functionname>omp_parallel_copyin</ompts:testcode:functionname>(FILE * logFile)
15{
16 <ompts:orphan:vars>
17 int sum, num_threads;
18 </ompts:orphan:vars>
19 int known_sum;
20
21 sum = 0;
22 sum1 = 7;
23 num_threads = 0;
24
25#pragma omp parallel <ompts:check>copyin(sum1)</ompts:check>
26 {
27 /*printf("sum1=%d\n",sum1);*/
28 <ompts:orphan>
29 int i;
30#pragma omp for
31 for (i = 1; i < 1000; i++)
32 {
33 sum1 = sum1 + i;
34 } /*end of for*/
35#pragma omp critical
36 {
37 sum = sum + sum1;
38 num_threads++;
39 } /*end of critical*/
40 </ompts:orphan>
41 } /* end of parallel*/
42 known_sum = (999 * 1000) / 2 + 7 * num_threads;
43 return (known_sum == sum);
44
45}
46</ompts:testcode>
47</ompts:test>