This file is indexed.

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

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
#ifndef PAPI_H_
#define PAPI_H_

#include <stdio.h>

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

typedef intp AccessIndex;

/* Routines from base.c */
extern logical pnga_allocate(Integer g_a);
extern logical pnga_compare_distr(Integer g_a, Integer g_b);
extern logical pnga_create(Integer type, Integer ndim,
                           Integer *dims, char* name,
                           Integer *chunk, Integer *g_a);
extern logical pnga_create_config(Integer type, Integer ndim,
                                  Integer *dims, char* name,
                                  Integer *chunk, Integer p_handle,
                                  Integer *g_a);
extern logical pnga_create_ghosts(Integer type, Integer ndim,
                                  Integer *dims, Integer *width, char* name,
                                  Integer *chunk, Integer *g_a);
extern logical pnga_create_ghosts_irreg(Integer type, Integer ndim,
                                        Integer *dims, Integer *width,
                                        char* name,
                                        Integer *map, Integer *block,
                                        Integer *g_a);
extern logical pnga_create_ghosts_irreg_config(Integer type, Integer ndim,
                                               Integer *dims, Integer *width,
                                               char* name,
                                               Integer *map, Integer *block,
                                               Integer p_handle, Integer *g_a);
extern logical pnga_create_ghosts_config(Integer type, Integer ndim,
                                         Integer *dims, Integer *width,
                                         char* name,
                                         Integer *chunk, Integer p_handle,
                                         Integer *g_a);
extern logical pnga_create_irreg(Integer type, Integer ndim,
                                 Integer *dims, char* name,
                                 Integer *map, Integer *block, Integer *g_a);
extern logical pnga_create_irreg_config(Integer type, Integer ndim,
                                        Integer *dims, char* name,
                                        Integer *map,
                                        Integer *block, Integer p_handle,
                                        Integer *g_a);
extern Integer pnga_create_handle();
extern logical pnga_create_mutexes(Integer num);
extern logical pnga_destroy(Integer g_a);
extern logical pnga_destroy_mutexes();
extern void pnga_distribution(Integer g_a, Integer proc, Integer *lo, Integer *hi);
extern logical pnga_duplicate(Integer g_a, Integer *g_b, char *array_name);
extern void pnga_fill(Integer g_a, void* val);
extern void pnga_get_block_info(Integer g_a, Integer *num_blocks,
                                Integer *block_dims);
extern logical pnga_get_debug();
extern Integer pnga_get_dimension(Integer g_a);
extern void pnga_get_proc_grid(Integer g_a, Integer *dims);
extern void pnga_get_proc_index(Integer g_a, Integer iproc, Integer *index);
extern logical pnga_has_ghosts(Integer g_a);
extern void pnga_initialize();
extern int  pnga_initialized();
extern void pnga_initialize_ltd(Integer limit);
extern void pnga_inquire(Integer g_a, Integer *type, Integer *ndim, Integer *dims);
extern void pnga_inquire_type(Integer g_a, Integer *type);
extern Integer pnga_inquire_memory();
extern void pnga_inquire_name(Integer g_a, char **array_name);
extern logical pnga_is_mirrored(Integer g_a);
extern void pnga_list_nodeid(Integer *list, Integer nprocs);
extern logical pnga_locate(Integer g_a, Integer *subscript, Integer *owner);
extern Integer pnga_locate_num_blocks(Integer g_a, Integer *lo, Integer *hi);
extern logical pnga_locate_nnodes(Integer g_a, Integer *lo, Integer *hi, Integer *np);
extern logical pnga_locate_region(Integer g_a, Integer *lo, Integer *hi,
                                  Integer *map, Integer *proclist, Integer *np);
extern void pnga_lock(Integer mutex);
extern Integer pnga_ndim(Integer g_a);
extern void pnga_mask_sync(Integer begin, Integer end);
extern Integer pnga_memory_avail();
extern logical pnga_memory_limited();
extern void pnga_merge_distr_patch(Integer g_a, Integer *alo, Integer *ahi,
                                   Integer g_b, Integer *blo, Integer *bhi);
extern void pnga_merge_mirrored(Integer g_a);
extern void pnga_nblock(Integer g_a, Integer *nblock);

