mirror of
https://github.com/OpenMP/Examples.git
synced 2025-04-07 23:22:11 +01:00
37 lines
738 B
C
37 lines
738 B
C
/*
|
|
* @@name: target_reduction.2.c
|
|
* @@type: C
|
|
* @@compilable: yes
|
|
* @@linkable: yes
|
|
* @@expect: success
|
|
* @@version: omp_5.0
|
|
*/
|
|
#include <stdio.h>
|
|
int f(int);
|
|
int g(int);
|
|
int main()
|
|
{
|
|
int sum1=0, sum2=0;
|
|
int i;
|
|
const int n = 100;
|
|
|
|
#pragma omp target data map(sum1,sum2)
|
|
{
|
|
#pragma omp target teams distribute reduction(+:sum1)
|
|
for (int i = 0; i < n; i++) {
|
|
sum1 += f(i);
|
|
}
|
|
|
|
#pragma omp target teams distribute map(sum1) reduction(+:sum2)
|
|
for (int i = 0; i < n; i++) {
|
|
sum2 += g(i) * sum1;
|
|
}
|
|
}
|
|
printf( "sum1 = %d, sum2 = %d\n", sum1, sum2);
|
|
//OUTPUT: sum1 = 9900, sum2 = 147015000
|
|
return 0;
|
|
}
|
|
|
|
int f(int res){ return res*2; }
|
|
int g(int res){ return res*3; }
|