]> git.somenet.org - pub/astra/parallel.git/blob - openmp/prefix/hillis.c
cleanup
[pub/astra/parallel.git] / openmp / prefix / hillis.c
1 /*
2  * O(nlog n) work algorithm (Hillis-Steele)
3  */
4 #include "hillis.h"
5
6 void algorithm (numtype x[], unsigned long size, unsigned int ops[]) {
7         numtype tmp[size];
8         unsigned long k;
9         unsigned long i;
10
11         for(k=2; k <= size; k <<=1){
12                 for(i = (k-1); i < size; i+=k){
13                         //printf ("x[%2li] = x[%2li] + x[%2li]; // {i:%li, k:%li}\n", i, i-k, i, i, k);
14                         x[i] = x[i-(k/2)] + x[i];
15                 }
16                 //arrayState(x, size);
17                 //barrier;
18         }
19
20         /* Copy out array to in */
21 //      for (i = 0; i < size; i++){
22 //              x[i] = tmp[i+1];
23 //      }
24 }