extern Integer pnga_nnodes();
extern Integer pnga_nodeid();
extern Integer pnga_pgroup_absolute_id(Integer grp, Integer pid);
extern Integer pnga_pgroup_create(Integer *list, Integer count);
extern logical pnga_pgroup_destroy(Integer grp);
extern Integer pnga_pgroup_get_default();
extern Integer pnga_pgroup_get_mirror();
extern Integer pnga_pgroup_get_world();
extern void pnga_pgroup_set_default(Integer grp);
extern Integer pnga_pgroup_split(Integer grp, Integer grp_num);
extern Integer pnga_pgroup_split_irreg(Integer grp, Integer mycolor);
extern Integer pnga_pgroup_nnodes(Integer grp);
extern Integer pnga_pgroup_nodeid(Integer grp);
extern void pnga_proc_topology(Integer g_a, Integer proc, Integer* subscript);
extern void pnga_randomize(Integer g_a, void* val);
extern Integer pnga_get_pgroup(Integer g_a);
extern Integer pnga_get_pgroup_size(Integer grp_id);
extern void pnga_set_array_name(Integer g_a, char *array_name);
extern void pnga_set_block_cyclic(Integer g_a, Integer *dims);
extern void pnga_set_block_cyclic_proc_grid(Integer g_a, Integer *dims, Integer *proc_grid);
extern void pnga_set_chunk(Integer g_a, Integer *chunk);
extern void pnga_set_data(Integer g_a, Integer ndim, Integer *dims, Integer type);
extern void pnga_set_debug(logical flag);
extern void pnga_set_ghosts(Integer g_a, Integer *width);
extern void pnga_set_irreg_distr(Integer g_a, Integer *map, Integer *block);
extern void pnga_set_irreg_flag(Integer g_a, logical flag);
extern void pnga_set_memory_limit(Integer mem_limit);
extern void pnga_set_pgroup(Integer g_a, Integer p_handle);
extern void pnga_set_restricted(Integer g_a, Integer *list, Integer size);
extern void pnga_set_restricted_range(Integer g_a, Integer lo_proc, Integer hi_proc);
extern void pnga_terminate();
extern Integer pnga_total_blocks(Integer g_a);
extern void pnga_unlock(Integer mutex);
extern logical pnga_uses_ma();
extern logical pnga_uses_proc_grid(Integer g_a);
extern logical pnga_valid_handle(Integer g_a);
extern Integer pnga_verify_handle(Integer g_a);
extern void pnga_check_handle(Integer g_a, char *string);

/* Routines from onesided.c */
extern void pnga_acc(Integer g_a, Integer *lo, Integer *hi, void *buf,
                     Integer *ld, void *alpha);
extern void pnga_access_idx(Integer g_a, Integer *lo, Integer *hi,
                            AccessIndex *index, Integer *ld);
extern void pnga_access_ptr(Integer g_a, Integer *lo, Integer *hi, void *ptr,
                            Integer *ld);
extern void pnga_access_block_idx(Integer g_a, Integer idx,
                                  AccessIndex* index, Integer *ld);
extern void pnga_access_block_ptr(Integer g_a, Integer idx, void* ptr,
                                  Integer *ld);
extern void pnga_access_block_grid_idx(Integer g_a, Integer* subscript,
                                       AccessIndex *index, Integer *ld);
extern void pnga_access_block_grid_ptr(Integer g_a, Integer *index, void* ptr,
                                       Integer *ld);
extern void pnga_access_block_segment_idx(Integer g_a, Integer proc,
                                          AccessIndex* index, Integer *len);
extern void pnga_access_block_segment_ptr(Integer g_a, Integer proc,
                                          void* ptr, Integer *len);
extern void pnga_alloc_gatscat_buf(Integer nelems);
extern void pnga_fence();
extern void pnga_free_gatscat_buf();
extern void pnga_gather2d(Integer g_a, void *v, Integer *i, Integer *j,
                          Integer nv);
extern void pnga_gather(Integer g_a, void* v, void *subscript,
                        Integer c_flag, Integer nv);
extern void pnga_get(Integer g_a, Integer *lo, Integer *hi,
                     void *buf, Integer *ld);
extern void pnga_init_fence();
extern void pnga_nbacc(Integer g_a, Integer *lo, Integer *hi, void *buf,
                       Integer *ld, void *alpha, Integer *nbhndl);
extern void pnga_nbget(Integer g_a, Integer *lo, Integer *hi, void *buf,
                       Integer *ld, Integer *nbhandle);
