aboutsummaryrefslogtreecommitdiffstats
path: root/test/ccured_olden/perimeter/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/ccured_olden/perimeter/main.c')
-rw-r--r--test/ccured_olden/perimeter/main.c221
1 files changed, 0 insertions, 221 deletions
diff --git a/test/ccured_olden/perimeter/main.c b/test/ccured_olden/perimeter/main.c
deleted file mode 100644
index ff58925a..00000000
--- a/test/ccured_olden/perimeter/main.c
+++ /dev/null
@@ -1,221 +0,0 @@
-#include "perimeter.h"
-#ifdef MIGRONLY
-#define BLAH MIGRPH()
-#else
-#define BLAH
-#endif
-
-#ifdef VERIFY_AFFINITIES
-#include "affinity.h"
-CHECK4(QuadTree,nw,ne,sw,se,tree)
-#endif
-
-static int adj(Direction d, ChildType ct)
-{
- BLAH;
- switch (d)
- {
- case north:
- return ((ct==northeast) || (ct==northwest));
- case south:
- return ((ct==southeast) || (ct==southwest));
- case east:
- return ((ct==northeast) || (ct==southeast));
- case west:
- return ((ct==southwest) || (ct==northwest));
- }
-}
-
-static ChildType reflect(Direction d, ChildType ct)
-{
- BLAH;
- if ((d==west) || (d==east))
- {
- switch(ct)
- {
- case northwest:
- return northeast;
- case northeast:
- return northwest;
- case southeast:
- return southwest;
- case southwest:
- return southeast;
- }
- }
- switch(ct)
- {
- case northwest:
- return southwest;
- case northeast:
- return southeast;
- case southeast:
- return northeast;
- case southwest:
- return northwest;
- }
-}
-
-int CountTree(QuadTree tree)
-{
- QuadTree nw,ne,sw,se;
-
- BLAH;
- nw = tree->nw; ne = tree->ne; sw = tree->sw; se = tree->se;
- if (nw==NULL && ne==NULL && sw==NULL && se==NULL)
- return 1;
- else
- return CountTree(nw) + CountTree(ne) + CountTree(sw) +
- CountTree(se);
-}
-
-static QuadTree child(QuadTree tree, ChildType ct)
-{
- BLAH;
- switch(ct)
- {
- case northeast:
- return tree->ne;
- case northwest:
- return tree->nw;
- case southeast:
- return tree->se;
- case southwest:
- return tree->sw;
- }
-}
-
-static QuadTree gtequal_adj_neighbor(QuadTree tree, Direction d)
-{
- QuadTree q,parent;
- ChildType ct;
-
- BLAH;
- parent=tree->parent;
- ct=tree->childtype;
- if ((parent!=NULL) && adj(d,ct))
- q=gtequal_adj_neighbor(parent,d);
- else q=parent;
- if (q && q->color==grey) {
- return child(q,reflect(d,ct));
- }
- else return q;
-}
-
-static int sum_adjacent(QuadTree p, ChildType q1, ChildType q2, int size)
-{
- BLAH;
- if (p->color==grey)
- {
- return sum_adjacent(child(p,q1),q1,q2,size/2) +
- sum_adjacent(child(p,q2),q1,q2,size/2);
- }
- else if (p->color==white)
- {
- return size;
- }
- else return 0;
-}
-
-int perimeter(QuadTree tree, int size)
-{
- int retval = 0;
- QuadTree neighbor;
-
- BLAH;
- if (tree->color==grey)
- {
- QuadTree child;
-#ifdef FUTURES
- future_cell_int fc_sw,fc_se,fc_ne;
-#endif
-
-#ifndef FUTURES
- child = tree->sw;
- retval += perimeter(child,size/2);
- child = tree->se;
- retval += perimeter(child,size/2);
- child = tree->ne;
- retval += perimeter(child,size/2);
- child = tree->nw;
- retval += perimeter(child,size/2);
-#else
- child = tree->sw;
- FUTURE(child,size/2,perimeter,&fc_sw);
- child = tree->se;
- FUTURE(child,size/2,perimeter,&fc_se);
- child = tree->ne;
- FUTURE(child,size/2,perimeter,&fc_ne);
- child = tree->nw;
- retval = perimeter(child,size/2);
- TOUCH(&fc_sw);
- TOUCH(&fc_se);
- TOUCH(&fc_ne);
- retval += fc_sw.value + fc_se.value + fc_ne.value;
-#endif
- }
- else if (tree->color==black)
- {
- /* North */
- neighbor=gtequal_adj_neighbor(tree,north);
- if ((neighbor==NULL) || (neighbor->color==white)) retval+=size;
- else if (neighbor->color==grey)
- retval+=sum_adjacent(neighbor,southeast,southwest,size);
- /* East */
- neighbor=gtequal_adj_neighbor(tree,east);
- if ((neighbor==NULL) || (neighbor->color==white)) retval+=size;
- else if (neighbor->color==grey)
- retval+=sum_adjacent(neighbor,southwest,northwest,size);
- /* South */
- neighbor=gtequal_adj_neighbor(tree,south);
- if ((neighbor==NULL) || (neighbor->color==white)) retval+=size;
- else if (neighbor->color==grey)
- retval+=sum_adjacent(neighbor,northwest,northeast,size);
- /* West */
- neighbor=gtequal_adj_neighbor(tree,west);
- if ((neighbor==NULL) || (neighbor->color==white)) retval+=size;
- else if (neighbor->color==grey)
- retval+=sum_adjacent(neighbor,northeast,southeast,size);
- }
- return retval;
-}
-
-#ifdef PLAIN
-double wallclock;
-int __NumNodes;
-#endif
-
-int main()
-{
- QuadTree tree;
- int count;
- int level;
- int i;
-
- BLAH;
- level = 12;
- __NumNodes = 1;
-
- chatting("Perimeter with %d levels on %d processors\n",level,__NumNodes);
- tree=MakeTree(2048,0,0,0,__NumNodes-1,NULL,southeast,level);
-#ifdef VERIFY_AFFINITIES
- Docheck_tree(tree);
-#endif
- count=CountTree(tree);
- chatting("# of leaves is %d\n",count);
-
-
- timer_start(0);
- for(i=0;i<100;i++) {
- count=perimeter(tree,4096);
- }
- timer_stop(0);
-
- chatting("perimeter is %d\n",count);
- chatting("Time elapsed = %f milliseconds\n", timer_elapsed(0));
-#ifdef FUTURES
- __ShutDown();
-#endif
- exit(0);
-}
-