@@ -143,10 +143,18 @@ subroutine c_oacc_ell_free_dev_space(a)
143143 ! but with size 0, then CREATE,UPDATE and DELETE
144144 ! will fail
145145 !
146- if (psb_size(a% val)>0 ) call acc_delete_finalize(a% val)
147- if (psb_size(a% ja)>0 ) call acc_delete_finalize(a% ja)
148- if (psb_size(a% irn)>0 ) call acc_delete_finalize(a% irn)
149- if (psb_size(a% idiag)>0 ) call acc_delete_finalize(a% idiag)
146+ if (psb_size(a% val)>0 ) then
147+ ! $acc exit data delete(a%val) finalize
148+ end if
149+ if (psb_size(a% ja)>0 ) then
150+ ! $acc exit data delete(a%ja) finalize
151+ end if
152+ if (psb_size(a% irn)>0 ) then
153+ ! $acc exit data delete(a%irn) finalize
154+ end if
155+ if (psb_size(a% idiag)>0 ) then
156+ ! $acc exit data delete(a%idiag) finalize
157+ end if
150158 return
151159 end subroutine c_oacc_ell_free_dev_space
152160
@@ -170,7 +178,7 @@ function c_oacc_ell_sizeof(a) result(res)
170178 if (a% is_dev()) call a% sync()
171179
172180 res = 8
173- res = res + psb_sizeof_dp * size (a% val)
181+ res = res + ( 2 * psb_sizeof_sp) * size (a% val)
174182 res = res + psb_sizeof_ip * size (a% ja)
175183 res = res + psb_sizeof_ip * size (a% irn)
176184 res = res + psb_sizeof_ip * size (a% idiag)
@@ -186,10 +194,18 @@ subroutine c_oacc_ell_sync_dev_space(a)
186194 ! but with size 0, then CREATE,UPDATE and DELETE
187195 ! will fail
188196 !
189- if (psb_size(a% val)>0 ) call acc_copyin(a% val)
190- if (psb_size(a% ja)>0 ) call acc_copyin(a% ja)
191- if (psb_size(a% irn)>0 ) call acc_copyin(a% irn)
192- if (psb_size(a% idiag)>0 ) call acc_copyin(a% idiag)
197+ if (psb_size(a% val)>0 ) then
198+ ! $acc enter data copyin(a%val)
199+ end if
200+ if (psb_size(a% ja)>0 ) then
201+ ! $acc enter data copyin(a%ja)
202+ end if
203+ if (psb_size(a% irn)>0 ) then
204+ ! $acc enter data copyin(a%irn)
205+ end if
206+ if (psb_size(a% idiag)>0 ) then
207+ ! $acc enter data copyin(a%idiag)
208+ end if
193209 end subroutine c_oacc_ell_sync_dev_space
194210
195211 function c_oacc_ell_is_host (a ) result(res)
@@ -256,15 +272,31 @@ subroutine c_oacc_ell_sync(a)
256272 ! will fail
257273 !
258274 if (a% is_dev()) then
259- if (psb_size(a% val)>0 ) call acc_update_self(a% val)
260- if (psb_size(a% ja)>0 ) call acc_update_self(a% ja)
261- if (psb_size(a% irn)>0 ) call acc_update_self(a% irn)
262- if (psb_size(a% idiag)>0 ) call acc_update_self(a% idiag)
275+ if (psb_size(a% val)>0 ) then
276+ ! $acc update self(a%val)
277+ end if
278+ if (psb_size(a% ja)>0 ) then
279+ ! $acc update self(a%ja)
280+ end if
281+ if (psb_size(a% irn)>0 ) then
282+ ! $acc update self(a%irn)
283+ end if
284+ if (psb_size(a% idiag)>0 ) then
285+ ! $acc update self(a%idiag)
286+ end if
263287 else if (a% is_host()) then
264- if (psb_size(a% val)>0 ) call acc_update_device(a% val)
265- if (psb_size(a% ja)>0 ) call acc_update_device(a% ja)
266- if (psb_size(a% irn)>0 ) call acc_update_device(a% irn)
267- if (psb_size(a% idiag)>0 ) call acc_update_device(a% idiag)
288+ if (psb_size(a% val)>0 ) then
289+ ! $acc update device(a%val)
290+ end if
291+ if (psb_size(a% ja)>0 ) then
292+ ! $acc update device(a%ja)
293+ end if
294+ if (psb_size(a% irn)>0 ) then
295+ ! $acc update device(a%irn)
296+ end if
297+ if (psb_size(a% idiag)>0 ) then
298+ ! $acc update device(a%idiag)
299+ end if
268300 end if
269301 call tmpa% set_sync()
270302 end subroutine c_oacc_ell_sync
0 commit comments