extern void pnga_nbput(Integer g_a, Integer *lo, Integer *hi, void *buf,
                       Integer *ld, Integer *nbhandle);
extern void pnga_nbput_notify(Integer g_a, Integer *lo, Integer *hi, void *buf, Integer *ld, Integer g_b, Integer *ecoords, void *bufn, Integer *nbhandle);
extern void pnga_nbwait_notify(Integer *nbhandle);
extern Integer pnga_nbtest(Integer *nbhandle);
extern void pnga_nbwait(Integer *nbhandle);
extern void pnga_put(Integer g_a, Integer *lo, Integer *hi, void *buf,
                     Integer *ld);
extern void pnga_pgroup_sync(Integer grp_id);
extern Integer pnga_read_inc(Integer g_a, Integer *subscript, Integer inc);
extern void pnga_release(Integer g_a, Integer *lo, Integer *hi);
extern void pnga_release_block(Integer g_a, Integer iblock);
extern void pnga_release_block_grid(Integer g_a, Integer *index);
extern void pnga_release_block_segment(Integer g_a, Integer iproc);
extern void pnga_release_update(Integer g_a, Integer *lo, Integer *hi);
extern void pnga_release_update_block(Integer g_a, Integer iblock);
extern void pnga_release_update_block_grid(Integer g_a, Integer *index);
extern void pnga_release_update_block_segment(Integer g_a, Integer iproc);
extern void pnga_scatter2d(Integer g_a, void *v, Integer *i, Integer *j, Integer nv);
extern void pnga_scatter(Integer g_a, void *v, void *subscript,
                         Integer c_flag, Integer nv);
extern void pnga_scatter_acc2d(Integer g_a, void *v, Integer *i, Integer *j,
                               Integer nv, void *alpha);
extern void pnga_scatter_acc(Integer g_a, void* v, void *subscript,
                             Integer c_flag, Integer nv, void *alpha);
extern void pnga_strided_acc(Integer g_a, Integer *lo, Integer *hi, Integer *skip,
                             void *buf, Integer *ld, void *alpha);
extern void pnga_strided_get(Integer g_a, Integer *lo, Integer *hi, Integer *skip,
                             void *buf, Integer *ld);
extern void pnga_strided_put(Integer g_a, Integer *lo, Integer *hi, Integer *skip,
                             void *buf, Integer *ld);
extern void pnga_sync();
extern DoublePrecision pnga_wtime();

/* Routines from datatypes.c */
extern Integer pnga_type_f2c(Integer type);
extern Integer pnga_type_c2f(Integer type);

/* Routines from collect.c */
extern void pnga_msg_brdcst(Integer type, void *buffer, Integer len, Integer root);
extern void pnga_brdcst(Integer type, void *buf, Integer len, Integer originator);
extern void pnga_pgroup_brdcst(Integer grp_id, Integer type, void *buf, Integer len, Integer originator);
extern void pnga_msg_sync();
extern void pnga_msg_pgroup_sync(Integer grp_id);
extern void pnga_pgroup_gop(Integer p_grp, Integer type, void *x, Integer n, char *op);
extern void pnga_gop(Integer type, void *x, Integer n, char *op);

