3
* This is to test GA_Copy_patch (is a collective operation)
4
* GA_Create -- used to create a global array using handles like 'g_A'
5
* GA_Duplicate --used to duplicate and generate one more global array.., handle 'g_A' to 'g_B'
6
* GA_Copy -- is used to transfer the data from one array to other.., ie) from g_A to g_B
7
* GA_Copy_patch -- is used to copy only certain patch of one array to another
20
main(int argc, char **argv)
22
int rank, nprocs, i, j;
23
int g_A, g_B, local_A[SIZE][SIZE];
24
int dims[DIM]={SIZE,SIZE}, alo[DIM]={0,0}, ahi[DIM]={3,3}, blo[DIM]={0,0}, bhi[DIM]={3,3}, ld=5;
27
MPI_Init(&argc, &argv);
29
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
30
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
32
MA_init(C_INT, 1000, 1000);
36
g_A = NGA_Create(C_INT, DIM, dims, "array_A", NULL);
39
g_B = GA_Duplicate(g_A, "array_B");
43
NGA_Copy_patch('N', g_A, alo, ahi, g_B, blo, bhi);
46
NGA_Get(g_B, blo, bhi, local_A, &ld);
52
for(j=0; j<3; j++) printf("%d ", local_A[i][j]);
60
if( local_A[i][j]!=value) printf("ERROR : \n");
66
// The process is confirmed and verified by printing the array in OP-scr
69
if(content(g_A) != content(g_B))printf("ERROE : \n");
73
printf("Test Completed \n");