/*
* DistMatrix.h
*
* routines for handling of distributed dynamic arrays in C
* Distribution: column-block
*/
#define TYPE int
typedef struct
{
TYPE *data;
int nx; /* no. of columns (globally) */
int ny; /* no. of rows (globally) */
int lx; /* no. of columns (locally) */
int ly; /* no. of rows (locally) */
int dx; /* index of first column in global array */
} DistMatrix;
#define INDEX(a,i,j) ( ((a).data)[(a).lx * (i) + (j)] )
void newDistMatrix(DistMatrix *ar, int n, int m);
/* creates local part of global n x m array */
void deleteDistMatrix(DistMatrix ar);
void blockDistribute(int n, int nt, int id, int *count, int *offset);