/* Routines from elem_alg.c */
extern void pnga_abs_value_patch(Integer g_a, Integer *lo, Integer *hi);
extern void pnga_recip_patch(Integer g_a, Integer *lo, Integer *hi);
extern void pnga_add_constant_patch(Integer g_a, Integer *lo, Integer *hi, void *alpha);
extern void pnga_abs_value(Integer g_a);
extern void pnga_add_constant(Integer g_a, void *alpha);
extern void pnga_recip(Integer g_a);
extern void pnga_elem_multiply(Integer g_a, Integer g_b, Integer g_c);
extern void pnga_elem_divide(Integer g_a, Integer g_b, Integer g_c);
extern void pnga_elem_maximum(Integer g_a, Integer g_b, Integer g_c);
extern void pnga_elem_minimum(Integer g_a, Integer g_b, Integer g_c);
extern void pnga_elem_multiply_patch(Integer g_a,Integer *alo,Integer *ahi,Integer g_b,Integer *blo,Integer *bhi,Integer g_c,Integer *clo,Integer *chi);
extern void pnga_elem_divide_patch(Integer g_a,Integer *alo,Integer *ahi,Integer g_b,Integer *blo,Integer *bhi,Integer g_c,Integer *clo,Integer *chi);
extern void pnga_elem_maximum_patch(Integer g_a,Integer *alo,Integer *ahi,Integer g_b,Integer *blo,Integer *bhi,Integer g_c,Integer *clo,Integer *chi);
extern void pnga_elem_minimum_patch(Integer g_a,Integer *alo,Integer *ahi,Integer g_b,Integer *blo,Integer *bhi,Integer g_c,Integer *clo,Integer *chi);
extern void pnga_elem_step_divide_patch(Integer g_a,Integer *alo,Integer *ahi, Integer g_b,Integer *blo,Integer *bhi,Integer g_c, Integer *clo,Integer *chi);
extern void pnga_elem_stepb_divide_patch(Integer g_a,Integer *alo,Integer *ahi, Integer g_b,Integer *blo,Integer *bhi,Integer g_c, Integer *clo,Integer *chi);
extern void pnga_step_mask_patch(Integer g_a,Integer *alo,Integer *ahi, Integer g_b,Integer *blo,Integer *bhi,Integer g_c, Integer *clo,Integer *chi);
extern void pnga_step_bound_info_patch(Integer g_xx, Integer *xxlo, Integer *xxhi, Integer g_vv, Integer *vvlo, Integer *vvhi, Integer g_xxll, Integer *xxlllo, Integer *xxllhi, Integer g_xxuu, Integer *xxuulo, Integer *xxuuhi, void *boundmin, void* wolfemin, void *boundmax);
extern void pnga_step_max_patch(Integer g_a, Integer *alo, Integer *ahi, Integer g_b, Integer *blo, Integer *bhi, void *result);
extern void pnga_step_max(Integer g_a, Integer g_b, void *retval);
extern void pnga_step_bound_info(Integer g_xx, Integer g_vv, Integer g_xxll, Integer g_xxuu, void *boundmin, void *wolfemin, void *boundmax);

/* Routines from ga_solve_seq.c */
extern void pnga_lu_solve_seq(char *trans, Integer g_a, Integer g_b);

/* Routines from global.util.c */
extern void pnga_print_stats();
extern void pnga_error(char *string, Integer icode);
extern Integer pnga_cluster_nodeid();
extern Integer pnga_cluster_nprocs(Integer node);
extern Integer pnga_cluster_procid(Integer node, Integer loc_proc_id);
extern Integer pnga_cluster_nnodes();
extern Integer pnga_cluster_proc_nodeid(Integer proc);
extern void pnga_print_file(FILE *file, Integer g_a);
extern void pnga_print(Integer g_a);
extern void pnga_print_patch_file2d(FILE *file, Integer g_a, Integer ilo, Integer ihi, Integer jlo, Integer jhi, Integer pretty);
extern void pnga_print_patch2d(Integer g_a, Integer ilo, Integer ihi, Integer jlo, Integer jhi, Integer pretty);
extern void pnga_print_patch_file(FILE *file, Integer g_a, Integer *lo, Integer *hi, Integer pretty);
extern void pnga_print_patch(Integer g_a, Integer *lo, Integer *hi, Integer pretty);
extern void pnga_print_distribution(int fstyle, Integer g_a);
extern void pnga_summarize(Integer verbose);

/* Routines from ghosts.c */
extern void pnga_access_ghost_ptr(Integer g_a, Integer dims[], void* ptr, Integer ld[]);
extern void pnga_access_ghost_element(Integer g_a, AccessIndex* index, Integer subscript[], Integer ld[]);
extern void pnga_access_ghost_element_ptr(Integer g_a, void *ptr, Integer subscript[], Integer ld[]);
extern void pnga_access_ghosts(Integer g_a, Integer dims[], AccessIndex* index, Integer ld[]);
extern void pnga_release_ghost_element(Integer g_a, Integer subscript[]);
extern void pnga_release_update_ghost_element(Integer g_a, Integer subscript[]);
extern void pnga_release_ghosts(Integer g_a);
extern void pnga_release_update_ghosts(Integer g_a);
extern void pnga_get_ghost_block(Integer g_a, Integer *lo, Integer *hi, void *buf, Integer *ld);
extern void pnga_update1_ghosts(Integer g_a);
extern logical pnga_update2_ghosts(Integer g_a);
extern logical pnga_update3_ghosts(Integer g_a);
extern logical pnga_set_update4_info(Integer g_a);
extern logical pnga_update4_ghosts(Integer g_a);
extern logical pnga_update44_ghosts(Integer g_a);
extern logical pnga_update55_ghosts(Integer g_a);
extern logical pnga_update_ghost_dir(Integer g_a, Integer pdim, Integer pdir, logical pflag);
extern logical pnga_update5_ghosts(Integer g_a);
extern logical pnga_set_update5_info(Integer g_a);
extern void pnga_update_ghosts(Integer g_a);
extern void pnga_update_ghosts_nb(Integer g_a, Integer *nbhandle);
extern logical pnga_update6_ghosts(Integer g_a);
extern logical pnga_update7_ghosts(Integer g_a);
extern void pnga_ghost_barrier();
extern void pnga_nbget_ghost_dir(Integer g_a, Integer *mask, Integer *nbhandle);
extern logical pnga_set_ghost_info(Integer g_a);
extern void pnga_set_ghost_corner_flag(Integer g_a, logical flag);

