2022-11-04 09:35:42 -07:00

49 lines
1.0 KiB
C

/*
* @@name: task_dep.13
* @@type: C
* @@operation: run
* @@expect: success
* @@version: omp_5.1
*/
#include <stdio.h>
int main(){
int a=1, d=1;
#pragma omp parallel masked num_threads(5)
{
#pragma omp task // Task 1
{ printf("T1\n"); }
#pragma omp task depend(out: a) // Task 2
{ a++;
printf("T2 a=%i\n", a); }
#pragma omp task depend(out: d) // Task 3
{ d++;
printf("T3 d=%i\n", d); }
#pragma omp task depend(inout: omp_all_memory) // Task 4
{ a++; d++;
printf("T4 a=%i d=%i\n", a,d);}
#pragma omp task // Task 5
{ printf("T5\n"); }
#pragma omp task depend(in: a,d) // Task 6
{ a++; d++;
printf("T6 a=%i d=%i\n", a,d); }
}
}
/* OUTPUT: ordered {T2,T3 any order}, {T4}, {T6}
T2 a=2
T3 d=2
T4 a=3 d=3
T6 a=4 d=4
OUTPUT: unordered (can appear interspersed in ordered output)
T1
T5
*/