Changes to maintain the older scheme for isomalloc
[charm.git] / examples / armci / putTest / put.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 #include <armci.h>
6 #include <charm.h>
7
8 #define MAX_PROCESSORS 2
9 #define MAX_BUF_SIZE 1048576
10
11 int main(int argc, char * argv[]) {
12   void *baseAddress[MAX_PROCESSORS];
13   char *local;
14   int thisImage;
15
16   int iter = 100, size;
17   double startTime, endTime;
18   int i;
19
20   // initialize
21   ARMCI_Init();
22   ARMCI_Myid(&thisImage);
23
24   // allocate data (collective operation)
25   ARMCI_Malloc(baseAddress, MAX_BUF_SIZE*sizeof(char));
26
27   ARMCI_Barrier();
28   ARMCI_Migrate();
29
30   local = (char *)ARMCI_Malloc_local(MAX_BUF_SIZE*sizeof(char));
31    
32   if (thisImage == 0) {
33     for(size = 1; size <= MAX_BUF_SIZE; size = size<<1){
34       startTime = CkWallTimer();
35       for(i = 0; i < iter; i++){
36         ARMCI_Put(local, baseAddress[1], size, 1);
37       }
38       ARMCI_Fence(1);
39       endTime = CkWallTimer();
40       printf("%d: %f us\n", size, (endTime-startTime)*1000);
41     }
42     ARMCI_Barrier();
43   } else if (thisImage == 1) {
44     ARMCI_Barrier();
45   }
46
47   
48   ARMCI_Free(baseAddress[thisImage]);
49   ARMCI_Free_local(local);
50   // finalize
51   ARMCI_Finalize();
52   return 0;
53 }