/* Routines from global.nalg.c */
extern void pnga_zero(Integer g_a);
extern void pnga_copy(Integer g_a, Integer g_b);
extern void pnga_dot(int type, Integer g_a, Integer g_b, void *value);
extern void pnga_scale(Integer g_a, void* alpha);
extern void pnga_add(void *alpha, Integer g_a, void* beta, Integer g_b, Integer g_c);
extern void pnga_transpose(Integer g_a, Integer g_b);

/* Routines from global.npatch.c */
extern void pnga_copy_patch(char *trans, Integer g_a, Integer *alo, Integer *ahi, Integer g_b, Integer *blo, Integer *bhi);
extern void pnga_zero_patch(Integer g_a, Integer *lo, Integer *hi);
extern logical pnga_patch_intersect(Integer *lo, Integer *hi, Integer *lop, Integer *hip, Integer ndim);
extern logical pnga_comp_patch(Integer andim, Integer *alo, Integer *ahi, Integer bndim, Integer *blo, Integer *bhi);
extern void pnga_dot_patch(Integer g_a, char *t_a, Integer *alo, Integer *ahi, Integer g_b, char *t_b, Integer *blo, Integer *bhi, void *retval);
extern void pnga_fill_patch(Integer g_a, Integer *lo, Integer *hi, void* val);
extern void pnga_scale_patch(Integer g_a, Integer *lo, Integer *hi, void *alpha);
extern void pnga_add_patch(void *alpha, Integer g_a, Integer *alo, Integer *ahi, void *beta, Integer g_b, Integer *blo, Integer *bhi, Integer g_c, Integer *clo, Integer *chi);

/* Routines from select.c */

extern void pnga_select_elem(Integer g_a, char* op, void* val, Integer *subscript);

/* Routines from ga_malloc.c */

extern Integer pnga_memory_avail_type(Integer datatype);

/* Routines from sparse.c */

extern void pnga_patch_enum(Integer g_a, Integer lo, Integer hi, void* start, void* stride);
extern void pnga_scan_copy(Integer g_a, Integer g_b, Integer g_sbit, Integer lo, Integer hi);
extern void pnga_scan_add(Integer g_a, Integer g_b, Integer g_sbit, Integer lo, Integer hi, Integer excl);
extern void pnga_pack(Integer g_a, Integer g_b, Integer g_sbit, Integer lo, Integer hi, Integer* icount);
extern void pnga_unpack(Integer g_a, Integer g_b, Integer g_sbit, Integer lo, Integer hi, Integer* icount);
extern logical pnga_create_bin_range(Integer g_bin, Integer g_cnt, Integer g_off, Integer *g_range);
extern void pnga_bin_sorter(Integer g_bin, Integer g_cnt, Integer g_off);
extern void pnga_bin_index(Integer g_bin, Integer g_cnt, Integer g_off, Integer *values, Integer *subs, Integer n, Integer sortit);

/* Routines from matrix.c */

