mirror of
https://github.com/OpenMP/Examples.git
synced 2025-04-07 23:22:11 +01:00
33 lines
573 B
C
33 lines
573 B
C
/*
|
|
* @@name: taskloop_reduction.1.c
|
|
* @@type: C
|
|
* @@compilable: yes, omp_5.0
|
|
* @@linkable: yes
|
|
* @@expect: success
|
|
*/
|
|
#include <stdio.h>
|
|
|
|
int array_sum(int n, int *v) {
|
|
int i;
|
|
int res = 0;
|
|
|
|
#pragma omp taskloop reduction(+: res)
|
|
for(i = 0; i < n; ++i)
|
|
res += v[i];
|
|
|
|
return res;
|
|
}
|
|
|
|
int main(int argc, char *argv[]) {
|
|
int n = 10;
|
|
int v[10] = {1,2,3,4,5,6,7,8,9,10};
|
|
|
|
#pragma omp parallel
|
|
#pragma omp single
|
|
{
|
|
int res = array_sum(n, v);
|
|
printf("The result is %d\n", res);
|
|
}
|
|
return 0;
|
|
}
|