Nek5000
SEM for Incompressible NS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
gs_unique_test.c
Go to the documentation of this file.
1 #include <stddef.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <string.h>
5 #include "c99.h"
6 #include "name.h"
7 #include "fail.h"
8 #include "types.h"
9 #include "comm.h"
10 #include "mem.h"
11 #include "gs_defs.h"
12 #include "gs.h"
13 
14 static void test(const struct comm *comm)
15 {
16  uint i,np=comm->np,id=comm->id;
17  slong *glindex = tmalloc(slong,np*2);
18  char *out, *buf = tmalloc(char,80+np*2*30);
19  struct gs_data *gsh;
20 
21  for(i=0;i<np;++i) glindex[2*i+1]=glindex[2*i]=i+1;
22 
23  out = buf+sprintf(buf, "%03d bgn : [", (int)comm->id);
24  for(i=0;i<np*2;++i) out += sprintf(out, " %+d", (int)glindex[i]);
25  sprintf(out," ]"), puts(buf);
26 
27  gs_unique(glindex,np*2,comm);
28 
29  out = buf+sprintf(buf, "%03d end : [", (int)comm->id);
30  for(i=0;i<np*2;++i) out += sprintf(out, " %+d", (int)glindex[i]);
31  sprintf(out," ]"), puts(buf);
32 
33 
34  for(i=0;i<np;++i) glindex[2*i+1]=glindex[2*i]=i+1;
35  gsh=gs_setup(glindex,np*2,comm,1,gs_auto,1);
36  for(i=0;i<np;++i) glindex[2*i+1]=glindex[2*i]=id;
37  gs(glindex,gs_slong,gs_add,0,gsh,0);
38  gs_free(gsh);
39 
40  out = buf+sprintf(buf, "%03d own : [", (int)comm->id);
41  for(i=0;i<np*2;++i) out += sprintf(out, " %+d", (int)glindex[i]);
42  sprintf(out," ]"), puts(buf);
43 
44  free(buf);
45  free(glindex);
46 }
47 
48 int main(int narg, char *arg[])
49 {
50  comm_ext world; int np;
51  struct comm comm;
52 
53 #ifdef MPI
54  MPI_Init(&narg,&arg);
55  world = MPI_COMM_WORLD;
56  MPI_Comm_size(world,&np);
57 #else
58  world=0, np=1;
59 #endif
60 
61  comm_init(&comm,world);
62 
63  test(&comm);
64 
65  comm_free(&comm);
66 
67 #ifdef MPI
68  MPI_Finalize();
69 #endif
70 
71  return 0;
72 }
#define slong
Definition: types.h:74
#define gs_slong
Definition: gs_defs.h:66
Definition: gs.c:1086
#define uint
Definition: types.h:70
int main(int narg, char *arg[])
#define tmalloc(type, count)
Definition: mem.h:91
#define gs
Definition: gs.c:26
static void test(const struct comm *comm)
Definition: comm.h:85
#define gs_setup
Definition: gs.c:29
static void comm_free(struct comm *c)
Definition: comm.h:176
#define gs_free
Definition: gs.c:30
int comm_ext
Definition: comm.h:69
uint np
Definition: comm.h:86
for i
Definition: xxt_test.m:74
Definition: gs.c:1039
Gather/Scatter Library interface.
uint id
Definition: comm.h:86
ulong out[N]
Definition: sort_test2.c:20
establishes some macros to establish naming conventions
static uint np
Definition: findpts_test.c:63
static void comm_init(struct comm *c, comm_ext ce)
Definition: comm.h:133
#define gs_unique
Definition: gs.c:31