This file is indexed.

/usr/include/ga.h is in libglobalarrays-dev 5.4~beta~r10636+dfsg-5.1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
/* $Id: ga.h,v 1.60.2.8 2007-10-10 21:11:04 manoj Exp $ */

#ifndef _GA_H_
#define _GA_H_

#include <stdint.h>
#include <stdio.h>

#include "gacommon.h"
#include "typesf2c.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef Integer ga_nbhdl_t;

extern void          GA_Abs_value(int g_a); 
extern void          GA_Abs_value_patch(int g_a, int *lo, int *hi);
extern void          GA_Add_constant(int g_a, void* alpha);
extern void          GA_Add_constant_patch(int g,int *lo,int *hi,void *alpha);
extern void          GA_Add_diagonal(int g_a, int g_v);
extern void          GA_Add(void *alpha, int g_a, void* beta, int g_b, int g_c); 
extern int           GA_Allocate(int g_a);
extern int           GA_Assemble_duplicate(int g_a, char *name, void *ptr);
extern void          GA_Brdcst(void *buf, int lenbuf, int root);
extern SingleComplex GA_Cdot(int g_a, int g_b); 
extern void          GA_Cgop(SingleComplex x[], int n, char *op);
extern void          GA_Cgemm(char ta, char tb, int m, int n, int k, SingleComplex alpha, int g_a, int g_b, SingleComplex beta, int g_c );
extern void          GA_Check_handle(int g_a, char *string);
extern int           GA_Cluster_nnodes(void);
extern int           GA_Cluster_nodeid(void);
extern int           GA_Cluster_nprocs(int x);
extern int           GA_Cluster_procid(int x, int y);
extern int           GA_Cluster_proc_nodeid(int proc);
extern int           GA_Compare_distr(int g_a, int g_b); 
extern void          GA_Copy(int g_a, int g_b); 
extern int           GA_Create_handle(void);
extern int           GA_Create_mutexes(int number);
extern double        GA_Ddot(int g_a, int g_b); 
extern void          GA_Destroy(int g_a);
extern int           GA_Destroy_mutexes(void);
extern void          GA_Dgemm(char ta, char tb, int m, int n, int k, double alpha, int g_a, int g_b, double beta, int g_c );
extern void          GA_Dgop(double x[], int n, char *op);
extern void          GA_Diag(int g_a, int g_s, int g_v, void *eval);
extern void          GA_Diag_reuse(int reuse, int g_a, int g_s, int g_v, void *eval);
extern void          GA_Diag_seq(int g_a, int g_s, int g_v, void *eval);
extern void          GA_Diag_std(int g_a, int g_v, void *eval);
extern void          GA_Diag_std_seq(int g_a, int g_v, void *eval);
extern int           GA_Duplicate(int g_a, char* array_name);
extern void          GA_Elem_divide(int g_a, int g_b, int g_c);
extern void          GA_Elem_divide_patch(int g_a,int *alo,int *ahi, int g_b,int *blo,int *bhi,int g_c,int *clo,int *chi);
extern void          GA_Elem_maximum(int g_a, int g_b, int g_c);
extern void          GA_Elem_maximum_patch(int g_a,int *alo,int *ahi, int g_b,int *blo,int *bhi,int g_c,int *clo,int *chi);
extern void          GA_Elem_minimum(int g_a, int g_b, int g_c);
extern void          GA_Elem_minimum_patch(int g_a,int *alo,int *ahi, int g_b,int *blo,int *bhi,int g_c,int *clo,int *chi);
extern void          GA_Elem_multiply(int g_a, int g_b, int g_c);
extern void          GA_Elem_multiply_patch(int g_a,int *alo,int *ahi, int g_b,int *blo,int *bhi,int g_c,int *clo,int *chi);
extern void          GA_Error(char *str, int code);
extern float         GA_Fdot(int g_a, int g_b);
extern void          GA_Fence(void);
extern void          GA_Fgop(float x[], int n, char *op);
extern void          GA_Fill(int g_a, void *value);
extern void          GA_Freemem(void* ptr);
extern void          GA_Get_block_info(int g_a, int num_blocks[], int block_dims[]);
extern int           GA_Get_debug(void);
extern void          GA_Get_diag(int g_a, int g_v);
extern int           GA_Get_dimension(int g_a);
extern void*         GA_Getmem(int type, int nelem, int grp_id);
extern int           GA_Get_pgroup(int g_a);
extern int           GA_Get_pgroup_size(int grp_id);
extern void          GA_Get_proc_grid(int g_a, int dims[]);
extern void          GA_Get_proc_index(int g_a, int iproc, int subscript[]);
extern void          GA_Gop(int type, void *x, int n, char *op);
extern int           GA_Has_ghosts(int g_a);
extern int           GA_Idot(int g_a, int g_b);
extern void          GA_Igop(int x[], int n, char *op);
extern void          GA_Init_fence(void);
extern void          GA_Initialize_args(int *argc, char ***argv);
extern void          GA_Initialize_ltd(size_t limit);
extern void          GA_Initialize(void);
extern size_t        GA_Inquire_memory(void);
extern char*         GA_Inquire_name(int g_a);
extern int           GA_Is_mirrored(int g_a);
extern void          GA_List_nodeid(int *list, int nprocs);
extern long          GA_Ldot(int g_a, int g_b);
extern void          GA_Lgop(long x[], int n, char *op);
extern long long     GA_Lldot(int g_a, int g_b);
extern void          GA_Llgop(long long x[], int n, char *op);
extern int           GA_Llt_solve(int g_a, int g_b);
extern void          GA_Lock(int mutex);
extern void          GA_Lu_solve(char tran, int g_a, int g_b);
extern void          GA_Mask_sync(int first, int last);
extern void          GA_Matmul_patch(char transa, char transb, void* alpha, void *beta, int g_a, int ailo, int aihi, int ajlo, int ajhi, int g_b, int bilo, int bihi, int bjlo, int bjhi, int g_c, int cilo, int cihi, int cjlo, int cjhi);
extern void          GA_Median(int g_a, int g_b, int g_c, int g_m);
extern void          GA_Median_patch(int g_a, int *alo, int *ahi, int g_b, int *blo, int *bhi, int g_c, int *clo, int *chi, int g_m, int *mlo, int *mhi);
extern size_t        GA_Memory_avail(void);
extern int           GA_Memory_limited(void);
extern void          GA_Merge_mirrored(int g_a);
extern void          GA_Nblock(int g_a, int *nblock);
extern int           GA_Ndim(int g_a);
extern int           GA_Nnodes(void);
extern int           GA_Nodeid(void);
extern void          GA_Norm1(int g_a, double *nm);
extern void          GA_Norm_infinity(int g_a, double *nm);
extern int           GA_Pgroup_absolute_id(int pgroup, int pid);
extern void          GA_Pgroup_brdcst(int grp, void *buf, int lenbuf, int root);
extern void          GA_Pgroup_cgop(int grp, SingleComplex x[], int n, char *op);
extern int           GA_Pgroup_create(int *list, int count);
extern int           GA_Pgroup_destroy(int grp);
extern void          GA_Pgroup_dgop(int grp, double x[], int n, char *op);
extern void          GA_Pgroup_fgop(int grp, float x[], int n, char *op);   
extern int           GA_Pgroup_get_default(void);
extern int           GA_Pgroup_get_mirror(void);
extern int           GA_Pgroup_get_world(void);
extern void          GA_Pgroup_igop(int grp, int x[], int n, char *op);
extern void          GA_Pgroup_lgop(int grp, long x[], int n, char *op);
extern void          GA_Pgroup_llgop(int grp, long long x[], int n, char *op);
extern int           GA_Pgroup_nnodes(int grp_id);
extern int           GA_Pgroup_nodeid(int grp_id);
extern void          GA_Pgroup_set_default(int p_handle);
extern int           GA_Pgroup_split(int grp_id, int num_group);
extern int           GA_Pgroup_split_irreg(int grp_id, int color);
extern void          GA_Pgroup_sync(int grp_id);
extern void          GA_Pgroup_zgop(int grp, DoubleComplex x[], int n, char *op);
extern void          GA_Print_distribution(int g_a); 
extern void          GA_Print_file(FILE *file, int g_a);
extern void          GA_Print(int g_a);
extern void          GA_Print_patch(int g_a,int ilo,int ihi,int jlo,int jhi,int pretty);
extern void          GA_Print_stats(void);
extern void          GA_Randomize(int g_a, void *value);
extern void          GA_Recip(int g_a);
extern void          GA_Recip_patch(int g_a,int *lo, int *hi);
extern void          GA_Register_stack_memory(void * (*ext_alloc)(size_t, int, char *), void (*ext_free)(void *));
extern void          GA_Scale_cols(int g_a, int g_v);
extern void          GA_Scale(int g_a, void *value); 
extern void          GA_Scale_rows(int g_a, int g_v);
extern void          GA_Scan_add(int g_a, int g_b, int g_sbit, int lo, int hi, int excl);
extern void          GA_Scan_copy(int g_a, int g_b, int g_sbit, int lo, int hi);
extern void          GA_Set_array_name(int g_a, char *name);
extern void          GA_Set_block_cyclic(int g_a, int dims[]);
extern void          GA_Set_block_cyclic_proc_grid(int g_a, int block[], int proc_grid[]);
extern void          GA_Set_chunk(int g_a, int chunk[]);
extern void          GA_Set_data(int g_a, int ndim, int dims[], int type);
extern void          GA_Set_debug(int flag);
extern void          GA_Set_diagonal(int g_a, int g_v);
extern void          GA_Set_ghost_corner_flag(int g_a, int flag);
extern void          GA_Set_ghosts(int g_a, int width[]);
extern void          GA_Set_irreg_distr(int g_a, int map[], int block[]);
extern void          GA_Set_irreg_flag(int g_a, int flag);
extern void          GA_Set_memory_limit(size_t limit);
extern void          GA_Set_pgroup(int g_a, int p_handle);
extern void          GA_Set_restricted(int g_a, int list[], int size);
extern void          GA_Set_restricted_range(int g_a, int lo_proc, int hi_proc);
extern void          GA_Sgemm(char ta, char tb, int m, int n, int k, float alpha, int g_a, int g_b, float beta, int g_c );
extern void          GA_Shift_diagonal(int g_a, void *c);
extern int           GA_Solve(int g_a, int g_b);
extern int           GA_Spd_invert(int g_a);
extern void          GA_Step_bound_info(int g_xx, int g_vv, int g_xxll, int g_xxuu, void *boundmin, void *wolfemin, void *boundmax);
extern void          GA_Step_bound_info_patch(int g_xx, int *xxlo, int *xxhi, int g_vv, int *vvlo, int *vvhi, int g_xxll, int *xxlllo, int *xxllhi, int g_xxuu, int *xxuulo, int *xxuuhi, void *boundmin, void *wolfemin, void *boundmax);
extern void          GA_Step_max(int g_a, int g_b, void *step);
extern void          GA_Step_max_patch(int g_a, int *alo, int *ahi, int g_b, int *blo, int *bhi, void *step);
extern void          GA_Summarize(int verbose);
extern void          GA_Symmetrize(int g_a);
extern void          GA_Sync(void);
extern void          GA_Terminate(void);
extern int           GA_Total_blocks(int g_a);   
extern void          GA_Transpose(int g_a, int g_b);
extern void          GA_Unlock(int mutex);
extern void          GA_Update_ghosts(int g_a);
extern int           GA_Uses_fapi(void);
extern int           GA_Uses_ma(void);
extern int           GA_Uses_proc_grid(int g_a);
extern int           GA_Valid_handle(int g_a);
extern int           GA_Verify_handle(int g_a);
extern double        GA_Wtime(void);
extern DoubleComplex GA_Zdot(int g_a, int g_b); 
extern void          GA_Zgop(DoubleComplex x[], int n, char *op);
extern void          GA_Zero_diagonal(int g_a);
extern void          GA_Zero(int g_a);
extern void          GA_Zgemm(char ta, char tb, int m, int n, int k, DoubleComplex alpha, int g_a, int g_b, DoubleComplex beta, int g_c );
extern void          NGA_Access_block_grid(int g_a, int index[], void *ptr, int ld[]);
extern void          NGA_Access_block(int g_a, int idx, void *ptr, int ld[]);
extern void          NGA_Access_block_segment(int g_a, int proc, void *ptr, int *len);
extern void          NGA_Access_ghost_element(int g_a,  void *ptr, int subscript[], int ld[]);
extern void          NGA_Access_ghosts(int g_a, int dims[], void *ptr, int ld[]);
extern void          NGA_Access(int g_a, int lo[], int hi[], void *ptr, int ld[]);
extern void          NGA_Acc(int g_a, int lo[], int hi[],void* buf,int ld[],void* alpha);
extern void          NGA_Add_patch(void * alpha, int g_a, int alo[], int ahi[], void * beta,  int g_b, int blo[], int bhi[], int g_c, int clo[], int chi[]);
extern int           NGA_Allocate(int g_a);
extern void          NGA_Alloc_gatscat_buf(int nelems);
extern SingleComplex NGA_Cdot_patch(int g_a, char t_a, int alo[], int ahi[], int g_b, char t_b, int blo[], int bhi[]);
extern int           NGA_Compare_distr(int g_a, int g_b); 
extern void          NGA_Copy_patch(char trans, int g_a, int alo[], int ahi[], int g_b, int blo[], int bhi[]);
extern int           NGA_Create_config(int type,int ndim,int dims[], char *name, int chunk[], int p_handle);
extern int           NGA_Create_ghosts_config(int type,int ndim,int dims[], int width[], char *name, int chunk[], int p_handle);
extern int           NGA_Create_ghosts(int type,int ndim,int dims[], int width[], char *name, int chunk[]);
extern int           NGA_Create_ghosts_irreg_config(int type,int ndim,int dims[], int width[], char *name, int nblock[], int map[], int p_handle);
extern int           NGA_Create_ghosts_irreg(int type,int ndim,int dims[], int width[], char *name, int nblock[], int map[]);
extern int           NGA_Create(int type,int ndim,int dims[], char *name, int chunk[]);
extern int           NGA_Create(int type,int ndim,int dims[], char *name, int chunk[]);
extern int           NGA_Create_irreg_config(int type,int ndim,int dims[],char *name, int block[], int map[], int p_handle);
extern int           NGA_Create_irreg(int type,int ndim,int dims[],char *name, int block[], int map[]);
extern int           NGA_Create_handle(void);
extern int           NGA_Deregister_type(int type);
extern void          NGA_Destroy(int g_a);
extern int           NGA_Destroy_mutexes(void);
extern double        NGA_Ddot_patch(int g_a, char t_a, int alo[], int ahi[], int g_b, char t_b, int blo[], int bhi[]);
extern void          NGA_Dgop(double x[], int n, char *op);
extern void          NGA_Distribution(int g_a, int iproc, int lo[], int hi[]); 
extern int           NGA_Duplicate(int g_a, char* array_name);
extern void          NGA_Error(char *str, int code);
extern float         NGA_Fdot_patch(int g_a, char t_a, int alo[], int ahi[], int g_b, char t_b, int blo[], int bhi[]);
extern void          NGA_Fence(void);
extern void          NGA_Free_gatscat_buf();
extern void          NGA_Fill(int g_a, void *value);
extern void          NGA_Fill_patch(int g_a, int lo[], int hi[], void *val);
extern void          NGA_Gather(int g_a, void *v, int* subsArray[], int n);
extern void          NGA_Gather_flat(int g_a, void *v, int subsArray[], int n);
extern void          NGA_Get(int g_a, int lo[], int hi[], void* buf, int ld[]); 
extern void          NGA_Get_block_info(int g_a, int num_blocks[], int block_dims[]);
extern int           NGA_Get_debug(void);
extern int           NGA_Get_dimension(int g_a);
extern void          NGA_Get_field(int g_a, int *lo, int *hi, int foff, int fsize, void *buf, int *ld);
extern void          NGA_Get_ghost_block(int g_a, int lo[], int hi[], void *buf, int ld[]);
extern int           NGA_Get_pgroup(int g_a);
extern int           NGA_Get_pgroup_size(int grp_id);
extern void          NGA_Get_proc_grid(int g_a, int dims[]);
extern void          NGA_Get_proc_index(int g_a, int iproc, int subscript[]);
extern int           NGA_Has_ghosts(int g_a);
extern int           NGA_Idot_patch(int g_a, char t_a, int alo[], int ahi[], int g_b, char t_b, int blo[], int bhi[]);
extern void          NGA_Igop(int x[], int n, char *op);
extern void          NGA_Init_fence(void);
extern void          NGA_Initialize(void);
extern void          NGA_Initialize_ltd(size_t limit);
extern void          NGA_Inquire(int g_a, int *type, int *ndim, int dims[]);
extern size_t        NGA_Inquire_memory(void);
extern char*         NGA_Inquire_name(int g_a);
extern int           NGA_Is_mirrored(int g_a);
extern void          NGA_List_nodeid(int *list, int nprocs);
extern long          NGA_Ldot_patch(int g_a, char t_a, int alo[], int ahi[], int g_b, char t_b, int blo[], int bhi[]);
extern long long     NGA_Lldot_patch(int g_a, char t_a, int alo[], int ahi[], int g_b, char t_b, int blo[], int bhi[]);
extern int           NGA_Locate(int g_a, int subscript[]);
extern int           NGA_Locate_num_blocks(int g_a, int lo[], int hi[]);
extern int           NGA_Locate_nnodes(int g_a, int lo[], int hi[]);
extern int           NGA_Locate_region(int g_a,int lo[],int hi[],int map[],int procs[]);
extern void          NGA_Lock(int mutex);
extern void          NGA_Mask_sync(int first, int last);
extern void          NGA_Matmul_patch(char transa, char transb, void* alpha, void *beta, int g_a, int alo[], int ahi[], int g_b, int blo[], int bhi[], int g_c, int clo[], int chi[]) ;
extern size_t        NGA_Memory_avail(void);
extern int           NGA_Memory_limited(void);
extern void          NGA_Merge_distr_patch(int g_a, int alo[], int ahi[], int g_b, int blo[], int bhi[]);
extern void          NGA_Merge_mirrored(int g_a);
extern void          NGA_Nblock(int g_a, int *nblock);
extern void          NGA_NbAcc(int g_a,int lo[], int hi[],void* buf,int ld[],void* alpha, ga_nbhdl_t* nbhandle);
extern void          NGA_NbGet_ghost_dir(int g_a, int mask[], ga_nbhdl_t* handle);
extern void          NGA_NbGet(int g_a, int lo[], int hi[], void* buf, int ld[], ga_nbhdl_t* nbhandle);
extern void          NGA_Nbget_field(int g_a, int *lo, int *hi, int foff, int fsize,void *buf, int *ld, ga_nbhdl_t *nbhandle);
extern void          NGA_Nbput_field(int g_a, int *lo, int *hi, int foff, int fsize, void *buf, int *ld, ga_nbhdl_t *nbhandle);
extern void          NGA_NbPut(int g_a, int lo[], int hi[], void* buf, int ld[], ga_nbhdl_t* nbhandle);
extern int           NGA_NbTest(ga_nbhdl_t* nbhandle);
extern void          NGA_NbWait(ga_nbhdl_t* nbhandle);
extern int           NGA_Ndim(int g_a);
extern int           NGA_Nnodes(void);
extern int           NGA_Nodeid(void);
extern void          NGA_Periodic_acc(int g_a, int lo[], int hi[],void* buf,int ld[],void* alpha);
extern void          NGA_Periodic_get(int g_a, int lo[], int hi[], void* buf, int ld[]); 
extern void          NGA_Periodic_put(int g_a, int lo[], int hi[], void* buf, int ld[]); 
extern int           NGA_Pgroup_absolute_id(int pgroup, int pid);
extern int           NGA_Pgroup_create(int *list, int count);
extern int           NGA_Pgroup_destroy(int grp);
extern int           NGA_Pgroup_get_default(void);
extern int           NGA_Pgroup_get_mirror(void);
extern int           NGA_Pgroup_get_world(void);
extern int           NGA_Pgroup_nnodes(int grp_id);
extern int           NGA_Pgroup_nodeid(int grp_id);
extern void          NGA_Pgroup_set_default(int p_handle);
extern int           NGA_Pgroup_split(int grp_id, int num_group);
extern int           NGA_Pgroup_split_irreg(int grp_id, int color);
extern void          NGA_Pgroup_sync(int grp_id);
extern void          NGA_Print_patch(int g_a, int lo[], int hi[], int pretty);
extern void          NGA_Proc_topology(int g_a, int proc, int coord[]);
extern void          NGA_Put(int g_a, int lo[], int hi[], void* buf, int ld[]); 
extern void          NGA_Put_field(int g_a, int *lo, int *hi, int foff, int fsize, void *buf, int *ld);
extern void          NGA_Randomize(int g_a, void *value);
extern long          NGA_Read_inc(int g_a, int subscript[], long inc);
extern int           NGA_Register_type(size_t bytes);
extern void          NGA_Release_block_grid(int g_a, int index[]);
extern void          NGA_Release_block(int g_a, int idx);
extern void          NGA_Release_block_segment(int g_a, int idx);
extern void          NGA_Release_ghost_element(int g_a, int index[]);
extern void          NGA_Release_ghosts(int g_a);
extern void          NGA_Release(int g_a, int lo[], int hi[]);
extern void          NGA_Release_update_block_grid(int g_a, int index[]);
extern void          NGA_Release_update_block(int g_a, int idx);
extern void          NGA_Release_update_block_segment(int g_a, int idx);
extern void          NGA_Release_update_ghost_element(int g_a, int index[]);
extern void          NGA_Release_update_ghosts(int g_a);
extern void          NGA_Release_update(int g_a, int lo[], int hi[]);
extern void          NGA_Scale_patch(int g_a, int lo[], int hi[], void *alpha);
extern void          NGA_Scatter_acc(int g_a, void *v, int* subsArray[], int n, void *alpha);
extern void          NGA_Scatter_acc_flat(int g_a, void *v, int subsArray[], int n, void *alpha);
extern void          NGA_Scatter(int g_a, void *v, int* subsArray[], int n);
extern void          NGA_Scatter_flat(int g_a, void *v, int subsArray[], int n);
extern void          NGA_Select_elem(int g_a, char* op, void* val, int *index);
extern void          NGA_Set_array_name(int g_a, char *name);
extern void          NGA_Set_block_cyclic(int g_a, int dims[]);
extern void          NGA_Set_block_cyclic_proc_grid(int g_a, int block[], int proc_grid[]);
extern void          NGA_Set_chunk(int g_a, int chunk[]);
extern void          NGA_Set_data(int g_a, int ndim, int dims[], int type);
extern void          NGA_Set_debug(int flag);
extern void          NGA_Set_ghosts(int g_a, int width[]);
extern void          NGA_Set_irreg_distr(int g_a, int map[], int block[]);
extern void          NGA_Set_irreg_flag(int g_a, int flag);
extern void          NGA_Set_memory_limit(size_t limit);
extern void          NGA_Set_pgroup(int g_a, int p_handle);
extern void          NGA_Set_restricted(int g_a, int list[], int size);
extern void          NGA_Set_restricted_range(int g_a, int lo_proc, int hi_proc);
extern void          NGA_Strided_acc(int g_a, int lo[], int hi[], int skip[], void* buf, int ld[], void *alpha); 
extern void          NGA_Strided_get(int g_a, int lo[], int hi[], int skip[], void* buf, int ld[]); 
extern void          NGA_Strided_put(int g_a, int lo[], int hi[], int skip[], void* buf, int ld[]); 
extern void          NGA_Sync(void);
extern void          NGA_Terminate(void);
extern int           NGA_Total_blocks(int g_a);   
extern void          NGA_Unlock(int mutex);
extern void          NGA_Update_ghosts(int g_a);
extern int           NGA_Update_ghost_dir(int g_a, int dimension, int idir, int flag);
extern void          NGA_Update_ghosts_nb(int g_a, ga_nbhdl_t *nbhandle);
extern int           NGA_Uses_ma(void);
extern int           NGA_Uses_proc_grid(int g_a);
extern int           NGA_Valid_handle(int g_a);
extern int           NGA_Verify_handle(int g_a);
extern double        NGA_Wtime(void);
extern DoubleComplex NGA_Zdot_patch(int g_a, char t_a, int alo[], int ahi[], int g_b, char t_b, int blo[], int bhi[]);
extern void          NGA_Zero(int g_a); 
extern void          NGA_Zero_patch(int g_a, int lo[], int hi[]);