extern void pnga_median_patch(Integer g_a, Integer *alo, Integer *ahi, Integer g_b, Integer *blo, Integer *bhi, Integer g_c, Integer *clo, Integer *chi, Integer g_m, Integer *mlo, Integer *mhi);
extern void pnga_median(Integer g_a, Integer g_b, Integer g_c, Integer g_m);
extern void pnga_norm_infinity(Integer g_a, double *nm);
extern void pnga_norm1(Integer g_a, double *nm);
extern void pnga_get_diag(Integer g_a, Integer g_v);
extern void pnga_add_diagonal(Integer g_a, Integer g_v);
extern void pnga_set_diagonal(Integer g_a, Integer g_v);
extern void pnga_shift_diagonal(Integer g_a, void *c);
extern void pnga_zero_diagonal(Integer g_a);
extern void pnga_scale_rows(Integer g_a, Integer g_v);
extern void pnga_scale_cols(Integer g_a, Integer g_v);

/* Routines from ga_symmetr.c */

extern void pnga_symmetrize(Integer g_a);

/* Routines from global.periodic.c */

extern void pnga_periodic(Integer g_a, Integer *lo, Integer *hi, void *buf, Integer *ld, void *alpha, Integer op_code);

/* Routines from matmul.c */

extern void pnga_matmul(char *transa, char *transb, void *alpha, void *beta, Integer g_a, Integer ailo, Integer aihi, Integer ajlo, Integer ajhi, Integer g_b, Integer bilo, Integer bihi, Integer bjlo, Integer bjhi, Integer g_c, Integer cilo, Integer cihi, Integer cjlo, Integer cjhi);
extern void pnga_matmul_mirrored(char *transa, char *transb, void *alpha, void *beta, Integer g_a, Integer ailo, Integer aihi, Integer ajlo, Integer ajhi, Integer g_b, Integer bilo, Integer bihi, Integer bjlo, Integer bjhi, Integer g_c, Integer cilo, Integer cihi, Integer cjlo, Integer cjhi);
extern void pnga_matmul_patch(char *transa, char *transb, void *alpha, void *beta, Integer g_a, Integer alo[], Integer ahi[], Integer g_b, Integer blo[], Integer bhi[], Integer g_c, Integer clo[], Integer chi[]);

/* Routines from ga_diag_seqc.c */

extern void pnga_diag_seq(Integer g_a, Integer g_s, Integer g_v, DoublePrecision *eval);
extern void pnga_diag_std_seq(Integer g_a, Integer g_v, DoublePrecision *eval);

/* Routines from peigstubs.c */

extern void pnga_diag(Integer g_a, Integer g_s, Integer g_v, DoublePrecision *eval);
extern void pnga_diag_std(Integer g_a, Integer g_v, DoublePrecision *eval);
extern void pnga_diag_reuse(Integer reuse, Integer g_a, Integer g_s, Integer g_v, DoublePrecision *eval);

/* Routines from sclstubs.c */

extern void pnga_lu_solve_alt(Integer tran, Integer g_a, Integer g_b);
extern void pnga_lu_solve(char *tran, Integer g_a, Integer g_b);
extern Integer pnga_llt_solve(Integer g_a, Integer g_b);
extern Integer pnga_solve(Integer g_a, Integer g_b);
extern Integer pnga_spd_invert(Integer g_a);

/* Routines from DP.c */

extern void pnga_copy_patch_dp(char *t_a, Integer g_a, Integer ailo, Integer aihi, Integer ajlo, Integer ajhi, Integer g_b, Integer bilo, Integer bihi, Integer bjlo, Integer bjhi);
extern DoublePrecision pnga_ddot_patch_dp(Integer g_a, char *t_a, Integer ailo, Integer aihi, Integer ajlo, Integer ajhi, Integer g_b, char *t_b, Integer bilo, Integer bihi, Integer bjlo, Integer bjhi);

/* Routines from ga_trace.c */

extern double pnga_timer();

/*Routines for types from base.c*/

extern int pnga_register_type(size_t size);
extern int pnga_deregister_type(int type);

/*Routines for field-wise GA operations*/

extern void pnga_get_field(Integer g_a, Integer *lo, Integer *hi, Integer foff, Integer fsize, void *buf, Integer *ld);
extern void pnga_nbget_field(Integer g_a, Integer *lo, Integer *hi, Integer foff, Integer fsize,void *buf, Integer *ld, Integer *nbhandle);
extern void pnga_nbput_field(Integer g_a, Integer *lo, Integer *hi, Integer foff, Integer fsize,void *buf, Integer *ld, Integer *nbhandle);
extern void pnga_put_field(Integer g_a, Integer *lo, Integer *hi, Integer foff, Integer fsize,void *buf, Integer *ld);

#endif /* PAPI_H_ */