5
c FNAME - filename for test program
7
#define BASE_NAME 'da.try'
8
#define BASE_NAME1 'da1.try'
10
# define FNAME HPIODIR//BASE_NAME
11
# define FNAME1 HPIODIR//BASE_NAME1
13
# define FNAME BASE_NAME
14
# define FNAME1 BASE_NAME1
18
#include "mafdecls.fh"
24
double precision max_sz, max_disk, max_mem
25
data max_arrays, max_sz, max_disk, max_mem /10,1d9,1d10, 1d6/
26
#if defined(IBM)|| defined(CRAY_T3E)
27
data stack, heap /6000000, 4000000/
29
data stack, heap /1200000, 800000/
33
if(.not. ga_uses_ma())then
38
if(ma_init(MT_F_DBL, stack, heap) ) then
41
if(dra_init(max_arrays, max_sz, max_disk, max_mem).ne.0)then
42
call ga_error('dra_init failed: ',0)
44
if (me.eq.0) print *,' '
45
if(me.eq.0)print *, 'TESTING PERFORMANCE OF DISK ARRAYS'
46
if (me.eq.0) print *,' '
48
status = dra_terminate()
51
print *,'ma_init failed'
53
if(me.eq.0)print *, 'all done ...'
59
subroutine test_io_dbl
61
#include "mafdecls.fh"
68
double precision err, tt0, tt1, mbytes
69
integer g_a, g_b, d_a, d_b
70
double precision drand
71
integer i,j, req, loop
72
integer dilo,dihi,djlo,djhi
73
integer gilo,gihi,gjlo,gjhi
83
iran(i) = int(drand(0)*dble(i-1)) + 1
90
if (me.eq.0) print *, 'creating global arrays ',n,' x',n
91
if (me.eq.0)call ffflush(6)
93
if(.not. ga_create(MT_DBL, n, n, 'a', 1, 1, g_a))
94
& call ga_error('ga_create failed: a', 0)
95
if(.not. ga_create(MT_DBL, n, n, 'b', 1, 1, g_b))
96
& call ga_error('ga_create failed: b', 0)
97
if (me.eq.0) print *,'done '
98
if (me.eq.0)call ffflush(6)
100
c initialize g_a, g_b with random values
101
c ... use ga_access to avoid allocating local buffers for ga_put
104
call ga_distribution(g_a, me, gilo,gihi,gjlo,gjhi)
105
call ga_access(g_a, gilo,gihi,gjlo,gjhi, index, ld)
106
call fill_random(DBL_MB(index), gihi-gilo+1, gjhi-gjlo+1, ld)
108
* if (me.eq.0) print *,'done '
109
* if (me.eq.0)call ffflush(6)
114
c.......................................................................
115
if (me.eq.0) print *, 'creating disk array ',n,' x',n
116
if (me.eq.0)call ffflush(6)
117
if(dra_create(MT_DBL, n, n, 'A', FNAME,
118
& DRA_RW, n, n, d_a).ne.0)
119
$ CALL ga_error('dra_create failed: ',0)
121
if(me.eq.0) print *, 'alligned blocking write'
122
if (me.eq.0)call ffflush(6)
124
if(dra_write(g_a, d_a,req).ne.0)
125
$ CALL ga_error('dra_write failed:',0)
126
if(dra_wait(req).ne.0) call ga_error('dra_wait failed: ' ,req)
127
tt1 = MP_TIMER() -tt0
128
mbytes = 1e-6*util_mdtob(n*n)
130
write(6,100)mbytes,tt1,mbytes/tt1
133
if(dra_close(d_a).ne.0)call ga_error('dra_close failed: ',d_a)
134
tt1 = MP_TIMER() -tt0
136
write(6,100)mbytes,tt1,mbytes/tt1
139
if (me.eq.0) print *,' '
140
if (me.eq.0) print *,'disk array closed '
141
if (me.eq.0)call ffflush(6)
142
c.......................................................................
145
if (me.eq.0) print *, 'creating disk array ',m,' x',m
146
if (me.eq.0)call ffflush(6)
147
if(dra_create(MT_DBL, m, m, 'A', FNAME1,
148
& DRA_RW, n, n, d_b).ne.0)
149
$ CALL ga_error('dra_create failed: ',0)
151
if(me.eq.0) print *, 'non alligned blocking write'
152
if (me.eq.0)call ffflush(6)
159
if(dra_write_section(.false., g_a, gilo, gihi, gjlo, gjhi,
160
& d_b, gilo+1, gihi+1, gjlo+1, gjhi+1, req).ne.0)
161
& call ga_error('dra_write_section failed:',0)
163
if(dra_wait(req).ne.0) call ga_error('dra_wait failed: ' ,req)
164
tt1 = MP_TIMER() -tt0
165
mbytes = 1e-6*util_mdtob(n*n)
167
write(6,100)mbytes,tt1,mbytes/tt1
170
if(dra_close(d_b).ne.0)call ga_error('dra_close failed: ',d_b)
171
tt1 = MP_TIMER() -tt0
173
write(6,100)mbytes,tt1,mbytes/tt1
176
if (me.eq.0) print *,' '
177
if (me.eq.0) print *,'disk array closed '
178
if (me.eq.0)call ffflush(6)
179
c.......................................................................
182
if (me.eq.0) print *,' '
183
if (me.eq.0) print *,'opening disk array'
184
if(dra_open(FNAME,DRA_R, d_a).ne.0)
185
& call ga_error('dra_open failed',0)
186
if(me.eq.0) print *, 'alligned blocking read'
187
if (me.eq.0)call ffflush(6)
189
if(dra_read(g_b, d_a, req).ne.0)
190
$ CALL ga_error('dra_read failed:',0)
191
if(dra_wait(req).ne.0) call ga_error('dra_wait failed: ' ,req)
192
tt1 = MP_TIMER() -tt0
194
write(6,100)mbytes,tt1,mbytes/tt1
196
call ga_dadd(1d0, g_a, -1d0, g_b, g_b)
197
err = ga_ddot(g_b, g_b)
199
if (me.eq.0) print *,'BTW, we have error =', err
202
if (me.eq.0) print *,'OK'
204
if(dra_delete(d_a).ne.0)
205
& call ga_error('dra_delete failed',0)
206
c.......................................................................
208
if (me.eq.0) print *,' '
209
if (me.eq.0) print *,'opening disk array'
210
if(dra_open(FNAME1,DRA_R, d_b).ne.0)
211
& call ga_error('dra_open failed',0)
212
if(me.eq.0) print *, 'non alligned blocking read'
213
if (me.eq.0)call ffflush(6)
219
if(dra_read_section(.false., g_b, gilo, gihi, gjlo, gjhi,
220
& d_b, gilo+1, gihi+1, gjlo+1, gjhi+1, req).ne.0)
221
& call ga_error('dra_read_section failed:',0)
222
if(dra_wait(req).ne.0) call ga_error('dra_wait failed: ' ,req)
223
tt1 = MP_TIMER() -tt0
225
write(6,100)mbytes,tt1,mbytes/tt1
227
call ga_dadd(1d0, g_a, -1d0, g_b, g_b)
228
err = ga_ddot(g_b, g_b)
230
if (me.eq.0) print *,'BTW, we have error =', err
232
if (me.eq.0) print *,'OK'
234
if(dra_delete(d_b).ne.0)
235
& call ga_error('dra_delete failed',0)
236
c.......................................................................
237
status = ga_destroy(g_a)
238
status = ga_destroy(g_b)
239
100 format(g11.2,' MB time=',g11.2,' rate=',g11.3,'MB/s')
252
subroutine init_char(str, len, char)
262
subroutine fill_random(a, n,m, ld)
264
double precision a(ld,*), drand, seed