18
#define ERROR(msg,code){printf("ERROR:%s\n",(msg)); fflush(stdout); exit(1);}
20
#define BUFSIZE 8000000
21
int main(int argc, char **argv)
23
int heap=400000, stack=400000;
26
double max_sz=1e8, max_disk=2e8, max_mem=1e6;
29
char name[1024], fname[1024];
32
int i,ilo,ihi,jlo,jhi,type,ndim,glo[2],ghi[2],gld[1],gdims[2];
33
dra_size_t dlo[2],dhi[2],ddims[2];
38
printf("Usage: dra2arviz <dra_filename> <ilo> <ihi> <jlo> <jhi>\n");
39
printf(" dra_filename is the meta-file name for disk resident array\n");
40
printf(" [ilo:ihi, jlo:jhi] array section to read\n\n\n");
50
if(! MA_init((Integer)MT_F_DBL, stack, heap))
51
GA_Error("MA_init failed",stack+heap); /* initialize memory allocator*/
52
GA_Initialize(); /* initialize GA */
54
if(nproc != 1)ERROR("Error: does not run in parallel",nproc);
56
if(DRA_Init(max_arrays, max_sz, max_disk, max_mem))
57
ERROR("initialization failed",0);
59
if(DRA_Open(argv[1], mode, &d_a)) ERROR("dra_open failed",0);
61
ilo = atoi(argv[2]); ihi = atoi(argv[3]);
62
jlo = atoi(argv[4]); jhi = atoi(argv[5]);
76
if(NDRA_Inquire(d_a, &type, &ndim, ddims, name, fname))
77
ERROR("dra_inquire failed",0);
80
case MT_F_INT: size = sizeof(Integer); break;
81
case MT_F_DBL: size = sizeof(DoublePrecision); break;
82
case MT_F_DCPL: size = sizeof(DoubleComplex); break;
83
default: ERROR("type not supported",type);
86
g_a = NGA_Create(type, 2, gdims, "temp", NULL);
88
if(NDRA_Read_section(transp, g_a, glo, ghi,
89
d_a, dlo, dhi, &reqid))
90
ERROR("dra_read_section failed",0);
92
if(DRA_Wait(reqid)) ERROR("dra_wait failed",0);
94
NGA_Access(g_a, glo, ghi, &ptr, gld);
96
if(gld[0] != rows) ERROR("ld != rows",gld[0]);
98
fwrite("OK\n",1,3,stdout);
99
nitems = (size_t)rows;
100
/* write data by columns */
101
for(i=0; i<cols; i++){
103
fwrite(ptr,size,nitems,stdout);
104
else if(type == MT_F_DCPL)
105
fwrite(ptr,size,nitems,stdout);
107
fwrite(ptr,size,nitems,stdout);