1
/*********************** "private" include file for DRA *****************/
11
#define MAXDIM GA_MAX_DIM
19
#define FALSE (logical) 0
20
#define TRUE (logical) 1
22
/************************* common constants **********************************/
23
#define DRA_OFFSET 5000 /**< DRA handle offset */
24
#define DRA_BRD_TYPE 30000 /**< msg type for DRA broadcast */
25
#define DRA_GOP_TYPE 30001 /**< msg type for DRA sum */
26
#define DRA_MAX_NAME 72 /**< max length of array name */
27
#define DRA_MAX_FNAME 248 /**< max length of metafile name */
29
/************************* common data structures **************************/
30
typedef struct { /**< stores basic DRA info */
31
Integer ndim; /**< dimension of array */
32
Integer dims[MAXDIM]; /**< array dimensions */
33
Integer chunk[MAXDIM]; /**< data layout chunking */
34
Integer layout; /**< date layout type */
35
int type; /**< data type */
36
int mode; /**< file/array access permissions */
37
char name[DRA_MAX_NAME+8]; /**< array name */
38
char fname[DRA_MAX_FNAME+8]; /**< metafile name */
39
Integer actv; /**< is array active ? */
40
Integer indep; /**< shared/independent files ? */
41
Fd_t fd; /**< ELIO meta-file descriptor */
42
Integer numfiles; /**< # files on open file system */
43
Integer ioprocs; /**< number of IO procs per node */
46
#define MAX_ALGN 1 /**< max # aligned subsections */
47
#define MAX_UNLG (2*(MAXDIM-1)) /**< max # unaligned subsections */
49
typedef struct { /**< object describing DRA/GA section */
57
typedef struct { /**< structure stores arguments for callback f */
67
typedef struct { /**< stores info associated with DRA request */
68
Integer d_a; /**< disk array handle */
69
int num_pending; /**< number of pending asynch. I/O ops */
70
Integer list_algn[MAX_ALGN][2*MAXDIM]; /**< coordinates of aligned subsection */
71
Integer list_unlgn[MAX_UNLG][2*MAXDIM]; /**< coordinates of unaligned subsections*/
72
Integer list_cover[MAX_UNLG][2*MAXDIM]; /**< coordinates of "cover" subsections */
75
int call_id; /**< id of this request */
88
extern disk_array_t *DRA;
89
extern logical dra_debug_flag;
91
/**************************** common macros ********************************/
92
#define PARIO_MAX(a,b) (((a) >= (b)) ? (a) : (b))
93
#define PARIO_MIN(a,b) (((a) <= (b)) ? (a) : (b))
95
#define dai_error pnga_error
97
extern int dai_read_param(char* filename, Integer d_a);
98
extern void dai_write_param(char* filename, Integer d_a);
99
extern void dai_delete_param(char* filename, Integer d_a);
100
extern int dai_file_config(char* filename);
101
extern logical dai_section_intersect(section_t sref, section_t* sadj);
102
extern int drai_get_num_serv(void);
104
/* internal fortran calls */
105
extern Integer drai_create(Integer *type, Integer *dim1, Integer *dim2,
106
char *name, char *filename, Integer *mode,
107
Integer *reqdim1, Integer *reqdim2, Integer *d_a);
109
extern Integer ndrai_create(Integer *type, Integer *ndim, Integer dims[],
110
char *name, char *filename, Integer *mode,
111
Integer reqdims[], Integer *d_a);
113
extern Integer drai_open(char *filename, Integer *mode, Integer *d_a);
115
extern Integer drai_inquire(Integer *d_a, Integer *type, Integer *dim1,
116
Integer *dim2, char *name, char *filename);
118
extern Integer ndrai_inquire(Integer *d_a, Integer *type, Integer *ndim,
119
Integer dims[],char *name,char *filename);
121
extern Integer ndrai_create_config(Integer *type, Integer *ndim, Integer dims[],
122
char *name, char *filename, Integer *mode,
123
Integer reqdims[], Integer *numfiles,
124
Integer *numioprocs, Integer *d_a);
126
/* external fortran calls */
127
#ifdef F2C_HIDDEN_STRING_LENGTH_AFTER_ARGS
128
extern Integer FATR dra_create_(Integer *type, Integer *dim1, Integer *dim2,
129
char *name, char *filename, Integer *mode, Integer *reqdim1,
130
Integer *reqdim2, Integer *d_a, int nlen, int flen);
131
extern Integer FATR ndra_create_(Integer *type, Integer *ndim, Integer dims[],
132
char *name, char *filename, Integer *mode, Integer reqdims[],
133
Integer *d_a, int nlen, int flen);
134
extern Integer FATR dra_open_(char *filename, Integer *mode, Integer *d_a,
136
extern Integer FATR dra_inquire_(Integer *d_a, Integer *type, Integer *dim1,
137
Integer *dim2, char *name, char *filename, int nlen, int flen);
138
extern Integer FATR ndra_inquire_(Integer *d_a, Integer *type, Integer *ndim,
139
Integer dims[], char *name, char *filename, int nlen, int flen);
140
extern Integer ndra_create_config_(Integer *type, Integer *ndim,
141
Integer dims[], char *name, char *filename, Integer *mode,
142
Integer reqdims[], Integer *numfiles, Integer *numioprocs,
143
Integer *d_a, int nlen, int flen);
144
#else /* F2C_HIDDEN_STRING_LENGTH_AFTER_ARGS */
145
extern Integer FATR dra_create_(Integer *type, Integer *dim1, Integer *dim2,
146
char *name, int nlen, char *filename, int flen, Integer *mode,
147
Integer *reqdim1, Integer *reqdim2, Integer *d_a);
148
extern Integer FATR ndra_create_(Integer *type, Integer *ndim, Integer dims[],
149
char *name, int nlen, char *filename, int flen, Integer *mode,
150
Integer reqdims[], Integer *d_a);
151
extern Integer FATR dra_open_(char *filename, int flen, Integer *mode,
153
extern Integer FATR dra_inquire_(Integer *d_a, Integer *type, Integer *dim1,
154
Integer *dim2, char *name, int nlen, char *filename, int flen);
155
extern Integer FATR ndra_inquire_(Integer *d_a, Integer *type, Integer *ndim,
156
Integer dims[], char *name, int nlen, char *filename, int flen);
157
extern Integer ndra_create_config_(Integer *type, Integer *ndim,
158
Integer dims[], char *name, int nlen, char *filename, int flen,
159
Integer *mode, Integer reqdims[], Integer *numfiles,
160
Integer *numioprocs, Integer *d_a);
161
#endif /* F2C_HIDDEN_STRING_LENGTH_AFTER_ARGS */
163
extern Integer FATR dra_terminate_();
165
extern Integer FATR dra_init_(
166
Integer *max_arrays, /* input */
167
DoublePrecision *max_array_size, /* input */
168
DoublePrecision *tot_disk_space, /* input */
169
DoublePrecision *max_memory); /* input */
171
extern Integer FATR dra_probe_(
172
Integer *request, /*input*/
173
Integer *status); /*output*/
175
extern Integer FATR ndra_write_(
176
Integer *g_a, /*input:GA handle*/
177
Integer *d_a, /*input:DRA handle*/
178
Integer *request); /*output: handle to async oper.*/
180
extern Integer FATR ndra_write_section_(
181
logical *transp, /*input:transpose operator*/
182
Integer *g_a, /*input:GA handle*/
183
Integer glo[], /*input*/
184
Integer ghi[], /*input*/
185
Integer *d_a, /*input:DRA handle*/
186
Integer dlo[], /*input*/
187
Integer dhi[], /*input*/
188
Integer *request); /*output: async. request id*/
190
extern Integer FATR ndra_read_(Integer* g_a, Integer* d_a, Integer* request);
192
extern Integer FATR ndra_read_section_(
193
logical *transp, /*input:transpose operator*/
194
Integer *g_a, /*input:GA handle*/
195
Integer glo[], /*input*/
196
Integer ghi[], /*input*/
197
Integer *d_a, /*input:DRA handle*/
198
Integer dlo[], /*input*/
199
Integer dhi[], /*input*/
200
Integer *request); /*output: request id*/
202
extern void FATR dra_print_internals_(Integer *d_a);
204
extern void FATR dra_set_debug_(logical *flag);
206
extern void FATR dra_set_default_config_(Integer *numfiles,
207
Integer *numioprocs);
209
extern Integer FATR dra_delete_(Integer* d_a);
211
extern Integer FATR dra_close_(Integer* d_a);
213
extern void dra_flick_();
215
extern Integer FATR dra_wait_(Integer* request);