Added simple working armci example.
[charm.git] / examples / armci / hello / hello.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 #include <armci.h>
6
7 #define MAX_PROCESSORS 2
8
9 int main(int argc, char * argv[]) {
10   void *baseAddress[MAX_PROCESSORS];
11   char *myBuffer;
12   int thisImage;
13
14   // initialize
15   ARMCI_Init();
16   ARMCI_Myid(&thisImage);
17
18   // allocate data (collective operation)
19   ARMCI_Malloc(baseAddress, strlen("hello")+1);
20
21   if (thisImage == 0) {
22     sprintf((char *)baseAddress[0], "%s", "hello");
23   } else if (thisImage == 1) {
24     sprintf((char *)baseAddress[1], "%s", "world");
25   }
26
27   // allocate space for local buffer
28   myBuffer = (char *)ARMCI_Malloc_local(strlen("hello")+1);
29
30   ARMCI_Barrier();
31
32   if (thisImage == 0) {
33     ARMCI_Get(baseAddress[1], myBuffer, strlen("hello")+1, 1);
34     printf("[%d] %s %s\n",thisImage, baseAddress[0], myBuffer);
35   } else if (thisImage == 1) {
36     ARMCI_Get(baseAddress[0], myBuffer, strlen("hello")+1, 0);
37     printf("[%d] %s %s\n",thisImage, myBuffer, baseAddress[1]);
38   }
39
40   // sanity check (should segfault)
41   // printf("[%d] %s %s\n",thisImage, baseAddress[0], baseAddress[1]);
42
43   // finalize
44   ARMCI_Finalize();
45   return 0;
46 }