4
* Implements the C interface.
5
* These calls forward to the (possibly) weak symbols of the internal
29
# include "ga-wapidefs.h"
33
char ***_ga_argv=NULL;
34
int _ga_initialize_args=0;
35
int _ga_initialize_c=0;
37
short int _ga_irreg_flag = 0;
39
static Integer* copy_map(int block[], int block_ndim, int map[]);
40
static Integer* copy_map64(int64_t block[], int block_ndim, int64_t map[]);
43
# define COPYC2F(carr, farr, n){\
44
int i; for(i=0; i< (n); i++)(farr)[i]=(Integer)(carr)[i];}
45
# define COPYF2C(farr, carr, n){\
46
int i; for(i=0; i< (n); i++)(carr)[i]=(int)(farr)[i];}
47
# define COPYF2C_64(farr, carr, n){\
48
int i; for(i=0; i< (n); i++)(carr)[i]=(int64_t)(farr)[i];}
49
# define COPYINDEX_F2C COPYF2C
50
# define COPYINDEX_F2C_64 COPYF2C_64
52
# define COPYC2F(carr, farr, n){\
53
int i; for(i=0; i< (n); i++)(farr)[n-i-1]=(Integer)(carr)[i];}
54
# define COPYF2C(farr, carr, n){\
55
int i; for(i=0; i< (n); i++)(carr)[n-i-1]=(int)(farr)[i];}
56
# define COPYF2C_64(farr, carr, n){\
57
int i; for(i=0; i< (n); i++)(carr)[n-i-1]=(int64_t)(farr)[i];}
58
# define COPYINDEX_C2F(carr, farr, n){\
59
int i; for(i=0; i< (n); i++)(farr)[n-i-1]=(Integer)(carr)[i]+1;}
60
# define COPYINDEX_F2C(farr, carr, n){\
61
int i; for(i=0; i< (n); i++)(carr)[n-i-1]=(int)(farr)[i] -1;}
62
# define COPYINDEX_F2C_64(farr, carr, n){\
63
int i; for(i=0; i< (n); i++)(carr)[n-i-1]=(int64_t)(farr)[i] -1;}
67
#define COPY(CAST,src,dst,n) {\
68
int i; for(i=0; i< (n); i++)(dst)[i]=(CAST)(src)[i];}
69
#define COPY_INC(CAST,src,dst,n) {\
70
int i; for(i=0; i< (n); i++)(dst)[i]=(CAST)(src)[i]+1;}
71
#define COPY_DEC(CAST,src,dst,n) {\
72
int i; for(i=0; i< (n); i++)(dst)[i]=(CAST)(src)[i]-1;}
74
int GA_Uses_fapi(void)
84
void GA_Initialize_ltd(size_t limit)
86
Integer lim = (Integer)limit;
88
wnga_initialize_ltd(lim);
91
void NGA_Initialize_ltd(size_t limit)
93
Integer lim = (Integer)limit;
95
wnga_initialize_ltd(lim);
98
void GA_Initialize_args(int *argc, char ***argv)
102
_ga_initialize_c = 1;
103
_ga_initialize_args = 1;
110
_ga_initialize_c = 1;
114
void NGA_Initialize()
116
_ga_initialize_c = 1;
122
return wnga_initialized();
125
int NGA_Initialized()
127
return wnga_initialized();
136
_ga_initialize_args = 0;
137
_ga_initialize_c = 0;
146
_ga_initialize_args = 0;
147
_ga_initialize_c = 0;
150
int NGA_Create(int type, int ndim, int dims[], char *name, int *chunk)
154
Integer _ga_work[MAXDIM];
155
Integer _ga_dims[MAXDIM];
156
if(ndim>MAXDIM)return 0;
158
COPYC2F(dims,_ga_dims, ndim);
159
if(!chunk)ptr=(Integer*)0;
161
COPYC2F(chunk,_ga_work, ndim);
164
st = wnga_create((Integer)type, (Integer)ndim, _ga_dims, name, ptr, &g_a);
165
if(st==TRUE) return (int) g_a;
169
int NGA_Create64(int type, int ndim, int64_t dims[], char *name, int64_t *chunk)
173
Integer _ga_dims[MAXDIM];
174
Integer _ga_work[MAXDIM];
175
if(ndim>MAXDIM)return 0;
177
COPYC2F(dims,_ga_dims, ndim);
178
if(!chunk)ptr=(Integer*)0;
180
COPYC2F(chunk,_ga_work, ndim);
183
st = wnga_create((Integer)type, (Integer)ndim, _ga_dims, name, ptr, &g_a);
184
if(st==TRUE) return (int) g_a;
188
int NGA_Create_config(int type, int ndim, int dims[], char *name, int chunk[],
193
Integer _ga_dims[MAXDIM];
194
Integer _ga_work[MAXDIM];
195
if(ndim>MAXDIM)return 0;
197
COPYC2F(dims,_ga_dims, ndim);
198
if(!chunk)ptr=(Integer*)0;
200
COPYC2F(chunk,_ga_work, ndim);
203
st = wnga_create_config((Integer)type, (Integer)ndim, _ga_dims, name, ptr,
204
(Integer)p_handle, &g_a);
205
if(st==TRUE) return (int) g_a;
210
int NGA_Create_config64(int type, int ndim, int64_t dims[], char *name, int64_t chunk[], int p_handle)
214
Integer _ga_dims[MAXDIM];
215
Integer _ga_work[MAXDIM];
216
if(ndim>MAXDIM)return 0;
218
COPYC2F(dims,_ga_dims, ndim);
219
if(!chunk)ptr=(Integer*)0;
221
COPYC2F(chunk,_ga_work, ndim);
224
st = wnga_create_config((Integer)type, (Integer)ndim, _ga_dims, name, ptr,
225
(Integer)p_handle, &g_a);
226
if(st==TRUE) return (int) g_a;
230
int NGA_Create_irreg(int type,int ndim,int dims[],char *name,int block[],int map[])
234
Integer _ga_dims[MAXDIM];
235
Integer _ga_work[MAXDIM];
236
Integer *_ga_map_capi;
237
if(ndim>MAXDIM)return 0;
239
COPYC2F(dims,_ga_dims, ndim);
240
COPYC2F(block,_ga_work, ndim);
241
_ga_map_capi = copy_map(block, ndim, map);
243
_ga_irreg_flag = 1; /* set this flag=1, to indicate array is irregular */
244
st = wnga_create_irreg(type, (Integer)ndim, _ga_dims, name, _ga_map_capi,
246
_ga_irreg_flag = 0; /* unset it after creating the array */
249
if(st==TRUE) return (int) g_a;
253
int NGA_Create_irreg64(int type,int ndim,int64_t dims[],char *name,int64_t block[],int64_t map[])
257
Integer _ga_dims[MAXDIM];
258
Integer _ga_work[MAXDIM];
259
Integer *_ga_map_capi;
260
if(ndim>MAXDIM)return 0;
262
COPYC2F(dims,_ga_dims, ndim);
263
COPYC2F(block,_ga_work, ndim);
264
_ga_map_capi = copy_map64(block, ndim, map);
266
_ga_irreg_flag = 1; /* set this flag=1, to indicate array is irregular */
267
st = wnga_create_irreg(type, (Integer)ndim, _ga_dims, name, _ga_map_capi,
269
_ga_irreg_flag = 0; /* unset it after creating the array */
272
if(st==TRUE) return (int) g_a;
276
int NGA_Create_irreg_config(int type,int ndim,int dims[],char *name,int block[],
277
int map[], int p_handle)
281
Integer _ga_dims[MAXDIM];
282
Integer _ga_work[MAXDIM];
283
Integer *_ga_map_capi;
284
if(ndim>MAXDIM)return 0;
286
COPYC2F(dims,_ga_dims, ndim);
287
COPYC2F(block,_ga_work, ndim);
288
_ga_map_capi = copy_map(block, ndim, map);
290
_ga_irreg_flag = 1; /* set this flag=1, to indicate array is irregular */
291
st = wnga_create_irreg_config(type, (Integer)ndim, _ga_dims, name,
292
_ga_map_capi, _ga_work, (Integer)p_handle, &g_a);
293
_ga_irreg_flag = 0; /* unset it, after creating array */
296
if(st==TRUE) return (int) g_a;
300
int NGA_Create_irreg_config64(int type,int ndim,int64_t dims[],char *name,int64_t block[], int64_t map[], int p_handle)
304
Integer _ga_dims[MAXDIM];
305
Integer _ga_work[MAXDIM];
306
Integer *_ga_map_capi;
307
if(ndim>MAXDIM)return 0;
309
COPYC2F(dims,_ga_dims, ndim);
310
COPYC2F(block,_ga_work, ndim);
311
_ga_map_capi = copy_map64(block, ndim, map);
313
_ga_irreg_flag = 1; /* set this flag=1, to indicate array is irregular */
314
st = wnga_create_irreg_config(type, (Integer)ndim, _ga_dims, name,
315
_ga_map_capi, _ga_work, (Integer)p_handle, &g_a);
316
_ga_irreg_flag = 0; /* unset it, after creating array */
319
if(st==TRUE) return (int) g_a;
323
int NGA_Create_ghosts_irreg(int type,int ndim,int dims[],int width[],char *name, int block[],int map[])
327
Integer _ga_dims[MAXDIM];
328
Integer _ga_work[MAXDIM];
329
Integer _ga_width[MAXDIM];
330
Integer *_ga_map_capi;
331
if(ndim>MAXDIM)return 0;
333
COPYC2F(dims,_ga_dims, ndim);
334
COPYC2F(block,_ga_work, ndim);
335
COPYC2F(width,_ga_width, ndim);
336
_ga_map_capi = copy_map(block, ndim, map);
338
_ga_irreg_flag = 1; /* set this flag=1, to indicate array is irregular */
339
st = wnga_create_ghosts_irreg(type, (Integer)ndim, _ga_dims, _ga_width,
340
name, _ga_map_capi, _ga_work, &g_a);
341
_ga_irreg_flag = 0; /* unset it, after creating array */
344
if(st==TRUE) return (int) g_a;
348
int NGA_Create_ghosts_irreg64(int type,int ndim,int64_t dims[],int64_t width[],char *name, int64_t block[],int64_t map[])
352
Integer _ga_dims[MAXDIM];
353
Integer _ga_work[MAXDIM];
354
Integer _ga_width[MAXDIM];
355
Integer *_ga_map_capi;
356
if(ndim>MAXDIM)return 0;
358
COPYC2F(dims,_ga_dims, ndim);
359
COPYC2F(block,_ga_work, ndim);
360
COPYC2F(width,_ga_width, ndim);
361
_ga_map_capi = copy_map64(block, ndim, map);
363
_ga_irreg_flag = 1; /* set this flag=1, to indicate array is irregular */
364
st = wnga_create_ghosts_irreg(type, (Integer)ndim, _ga_dims, _ga_width,
365
name, _ga_map_capi, _ga_work, &g_a);
366
_ga_irreg_flag = 0; /* unset it, after creating array */
369
if(st==TRUE) return (int) g_a;
373
int NGA_Create_ghosts_irreg_config(int type, int ndim, int dims[], int width[], char *name, int block[], int map[], int p_handle)
377
Integer _ga_dims[MAXDIM];
378
Integer _ga_work[MAXDIM];
379
Integer _ga_width[MAXDIM];
380
Integer *_ga_map_capi;
381
if(ndim>MAXDIM)return 0;
383
COPYC2F(dims,_ga_dims, ndim);
384
COPYC2F(block,_ga_work, ndim);
385
COPYC2F(width,_ga_width, ndim);
386
_ga_map_capi = copy_map(block, ndim, map);
388
_ga_irreg_flag = 1; /* set this flag=1, to indicate array is irregular */
389
st = wnga_create_ghosts_irreg_config(type, (Integer)ndim, _ga_dims,
390
_ga_width, name, _ga_map_capi, _ga_work,
391
(Integer)p_handle, &g_a);
392
_ga_irreg_flag = 0; /* unset it, after creating array */
395
if(st==TRUE) return (int) g_a;
399
int NGA_Create_ghosts_irreg_config64(int type, int ndim, int64_t dims[], int64_t width[], char *name, int64_t block[], int64_t map[], int p_handle)
403
Integer _ga_dims[MAXDIM];
404
Integer _ga_work[MAXDIM];
405
Integer _ga_width[MAXDIM];
406
Integer *_ga_map_capi;
407
if(ndim>MAXDIM)return 0;
409
COPYC2F(dims,_ga_dims, ndim);
410
COPYC2F(block,_ga_work, ndim);
411
COPYC2F(width,_ga_width, ndim);
412
_ga_map_capi = copy_map64(block, ndim, map);
414
_ga_irreg_flag = 1; /* set this flag=1, to indicate array is irregular */
415
st = wnga_create_ghosts_irreg_config(type, (Integer)ndim, _ga_dims,
416
_ga_width, name, _ga_map_capi, _ga_work,
417
(Integer)p_handle, &g_a);
418
_ga_irreg_flag = 0; /* unset it, after creating array */
421
if(st==TRUE) return (int) g_a;
425
int NGA_Create_ghosts(int type, int ndim,int dims[], int width[], char *name,
430
Integer _ga_dims[MAXDIM];
431
Integer _ga_work[MAXDIM];
432
Integer _ga_width[MAXDIM];
433
if(ndim>MAXDIM)return 0;
435
COPYC2F(dims,_ga_dims, ndim);
436
COPYC2F(width,_ga_width, ndim);
437
if(!chunk)ptr=(Integer*)0;
439
COPYC2F(chunk,_ga_work, ndim);
442
st = wnga_create_ghosts((Integer)type, (Integer)ndim, _ga_dims,
443
_ga_width, name, ptr, &g_a);
444
if(st==TRUE) return (int) g_a;
449
int NGA_Create_ghosts64(int type, int ndim, int64_t dims[], int64_t width[], char *name,
454
Integer _ga_dims[MAXDIM];
455
Integer _ga_work[MAXDIM];
456
Integer _ga_width[MAXDIM];
457
if(ndim>MAXDIM)return 0;
459
COPYC2F(dims,_ga_dims, ndim);
460
COPYC2F(width,_ga_width, ndim);
461
if(!chunk)ptr=(Integer*)0;
463
COPYC2F(chunk,_ga_work, ndim);
466
st = wnga_create_ghosts((Integer)type, (Integer)ndim, _ga_dims,
467
_ga_width, name, ptr, &g_a);
468
if(st==TRUE) return (int) g_a;
473
int NGA_Create_ghosts_config(int type, int ndim,int dims[], int width[], char *name,
474
int chunk[], int p_handle)
478
Integer _ga_dims[MAXDIM];
479
Integer _ga_work[MAXDIM];
480
Integer _ga_width[MAXDIM];
481
if(ndim>MAXDIM)return 0;
483
COPYC2F(dims,_ga_dims, ndim);
484
COPYC2F(width,_ga_width, ndim);
485
if(!chunk)ptr=(Integer*)0;
487
COPYC2F(chunk,_ga_work, ndim);
490
st = wnga_create_ghosts_config((Integer)type, (Integer)ndim, _ga_dims,
491
_ga_width, name, ptr, (Integer)p_handle, &g_a);
492
if(st==TRUE) return (int) g_a;
496
int NGA_Create_ghosts_config64(int type, int ndim,int64_t dims[], int64_t width[], char *name,
497
int64_t chunk[], int p_handle)
501
Integer _ga_dims[MAXDIM];
502
Integer _ga_work[MAXDIM];
503
Integer _ga_width[MAXDIM];
504
if(ndim>MAXDIM)return 0;
506
COPYC2F(dims,_ga_dims, ndim);
507
COPYC2F(width,_ga_width, ndim);
508
if(!chunk)ptr=(Integer*)0;
510
COPYC2F(chunk,_ga_work, ndim);
513
st = wnga_create_ghosts_config((Integer)type, (Integer)ndim, _ga_dims,
514
_ga_width, name, ptr, (Integer)p_handle, &g_a);
515
if(st==TRUE) return (int) g_a;
519
int GA_Create_handle()
522
g_a = wnga_create_handle();
526
int NGA_Create_handle()
529
g_a = wnga_create_handle();
533
void GA_Set_data(int g_a, int ndim, int dims[], int type)
535
Integer aa, nndim, ttype;
536
Integer _ga_dims[MAXDIM];
537
COPYC2F(dims,_ga_dims, ndim);
539
nndim = (Integer)ndim;
540
ttype = (Integer)type;
541
wnga_set_data(aa, nndim, _ga_dims, ttype);
544
void GA_Set_data64(int g_a, int ndim, int64_t dims[], int type)
546
Integer aa, nndim, ttype;
547
Integer _ga_dims[MAXDIM];
548
COPYC2F(dims,_ga_dims, ndim);
550
nndim = (Integer)ndim;
551
ttype = (Integer)type;
552
wnga_set_data(aa, nndim, _ga_dims, ttype);
555
void NGA_Set_data(int g_a, int ndim, int dims[], int type)
557
Integer aa, nndim, ttype;
558
Integer _ga_dims[MAXDIM];
559
COPYC2F(dims,_ga_dims, ndim);
561
nndim = (Integer)ndim;
562
ttype = (Integer)type;
563
wnga_set_data(aa, nndim, _ga_dims, ttype);
566
void NGA_Set_data64(int g_a, int ndim, int64_t dims[], int type)
568
Integer aa, nndim, ttype;
569
Integer _ga_dims[MAXDIM];
570
COPYC2F(dims,_ga_dims, ndim);
572
nndim = (Integer)ndim;
573
ttype = (Integer)type;
574
wnga_set_data(aa, nndim, _ga_dims, ttype);
577
void GA_Set_chunk(int g_a, int chunk[])
579
Integer aa, *ptr, ndim;
580
Integer _ga_work[MAXDIM];
582
ndim = wnga_get_dimension(aa);
583
if(!chunk)ptr=(Integer*)0;
585
COPYC2F(chunk,_ga_work, ndim);
588
wnga_set_chunk(aa, ptr);
591
void GA_Set_chunk64(int g_a, int64_t chunk[])
593
Integer aa, *ptr, ndim;
594
Integer _ga_work[MAXDIM];
596
ndim = wnga_get_dimension(aa);
597
if(!chunk)ptr=(Integer*)0;
599
COPYC2F(chunk,_ga_work, ndim);
602
wnga_set_chunk(aa, ptr);
605
void NGA_Set_chunk(int g_a, int chunk[])
607
Integer aa, *ptr, ndim;
608
Integer _ga_work[MAXDIM];
610
ndim = wnga_get_dimension(aa);
611
if(!chunk)ptr=(Integer*)0;
613
COPYC2F(chunk,_ga_work, ndim);
616
wnga_set_chunk(aa, ptr);
619
void NGA_Set_chunk64(int g_a, int64_t chunk[])
621
Integer aa, *ptr, ndim;
622
Integer _ga_work[MAXDIM];
624
ndim = wnga_get_dimension(aa);
625
if(!chunk)ptr=(Integer*)0;
627
COPYC2F(chunk,_ga_work, ndim);
630
wnga_set_chunk(aa, ptr);
633
void GA_Set_array_name(int g_a, char *name)
637
wnga_set_array_name(aa, name);
640
void NGA_Set_array_name(int g_a, char *name)
644
wnga_set_array_name(aa, name);
647
void GA_Set_pgroup(int g_a, int p_handle)
651
pp = (Integer)p_handle;
652
wnga_set_pgroup(aa, pp);
655
void NGA_Set_pgroup(int g_a, int p_handle)
659
pp = (Integer)p_handle;
660
wnga_set_pgroup(aa, pp);
663
void GA_Set_block_cyclic(int g_a, int dims[])
666
Integer _ga_dims[MAXDIM];
668
ndim = wnga_get_dimension(aa);
669
COPYC2F(dims,_ga_dims, ndim);
670
wnga_set_block_cyclic(aa, _ga_dims);
673
void NGA_Set_block_cyclic(int g_a, int dims[])
676
Integer _ga_dims[MAXDIM];
678
ndim = wnga_get_dimension(aa);
679
COPYC2F(dims,_ga_dims, ndim);
680
wnga_set_block_cyclic(aa, _ga_dims);
683
void GA_Set_restricted(int g_a, int list[], int size)
686
Integer asize = (Integer)size;
688
Integer *_ga_map_capi;
690
_ga_map_capi = (Integer*)malloc(size * sizeof(Integer));
691
for (i=0; i<size; i++)
692
_ga_map_capi[i] = (Integer)list[i];
693
wnga_set_restricted(aa,_ga_map_capi,asize);
697
void NGA_Set_restricted(int g_a, int list[], int size)
700
Integer asize = (Integer)size;
702
Integer *_ga_map_capi;
704
_ga_map_capi = (Integer*)malloc(size * sizeof(Integer));
705
for (i=0; i<size; i++)
706
_ga_map_capi[i] = (Integer)list[i];
707
wnga_set_restricted(aa,_ga_map_capi,asize);
711
void GA_Set_restricted_range(int g_a, int lo_proc, int hi_proc)
715
lo = (Integer)lo_proc;
716
hi = (Integer)hi_proc;
717
wnga_set_restricted_range(aa,lo,hi);
720
void NGA_Set_restricted_range(int g_a, int lo_proc, int hi_proc)
724
lo = (Integer)lo_proc;
725
hi = (Integer)hi_proc;
726
wnga_set_restricted_range(aa,lo,hi);
729
int GA_Total_blocks(int g_a)
733
return (int)wnga_total_blocks(aa);
736
int NGA_Total_blocks(int g_a)
740
return (int)wnga_total_blocks(aa);
743
void GA_Get_proc_index(int g_a, int iproc, int index[])
745
Integer aa, proc, ndim;
746
Integer _ga_work[MAXDIM];
748
proc = (Integer)iproc;
749
ndim = wnga_get_dimension(aa);
750
wnga_get_proc_index(aa, proc, _ga_work);
751
COPYF2C(_ga_work,index, ndim);
754
void NGA_Get_proc_index(int g_a, int iproc, int index[])
756
Integer aa, proc, ndim;
757
Integer _ga_work[MAXDIM];
759
proc = (Integer)iproc;
760
ndim = wnga_get_dimension(aa);
761
wnga_get_proc_index(aa, proc, _ga_work);
762
COPYF2C(_ga_work,index, ndim);
765
void GA_Get_block_info(int g_a, int num_blocks[], int block_dims[])
768
Integer _ga_work[MAXDIM], _ga_lo[MAXDIM];
770
ndim = wnga_get_dimension(aa);
771
wnga_get_block_info(aa, _ga_work, _ga_lo);
772
COPYF2C(_ga_work,num_blocks, ndim);
773
COPYF2C(_ga_lo,block_dims, ndim);
776
void NGA_Get_block_info(int g_a, int num_blocks[], int block_dims[])
779
Integer _ga_work[MAXDIM], _ga_lo[MAXDIM];
781
ndim = wnga_get_dimension(aa);
782
wnga_get_block_info(aa, _ga_work, _ga_lo);
783
COPYF2C(_ga_work,num_blocks, ndim);
784
COPYF2C(_ga_lo,block_dims, ndim);
787
int GA_Uses_proc_grid(int g_a)
789
Integer aa = (Integer)g_a;
790
return (int)wnga_uses_proc_grid(aa);
793
int NGA_Uses_proc_grid(int g_a)
795
Integer aa = (Integer)g_a;
796
return (int)wnga_uses_proc_grid(aa);
799
int GA_Valid_handle(int g_a)
801
Integer aa = (Integer)g_a;
802
return (int)wnga_valid_handle(aa);
805
int NGA_Valid_handle(int g_a)
807
Integer aa = (Integer)g_a;
808
return (int)wnga_valid_handle(aa);
811
int GA_Verify_handle(int g_a)
813
Integer aa = (Integer)g_a;
814
return (int)wnga_valid_handle(aa);
817
int NGA_Verify_handle(int g_a)
819
Integer aa = (Integer)g_a;
820
return (int)wnga_valid_handle(aa);
823
void GA_Set_block_cyclic_proc_grid(int g_a, int block[], int proc_grid[])
826
Integer _ga_dims[MAXDIM];
827
Integer _ga_lo[MAXDIM];
829
ndim = wnga_get_dimension(aa);
830
COPYC2F(block,_ga_dims, ndim);
831
COPYC2F(proc_grid,_ga_lo, ndim);
832
wnga_set_block_cyclic_proc_grid(aa, _ga_dims, _ga_lo);
835
void NGA_Set_block_cyclic_proc_grid(int g_a, int block[], int proc_grid[])
838
Integer _block[MAXDIM];
839
Integer _proc_grid[MAXDIM];
841
ndim = wnga_get_dimension(aa);
842
COPYC2F(block,_block, ndim);
843
COPYC2F(proc_grid, _proc_grid, ndim);
844
wnga_set_block_cyclic_proc_grid(aa, _block, _proc_grid);
847
int GA_Get_pgroup(int g_a)
851
return (int)wnga_get_pgroup(aa);
854
int NGA_Get_pgroup(int g_a)
858
return (int)wnga_get_pgroup(aa);
861
int GA_Get_pgroup_size(int grp_id)
864
aa = (Integer)grp_id;
865
return (int)wnga_get_pgroup_size(aa);
868
int NGA_Get_pgroup_size(int grp_id)
871
aa = (Integer)grp_id;
872
return (int)wnga_get_pgroup_size(aa);
875
void GA_Set_ghosts(int g_a, int width[])
877
Integer aa, *ptr, ndim;
878
Integer _ga_work[MAXDIM];
880
ndim = wnga_get_dimension(aa);
881
if(!width)ptr=(Integer*)0;
883
COPYC2F(width,_ga_work, ndim);
886
wnga_set_ghosts(aa, ptr);
889
void GA_Set_ghosts64(int g_a, int64_t width[])
891
Integer aa, *ptr, ndim;
892
Integer _ga_work[MAXDIM];
894
ndim = wnga_get_dimension(aa);
895
if(!width)ptr=(Integer*)0;
897
COPYC2F(width,_ga_work, ndim);
900
wnga_set_ghosts(aa, ptr);
903
void NGA_Set_ghosts(int g_a, int width[])
905
Integer aa, *ptr, ndim;
906
Integer _ga_work[MAXDIM];
908
ndim = wnga_get_dimension(aa);
909
if(!width)ptr=(Integer*)0;
911
COPYC2F(width,_ga_work, ndim);
914
wnga_set_ghosts(aa, ptr);
917
void NGA_Set_ghosts64(int g_a, int64_t width[])
919
Integer aa, *ptr, ndim;
920
Integer _ga_work[MAXDIM];
922
ndim = wnga_get_dimension(aa);
923
if(!width)ptr=(Integer*)0;
925
COPYC2F(width,_ga_work, ndim);
928
wnga_set_ghosts(aa, ptr);
931
void GA_Set_irreg_distr(int g_a, int map[], int block[])
934
Integer _ga_work[MAXDIM];
935
Integer *_ga_map_capi;
938
ndim = wnga_get_dimension(aa);
939
COPYC2F(block,_ga_work, ndim);
940
_ga_map_capi = copy_map(block, (int)ndim, map);
942
wnga_set_irreg_distr(aa, _ga_map_capi, _ga_work);
946
void GA_Set_irreg_distr64(int g_a, int64_t map[], int64_t block[])
949
Integer _ga_work[MAXDIM];
950
Integer *_ga_map_capi;
953
ndim = wnga_get_dimension(aa);
954
COPYC2F(block,_ga_work, ndim);
955
_ga_map_capi = copy_map64(block, (int)ndim, map);
957
wnga_set_irreg_distr(aa, _ga_map_capi, _ga_work);
961
void NGA_Set_irreg_distr(int g_a, int map[], int block[])
964
Integer _ga_work[MAXDIM];
965
Integer *_ga_map_capi;
968
ndim = wnga_get_dimension(aa);
969
COPYC2F(block,_ga_work, ndim);
970
_ga_map_capi = copy_map(block, (int)ndim, map);
972
wnga_set_irreg_distr(aa, _ga_map_capi, _ga_work);
976
void NGA_Set_irreg_distr64(int g_a, int64_t map[], int64_t block[])
979
Integer _ga_work[MAXDIM];
980
Integer *_ga_map_capi;
983
ndim = wnga_get_dimension(aa);
984
COPYC2F(block,_ga_work, ndim);
985
_ga_map_capi = copy_map64(block, (int)ndim, map);
987
wnga_set_irreg_distr(aa, _ga_map_capi, _ga_work);
991
void GA_Set_irreg_flag(int g_a, int flag)
996
fflag = (logical)flag;
997
wnga_set_irreg_flag(aa, fflag);
1000
void NGA_Set_irreg_flag(int g_a, int flag)
1005
fflag = (logical)flag;
1006
wnga_set_irreg_flag(aa, fflag);
1009
void GA_Set_ghost_corner_flag(int g_a, int flag)
1014
fflag = (logical)flag;
1015
wnga_set_ghost_corner_flag(aa, fflag);
1018
void NGA_Set_ghost_corner_flag(int g_a, int flag)
1023
fflag = (logical)flag;
1024
wnga_set_ghost_corner_flag(aa, fflag);
1027
int GA_Get_dimension(int g_a)
1031
return (int)wnga_get_dimension(aa);
1034
int NGA_Get_dimension(int g_a)
1038
return (int)wnga_get_dimension(aa);
1041
int GA_Allocate(int g_a)
1045
return (int)wnga_allocate(aa);
1048
int NGA_Allocate(int g_a)
1052
return (int)wnga_allocate(aa);
1055
int GA_Pgroup_nodeid(int grp_id)
1057
Integer agrp_id = (Integer)grp_id;
1058
return (int)wnga_pgroup_nodeid(agrp_id);
1061
int NGA_Pgroup_nodeid(int grp_id)
1063
Integer agrp_id = (Integer)grp_id;
1064
return (int)wnga_pgroup_nodeid(agrp_id);
1067
int GA_Pgroup_nnodes(int grp_id)
1069
Integer agrp_id = (Integer)grp_id;
1070
return (int)wnga_pgroup_nnodes(agrp_id);
1073
int NGA_Pgroup_nnodes(int grp_id)
1075
Integer agrp_id = (Integer)grp_id;
1076
return (int)wnga_pgroup_nnodes(agrp_id);
1079
int GA_Pgroup_create(int *list, int count)
1081
Integer acount = (Integer)count;
1084
Integer *_ga_map_capi;
1085
_ga_map_capi = (Integer*)malloc(count * sizeof(Integer));
1086
for (i=0; i<count; i++)
1087
_ga_map_capi[i] = (Integer)list[i];
1088
grp_id = (int)wnga_pgroup_create(_ga_map_capi,acount);
1093
int NGA_Pgroup_create(int *list, int count)
1095
Integer acount = (Integer)count;
1098
Integer *_ga_map_capi;
1099
_ga_map_capi = (Integer*)malloc(count * sizeof(Integer));
1100
for (i=0; i<count; i++)
1101
_ga_map_capi[i] = (Integer)list[i];
1102
grp_id = (int)wnga_pgroup_create(_ga_map_capi,acount);
1107
int GA_Pgroup_destroy(int grp)
1109
Integer grp_id = (Integer)grp;
1110
return (int)wnga_pgroup_destroy(grp_id);
1113
int NGA_Pgroup_destroy(int grp)
1115
Integer grp_id = (Integer)grp;
1116
return (int)wnga_pgroup_destroy(grp_id);
1119
int GA_Pgroup_split(int grp_id, int num_group)
1121
Integer anum = (Integer)num_group;
1122
Integer grp = (Integer)grp_id;
1123
return (int)wnga_pgroup_split(grp, anum);
1126
int NGA_Pgroup_split(int grp_id, int num_group)
1128
Integer anum = (Integer)num_group;
1129
Integer grp = (Integer)grp_id;
1130
return (int)wnga_pgroup_split(grp, anum);
1133
int GA_Pgroup_split_irreg(int grp_id, int color)
1135
Integer acolor = (Integer)color;
1136
Integer grp = (Integer)grp_id;
1137
return (int)wnga_pgroup_split_irreg(grp, acolor);
1140
int NGA_Pgroup_split_irreg(int grp_id, int color)
1142
Integer acolor = (Integer)color;
1143
Integer grp = (Integer)grp_id;
1144
return (int)wnga_pgroup_split_irreg(grp, acolor);
1147
void GA_Update_ghosts(int g_a)
1149
Integer a=(Integer)g_a;
1150
wnga_update_ghosts(a);
1153
void NGA_Update_ghosts(int g_a)
1155
Integer a=(Integer)g_a;
1156
wnga_update_ghosts(a);
1159
void NGA_Update_ghosts_nb(int g_a, ga_nbhdl_t *nbhandle)
1161
Integer a=(Integer)g_a;
1162
wnga_update_ghosts_nb(a,nbhandle);
1165
void GA_Merge_mirrored(int g_a)
1167
Integer a=(Integer)g_a;
1168
wnga_merge_mirrored(a);
1171
void NGA_Merge_mirrored(int g_a)
1173
Integer a=(Integer)g_a;
1174
wnga_merge_mirrored(a);
1177
void GA_Nblock(int g_a, int *nblock)
1180
Integer _ga_work[MAXDIM];
1182
wnga_nblock(aa, _ga_work);
1183
ndim = wnga_get_dimension(aa);
1184
COPYF2C(_ga_work,nblock,ndim);
1187
void NGA_Nblock(int g_a, int *nblock)
1190
Integer _ga_work[MAXDIM];
1192
wnga_nblock(aa, _ga_work);
1193
ndim = wnga_get_dimension(aa);
1194
COPYF2C(_ga_work,nblock,ndim);
1197
int GA_Is_mirrored(int g_a)
1199
Integer a=(Integer)g_a;
1200
return (int)wnga_is_mirrored(a);
1203
int NGA_Is_mirrored(int g_a)
1205
Integer a=(Integer)g_a;
1206
return (int)wnga_is_mirrored(a);
1209
void GA_List_nodeid(int *nlist, int nprocs)
1213
procs = (Integer)(nprocs);
1214
list = malloc(procs*sizeof(int));
1215
wnga_list_nodeid(list, procs);
1216
for (i=0; i<procs; i++) {
1217
nlist[i] = (int)list[i];
1222
void NGA_List_nodeid(int *nlist, int nprocs)
1226
procs = (Integer)(nprocs);
1227
list = malloc(procs*sizeof(int));
1228
wnga_list_nodeid(list, procs);
1229
for (i=0; i<procs; i++) {
1230
nlist[i] = (int)list[i];
1235
void NGA_Merge_distr_patch(int g_a, int *alo, int *ahi,
1236
int g_b, int *blo, int *bhi)
1238
Integer a = (Integer)g_a;
1239
Integer andim = wnga_ndim(a);
1241
Integer b=(Integer)g_b;
1242
Integer bndim = wnga_ndim(b);
1243
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
1244
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
1246
COPYINDEX_C2F(alo,_ga_alo, andim);
1247
COPYINDEX_C2F(ahi,_ga_ahi, andim);
1249
COPYINDEX_C2F(blo,_ga_blo, bndim);
1250
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
1252
wnga_merge_distr_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi);
1255
void NGA_Merge_distr_patch64(int g_a, int64_t *alo, int64_t *ahi,
1256
int g_b, int64_t *blo, int64_t *bhi)
1258
Integer a = (Integer)g_a;
1259
Integer andim = wnga_ndim(a);
1261
Integer b=(Integer)g_b;
1262
Integer bndim = wnga_ndim(b);
1263
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
1264
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
1266
COPYINDEX_C2F(alo,_ga_alo, andim);
1267
COPYINDEX_C2F(ahi,_ga_ahi, andim);
1269
COPYINDEX_C2F(blo,_ga_blo, bndim);
1270
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
1272
wnga_merge_distr_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi);
1275
int NGA_Update_ghost_dir(int g_a, int dimension, int dir, int flag)
1277
Integer a=(Integer)g_a;
1278
Integer idim = (Integer)dimension;
1279
Integer idir = (Integer)dir;
1280
logical iflag = (logical)flag;
1283
st = wnga_update_ghost_dir(a,idim,idir,iflag);
1287
void NGA_NbGet_ghost_dir(int g_a, int mask[], ga_nbhdl_t* nbhandle)
1289
Integer a=(Integer)g_a;
1290
Integer ndim = wnga_ndim(a);
1291
Integer _ga_lo[MAXDIM];
1292
COPYINDEX_C2F(mask,_ga_lo, ndim);
1293
wnga_nbget_ghost_dir(a, _ga_lo,(Integer *)nbhandle);
1296
void NGA_NbGet_ghost_dir64(int g_a, int64_t mask[], ga_nbhdl_t* nbhandle)
1298
Integer a=(Integer)g_a;
1299
Integer ndim = wnga_ndim(a);
1300
Integer _ga_lo[MAXDIM];
1301
COPYINDEX_C2F(mask,_ga_lo, ndim);
1302
wnga_nbget_ghost_dir(a, _ga_lo,(Integer *)nbhandle);
1305
int GA_Has_ghosts(int g_a)
1307
Integer a=(Integer)g_a;
1309
st = wnga_has_ghosts(a);
1313
int NGA_Has_ghosts(int g_a)
1315
Integer a=(Integer)g_a;
1317
st = wnga_has_ghosts(a);
1321
void NGA_Get_ghost_block(int g_a, int lo[], int hi[], void *buf, int ld[])
1323
Integer a=(Integer)g_a;
1324
Integer ndim = wnga_ndim(a);
1325
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1326
Integer _ga_work[MAXDIM];
1327
COPYINDEX_C2F(lo,_ga_lo, ndim);
1328
COPYINDEX_C2F(hi,_ga_hi, ndim);
1329
COPYC2F(ld,_ga_work, ndim-1);
1330
wnga_get_ghost_block(a, _ga_lo, _ga_hi, buf, _ga_work);
1333
void NGA_Get_ghost_block64(int g_a, int64_t lo[], int64_t hi[],
1334
void *buf, int64_t ld[])
1336
Integer a=(Integer)g_a;
1337
Integer ndim = wnga_ndim(a);
1338
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1339
Integer _ga_work[MAXDIM];
1340
COPYINDEX_C2F(lo,_ga_lo, ndim);
1341
COPYINDEX_C2F(hi,_ga_hi, ndim);
1342
COPYC2F(ld,_ga_work, ndim-1);
1343
wnga_get_ghost_block(a, _ga_lo, _ga_hi, buf, _ga_work);
1346
void GA_Mask_sync(int first, int last)
1348
Integer ifirst = (Integer)first;
1349
Integer ilast = (Integer)last;
1350
wnga_mask_sync(ifirst,ilast);
1353
void NGA_Mask_sync(int first, int last)
1355
Integer ifirst = (Integer)first;
1356
Integer ilast = (Integer)last;
1357
wnga_mask_sync(ifirst,ilast);
1360
int GA_Duplicate(int g_a, char* array_name)
1363
Integer a=(Integer)g_a, b;
1364
st = wnga_duplicate(a, &b, array_name);
1365
if(st==TRUE) return (int) b;
1369
int NGA_Duplicate(int g_a, char* array_name)
1372
Integer a=(Integer)g_a, b;
1373
st = wnga_duplicate(a, &b, array_name);
1374
if(st==TRUE) return (int) b;
1378
void GA_Destroy(int g_a)
1381
Integer a=(Integer)g_a;
1382
st = wnga_destroy(a);
1383
if(st==FALSE)GA_Error("GA (c) destroy failed",g_a);
1386
void NGA_Destroy(int g_a)
1389
Integer a=(Integer)g_a;
1390
st = wnga_destroy(a);
1391
if(st==FALSE)GA_Error("GA (c) destroy failed",g_a);
1394
void GA_Set_memory_limit(size_t limit)
1396
Integer lim = (Integer)limit;
1397
wnga_set_memory_limit(lim);
1400
void NGA_Set_memory_limit(size_t limit)
1402
Integer lim = (Integer)limit;
1403
wnga_set_memory_limit(lim);
1406
void GA_Zero(int g_a)
1408
Integer a=(Integer)g_a;
1412
void NGA_Zero(int g_a)
1414
Integer a=(Integer)g_a;
1418
int GA_Pgroup_get_default()
1420
int value = (int)wnga_pgroup_get_default();
1424
int NGA_Pgroup_get_default()
1426
int value = (int)wnga_pgroup_get_default();
1430
void GA_Pgroup_set_default(int p_handle)
1432
Integer grp = (Integer)p_handle;
1433
wnga_pgroup_set_default(grp);
1436
void NGA_Pgroup_set_default(int p_handle)
1438
Integer grp = (Integer)p_handle;
1439
wnga_pgroup_set_default(grp);
1442
int GA_Pgroup_get_mirror()
1444
int value = (int)wnga_pgroup_get_mirror();
1448
int NGA_Pgroup_get_mirror()
1450
int value = (int)wnga_pgroup_get_mirror();
1454
int GA_Pgroup_get_world()
1456
int value = (int)wnga_pgroup_get_world();
1460
int NGA_Pgroup_get_world()
1462
int value = (int)wnga_pgroup_get_world();
1466
int GA_Idot(int g_a, int g_b)
1469
Integer a=(Integer)g_a;
1470
Integer b=(Integer)g_b;
1471
wnga_dot(C_INT, a, b, &value);
1476
long GA_Ldot(int g_a, int g_b)
1479
Integer a=(Integer)g_a;
1480
Integer b=(Integer)g_b;
1481
wnga_dot(C_LONG, a, b, &value);
1486
long long GA_Lldot(int g_a, int g_b)
1489
Integer a=(Integer)g_a;
1490
Integer b=(Integer)g_b;
1491
wnga_dot(C_LONGLONG, a, b, &value);
1496
double GA_Ddot(int g_a, int g_b)
1499
Integer a=(Integer)g_a;
1500
Integer b=(Integer)g_b;
1501
wnga_dot(C_DBL, a, b, &value);
1506
DoubleComplex GA_Zdot(int g_a, int g_b)
1508
DoubleComplex value;
1509
Integer a=(Integer)g_a;
1510
Integer b=(Integer)g_b;
1511
wnga_dot(pnga_type_f2c(MT_F_DCPL),a,b,&value);
1516
SingleComplex GA_Cdot(int g_a, int g_b)
1518
SingleComplex value;
1519
Integer a=(Integer)g_a;
1520
Integer b=(Integer)g_b;
1521
wnga_dot(pnga_type_f2c(MT_F_SCPL),a,b,&value);
1526
float GA_Fdot(int g_a, int g_b)
1529
Integer a=(Integer)g_a;
1530
Integer b=(Integer)g_b;
1531
wnga_dot(C_FLOAT, a, b, &sum);
1536
void GA_Randomize(int g_a, void *value)
1538
Integer a=(Integer)g_a;
1539
wnga_randomize(a, value);
1542
void NGA_Randomize(int g_a, void *value)
1544
Integer a=(Integer)g_a;
1545
wnga_randomize(a, value);
1548
void GA_Fill(int g_a, void *value)
1550
Integer a=(Integer)g_a;
1551
wnga_fill(a, value);
1554
void NGA_Fill(int g_a, void *value)
1556
Integer a=(Integer)g_a;
1557
wnga_fill(a, value);
1560
void GA_Scale(int g_a, void *value)
1562
Integer a=(Integer)g_a;
1563
wnga_scale(a,value);
1567
void GA_Add(void *alpha, int g_a, void* beta, int g_b, int g_c)
1569
Integer a=(Integer)g_a;
1570
Integer b=(Integer)g_b;
1571
Integer c=(Integer)g_c;
1572
wnga_add(alpha, a, beta, b, c);
1576
void GA_Copy(int g_a, int g_b)
1578
Integer a=(Integer)g_a;
1579
Integer b=(Integer)g_b;
1584
void NGA_Get(int g_a, int lo[], int hi[], void* buf, int ld[])
1586
Integer a=(Integer)g_a;
1587
Integer ndim = wnga_ndim(a);
1588
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1589
Integer _ga_work[MAXDIM];
1590
COPYINDEX_C2F(lo,_ga_lo, ndim);
1591
COPYINDEX_C2F(hi,_ga_hi, ndim);
1592
COPYC2F(ld,_ga_work, ndim-1);
1593
wnga_get(a, _ga_lo, _ga_hi, buf, _ga_work);
1596
void NGA_Get64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[])
1598
Integer a=(Integer)g_a;
1599
Integer ndim = wnga_ndim(a);
1600
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1601
Integer _ga_work[MAXDIM];
1602
COPYINDEX_C2F(lo,_ga_lo, ndim);
1603
COPYINDEX_C2F(hi,_ga_hi, ndim);
1604
COPYC2F(ld,_ga_work, ndim-1);
1605
wnga_get(a, _ga_lo, _ga_hi, buf, _ga_work);
1608
void NGA_NbGet(int g_a, int lo[], int hi[], void* buf, int ld[],
1609
ga_nbhdl_t* nbhandle)
1611
Integer a=(Integer)g_a;
1612
Integer ndim = wnga_ndim(a);
1613
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1614
Integer _ga_work[MAXDIM];
1615
COPYINDEX_C2F(lo,_ga_lo, ndim);
1616
COPYINDEX_C2F(hi,_ga_hi, ndim);
1617
COPYC2F(ld,_ga_work, ndim-1);
1618
wnga_nbget(a, _ga_lo, _ga_hi, buf, _ga_work,(Integer *)nbhandle);
1621
void NGA_NbGet64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[],
1622
ga_nbhdl_t* nbhandle)
1624
Integer a=(Integer)g_a;
1625
Integer ndim = wnga_ndim(a);
1626
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1627
Integer _ga_work[MAXDIM];
1628
COPYINDEX_C2F(lo,_ga_lo, ndim);
1629
COPYINDEX_C2F(hi,_ga_hi, ndim);
1630
COPYC2F(ld,_ga_work, ndim-1);
1631
wnga_nbget(a, _ga_lo, _ga_hi, buf, _ga_work,(Integer *)nbhandle);
1634
void NGA_Put(int g_a, int lo[], int hi[], void* buf, int ld[])
1636
Integer a=(Integer)g_a;
1637
Integer ndim = wnga_ndim(a);
1638
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1639
Integer _ga_work[MAXDIM];
1640
COPYINDEX_C2F(lo,_ga_lo, ndim);
1641
COPYINDEX_C2F(hi,_ga_hi, ndim);
1642
COPYC2F(ld,_ga_work, ndim-1);
1643
wnga_put(a, _ga_lo, _ga_hi, buf, _ga_work);
1646
void NGA_Put64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[])
1648
Integer a=(Integer)g_a;
1649
Integer ndim = wnga_ndim(a);
1650
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1651
Integer _ga_work[MAXDIM];
1652
COPYINDEX_C2F(lo,_ga_lo, ndim);
1653
COPYINDEX_C2F(hi,_ga_hi, ndim);
1654
COPYC2F(ld,_ga_work, ndim-1);
1655
wnga_put(a, _ga_lo, _ga_hi, buf, _ga_work);
1658
void NGA_NbPut(int g_a, int lo[], int hi[], void* buf, int ld[],
1659
ga_nbhdl_t* nbhandle)
1661
Integer a=(Integer)g_a;
1662
Integer ndim = wnga_ndim(a);
1663
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1664
Integer _ga_work[MAXDIM];
1665
COPYINDEX_C2F(lo,_ga_lo, ndim);
1666
COPYINDEX_C2F(hi,_ga_hi, ndim);
1667
COPYC2F(ld,_ga_work, ndim-1);
1668
wnga_nbput(a, _ga_lo, _ga_hi, buf, _ga_work,(Integer *)nbhandle);
1671
void NGA_NbPut64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[],
1672
ga_nbhdl_t* nbhandle)
1674
Integer a=(Integer)g_a;
1675
Integer ndim = wnga_ndim(a);
1676
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1677
Integer _ga_work[MAXDIM];
1678
COPYINDEX_C2F(lo,_ga_lo, ndim);
1679
COPYINDEX_C2F(hi,_ga_hi, ndim);
1680
COPYC2F(ld,_ga_work, ndim-1);
1681
wnga_nbput(a, _ga_lo, _ga_hi, buf, _ga_work,(Integer *)nbhandle);
1684
int NGA_NbTest(ga_nbhdl_t* nbhandle)
1686
return(wnga_nbtest((Integer *)nbhandle));
1689
void NGA_NbWait(ga_nbhdl_t* nbhandle)
1691
wnga_nbwait((Integer *)nbhandle);
1694
void NGA_Strided_acc(int g_a, int lo[], int hi[], int skip[],
1695
void* buf, int ld[], void *alpha)
1697
Integer a=(Integer)g_a;
1698
Integer ndim = wnga_ndim(a);
1699
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM], _ga_skip[MAXDIM];
1700
Integer _ga_work[MAXDIM];
1701
COPYINDEX_C2F(lo,_ga_lo, ndim);
1702
COPYINDEX_C2F(hi,_ga_hi, ndim);
1703
COPYC2F(ld,_ga_work, ndim-1);
1704
COPYC2F(skip, _ga_skip, ndim);
1705
wnga_strided_acc(a, _ga_lo, _ga_hi, _ga_skip, buf, _ga_work, alpha);
1708
void NGA_Strided_acc64(int g_a, int64_t lo[], int64_t hi[], int64_t skip[],
1709
void* buf, int64_t ld[], void *alpha)
1711
Integer a=(Integer)g_a;
1712
Integer ndim = wnga_ndim(a);
1713
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1714
Integer _ga_skip[MAXDIM];
1715
Integer _ga_work[MAXDIM];
1716
COPYINDEX_C2F(lo,_ga_lo, ndim);
1717
COPYINDEX_C2F(hi,_ga_hi, ndim);
1718
COPYC2F(ld,_ga_work, ndim-1);
1719
COPYC2F(skip, _ga_skip, ndim);
1720
wnga_strided_acc(a, _ga_lo, _ga_hi, _ga_skip, buf, _ga_work, alpha);
1723
void NGA_Strided_get(int g_a, int lo[], int hi[], int skip[],
1724
void* buf, int ld[])
1726
Integer a=(Integer)g_a;
1727
Integer ndim = wnga_ndim(a);
1728
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1729
Integer _ga_skip[MAXDIM];
1730
Integer _ga_work[MAXDIM];
1731
COPYINDEX_C2F(lo,_ga_lo, ndim);
1732
COPYINDEX_C2F(hi,_ga_hi, ndim);
1733
COPYC2F(ld,_ga_work, ndim-1);
1734
COPYC2F(skip, _ga_skip, ndim);
1735
wnga_strided_get(a, _ga_lo, _ga_hi, _ga_skip, buf, _ga_work);
1738
void NGA_Strided_get64(int g_a, int64_t lo[], int64_t hi[], int64_t skip[],
1739
void* buf, int64_t ld[])
1741
Integer a=(Integer)g_a;
1742
Integer ndim = wnga_ndim(a);
1743
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1744
Integer _ga_skip[MAXDIM];
1745
Integer _ga_work[MAXDIM];
1746
COPYINDEX_C2F(lo,_ga_lo, ndim);
1747
COPYINDEX_C2F(hi,_ga_hi, ndim);
1748
COPYC2F(ld,_ga_work, ndim-1);
1749
COPYC2F(skip, _ga_skip, ndim);
1750
wnga_strided_get(a, _ga_lo, _ga_hi, _ga_skip, buf, _ga_work);
1753
void NGA_Strided_put(int g_a, int lo[], int hi[], int skip[],
1754
void* buf, int ld[])
1756
Integer a=(Integer)g_a;
1757
Integer ndim = wnga_ndim(a);
1758
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1759
Integer _ga_skip[MAXDIM];
1760
Integer _ga_work[MAXDIM];
1761
COPYINDEX_C2F(lo,_ga_lo, ndim);
1762
COPYINDEX_C2F(hi,_ga_hi, ndim);
1763
COPYC2F(ld,_ga_work, ndim-1);
1764
COPYC2F(skip, _ga_skip, ndim);
1765
wnga_strided_put(a, _ga_lo, _ga_hi, _ga_skip, buf, _ga_work);
1768
void NGA_Strided_put64(int g_a, int64_t lo[], int64_t hi[], int64_t skip[],
1769
void* buf, int64_t ld[])
1771
Integer a=(Integer)g_a;
1772
Integer ndim = wnga_ndim(a);
1773
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1774
Integer _ga_skip[MAXDIM];
1775
Integer _ga_work[MAXDIM];
1776
COPYINDEX_C2F(lo,_ga_lo, ndim);
1777
COPYINDEX_C2F(hi,_ga_hi, ndim);
1778
COPYC2F(ld,_ga_work, ndim-1);
1779
COPYC2F(skip, _ga_skip, ndim);
1780
wnga_strided_put(a, _ga_lo, _ga_hi, _ga_skip, buf, _ga_work);
1783
void NGA_Acc(int g_a, int lo[], int hi[], void* buf,int ld[], void* alpha)
1785
Integer a=(Integer)g_a;
1786
Integer ndim = wnga_ndim(a);
1787
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1788
Integer _ga_work[MAXDIM];
1789
COPYINDEX_C2F(lo,_ga_lo, ndim);
1790
COPYINDEX_C2F(hi,_ga_hi, ndim);
1791
COPYC2F(ld,_ga_work, ndim-1);
1792
wnga_acc(a, _ga_lo, _ga_hi, buf, _ga_work, alpha);
1795
void NGA_Acc64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[], void* alpha)
1797
Integer a=(Integer)g_a;
1798
Integer ndim = wnga_ndim(a);
1799
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1800
Integer _ga_work[MAXDIM];
1801
COPYINDEX_C2F(lo,_ga_lo, ndim);
1802
COPYINDEX_C2F(hi,_ga_hi, ndim);
1803
COPYC2F(ld,_ga_work, ndim-1);
1804
wnga_acc(a, _ga_lo, _ga_hi, buf, _ga_work, alpha);
1807
void NGA_NbAcc(int g_a, int lo[], int hi[], void* buf,int ld[], void* alpha,
1808
ga_nbhdl_t* nbhandle)
1810
Integer a=(Integer)g_a;
1811
Integer ndim = wnga_ndim(a);
1812
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1813
Integer _ga_work[MAXDIM];
1814
COPYINDEX_C2F(lo,_ga_lo, ndim);
1815
COPYINDEX_C2F(hi,_ga_hi, ndim);
1816
COPYC2F(ld,_ga_work, ndim-1);
1817
wnga_nbacc(a, _ga_lo,_ga_hi,buf,_ga_work,alpha,(Integer *)nbhandle);
1820
void NGA_NbAcc64(int g_a, int64_t lo[], int64_t hi[], void* buf,int64_t ld[], void* alpha,
1821
ga_nbhdl_t* nbhandle)
1823
Integer a=(Integer)g_a;
1824
Integer ndim = wnga_ndim(a);
1825
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1826
Integer _ga_work[MAXDIM];
1827
COPYINDEX_C2F(lo,_ga_lo, ndim);
1828
COPYINDEX_C2F(hi,_ga_hi, ndim);
1829
COPYC2F(ld,_ga_work, ndim-1);
1830
wnga_nbacc(a, _ga_lo,_ga_hi,buf,_ga_work,alpha,(Integer *)nbhandle);
1833
void NGA_Periodic_get(int g_a, int lo[], int hi[], void* buf, int ld[])
1835
Integer a=(Integer)g_a;
1836
Integer ndim = wnga_ndim(a);
1837
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1838
Integer _ga_work[MAXDIM];
1839
COPYINDEX_C2F(lo,_ga_lo, ndim);
1840
COPYINDEX_C2F(hi,_ga_hi, ndim);
1841
COPYC2F(ld,_ga_work, ndim-1);
1842
wnga_periodic(a, _ga_lo, _ga_hi, buf, _ga_work, NULL, PERIODIC_GET);
1845
void NGA_Periodic_get64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[])
1847
Integer a=(Integer)g_a;
1848
Integer ndim = wnga_ndim(a);
1849
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1850
Integer _ga_work[MAXDIM];
1851
COPYINDEX_C2F(lo,_ga_lo, ndim);
1852
COPYINDEX_C2F(hi,_ga_hi, ndim);
1853
COPYC2F(ld,_ga_work, ndim-1);
1854
wnga_periodic(a, _ga_lo, _ga_hi, buf, _ga_work, NULL, PERIODIC_GET);
1857
void NGA_Periodic_put(int g_a, int lo[], int hi[], void* buf, int ld[])
1859
Integer a=(Integer)g_a;
1860
Integer ndim = wnga_ndim(a);
1861
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1862
Integer _ga_work[MAXDIM];
1863
COPYINDEX_C2F(lo,_ga_lo, ndim);
1864
COPYINDEX_C2F(hi,_ga_hi, ndim);
1865
COPYC2F(ld,_ga_work, ndim-1);
1866
wnga_periodic(a, _ga_lo, _ga_hi, buf, _ga_work, NULL, PERIODIC_PUT);
1869
void NGA_Periodic_put64(int g_a, int64_t lo[], int64_t hi[], void* buf, int64_t ld[])
1871
Integer a=(Integer)g_a;
1872
Integer ndim = wnga_ndim(a);
1873
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1874
Integer _ga_work[MAXDIM];
1875
COPYINDEX_C2F(lo,_ga_lo, ndim);
1876
COPYINDEX_C2F(hi,_ga_hi, ndim);
1877
COPYC2F(ld,_ga_work, ndim-1);
1878
wnga_periodic(a, _ga_lo, _ga_hi, buf, _ga_work, NULL, PERIODIC_PUT);
1881
void NGA_Periodic_acc(int g_a, int lo[], int hi[], void* buf,int ld[], void* alpha)
1883
Integer a=(Integer)g_a;
1884
Integer ndim = wnga_ndim(a);
1885
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1886
Integer _ga_work[MAXDIM];
1887
COPYINDEX_C2F(lo,_ga_lo, ndim);
1888
COPYINDEX_C2F(hi,_ga_hi, ndim);
1889
COPYC2F(ld,_ga_work, ndim-1);
1890
wnga_periodic(a, _ga_lo, _ga_hi, buf, _ga_work, alpha, PERIODIC_ACC);
1893
void NGA_Periodic_acc64(int g_a, int64_t lo[], int64_t hi[], void* buf,int64_t ld[], void* alpha)
1895
Integer a=(Integer)g_a;
1896
Integer ndim = wnga_ndim(a);
1897
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1898
Integer _ga_work[MAXDIM];
1899
COPYINDEX_C2F(lo,_ga_lo, ndim);
1900
COPYINDEX_C2F(hi,_ga_hi, ndim);
1901
COPYC2F(ld,_ga_work, ndim-1);
1902
wnga_periodic(a, _ga_lo, _ga_hi, buf, _ga_work, alpha, PERIODIC_ACC);
1905
long NGA_Read_inc(int g_a, int subscript[], long inc)
1907
Integer a=(Integer)g_a;
1908
Integer ndim = wnga_ndim(a);
1909
Integer in=(Integer)inc;
1910
Integer _ga_lo[MAXDIM];
1911
COPYINDEX_C2F(subscript, _ga_lo, ndim);
1912
return (long)wnga_read_inc(a, _ga_lo, in);
1915
long NGA_Read_inc64(int g_a, int64_t subscript[], long inc)
1917
Integer a=(Integer)g_a;
1918
Integer ndim = wnga_ndim(a);
1919
Integer in=(Integer)inc;
1920
Integer _ga_lo[MAXDIM];
1921
COPYINDEX_C2F(subscript, _ga_lo, ndim);
1922
return (long)wnga_read_inc(a, _ga_lo, in);
1925
void NGA_Distribution(int g_a, int iproc, int lo[], int hi[])
1927
Integer a=(Integer)g_a;
1928
Integer p=(Integer)iproc;
1929
Integer ndim = wnga_ndim(a);
1930
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1931
wnga_distribution(a, p, _ga_lo, _ga_hi);
1932
COPYINDEX_F2C(_ga_lo,lo, ndim);
1933
COPYINDEX_F2C(_ga_hi,hi, ndim);
1936
void NGA_Distribution64(int g_a, int iproc, int64_t lo[], int64_t hi[])
1938
Integer a=(Integer)g_a;
1939
Integer p=(Integer)iproc;
1940
Integer ndim = wnga_ndim(a);
1941
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
1942
wnga_distribution(a, p, _ga_lo, _ga_hi);
1943
COPYINDEX_F2C_64(_ga_lo,lo, ndim);
1944
COPYINDEX_F2C_64(_ga_hi,hi, ndim);
1947
void NGA_Select_elem(int g_a, char* op, void* val, int* index)
1949
Integer a=(Integer)g_a;
1950
Integer ndim = wnga_ndim(a);
1951
Integer _ga_lo[MAXDIM];
1952
wnga_select_elem(a, op, val, _ga_lo);
1953
COPYINDEX_F2C(_ga_lo,index,ndim);
1956
void NGA_Select_elem64(int g_a, char* op, void* val, int64_t* index)
1958
Integer a=(Integer)g_a;
1959
Integer ndim = wnga_ndim(a);
1960
Integer _ga_lo[MAXDIM];
1961
wnga_select_elem(a, op, val, _ga_lo);
1962
COPYINDEX_F2C_64(_ga_lo,index,ndim);
1965
void GA_Scan_add(int g_a, int g_b, int g_sbit, int lo,
1968
Integer a = (Integer)g_a;
1969
Integer b = (Integer)g_b;
1970
Integer s = (Integer)g_sbit;
1971
Integer x = (Integer)excl;
1974
wnga_scan_add(a, b, s, alo, ahi, x);
1978
void GA_Scan_add64(int g_a, int g_b, int g_sbit, int64_t lo,
1979
int64_t hi, int excl)
1981
Integer a = (Integer)g_a;
1982
Integer b = (Integer)g_b;
1983
Integer s = (Integer)g_sbit;
1984
Integer x = (Integer)excl;
1987
wnga_scan_add(a, b, s, alo, ahi, x);
1991
void GA_Scan_copy(int g_a, int g_b, int g_sbit, int lo,
1994
Integer a = (Integer)g_a;
1995
Integer b = (Integer)g_b;
1996
Integer s = (Integer)g_sbit;
1999
wnga_scan_copy(a, b, s, alo, ahi);
2003
void GA_Scan_copy64(int g_a, int g_b, int g_sbit, int64_t lo,
2006
Integer a = (Integer)g_a;
2007
Integer b = (Integer)g_b;
2008
Integer s = (Integer)g_sbit;
2011
wnga_scan_copy(a, b, s, alo, ahi);
2015
void GA_Patch_enum(int g_a, int lo, int hi, void *start, void *inc)
2017
Integer a = (Integer)g_a;
2020
wnga_patch_enum(a, alo, ahi, start, inc);
2023
void GA_Patch_enum64(int g_a, int64_t lo, int64_t hi, void *start, void *inc)
2025
Integer a = (Integer)g_a;
2028
wnga_patch_enum(a, alo, ahi, start, inc);
2031
void GA_Pack(int g_src, int g_dest, int g_mask, int lo, int hi, int *icount)
2033
Integer a = (Integer)g_src;
2034
Integer b = (Integer)g_dest;
2035
Integer s = (Integer)g_mask;
2039
wnga_pack(a, b, s, alo, ahi, &icnt);
2043
void GA_Pack64(int g_src, int g_dest, int g_mask, int64_t lo, int64_t hi, int64_t *icount)
2045
Integer a = (Integer)g_src;
2046
Integer b = (Integer)g_dest;
2047
Integer s = (Integer)g_mask;
2051
wnga_pack(a, b, s, alo, ahi, &icnt);
2055
void GA_Unpack(int g_src, int g_dest, int g_mask, int lo, int hi, int *icount)
2057
Integer a = (Integer)g_src;
2058
Integer b = (Integer)g_dest;
2059
Integer s = (Integer)g_mask;
2063
wnga_unpack(a, b, s, alo, ahi, &icnt);
2067
void GA_Unpack64(int g_src, int g_dest, int g_mask, int64_t lo, int64_t hi, int64_t *icount)
2069
Integer a = (Integer)g_src;
2070
Integer b = (Integer)g_dest;
2071
Integer s = (Integer)g_mask;
2075
wnga_unpack(a, b, s, alo, ahi, &icnt);
2079
int GA_Compare_distr(int g_a, int g_b)
2082
Integer a=(Integer)g_a;
2083
Integer b=(Integer)g_b;
2084
st = wnga_compare_distr(a,b);
2085
if(st == TRUE) return 0;
2089
int NGA_Compare_distr(int g_a, int g_b)
2092
Integer a=(Integer)g_a;
2093
Integer b=(Integer)g_b;
2094
st = wnga_compare_distr(a,b);
2095
if(st == TRUE) return 0;
2099
void NGA_Access(int g_a, int lo[], int hi[], void *ptr, int ld[])
2101
Integer a=(Integer)g_a;
2102
Integer ndim = wnga_ndim(a);
2103
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
2104
Integer _ga_work[MAXDIM];
2105
COPYINDEX_C2F(lo,_ga_lo,ndim);
2106
COPYINDEX_C2F(hi,_ga_hi,ndim);
2108
wnga_access_ptr(a,_ga_lo, _ga_hi, ptr, _ga_work);
2109
COPYF2C(_ga_work,ld, ndim-1);
2112
void NGA_Access64(int g_a, int64_t lo[], int64_t hi[], void *ptr, int64_t ld[])
2114
Integer a=(Integer)g_a;
2115
Integer ndim = wnga_ndim(a);
2116
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
2117
Integer _ga_work[MAXDIM];
2118
COPYINDEX_C2F(lo,_ga_lo,ndim);
2119
COPYINDEX_C2F(hi,_ga_hi,ndim);
2121
wnga_access_ptr(a,_ga_lo, _ga_hi, ptr, _ga_work);
2122
COPYF2C_64(_ga_work,ld, ndim-1);
2125
void NGA_Access_block(int g_a, int idx, void *ptr, int ld[])
2127
Integer a=(Integer)g_a;
2128
Integer ndim = wnga_ndim(a);
2129
Integer iblock = (Integer)idx;
2130
Integer _ga_work[MAXDIM];
2131
wnga_access_block_ptr(a,iblock,ptr,_ga_work);
2132
COPYF2C(_ga_work,ld, ndim-1);
2135
void NGA_Access_block64(int g_a, int64_t idx, void *ptr, int64_t ld[])
2137
Integer a=(Integer)g_a;
2138
Integer ndim = wnga_ndim(a);
2139
Integer iblock = (Integer)idx;
2140
Integer _ga_work[MAXDIM];
2141
wnga_access_block_ptr(a,iblock,ptr,_ga_work);
2142
COPYF2C_64(_ga_work,ld, ndim-1);
2145
void NGA_Access_block_grid(int g_a, int index[], void *ptr, int ld[])
2147
Integer a=(Integer)g_a;
2148
Integer ndim = wnga_ndim(a);
2149
Integer _ga_work[MAXDIM], _ga_lo[MAXDIM];
2150
COPYC2F(index, _ga_lo, ndim);
2151
wnga_access_block_grid_ptr(a,_ga_lo,ptr,_ga_work);
2152
COPYF2C(_ga_work,ld, ndim-1);
2155
void NGA_Access_block_grid64(int g_a, int64_t index[], void *ptr, int64_t ld[])
2157
Integer a=(Integer)g_a;
2158
Integer ndim = wnga_ndim(a);
2159
Integer _ga_lo[MAXDIM], _ga_work[MAXDIM];
2160
COPYC2F(index, _ga_lo, ndim);
2161
wnga_access_block_grid_ptr(a,_ga_lo,ptr,_ga_work);
2162
COPYF2C_64(_ga_work,ld, ndim-1);
2165
void NGA_Access_block_segment(int g_a, int proc, void *ptr, int *len)
2167
Integer a=(Integer)g_a;
2168
Integer iblock = (Integer)proc;
2169
Integer ilen = (Integer)(*len);
2170
wnga_access_block_segment_ptr(a,iblock,ptr,&ilen);
2174
void NGA_Access_block_segment64(int g_a, int proc, void *ptr, int64_t *len)
2176
Integer a=(Integer)g_a;
2177
Integer iblock = (Integer)proc;
2178
Integer ilen = (Integer)(*len);
2179
wnga_access_block_segment_ptr(a,iblock,ptr,&ilen);
2180
*len = (int64_t)ilen;
2183
void NGA_Access_ghosts(int g_a, int dims[], void *ptr, int ld[])
2185
Integer a=(Integer)g_a;
2186
Integer ndim = wnga_ndim(a);
2187
Integer _ga_lo[MAXDIM];
2188
Integer _ga_work[MAXDIM];
2189
wnga_access_ghost_ptr(a, _ga_lo, ptr, _ga_work);
2190
COPYF2C(_ga_work,ld, ndim-1);
2191
COPYF2C(_ga_lo, dims, ndim);
2194
void NGA_Access_ghosts64(int g_a, int64_t dims[], void *ptr, int64_t ld[])
2196
Integer a=(Integer)g_a;
2197
Integer ndim = wnga_ndim(a);
2198
Integer _ga_lo[MAXDIM];
2199
Integer _ga_work[MAXDIM];
2201
wnga_access_ghost_ptr(a, _ga_lo, ptr, _ga_work);
2202
COPYF2C_64(_ga_work,ld, ndim-1);
2203
COPYF2C_64(_ga_lo, dims, ndim);
2206
void NGA_Access_ghost_element(int g_a, void *ptr, int subscript[], int ld[])
2208
Integer a=(Integer)g_a;
2209
Integer ndim = wnga_ndim(a);
2210
Integer _subscript[MAXDIM];
2211
Integer _ld[MAXDIM];
2213
COPYINDEX_C2F(subscript, _subscript, ndim);
2214
COPYINDEX_C2F(ld, _ld, ndim-1);
2215
wnga_access_ghost_element_ptr(a, ptr, _subscript, _ld);
2218
void NGA_Access_ghost_element64(int g_a, void *ptr, int64_t subscript[], int64_t ld[])
2220
Integer a=(Integer)g_a;
2221
Integer ndim = wnga_ndim(a);
2222
Integer _subscript[MAXDIM];
2223
Integer _ld[MAXDIM];
2225
COPYINDEX_C2F(subscript, _subscript, ndim);
2226
COPYINDEX_C2F(ld, _ld, ndim-1);
2227
wnga_access_ghost_element_ptr(a, ptr, _subscript, _ld);
2230
void NGA_Release(int g_a, int lo[], int hi[])
2232
Integer a=(Integer)g_a;
2233
Integer ndim = wnga_ndim(a);
2234
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
2235
COPYINDEX_C2F(lo,_ga_lo,ndim);
2236
COPYINDEX_C2F(hi,_ga_hi,ndim);
2238
wnga_release(a,_ga_lo, _ga_hi);
2241
void NGA_Release64(int g_a, int64_t lo[], int64_t hi[])
2243
Integer a=(Integer)g_a;
2244
Integer ndim = wnga_ndim(a);
2245
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
2246
COPYINDEX_C2F(lo,_ga_lo,ndim);
2247
COPYINDEX_C2F(hi,_ga_hi,ndim);
2249
wnga_release(a,_ga_lo, _ga_hi);
2252
void NGA_Release_block(int g_a, int idx)
2254
Integer a=(Integer)g_a;
2255
Integer iblock = (Integer)idx;
2257
wnga_release_block(a, iblock);
2260
void NGA_Release_block_grid(int g_a, int index[])
2262
Integer a=(Integer)g_a;
2263
Integer ndim = wnga_ndim(a);
2264
Integer _ga_lo[MAXDIM];
2265
COPYINDEX_C2F(index,_ga_lo,ndim);
2267
wnga_release_block_grid(a, _ga_lo);
2270
void NGA_Release_block_segment(int g_a, int idx)
2272
Integer a=(Integer)g_a;
2273
Integer iproc = (Integer)idx;
2275
wnga_release_block_segment(a, iproc);
2278
void NGA_Release_ghost_element(int g_a, int index[])
2280
Integer a=(Integer)g_a;
2281
Integer ndim = wnga_ndim(a);
2282
Integer _ga_lo[MAXDIM];
2283
COPYINDEX_C2F(index,_ga_lo,ndim);
2285
wnga_release_ghost_element(a, _ga_lo);
2288
void NGA_Release_ghost_element64(int g_a, int64_t index[])
2290
Integer a=(Integer)g_a;
2291
Integer ndim = wnga_ndim(a);
2292
Integer _ga_lo[MAXDIM];
2293
COPYINDEX_C2F(index,_ga_lo,ndim);
2295
wnga_release_ghost_element(a, _ga_lo);
2299
void NGA_Release_ghosts(int g_a)
2301
Integer a=(Integer)g_a;
2303
wnga_release_ghosts(a);
2306
int NGA_Locate(int g_a, int subscript[])
2309
Integer a=(Integer)g_a, owner;
2310
Integer ndim = wnga_ndim(a);
2311
Integer _ga_lo[MAXDIM];
2312
COPYINDEX_C2F(subscript,_ga_lo,ndim);
2314
st = wnga_locate(a,_ga_lo,&owner);
2315
if(st == TRUE) return (int)owner;
2319
int NGA_Locate64(int g_a, int64_t subscript[])
2322
Integer a=(Integer)g_a, owner;
2323
Integer ndim = wnga_ndim(a);
2324
Integer _ga_lo[MAXDIM];
2325
COPYINDEX_C2F(subscript,_ga_lo,ndim);
2327
st = wnga_locate(a,_ga_lo,&owner);
2328
if(st == TRUE) return (int)owner;
2333
int NGA_Locate_nnodes(int g_a, int lo[], int hi[])
2336
Integer a=(Integer)g_a, np;
2337
Integer ndim = wnga_ndim(a);
2338
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
2340
COPYINDEX_C2F(lo,_ga_lo,ndim);
2341
COPYINDEX_C2F(hi,_ga_hi,ndim);
2342
/* st = wnga_locate_nnodes(a, _ga_lo, _ga_hi, &np); */
2343
(void)wnga_locate_nnodes(a, _ga_lo, _ga_hi, &np);
2348
int NGA_Locate_nnodes64(int g_a, int64_t lo[], int64_t hi[])
2351
Integer a=(Integer)g_a, np;
2352
Integer ndim = wnga_ndim(a);
2353
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
2355
COPYINDEX_C2F(lo,_ga_lo,ndim);
2356
COPYINDEX_C2F(hi,_ga_hi,ndim);
2357
/* st = wnga_locate_nnodes(a, _ga_lo, _ga_hi, &np); */
2358
(void)wnga_locate_nnodes(a, _ga_lo, _ga_hi, &np);
2363
int NGA_Locate_region(int g_a,int lo[],int hi[],int map[],int procs[])
2366
Integer a=(Integer)g_a, np_guess, np_actual;
2367
Integer ndim = wnga_ndim(a);
2370
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
2371
Integer *_ga_map_capi;
2372
COPYINDEX_C2F(lo,_ga_lo,ndim);
2373
COPYINDEX_C2F(hi,_ga_hi,ndim);
2374
st = wnga_locate_nnodes(a, _ga_lo, _ga_hi, &np_guess);
2375
tmap = (Integer *)malloc( (int)(np_guess*2*ndim *sizeof(Integer)));
2376
if(!map)GA_Error("NGA_Locate_region: unable to allocate memory",g_a);
2377
_ga_map_capi = (Integer*)malloc(np_guess*sizeof(Integer));
2379
st = wnga_locate_region(a,_ga_lo, _ga_hi, tmap, _ga_map_capi, &np_actual);
2380
assert(np_guess == np_actual);
2387
COPY(int,_ga_map_capi,procs, np_actual);
2389
/* might have to swap lo/hi when copying */
2391
for(i=0; i< np_actual*2; i++){
2392
Integer *ptmap = tmap+i*ndim;
2393
int *pmap = map +i*ndim;
2394
COPYINDEX_F2C(ptmap, pmap, ndim);
2398
return (int)np_actual;
2401
int NGA_Locate_region64(int g_a,int64_t lo[],int64_t hi[],int64_t map[],int procs[])
2404
Integer a=(Integer)g_a, np_guess, np_actual;
2405
Integer ndim = wnga_ndim(a);
2408
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
2409
Integer *_ga_map_capi;
2410
COPYINDEX_C2F(lo,_ga_lo,ndim);
2411
COPYINDEX_C2F(hi,_ga_hi,ndim);
2412
st = wnga_locate_nnodes(a, _ga_lo, _ga_hi, &np_guess);
2413
tmap = (Integer *)malloc( (int)(np_guess*2*ndim *sizeof(Integer)));
2414
if(!map)GA_Error("NGA_Locate_region: unable to allocate memory",g_a);
2415
_ga_map_capi = (Integer*)malloc(np_guess*sizeof(Integer));
2417
st = wnga_locate_region(a,_ga_lo, _ga_hi, tmap, _ga_map_capi, &np_actual);
2418
assert(np_guess == np_actual);
2425
COPY(int,_ga_map_capi,procs, np_actual);
2427
/* might have to swap lo/hi when copying */
2429
for(i=0; i< np_actual*2; i++){
2430
Integer *ptmap = tmap+i*ndim;
2431
int64_t *pmap = map +i*ndim;
2432
COPYINDEX_F2C_64(ptmap, pmap, ndim);
2436
return (int)np_actual;
2439
int NGA_Locate_num_blocks(int g_a, int *lo, int *hi)
2442
Integer a = (Integer)g_a;
2443
Integer ndim = wnga_ndim(a);
2444
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
2445
COPYINDEX_C2F(lo,_ga_lo,ndim);
2446
COPYINDEX_C2F(hi,_ga_hi,ndim);
2447
ret = wnga_locate_num_blocks(a, _ga_lo, _ga_hi);
2452
void NGA_Inquire(int g_a, int *type, int *ndim, int dims[])
2454
Integer a=(Integer)g_a;
2455
Integer ttype, nndim;
2456
Integer _ga_dims[MAXDIM];
2457
wnga_inquire(a,&ttype, &nndim, _ga_dims);
2458
COPYF2C(_ga_dims, dims,nndim);
2463
void NGA_Inquire64(int g_a, int *type, int *ndim, int64_t dims[])
2465
Integer a=(Integer)g_a;
2466
Integer ttype, nndim;
2467
Integer _ga_dims[MAXDIM];
2468
wnga_inquire(a,&ttype, &nndim, _ga_dims);
2469
COPYF2C_64(_ga_dims, dims,nndim);
2474
char* GA_Inquire_name(int g_a)
2476
Integer a=(Integer)g_a;
2478
wnga_inquire_name(a, &ptr);
2482
char* NGA_Inquire_name(int g_a)
2484
Integer a=(Integer)g_a;
2486
wnga_inquire_name(a, &ptr);
2490
size_t GA_Memory_avail(void)
2492
return (size_t)wnga_memory_avail();
2495
size_t NGA_Memory_avail(void)
2497
return (size_t)wnga_memory_avail();
2500
int GA_Memory_limited(void)
2502
if(wnga_memory_limited() ==TRUE) return 1;
2506
int NGA_Memory_limited(void)
2508
if(wnga_memory_limited() ==TRUE) return 1;
2512
void NGA_Proc_topology(int g_a, int proc, int coord[])
2514
Integer a=(Integer)g_a;
2515
Integer p=(Integer)proc;
2516
Integer ndim = wnga_ndim(a);
2517
Integer _ga_work[MAXDIM];
2518
wnga_proc_topology(a, p, _ga_work);
2519
COPY(int,_ga_work, coord,ndim);
2522
void GA_Get_proc_grid(int g_a, int dims[])
2524
Integer a=(Integer)g_a;
2525
Integer ndim = wnga_ndim(a);
2526
Integer _ga_work[MAXDIM];
2527
wnga_get_proc_grid(a, _ga_work);
2528
COPY(int,_ga_work, dims ,ndim);
2531
void NGA_Get_proc_grid(int g_a, int dims[])
2533
Integer a=(Integer)g_a;
2534
Integer _ga_work[MAXDIM];
2535
Integer ndim = wnga_ndim(a);
2536
wnga_get_proc_grid(a, _ga_work);
2537
COPY(int,_ga_work, dims ,ndim);
2540
void GA_Check_handle(int g_a, char* string)
2542
Integer a=(Integer)g_a;
2543
wnga_check_handle(a,string);
2546
int GA_Create_mutexes(int number)
2548
Integer n = (Integer)number;
2549
if(wnga_create_mutexes(n) == TRUE)return 1;
2553
int NGA_Create_mutexes(int number)
2555
Integer n = (Integer)number;
2556
if(wnga_create_mutexes(n) == TRUE)return 1;
2560
int GA_Destroy_mutexes(void) {
2561
if(wnga_destroy_mutexes() == TRUE) return 1;
2565
int NGA_Destroy_mutexes(void) {
2566
if(wnga_destroy_mutexes() == TRUE) return 1;
2570
void GA_Lock(int mutex)
2572
Integer m = (Integer)mutex;
2576
void NGA_Lock(int mutex)
2578
Integer m = (Integer)mutex;
2582
void GA_Unlock(int mutex)
2584
Integer m = (Integer)mutex;
2588
void NGA_Unlock(int mutex)
2590
Integer m = (Integer)mutex;
2594
void GA_Brdcst(void *buf, int lenbuf, int root)
2596
Integer type=GA_TYPE_BRD;
2597
Integer len = (Integer)lenbuf;
2598
Integer orig = (Integer)root;
2599
wnga_msg_brdcst(type, buf, len, orig);
2602
void GA_Pgroup_brdcst(int grp_id, void *buf, int lenbuf, int root)
2604
Integer type=GA_TYPE_BRD;
2605
Integer len = (Integer)lenbuf;
2606
Integer orig = (Integer)root;
2607
Integer grp = (Integer)grp_id;
2608
wnga_pgroup_brdcst(grp, type, buf, len, orig);
2611
void GA_Pgroup_sync(int grp_id)
2613
Integer grp = (Integer)grp_id;
2614
wnga_pgroup_sync(grp);
2617
void NGA_Pgroup_sync(int grp_id)
2619
Integer grp = (Integer)grp_id;
2620
wnga_pgroup_sync(grp);
2623
void GA_Gop(int type, void *x, int n, char *op)
2624
{ wnga_gop(type, x, n, op); }
2626
void GA_Igop(int x[], int n, char *op)
2627
{ wnga_gop(C_INT, x, n, op); }
2629
void GA_Lgop(long x[], int n, char *op)
2630
{ wnga_gop(C_LONG, x, n, op); }
2632
void GA_Llgop(long long x[], int n, char *op)
2633
{ wnga_gop(C_LONGLONG, x, n, op); }
2635
void GA_Fgop(float x[], int n, char *op)
2636
{ wnga_gop(C_FLOAT, x, n, op); }
2638
void GA_Dgop(double x[], int n, char *op)
2639
{ wnga_gop(C_DBL, x, n, op); }
2641
void GA_Cgop(SingleComplex x[], int n, char *op)
2642
{ wnga_gop(C_SCPL, x, n, op); }
2644
void GA_Zgop(DoubleComplex x[], int n, char *op)
2645
{ wnga_gop(C_DCPL, x, n, op); }
2647
void NGA_Gop(int type, void *x, int n, char *op)
2648
{ wnga_gop(type, x, n, op); }
2650
void NGA_Igop(int x[], int n, char *op)
2651
{ wnga_gop(C_INT, x, n, op); }
2653
void NGA_Lgop(long x[], int n, char *op)
2654
{ wnga_gop(C_LONG, x, n, op); }
2656
void NGA_Llgop(long long x[], int n, char *op)
2657
{ wnga_gop(C_LONGLONG, x, n, op); }
2659
void NGA_Fgop(float x[], int n, char *op)
2660
{ wnga_gop(C_FLOAT, x, n, op); }
2662
void NGA_Dgop(double x[], int n, char *op)
2663
{ wnga_gop(C_DBL, x, n, op); }
2665
void NGA_Cgop(SingleComplex x[], int n, char *op)
2666
{ wnga_gop(C_SCPL, x, n, op); }
2668
void NGA_Zgop(DoubleComplex x[], int n, char *op)
2669
{ wnga_gop(C_DCPL, x, n, op); }
2671
void GA_Pgroup_gop(int grp_id, int type, double x[], int n, char *op)
2672
{ wnga_pgroup_gop(grp_id, type, x, n, op); }
2674
void GA_Pgroup_igop(int grp_id, int x[], int n, char *op)
2675
{ wnga_pgroup_gop(grp_id, C_INT, x, n, op); }
2677
void GA_Pgroup_lgop(int grp_id, long x[], int n, char *op)
2678
{ wnga_pgroup_gop(grp_id, C_LONG, x, n, op); }
2680
void GA_Pgroup_llgop(int grp_id, long long x[], int n, char *op)
2681
{ wnga_pgroup_gop(grp_id, C_LONGLONG, x, n, op); }
2683
void GA_Pgroup_fgop(int grp_id, float x[], int n, char *op)
2684
{ wnga_pgroup_gop(grp_id, C_FLOAT, x, n, op); }
2686
void GA_Pgroup_dgop(int grp_id, double x[], int n, char *op)
2687
{ wnga_pgroup_gop(grp_id, C_DBL, x, n, op); }
2689
void GA_Pgroup_cgop(int grp_id, SingleComplex x[], int n, char *op)
2690
{ wnga_pgroup_gop(grp_id, C_SCPL, x, n, op); }
2692
void GA_Pgroup_zgop(int grp_id, DoubleComplex x[], int n, char *op)
2693
{ wnga_pgroup_gop(grp_id, C_DCPL, x, n, op); }
2695
void NGA_Pgroup_gop(int grp_id, int type, double x[], int n, char *op)
2696
{ wnga_pgroup_gop(grp_id, type, x, n, op); }
2698
void NGA_Pgroup_igop(int grp_id, int x[], int n, char *op)
2699
{ wnga_pgroup_gop(grp_id, C_INT, x, n, op); }
2701
void NGA_Pgroup_lgop(int grp_id, long x[], int n, char *op)
2702
{ wnga_pgroup_gop(grp_id, C_LONG, x, n, op); }
2704
void NGA_Pgroup_llgop(int grp_id, long long x[], int n, char *op)
2705
{ wnga_pgroup_gop(grp_id, C_LONGLONG, x, n, op); }
2707
void NGA_Pgroup_fgop(int grp_id, float x[], int n, char *op)
2708
{ wnga_pgroup_gop(grp_id, C_FLOAT, x, n, op); }
2710
void NGA_Pgroup_dgop(int grp_id, double x[], int n, char *op)
2711
{ wnga_pgroup_gop(grp_id, C_DBL, x, n, op); }
2713
void NGA_Pgroup_cgop(int grp_id, SingleComplex x[], int n, char *op)
2714
{ wnga_pgroup_gop(grp_id, C_SCPL, x, n, op); }
2716
void NGA_Pgroup_zgop(int grp_id, DoubleComplex x[], int n, char *op)
2717
{ wnga_pgroup_gop(grp_id, C_DCPL, x, n, op); }
2719
void NGA_Alloc_gatscat_buf(int nelems)
2721
Integer elems = (Integer)nelems;
2722
wnga_alloc_gatscat_buf(elems);
2725
void NGA_Free_gatscat_buf()
2727
wnga_free_gatscat_buf();
2730
void NGA_Scatter(int g_a, void *v, int* subsArray[], int n)
2733
Integer a = (Integer)g_a;
2734
Integer nv = (Integer)n;
2735
#ifndef USE_GATSCAT_NEW
2736
Integer ndim = wnga_ndim(a);
2737
Integer *_subs_array;
2738
_subs_array = (Integer *)malloc((int)ndim* n * sizeof(Integer));
2739
if(_subs_array == NULL) GA_Error("Memory allocation failed.", 0);
2740
for(idx=0; idx<n; idx++)
2741
for(i=0; i<ndim; i++)
2742
_subs_array[idx*ndim+(ndim-i-1)] = subsArray[idx][i] + 1;
2743
wnga_scatter(a, v, _subs_array, 0, nv);
2746
wnga_scatter(a, v, subsArray, 1, nv);
2750
void NGA_Scatter_flat(int g_a, void *v, int subsArray[], int n)
2753
Integer a = (Integer)g_a;
2754
Integer nv = (Integer)n;
2755
Integer ndim = wnga_ndim(a);
2756
Integer *_subs_array;
2757
_subs_array = (Integer *)malloc((int)ndim* n * sizeof(Integer));
2758
if(_subs_array == NULL) GA_Error("Memory allocation failed.", 0);
2760
/* adjust the indices for fortran interface */
2761
for(idx=0; idx<n; idx++)
2762
for(i=0; i<ndim; i++)
2763
_subs_array[idx*ndim+(ndim-i-1)] = subsArray[idx*ndim+i] + 1;
2765
wnga_scatter(a, v, _subs_array, 0, nv);
2771
void NGA_Scatter64(int g_a, void *v, int64_t* subsArray[], int64_t n)
2775
Integer a = (Integer)g_a;
2776
Integer nv = (Integer)n;
2777
#ifndef USE_GATSCAT_NEW
2778
Integer ndim = wnga_ndim(a);
2779
Integer *_subs_array;
2780
_subs_array = (Integer *)malloc((int)ndim* n * sizeof(Integer));
2781
if(_subs_array == NULL) GA_Error("Memory allocation failed.", 0);
2782
for(idx=0; idx<n; idx++)
2783
for(i=0; i<ndim; i++)
2784
_subs_array[idx*ndim+(ndim-i-1)] = subsArray[idx][i] + 1;
2785
wnga_scatter(a, v, _subs_array, 0, nv);
2788
wnga_scatter(a, v, subsArray, 1, nv);
2792
void NGA_Scatter_flat64(int g_a, void *v, int64_t subsArray[], int64_t n)
2795
Integer a = (Integer)g_a;
2796
Integer nv = (Integer)n;
2797
Integer ndim = wnga_ndim(a);
2798
Integer *_subs_array;
2799
_subs_array = (Integer *)malloc((int)ndim* n * sizeof(Integer));
2800
if(_subs_array == NULL) GA_Error("Memory allocation failed.", 0);
2802
/* adjust the indices for fortran interface */
2803
for(idx=0; idx<n; idx++)
2804
for(i=0; i<ndim; i++)
2805
_subs_array[idx*ndim+(ndim-i-1)] = subsArray[idx*ndim+i] + 1;
2807
wnga_scatter(a, v, _subs_array, 0, nv);
2813
void NGA_Scatter_acc(int g_a, void *v, int* subsArray[], int n, void *alpha)
2816
Integer a = (Integer)g_a;
2817
Integer nv = (Integer)n;
2818
#ifndef USE_GATSCAT_NEW
2819
Integer ndim = wnga_ndim(a);
2820
Integer *_subs_array;
2821
_subs_array = (Integer *)malloc((int)ndim* n * sizeof(Integer));
2822
if(_subs_array == NULL) GA_Error("Memory allocation failed.", 0);
2823
for(idx=0; idx<n; idx++)
2824
for(i=0; i<ndim; i++)
2825
_subs_array[idx*ndim+(ndim-i-1)] = subsArray[idx][i] + 1;
2826
wnga_scatter_acc(a, v, _subs_array, 0, nv, alpha);
2829
wnga_scatter_acc(a, v, subsArray, 1, nv, alpha);
2833
void NGA_Scatter_acc_flat(int g_a, void *v, int subsArray[], int n, void *alpha)
2836
Integer a = (Integer)g_a;
2837
Integer nv = (Integer)n;
2838
Integer ndim = wnga_ndim(a);
2839
Integer *_subs_array;
2840
_subs_array = (Integer *)malloc((int)ndim* n * sizeof(Integer));
2841
if(_subs_array == NULL) GA_Error("Memory allocation failed.", 0);
2843
/* adjust the indices for fortran interface */
2844
for(idx=0; idx<n; idx++)
2845
for(i=0; i<ndim; i++)
2846
_subs_array[idx*ndim+(ndim-i-1)] = subsArray[idx*ndim+i] + 1;
2848
wnga_scatter_acc(a, v, _subs_array, 0, nv, alpha);
2853
void NGA_Scatter_acc64(int g_a, void *v, int64_t* subsArray[], int64_t n, void *alpha)
2857
Integer a = (Integer)g_a;
2858
Integer nv = (Integer)n;
2859
#ifndef USE_GATSCAT_NEW
2860
Integer ndim = wnga_ndim(a);
2861
Integer *_subs_array;
2862
_subs_array = (Integer *)malloc((int)ndim* n * sizeof(Integer));
2863
if(_subs_array == NULL) GA_Error("Memory allocation failed.", 0);
2864
for(idx=0; idx<n; idx++)
2865
for(i=0; i<ndim; i++)
2866
_subs_array[idx*ndim+(ndim-i-1)] = subsArray[idx][i] + 1;
2867
wnga_scatter_acc(a, v, _subs_array, 0, nv, alpha);
2870
wnga_scatter_acc(a, v, subsArray, 1, nv, alpha);
2874
void NGA_Scatter_acc_flat64(int g_a, void *v, int64_t subsArray[], int64_t n, void *alpha)
2877
Integer a = (Integer)g_a;
2878
Integer nv = (Integer)n;
2879
Integer ndim = wnga_ndim(a);
2880
Integer *_subs_array;
2881
_subs_array = (Integer *)malloc((int)ndim* n * sizeof(Integer));
2882
if(_subs_array == NULL) GA_Error("Memory allocation failed.", 0);
2884
/* adjust the indices for fortran interface */
2885
for(idx=0; idx<n; idx++)
2886
for(i=0; i<ndim; i++)
2887
_subs_array[idx*ndim+(ndim-i-1)] = subsArray[idx*ndim+i] + 1;
2889
wnga_scatter_acc(a, v, _subs_array, 0, nv, alpha);
2894
void NGA_Gather(int g_a, void *v, int* subsArray[], int n)
2897
Integer a = (Integer)g_a;
2898
Integer nv = (Integer)n;
2899
#ifndef USE_GATSCAT_NEW
2900
Integer ndim = wnga_ndim(a);
2901
Integer *_subs_array;
2902
_subs_array = (Integer *)malloc((int)ndim* n * sizeof(Integer));
2903
if(_subs_array == NULL) GA_Error("Memory allocation failed.", 0);
2905
/* adjust the indices for fortran interface */
2906
for(idx=0; idx<n; idx++)
2907
for(i=0; i<ndim; i++)
2908
_subs_array[idx*ndim+(ndim-i-1)] = subsArray[idx][i] + 1;
2909
wnga_gather(a, v, _subs_array, 0, nv);
2912
wnga_gather(a, v, subsArray, 1, nv);
2917
void NGA_Gather_flat(int g_a, void *v, int subsArray[], int n)
2920
Integer a = (Integer)g_a;
2921
Integer nv = (Integer)n;
2922
Integer ndim = wnga_ndim(a);
2923
Integer *_subs_array;
2924
_subs_array = (Integer *)malloc((int)ndim* n * sizeof(Integer));
2925
if(_subs_array == NULL) GA_Error("Memory allocation failed.", 0);
2927
/* adjust the indices for fortran interface */
2928
for(idx=0; idx<n; idx++)
2929
for(i=0; i<ndim; i++)
2930
_subs_array[idx*ndim+(ndim-i-1)] = subsArray[idx*ndim+i] + 1;
2932
wnga_gather(a, v, _subs_array, 0, nv);
2938
void NGA_Gather64(int g_a, void *v, int64_t* subsArray[], int64_t n)
2942
Integer a = (Integer)g_a;
2943
Integer nv = (Integer)n;
2944
#ifndef USE_GATSCAT_NEW
2945
Integer ndim = wnga_ndim(a);
2946
Integer *_subs_array;
2947
_subs_array = (Integer *)malloc((int)ndim* n * sizeof(Integer));
2948
if(_subs_array == NULL) GA_Error("Memory allocation failed.", 0);
2950
/* adjust the indices for fortran interface */
2951
for(idx=0; idx<n; idx++)
2952
for(i=0; i<ndim; i++)
2953
_subs_array[idx*ndim+(ndim-i-1)] = subsArray[idx][i] + 1;
2954
wnga_gather(a, v, _subs_array, 0, nv);
2957
wnga_gather(a, v, subsArray, 1, nv);
2962
void NGA_Gather_flat64(int g_a, void *v, int64_t subsArray[], int64_t n)
2965
Integer a = (Integer)g_a;
2966
Integer nv = (Integer)n;
2967
Integer ndim = wnga_ndim(a);
2968
Integer *_subs_array;
2969
_subs_array = (Integer *)malloc((int)ndim* n * sizeof(Integer));
2970
if(_subs_array == NULL) GA_Error("Memory allocation failed.", 0);
2972
/* adjust the indices for fortran interface */
2973
for(idx=0; idx<n; idx++)
2974
for(i=0; i<ndim; i++)
2975
_subs_array[idx*ndim+(ndim-i-1)] = subsArray[idx*ndim+i] + 1;
2977
wnga_gather(a, v, _subs_array, 0, nv);
2983
void GA_Dgemm_c(char ta, char tb, int m, int n, int k,
2984
double alpha, int g_a, int g_b, double beta, int g_c )
3005
pnga_matmul(&ta, &tb, (DoublePrecision *)&alpha,(DoublePrecision *)&beta,
3006
G_a, ailo, aihi, ajlo, ajhi,
3007
G_b, bilo, bihi, bjlo, bjhi,
3008
G_c, cilo, cihi, cjlo, cjhi);
3011
void GA_Zgemm_c(char ta, char tb, int m, int n, int k,
3012
DoubleComplex alpha, int g_a, int g_b,
3013
DoubleComplex beta, int g_c )
3034
pnga_matmul(&ta, &tb, (DoublePrecision *)&alpha,(DoublePrecision *)&beta,
3035
G_a, ailo, aihi, ajlo, ajhi,
3036
G_b, bilo, bihi, bjlo, bjhi,
3037
G_c, cilo, cihi, cjlo, cjhi);
3040
void GA_Cgemm_c(char ta, char tb, int m, int n, int k,
3041
SingleComplex alpha, int g_a, int g_b,
3042
SingleComplex beta, int g_c )
3063
pnga_matmul(&ta, &tb, (float *)&alpha,(float *)&beta,
3064
G_a, ailo, aihi, ajlo, ajhi,
3065
G_b, bilo, bihi, bjlo, bjhi,
3066
G_c, cilo, cihi, cjlo, cjhi);
3069
void GA_Sgemm_c(char ta, char tb, int m, int n, int k,
3070
float alpha, int g_a, int g_b,
3071
float beta, int g_c )
3092
pnga_matmul(&ta, &tb, (float*)&alpha, (float*)&beta,
3093
G_a, ailo, aihi, ajlo, ajhi,
3094
G_b, bilo, bihi, bjlo, bjhi,
3095
G_c, cilo, cihi, cjlo, cjhi);
3098
void GA_Dgemm64_c(char ta, char tb, int64_t m, int64_t n, int64_t k,
3099
double alpha, int g_a, int g_b, double beta, int g_c )
3120
pnga_matmul(&ta, &tb, (DoublePrecision *)&alpha,(DoublePrecision *)&beta,
3121
G_a, ailo, aihi, ajlo, ajhi,
3122
G_b, bilo, bihi, bjlo, bjhi,
3123
G_c, cilo, cihi, cjlo, cjhi);
3126
void GA_Zgemm64_c(char ta, char tb, int64_t m, int64_t n, int64_t k,
3127
DoubleComplex alpha, int g_a, int g_b,
3128
DoubleComplex beta, int g_c )
3149
pnga_matmul(&ta, &tb, (DoublePrecision *)&alpha,(DoublePrecision *)&beta,
3150
G_a, ailo, aihi, ajlo, ajhi,
3151
G_b, bilo, bihi, bjlo, bjhi,
3152
G_c, cilo, cihi, cjlo, cjhi);
3155
void GA_Cgemm64_c(char ta, char tb, int64_t m, int64_t n, int64_t k,
3156
SingleComplex alpha, int g_a, int g_b,
3157
SingleComplex beta, int g_c )
3178
pnga_matmul(&ta, &tb, (float *)&alpha,(float *)&beta,
3179
G_a, ailo, aihi, ajlo, ajhi,
3180
G_b, bilo, bihi, bjlo, bjhi,
3181
G_c, cilo, cihi, cjlo, cjhi);
3184
void GA_Sgemm64_c(char ta, char tb, int64_t m, int64_t n, int64_t k,
3185
float alpha, int g_a, int g_b,
3186
float beta, int g_c )
3207
pnga_matmul(&ta, &tb, (float*)&alpha, (float*)&beta,
3208
G_a, ailo, aihi, ajlo, ajhi,
3209
G_b, bilo, bihi, bjlo, bjhi,
3210
G_c, cilo, cihi, cjlo, cjhi);
3214
* When calling GA _dgemm from the C, it is represented as follows (since the
3215
* underlying GA dgemm implementation pnga_matmul is in Fortran style)
3216
* C(m,n) = A(m,k) * B(k,n)
3217
* Since GA internally creates GAs in Fortran style, we remap the above
3218
* expression to: C(n,m) = B(n,k) * A(k,m) and pass it to fortran. This
3219
* produces the output C in (n,m) format, which translates to C as (m,n),and
3220
* ultimately giving us the correct result.
3222
void GA_Dgemm(char ta, char tb, int m, int n, int k,
3223
double alpha, int g_a, int g_b, double beta, int g_c )
3225
GA_Dgemm_c(tb, ta, n, m, k, alpha, g_b, g_a, beta, g_c);
3228
void GA_Zgemm(char ta, char tb, int m, int n, int k,
3229
DoubleComplex alpha, int g_a, int g_b,
3230
DoubleComplex beta, int g_c )
3232
GA_Zgemm_c(tb, ta, n, m, k, alpha, g_b, g_a, beta, g_c);
3235
void GA_Cgemm(char ta, char tb, int m, int n, int k,
3236
SingleComplex alpha, int g_a, int g_b,
3237
SingleComplex beta, int g_c )
3239
GA_Cgemm_c(tb, ta, n, m, k, alpha, g_b, g_a, beta, g_c);
3242
void GA_Sgemm(char ta, char tb, int m, int n, int k,
3243
float alpha, int g_a, int g_b,
3244
float beta, int g_c )
3246
GA_Sgemm_c(tb, ta, n, m, k, alpha, g_b, g_a, beta, g_c);
3249
void GA_Dgemm64(char ta, char tb, int64_t m, int64_t n, int64_t k,
3250
double alpha, int g_a, int g_b, double beta, int g_c )
3252
GA_Dgemm64_c(tb, ta, n, m, k, alpha, g_b, g_a, beta, g_c);
3255
void GA_Zgemm64(char ta, char tb, int64_t m, int64_t n, int64_t k,
3256
DoubleComplex alpha, int g_a, int g_b,
3257
DoubleComplex beta, int g_c )
3259
GA_Zgemm64_c(tb, ta, n, m, k, alpha, g_b, g_a, beta, g_c);
3262
void GA_Cgemm64(char ta, char tb, int64_t m, int64_t n, int64_t k,
3263
SingleComplex alpha, int g_a, int g_b,
3264
SingleComplex beta, int g_c )
3266
GA_Cgemm64_c(tb, ta, n, m, k, alpha, g_b, g_a, beta, g_c);
3269
void GA_Sgemm64(char ta, char tb, int64_t m, int64_t n, int64_t k,
3270
float alpha, int g_a, int g_b,
3271
float beta, int g_c )
3273
GA_Sgemm64_c(tb, ta, n, m, k, alpha, g_b, g_a, beta, g_c);
3278
void NGA_Copy_patch(char trans, int g_a, int alo[], int ahi[],
3279
int g_b, int blo[], int bhi[])
3281
Integer a=(Integer)g_a;
3282
Integer andim = wnga_ndim(a);
3284
Integer b=(Integer)g_b;
3285
Integer bndim = wnga_ndim(b);
3287
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3288
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3289
COPYINDEX_C2F(alo,_ga_alo, andim);
3290
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3292
COPYINDEX_C2F(blo,_ga_blo, bndim);
3293
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3295
wnga_copy_patch(&trans, a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi);
3298
void NGA_Copy_patch64(char trans, int g_a, int64_t alo[], int64_t ahi[],
3299
int g_b, int64_t blo[], int64_t bhi[])
3301
Integer a=(Integer)g_a;
3302
Integer andim = wnga_ndim(a);
3304
Integer b=(Integer)g_b;
3305
Integer bndim = wnga_ndim(b);
3307
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3308
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3309
COPYINDEX_C2F(alo,_ga_alo, andim);
3310
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3312
COPYINDEX_C2F(blo,_ga_blo, bndim);
3313
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3315
wnga_copy_patch(&trans, a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi);
3318
void GA_Matmul_patch(char transa, char transb, void* alpha, void *beta,
3319
int g_a, int ailo, int aihi, int ajlo, int ajhi,
3320
int g_b, int bilo, int bihi, int bjlo, int bjhi,
3321
int g_c, int cilo, int cihi, int cjlo, int cjhi)
3328
Integer alo[2], ahi[2];
3329
Integer blo[2], bhi[2];
3330
Integer clo[2], chi[2];
3331
alo[0]=ailo+1; ahi[0]=aihi+1; alo[1]=ajlo+1; ahi[1]=ajhi+1;
3332
blo[0]=bilo+1; bhi[0]=bihi+1; blo[1]=bjlo+1; bhi[1]=bjhi+1;
3333
clo[0]=cilo+1; chi[0]=cihi+1; clo[1]=cjlo+1; chi[1]=cjhi+1;
3334
pnga_matmul_patch(transa, transb, alpha, beta, g_a, alo, ahi,
3335
g_b, blo, bhi, g_c, clo, chi);
3337
Integer Iailo=ailo+1, Iaihi=aihi+1, Iajlo=ajlo+1, Iajhi=ajhi+1;
3338
Integer Ibilo=bilo+1, Ibihi=bihi+1, Ibjlo=bjlo+1, Ibjhi=bjhi+1;
3339
Integer Icilo=cilo+1, Icihi=cihi+1, Icjlo=cjlo+1, Icjhi=cjhi+1;
3340
if(pnga_is_mirrored(Ig_a))
3341
wnga_matmul_mirrored(&transa, &transb, (void*)alpha, (void*)beta,
3342
Ig_a, Iailo, Iaihi, Iajlo, Iajhi,
3343
Ig_b, Ibilo, Ibihi, Ibjlo, Ibjhi,
3344
Ig_c, Icilo, Icihi, Icjlo, Icjhi);
3346
gai_matmul_patch_flag(SET);
3347
wnga_matmul(&transa, &transb, (void*)alpha, (void*)beta,
3348
Ig_a, Iailo, Iaihi, Iajlo, Iajhi,
3349
Ig_b, Ibilo, Ibihi, Ibjlo, Ibjhi,
3350
Ig_c, Icilo, Icihi, Icjlo, Icjhi);
3351
gai_matmul_patch_flag(UNSET);
3356
void GA_Matmul_patch64(char transa, char transb, void* alpha, void *beta,
3357
int g_a, int64_t ailo, int64_t aihi, int64_t ajlo, int64_t ajhi,
3358
int g_b, int64_t bilo, int64_t bihi, int64_t bjlo, int64_t bjhi,
3359
int g_c, int64_t cilo, int64_t cihi, int64_t cjlo, int64_t cjhi)
3366
Integer alo[2], ahi[2];
3367
Integer blo[2], bhi[2];
3368
Integer clo[2], chi[2];
3369
alo[0]=ailo+1; ahi[0]=aihi+1; alo[1]=ajlo+1; ahi[1]=ajhi+1;
3370
blo[0]=bilo+1; bhi[0]=bihi+1; blo[1]=bjlo+1; bhi[1]=bjhi+1;
3371
clo[0]=cilo+1; chi[0]=cihi+1; clo[1]=cjlo+1; chi[1]=cjhi+1;
3372
pnga_matmul_patch(transa, transb, alpha, beta, g_a, alo, ahi,
3373
g_b, blo, bhi, g_c, clo, chi);
3375
Integer Iailo=ailo+1, Iaihi=aihi+1, Iajlo=ajlo+1, Iajhi=ajhi+1;
3376
Integer Ibilo=bilo+1, Ibihi=bihi+1, Ibjlo=bjlo+1, Ibjhi=bjhi+1;
3377
Integer Icilo=cilo+1, Icihi=cihi+1, Icjlo=cjlo+1, Icjhi=cjhi+1;
3378
if(pnga_is_mirrored(Ig_a))
3379
wnga_matmul_mirrored(&transa, &transb, (void*)alpha, (void*)beta,
3380
Ig_a, Iailo, Iaihi, Iajlo, Iajhi,
3381
Ig_b, Ibilo, Ibihi, Ibjlo, Ibjhi,
3382
Ig_c, Icilo, Icihi, Icjlo, Icjhi);
3384
gai_matmul_patch_flag(SET);
3385
wnga_matmul(&transa, &transb, (void*)alpha, (void*)beta,
3386
Ig_a, Iailo, Iaihi, Iajlo, Iajhi,
3387
Ig_b, Ibilo, Ibihi, Ibjlo, Ibjhi,
3388
Ig_c, Icilo, Icihi, Icjlo, Icjhi);
3389
gai_matmul_patch_flag(UNSET);
3394
void NGA_Matmul_patch(char transa, char transb, void* alpha, void *beta,
3395
int g_a, int alo[], int ahi[],
3396
int g_b, int blo[], int bhi[],
3397
int g_c, int clo[], int chi[])
3400
Integer a=(Integer)g_a;
3401
Integer andim = wnga_ndim(a);
3403
Integer b=(Integer)g_b;
3404
Integer bndim = wnga_ndim(b);
3406
Integer c=(Integer)g_c;
3407
Integer cndim = wnga_ndim(c);
3409
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3410
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3411
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
3412
COPYINDEX_C2F(alo,_ga_alo, andim);
3413
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3415
COPYINDEX_C2F(blo,_ga_blo, bndim);
3416
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3418
COPYINDEX_C2F(clo,_ga_clo, cndim);
3419
COPYINDEX_C2F(chi,_ga_chi, cndim);
3421
pnga_matmul_patch(&transb, &transa, alpha, beta,
3422
b, _ga_blo, _ga_bhi,
3423
a, _ga_alo, _ga_ahi,
3424
c, _ga_clo, _ga_chi);
3427
void NGA_Matmul_patch64(char transa, char transb, void* alpha, void *beta,
3428
int g_a, int64_t alo[], int64_t ahi[],
3429
int g_b, int64_t blo[], int64_t bhi[],
3430
int g_c, int64_t clo[], int64_t chi[])
3433
Integer a=(Integer)g_a;
3434
Integer andim = wnga_ndim(a);
3436
Integer b=(Integer)g_b;
3437
Integer bndim = wnga_ndim(b);
3439
Integer c=(Integer)g_c;
3440
Integer cndim = wnga_ndim(c);
3442
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3443
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3444
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
3445
COPYINDEX_C2F(alo,_ga_alo, andim);
3446
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3448
COPYINDEX_C2F(blo,_ga_blo, bndim);
3449
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3451
COPYINDEX_C2F(clo,_ga_clo, cndim);
3452
COPYINDEX_C2F(chi,_ga_chi, cndim);
3454
pnga_matmul_patch(&transb, &transa, alpha, beta,
3455
b, _ga_blo, _ga_bhi,
3456
a, _ga_alo, _ga_ahi,
3457
c, _ga_clo, _ga_chi);
3460
int NGA_Idot_patch(int g_a, char t_a, int alo[], int ahi[],
3461
int g_b, char t_b, int blo[], int bhi[])
3464
Integer a=(Integer)g_a;
3465
Integer andim = wnga_ndim(a);
3467
Integer b=(Integer)g_b;
3468
Integer bndim = wnga_ndim(b);
3470
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3471
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3472
COPYINDEX_C2F(alo,_ga_alo, andim);
3473
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3475
COPYINDEX_C2F(blo,_ga_blo, bndim);
3476
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3478
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3479
b, &t_b, _ga_blo, _ga_bhi, &res);
3484
long NGA_Ldot_patch(int g_a, char t_a, int alo[], int ahi[],
3485
int g_b, char t_b, int blo[], int bhi[])
3488
Integer a=(Integer)g_a;
3489
Integer andim = wnga_ndim(a);
3491
Integer b=(Integer)g_b;
3492
Integer bndim = wnga_ndim(b);
3494
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3495
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3496
COPYINDEX_C2F(alo,_ga_alo, andim);
3497
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3499
COPYINDEX_C2F(blo,_ga_blo, bndim);
3500
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3502
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3503
b, &t_b, _ga_blo, _ga_bhi, &res);
3508
long long NGA_Lldot_patch(int g_a, char t_a, int alo[], int ahi[],
3509
int g_b, char t_b, int blo[], int bhi[])
3512
Integer a=(Integer)g_a;
3513
Integer andim = wnga_ndim(a);
3515
Integer b=(Integer)g_b;
3516
Integer bndim = wnga_ndim(b);
3518
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3519
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3520
COPYINDEX_C2F(alo,_ga_alo, andim);
3521
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3523
COPYINDEX_C2F(blo,_ga_blo, bndim);
3524
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3526
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3527
b, &t_b, _ga_blo, _ga_bhi, &res);
3532
double NGA_Ddot_patch(int g_a, char t_a, int alo[], int ahi[],
3533
int g_b, char t_b, int blo[], int bhi[])
3536
Integer a=(Integer)g_a;
3537
Integer andim = wnga_ndim(a);
3539
Integer b=(Integer)g_b;
3540
Integer bndim = wnga_ndim(b);
3542
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3543
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3544
COPYINDEX_C2F(alo,_ga_alo, andim);
3545
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3547
COPYINDEX_C2F(blo,_ga_blo, bndim);
3548
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3550
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3551
b, &t_b, _ga_blo, _ga_bhi, &res);
3556
DoubleComplex NGA_Zdot_patch(int g_a, char t_a, int alo[], int ahi[],
3557
int g_b, char t_b, int blo[], int bhi[])
3561
Integer a=(Integer)g_a;
3562
Integer andim = wnga_ndim(a);
3564
Integer b=(Integer)g_b;
3565
Integer bndim = wnga_ndim(b);
3567
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3568
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3569
COPYINDEX_C2F(alo,_ga_alo, andim);
3570
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3572
COPYINDEX_C2F(blo,_ga_blo, bndim);
3573
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3575
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3576
b, &t_b, _ga_blo, _ga_bhi, &res);
3581
SingleComplex NGA_Cdot_patch(int g_a, char t_a, int alo[], int ahi[],
3582
int g_b, char t_b, int blo[], int bhi[])
3586
Integer a=(Integer)g_a;
3587
Integer andim = wnga_ndim(a);
3589
Integer b=(Integer)g_b;
3590
Integer bndim = wnga_ndim(b);
3592
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3593
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3594
COPYINDEX_C2F(alo,_ga_alo, andim);
3595
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3597
COPYINDEX_C2F(blo,_ga_blo, bndim);
3598
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3600
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3601
b, &t_b, _ga_blo, _ga_bhi, &res);
3606
float NGA_Fdot_patch(int g_a, char t_a, int alo[], int ahi[],
3607
int g_b, char t_b, int blo[], int bhi[])
3610
Integer a=(Integer)g_a;
3611
Integer andim = wnga_ndim(a);
3613
Integer b=(Integer)g_b;
3614
Integer bndim = wnga_ndim(b);
3616
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3617
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3618
COPYINDEX_C2F(alo,_ga_alo, andim);
3619
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3621
COPYINDEX_C2F(blo,_ga_blo, bndim);
3622
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3624
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3625
b, &t_b, _ga_blo, _ga_bhi, &res);
3630
int NGA_Idot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[],
3631
int g_b, char t_b, int64_t blo[], int64_t bhi[])
3634
Integer a=(Integer)g_a;
3635
Integer andim = wnga_ndim(a);
3637
Integer b=(Integer)g_b;
3638
Integer bndim = wnga_ndim(b);
3640
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3641
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3642
COPYINDEX_C2F(alo,_ga_alo, andim);
3643
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3645
COPYINDEX_C2F(blo,_ga_blo, bndim);
3646
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3648
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3649
b, &t_b, _ga_blo, _ga_bhi, &res);
3654
long NGA_Ldot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[],
3655
int g_b, char t_b, int64_t blo[], int64_t bhi[])
3658
Integer a=(Integer)g_a;
3659
Integer andim = wnga_ndim(a);
3661
Integer b=(Integer)g_b;
3662
Integer bndim = wnga_ndim(b);
3664
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3665
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3666
COPYINDEX_C2F(alo,_ga_alo, andim);
3667
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3669
COPYINDEX_C2F(blo,_ga_blo, bndim);
3670
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3672
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3673
b, &t_b, _ga_blo, _ga_bhi, &res);
3678
long long NGA_Lldot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[],
3679
int g_b, char t_b, int64_t blo[], int64_t bhi[])
3682
Integer a=(Integer)g_a;
3683
Integer andim = wnga_ndim(a);
3685
Integer b=(Integer)g_b;
3686
Integer bndim = wnga_ndim(b);
3688
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3689
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3690
COPYINDEX_C2F(alo,_ga_alo, andim);
3691
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3693
COPYINDEX_C2F(blo,_ga_blo, bndim);
3694
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3696
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3697
b, &t_b, _ga_blo, _ga_bhi, &res);
3702
double NGA_Ddot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[],
3703
int g_b, char t_b, int64_t blo[], int64_t bhi[])
3706
Integer a=(Integer)g_a;
3707
Integer andim = wnga_ndim(a);
3709
Integer b=(Integer)g_b;
3710
Integer bndim = wnga_ndim(b);
3712
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3713
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3714
COPYINDEX_C2F(alo,_ga_alo, andim);
3715
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3717
COPYINDEX_C2F(blo,_ga_blo, bndim);
3718
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3720
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3721
b, &t_b, _ga_blo, _ga_bhi, &res);
3726
DoubleComplex NGA_Zdot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[],
3727
int g_b, char t_b, int64_t blo[], int64_t bhi[])
3731
Integer a=(Integer)g_a;
3732
Integer andim = wnga_ndim(a);
3734
Integer b=(Integer)g_b;
3735
Integer bndim = wnga_ndim(b);
3737
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3738
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3739
COPYINDEX_C2F(alo,_ga_alo, andim);
3740
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3742
COPYINDEX_C2F(blo,_ga_blo, bndim);
3743
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3745
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3746
b, &t_b, _ga_blo, _ga_bhi, &res);
3751
SingleComplex NGA_Cdot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[],
3752
int g_b, char t_b, int64_t blo[], int64_t bhi[])
3756
Integer a=(Integer)g_a;
3757
Integer andim = wnga_ndim(a);
3759
Integer b=(Integer)g_b;
3760
Integer bndim = wnga_ndim(b);
3762
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3763
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3764
COPYINDEX_C2F(alo,_ga_alo, andim);
3765
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3767
COPYINDEX_C2F(blo,_ga_blo, bndim);
3768
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3770
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3771
b, &t_b, _ga_blo, _ga_bhi, &res);
3776
float NGA_Fdot_patch64(int g_a, char t_a, int64_t alo[], int64_t ahi[],
3777
int g_b, char t_b, int64_t blo[], int64_t bhi[])
3780
Integer a=(Integer)g_a;
3781
Integer andim = wnga_ndim(a);
3783
Integer b=(Integer)g_b;
3784
Integer bndim = wnga_ndim(b);
3786
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3787
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3788
COPYINDEX_C2F(alo,_ga_alo, andim);
3789
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3791
COPYINDEX_C2F(blo,_ga_blo, bndim);
3792
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3794
wnga_dot_patch(a, &t_a, _ga_alo, _ga_ahi,
3795
b, &t_b, _ga_blo, _ga_bhi, &res);
3801
void NGA_Fill_patch(int g_a, int lo[], int hi[], void *val)
3803
Integer a=(Integer)g_a;
3804
Integer ndim = wnga_ndim(a);
3805
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
3806
COPYINDEX_C2F(lo,_ga_lo, ndim);
3807
COPYINDEX_C2F(hi,_ga_hi, ndim);
3809
wnga_fill_patch(a, _ga_lo, _ga_hi, val);
3812
void NGA_Fill_patch64(int g_a, int64_t lo[], int64_t hi[], void *val)
3814
Integer a=(Integer)g_a;
3815
Integer ndim = wnga_ndim(a);
3816
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
3817
COPYINDEX_C2F(lo,_ga_lo, ndim);
3818
COPYINDEX_C2F(hi,_ga_hi, ndim);
3820
wnga_fill_patch(a, _ga_lo, _ga_hi, val);
3823
void NGA_Zero_patch(int g_a, int lo[], int hi[])
3825
Integer a=(Integer)g_a;
3826
Integer ndim = wnga_ndim(a);
3827
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
3828
COPYINDEX_C2F(lo,_ga_lo, ndim);
3829
COPYINDEX_C2F(hi,_ga_hi, ndim);
3831
wnga_zero_patch(a, _ga_lo, _ga_hi);
3834
void NGA_Zero_patch64(int g_a, int64_t lo[], int64_t hi[])
3836
Integer a=(Integer)g_a;
3837
Integer ndim = wnga_ndim(a);
3838
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
3839
COPYINDEX_C2F(lo,_ga_lo, ndim);
3840
COPYINDEX_C2F(hi,_ga_hi, ndim);
3842
wnga_zero_patch(a, _ga_lo, _ga_hi);
3845
void NGA_Scale_patch(int g_a, int lo[], int hi[], void *alpha)
3847
Integer a=(Integer)g_a;
3848
Integer ndim = wnga_ndim(a);
3849
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
3850
COPYINDEX_C2F(lo,_ga_lo, ndim);
3851
COPYINDEX_C2F(hi,_ga_hi, ndim);
3853
wnga_scale_patch(a, _ga_lo, _ga_hi, alpha);
3856
void NGA_Scale_patch64(int g_a, int64_t lo[], int64_t hi[], void *alpha)
3858
Integer a=(Integer)g_a;
3859
Integer ndim = wnga_ndim(a);
3860
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
3861
COPYINDEX_C2F(lo,_ga_lo, ndim);
3862
COPYINDEX_C2F(hi,_ga_hi, ndim);
3864
wnga_scale_patch(a, _ga_lo, _ga_hi, alpha);
3867
void NGA_Add_patch(void * alpha, int g_a, int alo[], int ahi[],
3868
void * beta, int g_b, int blo[], int bhi[],
3869
int g_c, int clo[], int chi[])
3871
Integer a=(Integer)g_a;
3872
Integer andim = wnga_ndim(a);
3874
Integer b=(Integer)g_b;
3875
Integer bndim = wnga_ndim(b);
3877
Integer c=(Integer)g_c;
3878
Integer cndim = wnga_ndim(c);
3879
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3880
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3881
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
3883
COPYINDEX_C2F(alo,_ga_alo, andim);
3884
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3886
COPYINDEX_C2F(blo,_ga_blo, bndim);
3887
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3889
COPYINDEX_C2F(clo,_ga_clo, cndim);
3890
COPYINDEX_C2F(chi,_ga_chi, cndim);
3892
wnga_add_patch(alpha, a, _ga_alo, _ga_ahi, beta, b, _ga_blo, _ga_bhi,
3893
c, _ga_clo, _ga_chi);
3896
void NGA_Add_patch64(void * alpha, int g_a, int64_t alo[], int64_t ahi[],
3897
void * beta, int g_b, int64_t blo[], int64_t bhi[],
3898
int g_c, int64_t clo[], int64_t chi[])
3900
Integer a=(Integer)g_a;
3901
Integer andim = wnga_ndim(a);
3903
Integer b=(Integer)g_b;
3904
Integer bndim = wnga_ndim(b);
3906
Integer c=(Integer)g_c;
3907
Integer cndim = wnga_ndim(c);
3909
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
3910
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
3911
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
3912
COPYINDEX_C2F(alo,_ga_alo, andim);
3913
COPYINDEX_C2F(ahi,_ga_ahi, andim);
3915
COPYINDEX_C2F(blo,_ga_blo, bndim);
3916
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
3918
COPYINDEX_C2F(clo,_ga_clo, cndim);
3919
COPYINDEX_C2F(chi,_ga_chi, cndim);
3921
wnga_add_patch(alpha, a, _ga_alo, _ga_ahi, beta, b, _ga_blo, _ga_bhi,
3922
c, _ga_clo, _ga_chi);
3926
void GA_Print_patch(int g_a,int ilo,int ihi,int jlo,int jhi,int pretty)
3928
Integer a = (Integer)g_a;
3931
Integer p = (Integer) pretty;
3932
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
3934
lo[0] = ilo; lo[1] = jlo;
3935
hi[0] = ihi; lo[1] = jhi;
3936
COPYINDEX_C2F(lo,_ga_lo,2);
3937
COPYINDEX_C2F(hi,_ga_hi,2);
3938
wnga_print_patch(a, _ga_lo, _ga_hi, p);
3942
void NGA_Print_patch(int g_a, int lo[], int hi[], int pretty)
3944
Integer a=(Integer)g_a;
3945
Integer ndim = wnga_ndim(a);
3946
Integer p = (Integer)pretty;
3947
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
3949
COPYINDEX_C2F(lo,_ga_lo, ndim);
3950
COPYINDEX_C2F(hi,_ga_hi, ndim);
3951
wnga_print_patch(a, _ga_lo, _ga_hi, p);
3954
void NGA_Print_patch64(int g_a, int64_t lo[], int64_t hi[], int pretty)
3956
Integer a=(Integer)g_a;
3957
Integer ndim = wnga_ndim(a);
3958
Integer p = (Integer)pretty;
3959
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
3960
COPYINDEX_C2F(lo,_ga_lo, ndim);
3961
COPYINDEX_C2F(hi,_ga_hi, ndim);
3963
wnga_print_patch(a, _ga_lo, _ga_hi, p);
3966
void GA_Print(int g_a)
3968
Integer a=(Integer)g_a;
3972
void GA_Print_file(FILE *file, int g_a)
3975
wnga_print_file(file, G_a);
3978
void GA_Diag_seq(int g_a, int g_s, int g_v, void *eval)
3980
Integer a = (Integer)g_a;
3981
Integer s = (Integer)g_s;
3982
Integer v = (Integer)g_v;
3984
wnga_diag_seq(a, s, v, eval);
3987
void GA_Diag_std_seq(int g_a, int g_v, void *eval)
3989
Integer a = (Integer)g_a;
3990
Integer v = (Integer)g_v;
3992
wnga_diag_std_seq(a, v, eval);
3995
void GA_Diag(int g_a, int g_s, int g_v, void *eval)
3997
Integer a = (Integer)g_a;
3998
Integer s = (Integer)g_s;
3999
Integer v = (Integer)g_v;
4001
wnga_diag(a, s, v, eval);
4004
void GA_Diag_std(int g_a, int g_v, void *eval)
4006
Integer a = (Integer)g_a;
4007
Integer v = (Integer)g_v;
4009
wnga_diag_std(a, v, eval);
4012
void GA_Diag_reuse(int reuse, int g_a, int g_s, int g_v, void *eval)
4014
Integer r = (Integer)reuse;
4015
Integer a = (Integer)g_a;
4016
Integer s = (Integer)g_s;
4017
Integer v = (Integer)g_v;
4019
wnga_diag_reuse(r, a, s, v, eval);
4022
void GA_Lu_solve(char tran, int g_a, int g_b)
4024
Integer a = (Integer)g_a;
4025
Integer b = (Integer)g_b;
4029
if(tran == 't' || tran == 'T') t = 1;
4032
wnga_lu_solve_alt(t, a, b);
4035
int GA_Llt_solve(int g_a, int g_b)
4038
Integer a = (Integer)g_a;
4039
Integer b = (Integer)g_b;
4041
res = wnga_llt_solve(a, b);
4046
int GA_Solve(int g_a, int g_b)
4049
Integer a = (Integer)g_a;
4050
Integer b = (Integer)g_b;
4052
res = wnga_solve(a, b);
4057
int GA_Spd_invert(int g_a)
4060
Integer a = (Integer)g_a;
4062
res = wnga_spd_invert(a);
4067
void GA_Summarize(int verbose)
4069
Integer v = (Integer)verbose;
4074
void GA_Symmetrize(int g_a)
4076
Integer a = (Integer)g_a;
4081
void NGA_Symmetrize(int g_a)
4083
Integer a = (Integer)g_a;
4088
void GA_Transpose(int g_a, int g_b)
4090
Integer a = (Integer)g_a;
4091
Integer b = (Integer)g_b;
4093
wnga_transpose(a, b);
4097
void GA_Print_distribution(int g_a)
4100
wnga_print_distribution(1,(Integer)g_a);
4102
wnga_print_distribution(0,(Integer)g_a);
4107
void NGA_Release_update(int g_a, int lo[], int hi[])
4109
Integer a = (Integer)g_a;
4110
Integer ndim = wnga_ndim(a);
4111
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
4112
COPYINDEX_C2F(lo,_ga_lo,ndim);
4113
COPYINDEX_C2F(hi,_ga_hi,ndim);
4115
wnga_release_update(a,_ga_lo, _ga_hi);
4118
void NGA_Release_update64(int g_a, int64_t lo[], int64_t hi[])
4120
Integer a = (Integer)g_a;
4121
Integer ndim = wnga_ndim(a);
4122
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
4123
COPYINDEX_C2F(lo,_ga_lo,ndim);
4124
COPYINDEX_C2F(hi,_ga_hi,ndim);
4126
wnga_release_update(a,_ga_lo, _ga_hi);
4129
void NGA_Release_update_block(int g_a, int idx)
4131
Integer a=(Integer)g_a;
4132
Integer iblock = (Integer)idx;
4134
wnga_release_update_block(a, iblock);
4137
void NGA_Release_update_block_grid(int g_a, int index[])
4139
Integer a=(Integer)g_a;
4140
Integer ndim = wnga_ndim(a);
4141
Integer _ga_lo[MAXDIM];
4142
COPYINDEX_C2F(index,_ga_lo,ndim);
4143
wnga_release_update_block_grid(a, _ga_lo);
4146
void NGA_Release_update_block_segment(int g_a, int idx)
4148
Integer a=(Integer)g_a;
4149
Integer iproc = (Integer)idx;
4151
wnga_release_update_block_segment(a, iproc);
4154
void NGA_Release_update_ghost_element(int g_a, int index[])
4156
Integer a=(Integer)g_a;
4157
Integer ndim = wnga_ndim(a);
4158
Integer _ga_lo[MAXDIM];
4159
COPYINDEX_C2F(index,_ga_lo,ndim);
4160
wnga_release_update_ghost_element(a, _ga_lo);
4163
void NGA_Release_update_ghost_element64(int g_a, int64_t index[])
4165
Integer a=(Integer)g_a;
4166
Integer ndim = wnga_ndim(a);
4167
Integer _ga_lo[MAXDIM];
4168
COPYINDEX_C2F(index,_ga_lo,ndim);
4169
wnga_release_update_ghost_element(a, _ga_lo);
4172
void NGA_Release_update_ghosts(int g_a)
4174
Integer a=(Integer)g_a;
4175
wnga_release_update_ghosts(a);
4178
int GA_Ndim(int g_a)
4180
Integer a = (Integer)g_a;
4181
return (int)wnga_ndim(a);
4184
int NGA_Ndim(int g_a)
4186
Integer a = (Integer)g_a;
4187
return (int)wnga_ndim(a);
4190
/*Limin's functions */
4193
void GA_Step_bound_info(int g_xx, int g_vv, int g_xxll, int g_xxuu, void *boundmin, void *wolfemin, void *boundmax)
4195
Integer xx = (Integer)g_xx;
4196
Integer vv = (Integer)g_vv;
4197
Integer xxll = (Integer)g_xxll;
4198
Integer xxuu = (Integer)g_xxuu;
4199
wnga_step_bound_info(xx, vv, xxll, xxuu, boundmin, wolfemin, boundmax);
4202
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)
4204
Integer xx = (Integer)g_xx;
4205
Integer vv = (Integer)g_vv;
4206
Integer xxll = (Integer)g_xxll;
4207
Integer xxuu = (Integer)g_xxuu;
4208
Integer ndim = wnga_ndim(xx);
4209
Integer _ga_xxlo[MAXDIM], _ga_xxhi[MAXDIM];
4210
Integer _ga_vvlo[MAXDIM], _ga_vvhi[MAXDIM];
4211
Integer _ga_xxlllo[MAXDIM], _ga_xxllhi[MAXDIM];
4212
Integer _ga_xxuulo[MAXDIM], _ga_xxuuhi[MAXDIM];
4213
COPYINDEX_C2F(xxlo,_ga_xxlo, ndim);
4214
COPYINDEX_C2F(xxhi,_ga_xxhi, ndim);
4215
COPYINDEX_C2F(vvlo,_ga_vvlo, ndim);
4216
COPYINDEX_C2F(vvhi,_ga_vvhi, ndim);
4217
COPYINDEX_C2F(xxlllo,_ga_xxlllo, ndim);
4218
COPYINDEX_C2F(xxllhi,_ga_xxllhi, ndim);
4219
COPYINDEX_C2F(xxuulo,_ga_xxuulo, ndim);
4220
COPYINDEX_C2F(xxuuhi,_ga_xxuuhi, ndim);
4221
wnga_step_bound_info_patch(xx, _ga_xxlo, _ga_xxhi, vv, _ga_vvlo, _ga_vvhi, xxll, _ga_xxlllo, _ga_xxllhi, xxuu, _ga_xxuulo, _ga_xxuuhi ,
4222
boundmin,wolfemin,boundmax);
4225
void GA_Step_bound_info_patch64(int g_xx, int64_t xxlo[], int64_t xxhi[],
4226
int g_vv, int64_t vvlo[], int64_t vvhi[],
4227
int g_xxll, int64_t xxlllo[], int64_t xxllhi[],
4228
int64_t g_xxuu, int64_t xxuulo[], int64_t xxuuhi[],
4229
void *boundmin, void *wolfemin, void *boundmax)
4231
Integer xx = (Integer)g_xx;
4232
Integer vv = (Integer)g_vv;
4233
Integer xxll = (Integer)g_xxll;
4234
Integer xxuu = (Integer)g_xxuu;
4235
Integer ndim = wnga_ndim(xx);
4236
Integer _ga_xxlo[MAXDIM], _ga_xxhi[MAXDIM];
4237
Integer _ga_vvlo[MAXDIM], _ga_vvhi[MAXDIM];
4238
Integer _ga_xxlllo[MAXDIM], _ga_xxllhi[MAXDIM];
4239
Integer _ga_xxuulo[MAXDIM], _ga_xxuuhi[MAXDIM];
4240
COPYINDEX_C2F(xxlo,_ga_xxlo, ndim);
4241
COPYINDEX_C2F(xxhi,_ga_xxhi, ndim);
4242
COPYINDEX_C2F(vvlo,_ga_vvlo, ndim);
4243
COPYINDEX_C2F(vvhi,_ga_vvhi, ndim);
4244
COPYINDEX_C2F(xxlllo,_ga_xxlllo, ndim);
4245
COPYINDEX_C2F(xxllhi,_ga_xxllhi, ndim);
4246
COPYINDEX_C2F(xxuulo,_ga_xxuulo, ndim);
4247
COPYINDEX_C2F(xxuuhi,_ga_xxuuhi, ndim);
4248
wnga_step_bound_info_patch(xx, _ga_xxlo, _ga_xxhi, vv, _ga_vvlo, _ga_vvhi, xxll, _ga_xxlllo, _ga_xxllhi, xxuu, _ga_xxuulo, _ga_xxuuhi ,
4249
boundmin,wolfemin,boundmax);
4252
void GA_Step_max(int g_a, int g_b, void *step)
4254
Integer a = (Integer)g_a;
4255
Integer b = (Integer)g_b;
4256
wnga_step_max(a, b, step);
4259
void GA_Step_max_patch(int g_a, int alo[], int ahi[], int g_b, int blo[], int bhi[], void *step)
4261
Integer a = (Integer)g_a;
4262
Integer b = (Integer)g_b;
4263
Integer ndim = wnga_ndim(a);
4264
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
4265
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
4266
COPYINDEX_C2F(alo,_ga_alo, ndim);
4267
COPYINDEX_C2F(ahi,_ga_ahi, ndim);
4268
COPYINDEX_C2F(blo,_ga_blo, ndim);
4269
COPYINDEX_C2F(bhi,_ga_bhi, ndim);
4270
wnga_step_max_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi, step);
4273
void GA_Step_max_patch64(int g_a, int64_t alo[], int64_t ahi[],
4274
int g_b, int64_t blo[], int64_t bhi[], void *step)
4276
Integer a = (Integer)g_a;
4277
Integer b = (Integer)g_b;
4278
Integer ndim = wnga_ndim(a);
4279
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
4280
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
4281
COPYINDEX_C2F(alo,_ga_alo, ndim);
4282
COPYINDEX_C2F(ahi,_ga_ahi, ndim);
4283
COPYINDEX_C2F(blo,_ga_blo, ndim);
4284
COPYINDEX_C2F(bhi,_ga_bhi, ndim);
4285
wnga_step_max_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi, step);
4288
void GA_Abs_value(int g_a)
4290
Integer a = (Integer)g_a;
4294
void GA_Add_constant(int g_a, void *alpha)
4296
Integer a = (Integer)g_a;
4297
wnga_add_constant(a, alpha);
4301
void GA_Recip(int g_a)
4303
Integer a = (Integer)g_a;
4307
void GA_Elem_multiply(int g_a, int g_b, int g_c)
4309
Integer a = (Integer)g_a;
4310
Integer b = (Integer)g_b;
4311
Integer c = (Integer)g_c;
4312
wnga_elem_multiply(a, b, c);
4315
void GA_Elem_divide(int g_a, int g_b, int g_c)
4317
Integer a = (Integer)g_a;
4318
Integer b = (Integer)g_b;
4319
Integer c = (Integer)g_c;
4320
wnga_elem_divide(a, b, c);
4323
void GA_Elem_maximum(int g_a, int g_b, int g_c)
4325
Integer a = (Integer)g_a;
4326
Integer b = (Integer)g_b;
4327
Integer c = (Integer)g_c;
4328
wnga_elem_maximum(a, b, c);
4332
void GA_Elem_minimum(int g_a, int g_b, int g_c)
4334
Integer a = (Integer)g_a;
4335
Integer b = (Integer)g_b;
4336
Integer c = (Integer)g_c;
4337
wnga_elem_minimum(a, b, c);
4341
void GA_Abs_value_patch(int g_a, int *lo, int *hi)
4343
Integer a = (Integer)g_a;
4344
Integer ndim = wnga_ndim(a);
4345
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
4346
COPYINDEX_C2F(lo,_ga_lo, ndim);
4347
COPYINDEX_C2F(hi,_ga_hi, ndim);
4348
wnga_abs_value_patch(a,_ga_lo, _ga_hi);
4351
void GA_Abs_value_patch64(int g_a, int64_t *lo, int64_t *hi)
4353
Integer a = (Integer)g_a;
4354
Integer ndim = wnga_ndim(a);
4355
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
4356
COPYINDEX_C2F(lo,_ga_lo, ndim);
4357
COPYINDEX_C2F(hi,_ga_hi, ndim);
4358
wnga_abs_value_patch(a,_ga_lo, _ga_hi);
4361
void GA_Add_constant_patch(int g_a, int *lo, int* hi, void *alpha)
4363
Integer a = (Integer)g_a;
4364
Integer ndim = wnga_ndim(a);
4365
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
4366
COPYINDEX_C2F(lo,_ga_lo, ndim);
4367
COPYINDEX_C2F(hi,_ga_hi, ndim);
4368
wnga_add_constant_patch(a, _ga_lo, _ga_hi, alpha);
4371
void GA_Add_constant_patch64(int g_a, int64_t *lo, int64_t *hi, void *alpha)
4373
Integer a = (Integer)g_a;
4374
Integer ndim = wnga_ndim(a);
4375
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
4376
COPYINDEX_C2F(lo,_ga_lo, ndim);
4377
COPYINDEX_C2F(hi,_ga_hi, ndim);
4378
wnga_add_constant_patch(a, _ga_lo, _ga_hi, alpha);
4381
void GA_Recip_patch(int g_a, int *lo, int *hi)
4383
Integer a = (Integer)g_a;
4384
Integer ndim = wnga_ndim(a);
4385
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
4386
COPYINDEX_C2F(lo,_ga_lo, ndim);
4387
COPYINDEX_C2F(hi,_ga_hi, ndim);
4388
wnga_recip_patch(a,_ga_lo, _ga_hi);
4391
void GA_Recip_patch64(int g_a, int64_t *lo, int64_t *hi)
4393
Integer a = (Integer)g_a;
4394
Integer ndim = wnga_ndim(a);
4395
Integer _ga_lo[MAXDIM], _ga_hi[MAXDIM];
4396
COPYINDEX_C2F(lo,_ga_lo, ndim);
4397
COPYINDEX_C2F(hi,_ga_hi, ndim);
4398
wnga_recip_patch(a,_ga_lo, _ga_hi);
4401
void GA_Elem_multiply_patch(int g_a, int alo[], int ahi[],
4402
int g_b, int blo[], int bhi[],
4403
int g_c, int clo[], int chi[])
4405
Integer a = (Integer)g_a;
4406
Integer b = (Integer)g_b;
4407
Integer c = (Integer)g_c;
4408
Integer andim = wnga_ndim(a);
4409
Integer bndim = wnga_ndim(b);
4410
Integer cndim = wnga_ndim(c);
4411
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
4412
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
4413
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
4414
COPYINDEX_C2F(alo,_ga_alo, andim);
4415
COPYINDEX_C2F(ahi,_ga_ahi, andim);
4416
COPYINDEX_C2F(blo,_ga_blo, bndim);
4417
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
4418
COPYINDEX_C2F(clo,_ga_clo, cndim);
4419
COPYINDEX_C2F(chi,_ga_chi, cndim);
4420
wnga_elem_multiply_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi, c, _ga_clo, _ga_chi);
4423
void GA_Elem_multiply_patch64(int g_a, int64_t alo[], int64_t ahi[],
4424
int g_b, int64_t blo[], int64_t bhi[],
4425
int g_c, int64_t clo[], int64_t chi[])
4427
Integer a = (Integer)g_a;
4428
Integer b = (Integer)g_b;
4429
Integer c = (Integer)g_c;
4430
Integer andim = wnga_ndim(a);
4431
Integer bndim = wnga_ndim(b);
4432
Integer cndim = wnga_ndim(c);
4433
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
4434
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
4435
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
4436
COPYINDEX_C2F(alo,_ga_alo, andim);
4437
COPYINDEX_C2F(ahi,_ga_ahi, andim);
4438
COPYINDEX_C2F(blo,_ga_blo, bndim);
4439
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
4440
COPYINDEX_C2F(clo,_ga_clo, cndim);
4441
COPYINDEX_C2F(chi,_ga_chi, cndim);
4442
wnga_elem_multiply_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi, c, _ga_clo, _ga_chi);
4445
void GA_Elem_divide_patch(int g_a, int alo[], int ahi[],
4446
int g_b, int blo[], int bhi[],
4447
int g_c, int clo[], int chi[])
4449
Integer a = (Integer)g_a;
4450
Integer b = (Integer)g_b;
4451
Integer c = (Integer)g_c;
4452
Integer andim = wnga_ndim(a);
4453
Integer bndim = wnga_ndim(b);
4454
Integer cndim = wnga_ndim(c);
4455
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
4456
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
4457
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
4458
COPYINDEX_C2F(alo,_ga_alo, andim);
4459
COPYINDEX_C2F(ahi,_ga_ahi, andim);
4460
COPYINDEX_C2F(blo,_ga_blo, bndim);
4461
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
4462
COPYINDEX_C2F(clo,_ga_clo, cndim);
4463
COPYINDEX_C2F(chi,_ga_chi, cndim);
4464
wnga_elem_divide_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi, c, _ga_clo, _ga_chi);
4467
void GA_Elem_divide_patch64(int g_a, int64_t alo[], int64_t ahi[],
4468
int g_b, int64_t blo[], int64_t bhi[],
4469
int g_c, int64_t clo[], int64_t chi[])
4471
Integer a = (Integer)g_a;
4472
Integer b = (Integer)g_b;
4473
Integer c = (Integer)g_c;
4474
Integer andim = wnga_ndim(a);
4475
Integer bndim = wnga_ndim(b);
4476
Integer cndim = wnga_ndim(c);
4477
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
4478
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
4479
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
4480
COPYINDEX_C2F(alo,_ga_alo, andim);
4481
COPYINDEX_C2F(ahi,_ga_ahi, andim);
4482
COPYINDEX_C2F(blo,_ga_blo, bndim);
4483
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
4484
COPYINDEX_C2F(clo,_ga_clo, cndim);
4485
COPYINDEX_C2F(chi,_ga_chi, cndim);
4486
wnga_elem_divide_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi, c, _ga_clo, _ga_chi);
4490
void GA_Elem_maximum_patch(int g_a, int alo[], int ahi[],
4491
int g_b, int blo[], int bhi[],
4492
int g_c, int clo[], int chi[])
4494
Integer a = (Integer)g_a;
4495
Integer b = (Integer)g_b;
4496
Integer c = (Integer)g_c;
4497
Integer andim = wnga_ndim(a);
4498
Integer bndim = wnga_ndim(b);
4499
Integer cndim = wnga_ndim(c);
4500
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
4501
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
4502
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
4503
COPYINDEX_C2F(alo,_ga_alo, andim);
4504
COPYINDEX_C2F(ahi,_ga_ahi, andim);
4505
COPYINDEX_C2F(blo,_ga_blo, bndim);
4506
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
4507
COPYINDEX_C2F(clo,_ga_clo, cndim);
4508
COPYINDEX_C2F(chi,_ga_chi, cndim);
4509
wnga_elem_maximum_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi, c, _ga_clo, _ga_chi);
4512
void GA_Elem_maximum_patch64(int g_a, int64_t alo[], int64_t ahi[],
4513
int g_b, int64_t blo[], int64_t bhi[],
4514
int g_c, int64_t clo[], int64_t chi[])
4516
Integer a = (Integer)g_a;
4517
Integer b = (Integer)g_b;
4518
Integer c = (Integer)g_c;
4519
Integer andim = wnga_ndim(a);
4520
Integer bndim = wnga_ndim(b);
4521
Integer cndim = wnga_ndim(c);
4522
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
4523
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
4524
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
4525
COPYINDEX_C2F(alo,_ga_alo, andim);
4526
COPYINDEX_C2F(ahi,_ga_ahi, andim);
4527
COPYINDEX_C2F(blo,_ga_blo, bndim);
4528
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
4529
COPYINDEX_C2F(clo,_ga_clo, cndim);
4530
COPYINDEX_C2F(chi,_ga_chi, cndim);
4531
wnga_elem_maximum_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi, c, _ga_clo, _ga_chi);
4534
void GA_Elem_minimum_patch(int g_a, int alo[], int ahi[],
4535
int g_b, int blo[], int bhi[],
4536
int g_c, int clo[], int chi[])
4538
Integer a = (Integer)g_a;
4539
Integer b = (Integer)g_b;
4540
Integer c = (Integer)g_c;
4541
Integer andim = wnga_ndim(a);
4542
Integer bndim = wnga_ndim(b);
4543
Integer cndim = wnga_ndim(c);
4544
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
4545
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
4546
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
4547
COPYINDEX_C2F(alo,_ga_alo, andim);
4548
COPYINDEX_C2F(ahi,_ga_ahi, andim);
4549
COPYINDEX_C2F(blo,_ga_blo, bndim);
4550
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
4551
COPYINDEX_C2F(clo,_ga_clo, cndim);
4552
COPYINDEX_C2F(chi,_ga_chi, cndim);
4553
wnga_elem_minimum_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi, c, _ga_clo, _ga_chi);
4556
void GA_Elem_minimum_patch64(int g_a, int64_t alo[], int64_t ahi[],
4557
int g_b, int64_t blo[], int64_t bhi[],
4558
int g_c, int64_t clo[], int64_t chi[])
4560
Integer a = (Integer)g_a;
4561
Integer b = (Integer)g_b;
4562
Integer c = (Integer)g_c;
4563
Integer andim = wnga_ndim(a);
4564
Integer bndim = wnga_ndim(b);
4565
Integer cndim = wnga_ndim(c);
4566
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
4567
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
4568
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
4569
COPYINDEX_C2F(alo,_ga_alo, andim);
4570
COPYINDEX_C2F(ahi,_ga_ahi, andim);
4571
COPYINDEX_C2F(blo,_ga_blo, bndim);
4572
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
4573
COPYINDEX_C2F(clo,_ga_clo, cndim);
4574
COPYINDEX_C2F(chi,_ga_chi, cndim);
4575
wnga_elem_minimum_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi, c, _ga_clo, _ga_chi);
4578
void GA_Shift_diagonal(int g_a, void *c){
4579
Integer a = (Integer )g_a;
4580
wnga_shift_diagonal(a, c);
4583
void GA_Set_diagonal(int g_a, int g_v){
4584
Integer a = (Integer )g_a;
4585
Integer v = (Integer )g_v;
4586
wnga_set_diagonal(a, v);
4589
void GA_Zero_diagonal(int g_a){
4590
Integer a = (Integer )g_a;
4591
wnga_zero_diagonal(a);
4593
void GA_Add_diagonal(int g_a, int g_v){
4594
Integer a = (Integer )g_a;
4595
Integer v = (Integer )g_v;
4596
wnga_add_diagonal(a, v);
4599
void GA_Get_diag(int g_a, int g_v){
4600
Integer a = (Integer )g_a;
4601
Integer v = (Integer )g_v;
4602
wnga_get_diag(a, v);
4605
void GA_Scale_rows(int g_a, int g_v){
4606
Integer a = (Integer )g_a;
4607
Integer v = (Integer )g_v;
4608
wnga_scale_rows(a, v);
4611
void GA_Scale_cols(int g_a, int g_v){
4612
Integer a = (Integer )g_a;
4613
Integer v = (Integer )g_v;
4614
wnga_scale_cols(a, v);
4616
void GA_Norm1(int g_a, double *nm){
4617
Integer a = (Integer )g_a;
4621
void GA_Norm_infinity(int g_a, double *nm){
4622
Integer a = (Integer )g_a;
4623
wnga_norm_infinity(a, nm);
4627
void GA_Median(int g_a, int g_b, int g_c, int g_m){
4628
Integer a = (Integer )g_a;
4629
Integer b = (Integer )g_b;
4630
Integer c= (Integer )g_c;
4631
Integer m = (Integer )g_m;
4632
wnga_median(a, b, c, m);
4635
void GA_Median_patch(int g_a, int *alo, int *ahi,
4636
int g_b, int *blo, int *bhi,
4637
int g_c, int *clo, int *chi,
4638
int g_m, int *mlo, int *mhi){
4640
Integer a = (Integer)g_a;
4641
Integer b = (Integer)g_b;
4642
Integer c = (Integer)g_c;
4643
Integer m = (Integer )g_m;
4644
Integer andim = wnga_ndim(a);
4645
Integer bndim = wnga_ndim(b);
4646
Integer cndim = wnga_ndim(c);
4647
Integer mndim = wnga_ndim(m);
4648
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
4649
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
4650
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
4651
Integer _ga_mlo[MAXDIM], _ga_mhi[MAXDIM];
4652
COPYINDEX_C2F(alo,_ga_alo, andim);
4653
COPYINDEX_C2F(ahi,_ga_ahi, andim);
4654
COPYINDEX_C2F(blo,_ga_blo, bndim);
4655
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
4656
COPYINDEX_C2F(clo,_ga_clo, cndim);
4657
COPYINDEX_C2F(chi,_ga_chi, cndim);
4658
COPYINDEX_C2F(mlo,_ga_mlo, mndim);
4659
COPYINDEX_C2F(mhi,_ga_mhi, mndim);
4660
wnga_median_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi, c, _ga_clo, _ga_chi, m, _ga_mlo, _ga_mhi);
4663
void GA_Median_patch64(int g_a, int64_t *alo, int64_t *ahi,
4664
int g_b, int64_t *blo, int64_t *bhi,
4665
int g_c, int64_t *clo, int64_t *chi,
4666
int g_m, int64_t *mlo, int64_t *mhi){
4668
Integer a = (Integer)g_a;
4669
Integer b = (Integer)g_b;
4670
Integer c = (Integer)g_c;
4671
Integer m = (Integer )g_m;
4672
Integer andim = wnga_ndim(a);
4673
Integer bndim = wnga_ndim(b);
4674
Integer cndim = wnga_ndim(c);
4675
Integer mndim = wnga_ndim(m);
4676
Integer _ga_alo[MAXDIM], _ga_ahi[MAXDIM];
4677
Integer _ga_blo[MAXDIM], _ga_bhi[MAXDIM];
4678
Integer _ga_clo[MAXDIM], _ga_chi[MAXDIM];
4679
Integer _ga_mlo[MAXDIM], _ga_mhi[MAXDIM];
4680
COPYINDEX_C2F(alo,_ga_alo, andim);
4681
COPYINDEX_C2F(ahi,_ga_ahi, andim);
4682
COPYINDEX_C2F(blo,_ga_blo, bndim);
4683
COPYINDEX_C2F(bhi,_ga_bhi, bndim);
4684
COPYINDEX_C2F(clo,_ga_clo, cndim);
4685
COPYINDEX_C2F(chi,_ga_chi, cndim);
4686
COPYINDEX_C2F(mlo,_ga_mlo, mndim);
4687
COPYINDEX_C2F(mhi,_ga_mhi, mndim);
4688
wnga_median_patch(a, _ga_alo, _ga_ahi, b, _ga_blo, _ga_bhi, c, _ga_clo, _ga_chi, m, _ga_mlo, _ga_mhi);
4691
/* return number of nodes being used in a cluster */
4692
int GA_Cluster_nnodes()
4694
return wnga_cluster_nnodes();
4697
/* returns ClusterNode id of the calling process */
4698
int GA_Cluster_nodeid()
4700
return wnga_cluster_nodeid();
4703
/* returns ClusterNode id of the specified process */
4704
int GA_Cluster_proc_nodeid(int proc)
4706
Integer aproc = proc;
4707
return wnga_cluster_proc_nodeid(aproc);
4710
/* return number of processes being used on the specified node */
4711
int GA_Cluster_nprocs(int x)
4714
return wnga_cluster_nprocs(ax);
4717
/* global id of the calling process */
4718
int GA_Cluster_procid(int node, int loc_proc)
4720
Integer anode = node;
4721
Integer aloc_proc = loc_proc;
4722
return wnga_cluster_procid(anode, aloc_proc);
4727
return (double)wnga_wtime();
4730
void GA_Set_debug(int flag)
4737
void NGA_Set_debug(int flag)
4746
return (int)wnga_get_debug();
4751
return (int)wnga_get_debug();
4754
#ifdef ENABLE_CHECKPOINT
4755
void GA_Checkpoint(int* gas, int num)
4757
wnga_checkpoint_arrays(gas,num);
4761
int GA_Pgroup_absolute_id(int grp_id, int pid) {
4762
Integer agrp_id = (Integer)grp_id;
4763
Integer apid = (Integer) pid;
4764
return (int)wnga_pgroup_absolute_id(agrp_id, apid);
4767
int NGA_Pgroup_absolute_id(int grp_id, int pid) {
4768
Integer agrp_id = (Integer)grp_id;
4769
Integer apid = (Integer) pid;
4770
return (int)wnga_pgroup_absolute_id(agrp_id, apid);
4773
void GA_Error(char *str, int code)
4775
Integer icode = code;
4776
wnga_error(str, icode);
4779
void NGA_Error(char *str, int code)
4781
Integer icode = code;
4782
wnga_error(str, icode);
4785
size_t GA_Inquire_memory()
4787
return (size_t)wnga_inquire_memory();
4790
size_t NGA_Inquire_memory()
4792
return (size_t)wnga_inquire_memory();
4807
return wnga_uses_ma();
4812
return wnga_uses_ma();
4815
void GA_Print_stats()
4820
void GA_Init_fence()
4825
void NGA_Init_fence()
4842
return wnga_nodeid();
4847
return wnga_nodeid();
4852
return wnga_nnodes();
4857
return wnga_nnodes();
4860
static Integer* copy_map(int block[], int block_ndim, int map[])
4863
int i,sum=0,capi_offset=0,map_offset=0;
4864
Integer *_ga_map_capi;
4866
for (d=0; d<block_ndim; d++) {
4870
_ga_map_capi = (Integer*)malloc(sum * sizeof(Integer));
4873
for (d=0; d<block_ndim; d++) {
4874
capi_offset -= block[d];
4875
for (i=0; i<block[d]; i++) {
4876
_ga_map_capi[capi_offset+i] = map[map_offset+i] + 1;
4878
map_offset += block[d];
4881
return _ga_map_capi;
4884
static Integer* copy_map64(int64_t block[], int block_ndim, int64_t map[])
4887
int64_t i,sum=0,capi_offset=0,map_offset=0;
4888
Integer *_ga_map_capi;
4890
for (d=0; d<block_ndim; d++) {
4894
_ga_map_capi = (Integer*)malloc(sum * sizeof(Integer));
4897
for (d=0; d<block_ndim; d++) {
4898
capi_offset -= block[d];
4899
for (i=0; i<block[d]; i++) {
4900
_ga_map_capi[capi_offset+i] = map[map_offset+i] + 1;
4902
map_offset += block[d];
4905
return _ga_map_capi;
4908
int NGA_Register_type(size_t bytes) {
4909
return wnga_register_type(bytes);
4912
int NGA_Deregister_type(int type) {
4913
return wnga_deregister_type(type);
4917
void NGA_Get_field(int g_a, int *lo, int *hi, int foff, int fsize,
4918
void *buf, int *ld) {
4919
Integer a = (Integer)g_a;
4920
Integer andim = wnga_ndim(a);
4921
Integer _alo[MAXDIM], _ahi[MAXDIM];
4922
Integer _ld[MAXDIM];
4923
COPYINDEX_C2F(lo,_alo, andim);
4924
COPYINDEX_C2F(hi,_ahi, andim);
4925
COPYINDEX_C2F(ld, _ld, andim-1);
4927
wnga_get_field(a, _alo, _ahi, foff, fsize, buf, _ld);
4930
void NGA_Nbget_field(int g_a, int *lo, int *hi, int foff, int fsize,
4931
void *buf, int *ld, ga_nbhdl_t *nbhandle) {
4932
Integer a = (Integer)g_a;
4933
Integer andim = wnga_ndim(a);
4934
Integer _alo[MAXDIM], _ahi[MAXDIM];
4935
Integer _ld[MAXDIM];
4936
COPYINDEX_C2F(lo,_alo, andim);
4937
COPYINDEX_C2F(hi,_ahi, andim);
4938
COPYINDEX_C2F(ld, _ld, andim-1);
4940
wnga_nbget_field(a, _alo, _ahi, foff, fsize, buf, _ld, (Integer*)nbhandle);
4943
void NGA_Nbput_field(int g_a, int *lo, int *hi, int foff, int fsize,
4944
void *buf, int *ld, ga_nbhdl_t *nbhandle) {
4945
Integer a = (Integer)g_a;
4946
Integer andim = wnga_ndim(a);
4947
Integer _alo[MAXDIM], _ahi[MAXDIM];
4948
Integer _ld[MAXDIM];
4949
COPYINDEX_C2F(lo,_alo, andim);
4950
COPYINDEX_C2F(hi,_ahi, andim);
4951
COPYINDEX_C2F(ld, _ld, andim-1);
4953
wnga_nbput_field(a, _alo, _ahi, foff, fsize, buf, _ld, (Integer*)nbhandle);
4956
void NGA_Put_field(int g_a, int *lo, int *hi, int foff, int fsize,
4957
void *buf, int *ld) {
4958
Integer a = (Integer)g_a;
4959
Integer andim = wnga_ndim(a);
4960
Integer _alo[MAXDIM], _ahi[MAXDIM];
4961
Integer _ld[MAXDIM];
4962
COPYINDEX_C2F(lo,_alo, andim);
4963
COPYINDEX_C2F(hi,_ahi, andim);
4964
COPYINDEX_C2F(ld, _ld, andim-1);
4966
wnga_put_field(a, _alo, _ahi, foff, fsize, buf, _ld);