/* 64 bit APIs */

extern void          GA_Abs_value_patch64(int g_a, int64_t *lo, int64_t *hi);
extern void          GA_Add_constant_patch64(int g,int64_t *lo,int64_t *hi,void *alpha);
extern void          GA_Cgemm64(char ta, char tb, int64_t m, int64_t n, int64_t k, SingleComplex alpha, int g_a, int g_b, SingleComplex beta, int g_c );   
extern void          GA_Dgemm64(char ta, char tb, int64_t m, int64_t n, int64_t k, double alpha, int g_a, int g_b, double beta, int g_c );
extern void          GA_Elem_divide_patch64(int g_a, int64_t alo[], int64_t ahi[], int g_b, int64_t blo[], int64_t bhi[], int g_c, int64_t  clo[], int64_t chi[]);
extern void          GA_Elem_maximum_patch64(int g_a,int64_t *alo,int64_t *ahi, int g_b,int64_t *blo,int64_t *bhi, int g_c,int64_t *clo,int64_t *chi);
extern void          GA_Elem_minimum_patch64(int g_a,int64_t *alo,int64_t *ahi, int g_b,int64_t *blo,int64_t *bhi, int g_c,int64_t *clo,int64_t *chi);
extern void          GA_Elem_multiply_patch64(int g_a, int64_t alo[], int64_t ahi[], int g_b, int64_t blo[], int64_t bhi[], int g_c, int64_t clo[], int64_t chi[]);
extern void          GA_Matmul_patch64(char transa, char transb, void* alpha, void *beta, int g_a, int64_t ailo, int64_t aihi, int64_t ajlo, int64_t ajhi, int g_b, int64_t bilo, int64_t bihi, int64_t bjlo, int64_t bjhi, int g_c, int64_t cilo, int64_t cihi, int64_t cjlo, int64_t cjhi);
extern void          GA_Median_patch64(int g_a, int64_t *alo, int64_t *ahi, int g_b, int64_t *blo, int64_t *bhi, int g_c, int64_t *clo, int64_t *chi, int g_m, int64_t *mlo, int64_t *mhi);
extern void          GA_Pack64(int g_src, int g_dest, int g_mask, int64_t lo, int64_t hi, int64_t *icount);
extern void          GA_Pack(int g_src, int g_dest, int g_mask, int lo, int hi, int *icount);
extern void          GA_Patch_enum64(int g_a, int64_t lo, int64_t hi, void *start, void *inc);
extern void          GA_Patch_enum(int g_a, int lo, int hi, void *start, void *inc);
extern void          GA_Recip_patch64(int g_a,int64_t *lo, int64_t *hi);
extern void          GA_Scan_add64(int g_a, int g_b, int g_sbit, int64_t lo, int64_t hi, int excl);
extern void          GA_Scan_copy64(int g_a, int g_b, int g_sbit, int64_t lo, int64_t hi);
extern void          GA_Set_chunk64(int g_a, int64_t chunk[]);
extern void          GA_Set_data64(int g_a, int ndim, int64_t dims[], int type);
extern void          GA_Set_ghosts64(int g_a, int64_t width[]);
extern void          GA_Set_irreg_distr64(int g_a, int64_t map[], int64_t block[]);
extern void          GA_Sgemm64(char ta, char tb, int64_t m, int64_t n, int64_t k, float alpha, int g_a, int g_b, float beta,  int g_c );
extern void          GA_Step_bound_info_patch64(int g_xx, int64_t xxlo[], int64_t xxhi[], int g_vv, int64_t vvlo[], int64_t vvhi[], int g_xxll, int64_t xxlllo[], int64_t xxllhi[], int64_t g_xxuu,  int64_t xxuulo[], int64_t xxuuhi[], void *boundmin, void *wolfemin, void *boundmax);
extern void          GA_Step_max_patch64(int g_a, int64_t alo[], int64_t  ahi[], int g_b, int64_t blo[], int64_t  bhi[], void *step);
extern void          GA_Unpack64(int g_src, int g_dest, int g_mask, int64_t lo, int64_t hi, int64_t *icount);
extern void          GA_Unpack(int g_src, int g_dest, int g_mask, int lo, int hi, int *icount);
extern void          GA_Zgemm64(char ta, char tb, int64_t m, int64_t n, int64_t k, DoubleComplex alpha, int g_a, int g_b, DoubleComplex beta, int g_c );
extern void          NGA_Acc64(int g_a, int64_t lo[], int64_t hi[],void* buf,int64_t ld[],void* alpha);
extern void          NGA_Access64(int g_a, int64_t lo[], int64_t hi[], void *ptr, int64_t ld[]);
extern void          NGA_Access_block64(int g_a, int64_t idx, void *ptr, int64_t ld[]);
extern void          NGA_Access_block_grid64(int g_a, int64_t index[], void *ptr, int64_t ld[]);
extern void          NGA_Access_block_segment64(int g_a, int proc, void *ptr, int64_t *len);
extern void          NGA_Access_ghost_element64(int g_a,  void *ptr, int64_t subscript[], int64_t ld[]);
extern void          NGA_Access_ghosts64(int g_a, int64_t dims[], void *ptr, int64_t ld[]);
extern void          NGA_Add_patch64(void * alpha, int g_a, int64_t alo[], int64_t ahi[], void * beta,  int g_b, int64_t blo[], int64_t bhi[], int g_c, int64_t clo[], int64_t chi[]);
extern SingleComplex NGA_Cdot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[], int g_b, char t_b, int64_t blo[], int64_t bhi[]);
extern void          NGA_Copy_patch64(char trans, int g_a, int64_t alo[], int64_t ahi[], int g_b, int64_t blo[], int64_t bhi[]);
extern int           NGA_Create64(int type,int ndim,int64_t dims[], char *name, int64_t chunk[]);
extern int           NGA_Create_config64(int type,int ndim,int64_t dims[], char *name, int64_t chunk[], int p_handle);
extern int           NGA_Create_ghosts64(int type,int ndim,int64_t dims[], int64_t width[], char *name, int64_t chunk[]);
extern int           NGA_Create_ghosts_config64(int type,int ndim,int64_t dims[], int64_t width[], char *name, int64_t chunk[], int p_handle);
extern int           NGA_Create_ghosts_irreg64(int type,int ndim,int64_t dims[], int64_t width[], char *name, int64_t nblock[], int64_t map[]);
extern int           NGA_Create_ghosts_irreg_config64(int type,int ndim,int64_t dims[], int64_t width[], char *name, int64_t nblock[], int64_t map[], int p_handle);
extern int           NGA_Create_irreg64(int type,int ndim,int64_t dims[],char *name, int64_t block[], int64_t map[]);
extern int           NGA_Create_irreg_config64(int type,int ndim,int64_t dims[],char *name, int64_t block[], int64_t map[], int p_handle);
extern double        NGA_Ddot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[], int g_b, char t_b, int64_t blo[], int64_t bhi[]);
extern void          NGA_Distribution64(int g_a, int iproc, int64_t lo[], int64_t hi[]);
extern float         NGA_Fdot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[], int g_b, char t_b, int64_t blo[], int64_t bhi[]);
extern void          NGA_Fill_patch64(int g_a, int64_t lo[], int64_t hi[], void *val);
extern void          NGA_Gather64(int g_a, void *v, int64_t* subsArray[], int64_t n);
extern void          NGA_Gather_flat64(int g_a, void *v, int64_t subsArray[], int64_t n);
extern void          NGA_Get64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[]); 
extern void          NGA_Get_ghost_block64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[]); 
extern int           NGA_Idot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[], int g_b, char t_b, int64_t blo[], int64_t bhi[]);
extern void          NGA_Inquire64(int g_a, int *type, int *ndim, int64_t dims[]);
extern long          NGA_Ldot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[], int g_b, char t_b, int64_t blo[], int64_t bhi[]);
extern long long     NGA_Lldot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[], int g_b, char t_b, int64_t blo[], int64_t bhi[]);
extern int           NGA_Locate64(int g_a, int64_t subscript[]);
extern int           NGA_Locate_nnodes64(int g_a, int64_t lo[], int64_t hi[]);
extern int           NGA_Locate_region64(int g_a,int64_t lo[],int64_t hi[],int64_t map[],int procs[]);
extern void          NGA_Matmul_patch64(char transa, char transb, void* alpha, void *beta, int g_a, int64_t alo[], int64_t ahi[], int g_b, int64_t blo[], int64_t bhi[], int g_c, int64_t clo[], int64_t chi[]) ;
extern void          NGA_Merge_distr_patch64(int g_a, int64_t alo[], int64_t ahi[], int g_b, int64_t blo[], int64_t bhi[]);
extern void          NGA_NbAcc64(int g_a,int64_t lo[],int64_t hi[],void* buf,int64_t ld[],void* alpha, ga_nbhdl_t* nbhandle);
extern void          NGA_NbGet64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[], ga_nbhdl_t* nbhandle);
extern void          NGA_NbGet_ghost_dir64(int g_a, int64_t mask[], ga_nbhdl_t* handle);
extern void          NGA_NbPut64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[], ga_nbhdl_t* nbhandle);
extern void          NGA_Periodic_acc64(int g_a, int64_t lo[], int64_t hi[],void* buf,int64_t ld[],void* alpha);
extern void          NGA_Periodic_get64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[]); 
extern void          NGA_Periodic_put64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[]); 
extern void          NGA_Print_patch64(int g_a, int64_t lo[], int64_t hi[], int pretty);
extern void          NGA_Put64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[]); 
extern long          NGA_Read_inc64(int g_a, int64_t subscript[], long inc);
extern void          NGA_Release64(int g_a, int64_t lo[], int64_t hi[]);
extern void          NGA_Release_ghost_element64(int g_a, int64_t index[]);
extern void          NGA_Release_update64(int g_a, int64_t lo[], int64_t hi[]);
extern void          NGA_Release_update_ghost_element64(int g_a, int64_t index[]);
extern void          NGA_Scale_patch64(int g_a, int64_t lo[], int64_t hi[], void *alpha);
extern void          NGA_Scatter64(int g_a, void *v, int64_t* subsArray[], int64_t n);
extern void          NGA_Scatter_flat64(int g_a, void *v, int64_t subsArray[], int64_t n);
extern void          NGA_Scatter_acc64(int g_a, void *v, int64_t* subsArray[], int64_t n, void *alpha);
extern void          NGA_Scatter_acc_flat64(int g_a, void *v, int64_t subsArray[], int64_t n, void *alpha);
extern void          NGA_Select_elem64(int g_a, char* op, void* val, int64_t* index);
extern void          NGA_Set_data64(int g_a, int ndim, int64_t dims[], int type);
extern void          NGA_Set_ghosts64(int g_a, int64_t width[]);
extern void          NGA_Set_irreg_distr64(int g_a, int64_t map[], int64_t block[]);
extern void          NGA_Strided_acc64(int g_a, int64_t lo[], int64_t hi[], int64_t skip[], void* buf, int64_t  ld[], void *alpha); 
extern void          NGA_Strided_get64(int g_a, int64_t lo[], int64_t hi[], int64_t skip[], void* buf, int64_t  ld[]); 
extern void          NGA_Strided_put64(int g_a, int64_t lo[], int64_t hi[], int64_t skip[], void* buf, int64_t  ld[]); 
extern DoubleComplex NGA_Zdot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[], int g_b, char t_b, int64_t blo[], int64_t bhi[]);
extern void          NGA_Zero_patch64(int g_a, int64_t lo[], int64_t hi[]);

#ifdef __cplusplus
}
#endif

#endif